標(biāo)題: sed1335_lcd普通IO驅(qū)動(dòng) [打印本頁(yè)]

作者: xiaojuan    時(shí)間: 2014-9-17 22:58
標(biāo)題: sed1335_lcd普通IO驅(qū)動(dòng)
老早的東西了,已經(jīng)淘汰了,網(wǎng)上只搜到匯編的了,好不容易把屏搞亮,卻發(fā)現(xiàn)跟金鵬ocm240320的驅(qū)動(dòng)一模一樣,那個(gè)不爽啊
//uchar code sys_tab[8]={0x30,0x87,0x07,0x27,0x32,0xef,0x28,0x00};
//uchar code scr_tab[10]={0x00,0x00,0xf0,0xb0,0x04,0xf0,0x80,0x50,0x00,0x60};
uchar code sys_tab[8]={0x30,0x87,0x0f,0x27,0x3a,0xef,0x28,0x00}; //king
uchar code scr_tab[10]={0x00,0x00,0xf0,0x80,0x25,0xf0,0x00,0x4b,0xb0,0x4f};
#define addr_o     0x0000   //文本顯示區(qū)首地址
#define addr_t     0x2580   //圖形顯示區(qū)首地址
#define addr_s     0x4b00   //第三區(qū)顯示首地址
void write_com(uchar com)
{
    LCD_RS=1;
    LCD_WR=0;
LCD_RD=1;
    LCD_DAT=com;
LCD_CS=0;
    LCD_CS=1;
}
void write_dat(uchar dat)
{
    LCD_RS=0;
    LCD_WR=0;
LCD_RD=1;
    LCD_DAT=dat;
LCD_CS=0;
    LCD_CS=1;
}
uchar read_dat()        //讀數(shù)據(jù)
{
    uchar dat;
   LCD_CS=0;
     LCD_RS=1;
     LCD_WR=1;
     LCD_RD=0;
   DBUS=0xff;
     dat=DBUS;
     LCD_RD=1;
   LCD_CS=1;
     return dat;
}
void lcd_init()
{
uchar i;
write_com(0x58);//關(guān)顯示
write_com(0x40);//系統(tǒng)設(shè)置參數(shù)8個(gè)
for(i=0;i<8;i++)
{
write_dat(sys_tab[ i]);
}
write_com(0x44);//設(shè)置顯示區(qū)域參數(shù)10個(gè)
for(i=0;i<10;i++)
{
write_dat(scr_tab[ i]);
}
write_com(0x5d);//設(shè)置光標(biāo)形狀參數(shù)2個(gè)
write_dat(0x00);
write_dat(0x00);
write_com(0x5b);//設(shè)置顯示方式參數(shù)1個(gè)
write_dat(0x0f);
write_com(0x59);//開(kāi)顯示
}
void write_uint(uint dat)
{
  uchar datl,dath;
    datl=dat;
    dath=dat>>8;
    write_dat(datl);        //送低八位
    write_dat(dath);        //送高八位
}
void set_addr(uint add)
{
  write_com(0x46);//設(shè)置光標(biāo)地址
  write_uint(add);
}
void show(uchar qu)
{
write_com(0x59);    //DISP ON
if(qu==0)write_dat(0x00);//神馬都不顯示
    if(qu==1)write_dat(0x04);//僅顯示一區(qū)
if(qu==2)write_dat(0x10);//僅顯示二區(qū)
if(qu==3)write_dat(0x14);//一二區(qū)同時(shí)顯示
if(qu==4)write_dat(0x40);
if(qu==5)write_dat(0xff);
}
void lcd_clear(uint addr)
{
    uint i;
    write_com(0x4c);//向下移動(dòng)
    set_addr(addr);
    write_com(0x42);//連續(xù)輸入
    for(i=0;i<9600;i++)
    {
    write_dat(0x00);
    }
}
void write_init(uint addr)
{
  write_com(0x4f);
  write_com(0x46);
write_uint(addr);
write_com(0x42);
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1