找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3488|回復(fù): 0
收起左側(cè)

sed1335_lcd普通IO驅(qū)動

[復(fù)制鏈接]
ID:51090 發(fā)表于 2014-9-17 22:58 | 顯示全部樓層 |閱讀模式
老早的東西了,已經(jīng)淘汰了,網(wǎng)上只搜到匯編的了,好不容易把屏搞亮,卻發(fā)現(xiàn)跟金鵬ocm240320的驅(qū)動一模一樣,那個不爽啊
//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個
for(i=0;i<8;i++)
{
write_dat(sys_tab[ i]);
}
write_com(0x44);//設(shè)置顯示區(qū)域參數(shù)10個
for(i=0;i<10;i++)
{
write_dat(scr_tab[ i]);
}
write_com(0x5d);//設(shè)置光標(biāo)形狀參數(shù)2個
write_dat(0x00);
write_dat(0x00);
write_com(0x5b);//設(shè)置顯示方式參數(shù)1個
write_dat(0x0f);
write_com(0x59);//開顯示
}
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ū)同時顯示
if(qu==4)write_dat(0x40);
if(qu==5)write_dat(0xff);
}
void lcd_clear(uint addr)
{
    uint i;
    write_com(0x4c);//向下移動
    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);
}
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表