打印

240X128LCD Driver,还热乎着~

[复制链接]
1976|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原野之狼|  楼主 | 2008-9-16 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先看效果图:


再看部分源码:
头文件以及调试语句请自行修改。
//lcd.h
#ifndef _H_LCD_H_
#define _H_LCD_H_

#include "type.h"

#define CM240_128_DAT_ADDR 0X8000 
#define CM240_128_CMD_ADDR 0Xc000

#define LCD_WR_DAT(dat) do{(*(UINT8*)CM240_128_DAT_ADDR)=dat;}while(0)
#define LCD_WR_CMD(cmd) do{(*(UINT8*)CM240_128_CMD_ADDR)=cmd;}while(0)
#define LCD_RD_DAT() (*(UINT8*)CM240_128_DAT_ADDR)
#define LCD_RD_CMD() (*(UINT8*)CM240_128_CMD_ADDR)

#define LCD_CMD_ADD_PT_SET 0X24
#define LCD_CMD_GRAPHIC_ADDR_SET 0X42 
#define LCD_CMD_GRAPHIC_AREA_SET 0X43
#define LCD_CMD_MODE_SET_CGRAM 0X88
#define LCD_CMD_DISP_MODE_T_OFF_G_ON 0X98
#define LCD_CMD_DAT_WR_NO_ADP_ACTION 0XC4
#define LCD_CMD_DAT_RD_NO_ADP_ACTION 0XC5

#define LCD_CHECK_TIME_MAX_MS 100


UINT8 LcdWrDat(UINT8 dat);
UINT8 LcdWrCmdByZeroPara(UINT8 cmd);
UINT8 LcdWrCmdByOnePara(UINT8 cmd,UINT8 dat);
UINT8 LcdWrCmdByTwoPara(UINT8 cmd,UINT8 dat1,UINT8 dat2);
UINT8 LcdCheckCmdDatWrRd(void);


UINT8 LcdInit(void);
void LcdTest(void);

#endif

//lcd.cpp
#include "includes.h"

static const  prog_uchar wolf[]={//数据比较多,21IC限字数,见链接.
};
UINT8 LcdWrDat(UINT8 dat)
{
    if(LcdCheckCmdDatWrRd())
    {
        LCD_WR_DAT(dat);
        return 0xff;
    }
    else
        return 0x00;
}



UINT8 LcdWrCmdByZeroPara(UINT8 cmd)
{
    if(LcdCheckCmdDatWrRd())
    {
        LCD_WR_CMD(cmd);
        return 0xff;
    }
    else
        return 0x00;
}


UINT8 LcdWrCmdByOnePara(UINT8 cmd,UINT8 dat)
{
    if(LcdCheckCmdDatWrRd())
    {
        LCD_WR_DAT(dat);

        if(LcdCheckCmdDatWrRd())
        {
            LCD_WR_CMD(cmd);
            return 0xff;
        }
        else
        {
            return 0x00;
        }
    }
    else
    {
        return 0x00;
    }
}




UINT8 LcdWrCmdByTwoPara(UINT8 cmd,UINT8 dat1,UINT8 dat2)
{
    if(LcdCheckCmdDatWrRd())
    {
        LCD_WR_DAT(dat1);

        if(LcdCheckCmdDatWrRd())
        {
            LCD_WR_DAT(dat2);
            
            if(LcdCheckCmdDatWrRd())
            {
                LCD_WR_CMD(cmd);
                
                return 0xff;
            }
            else
            {
                return 0x00;
            }
        }
        else
        {
            return 0x00;
        }
    }
    else
    {
        return 0x00;
    }
}

UINT8 LcdCheckCmdDatWrRd(void)
{
    static UINT32 ct=0;

    while((LCD_RD_CMD()&0x03)!=0x03)
    {
        wdt_reset();
        ct++;
        if(ct>(UINT32)(LCD_CHECK_TIME_MAX_MS*1.0/(1000.0/SYSTEM_FREQUENCY_HZ)))
        {
            ct=0;
            return 0x00;
        }
    }

    ct=0;
    
    return 0xff;
}



UINT8 LcdInit(void)
{
    if(!LcdWrCmdByTwoPara(0x40, 0x00, 0x00))
        return 0x00;
    if(!LcdWrCmdByTwoPara(0x41, 0x1e, 0x00))
        return 0x00;
    if(!LcdWrCmdByTwoPara(LCD_CMD_GRAPHIC_ADDR_SET, 0x00, 0x00))
        return 0x00;
    if(!LcdWrCmdByTwoPara(LCD_CMD_GRAPHIC_AREA_SET, 0x1e, 0x00))
        return 0x00;
    if(!LcdWrCmdByZeroPara(0x80))// mode
        return 0x00;
    if(!LcdWrCmdByZeroPara(0xa4))
        return 0x00;
    if(!LcdWrCmdByZeroPara(0x98))
        return 0x00;
    return 0xff;
}

void LcdTest(void)
{
    UINT16 i;

    if(LcdInit())
    {
        WriteLog("lcd ok ");
        for(i=0;i<30*128;i++)
        {
            wdt_reset();
            if(LcdWrCmdByTwoPara(LCD_CMD_ADD_PT_SET, i, (i)>>8))
            {
                if(!LcdWrCmdByOnePara(0xc4,pgm_read_byte(i+wolf)))
                {
                    WriteLog("E");
                }
                
            }
            else
            {
                WriteLog("e");
            }
            
        }
    }
    else
    {
        WriteLog("lcd error ");
    }
}

相关链接:https://bbs.21ic.com/upfiles/img/200711/200711118145351.rar

相关帖子

沙发
古道热肠| | 2008-9-17 10:17 | 只看该作者

好,看来楼主对"狼"情有独钟

整LCD驱动也弄个Wolf的图片.

使用特权

评论回复
板凳
原野之狼|  楼主 | 2008-9-17 11:27 | 只看该作者

感谢古版回帖支持~

北京这天气也越来越凉了,能不能给几条裤子穿呀?
呵呵~~~

使用特权

评论回复
地板
zyok| | 2008-9-17 13:24 | 只看该作者

呵呵,色狼...

使用特权

评论回复
5
hotpower| | 2008-9-18 08:25 | 只看该作者

哈哈~~~腐败之风盛行,顶起来~~~

使用特权

评论回复
6
hyhjjg| | 2008-9-18 22:43 | 只看该作者

多少前一块啊

使用特权

评论回复
7
古道热肠| | 2008-9-19 10:25 | 只看该作者

楼主的图片转数据文件是的什么工具?生成的数组很规整

使用特权

评论回复
8
原野之狼|  楼主 | 2008-9-19 14:09 | 只看该作者

回古版

名字:PCTOLCD2002
上传速度贼慢,请到互联网搜索,或者加我MSN:nevsayno@hotmail.com

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

187

主题

8547

帖子

280

粉丝