老早的東西了,已經淘汰了,網上只搜到匯編的了,好不容易把屏搞亮,卻發現跟金鵬ocm240320的驅動一模一樣,那個不爽啊
//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 //文本顯示區首地址
#define addr_t 0x2580 //圖形顯示區首地址
#define addr_s 0x4b00 //第三區顯示首地址
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() //讀數據
{
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);//關顯示
write_com(0x40);//系統設置參數8個
for(i=0;i<8;i++)
{
write_dat(sys_tab[ i]);
}
write_com(0x44);//設置顯示區域參數10個
for(i=0;i<10;i++)
{
write_dat(scr_tab[ i]);
}
write_com(0x5d);//設置光標形狀參數2個
write_dat(0x00);
write_dat(0x00);
write_com(0x5b);//設置顯示方式參數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);//設置光標地址
write_uint(add);
}
void show(uchar qu)
{
write_com(0x59); //DISP ON
if(qu==0)write_dat(0x00);//神馬都不顯示
if(qu==1)write_dat(0x04);//僅顯示一區
if(qu==2)write_dat(0x10);//僅顯示二區
if(qu==3)write_dat(0x14);//一二區同時顯示
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);//連續輸入
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);
} |