電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

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

單片機(jī)C語(yǔ)言實(shí)例-375-12864液晶(帶字庫(kù))

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-4-7 10:25:08 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)C語(yǔ)言實(shí)例-375-12864液晶(帶字庫(kù))

/*
12864LCD (ST7920)驅(qū)動(dòng)程序
馬文壘     2004/12/27

*/

#include <REGx51.H>
  //引腳定義
#define CS    P2_0        //片選 高電平有效 單片LCD使用時(shí)可固定高電平
#define SID   P2_1        //數(shù)據(jù)
#define SCLK  P2_2        //時(shí)鐘
#define PSB   P2_3        //低電平時(shí)表示用串口驅(qū)動(dòng),可固定低電平
#define RESET P2_4        //LCD復(fù)位,LCD模塊自帶復(fù)位電路?刹唤

void write(bit start, unsigned char ddata);
void sendbyte(unsigned char bbyte);
void delaynms(unsigned int di);
void lcdinit(void);
void lcdtest(void);
void lcdcls(void);

unsigned char code ma[] ={"  漢字顯示LCD   "};
unsigned char code ma2[]={"自帶字庫(kù)圖文混排"};
unsigned char code ma3[]={"控制IC:ST7920  "};
unsigned char code ma4[]={"功能強(qiáng)大使用方便"};

void lcdinit(void)        //初始化LCD
{
  delaynms(10); //啟動(dòng)等待,等LCM講入工作狀態(tài)
  PSB=0; ;            //串口驅(qū)動(dòng)模式
  RESET=0; delaynms(1); RESET=1; // 復(fù)位LCD
  CS=1;
  write(0,0x30);  //8 位介面,基本指令集
  write(0,0x0c);  //顯示打開(kāi),光標(biāo)關(guān),反白關(guān)
  write(0,0x01);  //清屏,將DDRAM的地址計(jì)數(shù)器歸零  
}

void write(bit start, unsigned char ddata) //寫(xiě)指令或數(shù)據(jù)
{
  unsigned char start_data,Hdata,Ldata;
  if(start==0) start_data=0xf8;         //寫(xiě)指令
    else       start_data=0xfa;  //寫(xiě)數(shù)據(jù)

  Hdata=ddata&0xf0;                  //取高四位
  Ldata=(ddata<<4)&0xf0;  //取低四位
  sendbyte(start_data);          //發(fā)送起始信號(hào)
  delaynms(5); //延時(shí)是必須的
  sendbyte(Hdata);              //發(fā)送高四位
  delaynms(1);  //延時(shí)是必須的
  sendbyte(Ldata);                  //發(fā)送低四位
  delaynms(1);  //延時(shí)是必須的
}

void sendbyte(unsigned char bbyte) //發(fā)送一個(gè)字節(jié)
{
unsigned char i;
for(i=0;i<8;i++)
   {
   SID=bbyte&0x80; //取出最高位
   SCLK=1;
   SCLK=0;
   bbyte<<=1; //左移
   }  
}

void delaynms(unsigned int di) //延時(shí)
{
unsigned int da,db;
for(da=0;da<di;da++)
   for(db=0;db<10;db++);
}

void lcdtest(void)        //圖形方式下屏幕全黑
{
unsigned char i,j;
for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x80);
    for(j=0;j<16;j++) write(1,0xff);
  }

for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x88);
    for(j=0;j<16;j++) write(1,0xff);
  }
}

void lcdcls(void)  //圖形方式下清屏
{
unsigned char i,j;
for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x80);
    for(j=0;j<16;j++) write(1,0x00);
  }

for(i=0;i<32;i++)
  { write(0,0x80+i);write(0,0x88);
    for(j=0;j<16;j++) write(1,0x00);
  }
}

void main(void)
{
unsigned char i;
lcdinit();

while(1)
{
  write(0,0x80); for(i=0;i<16;i++)  write(1,ma);
  write(0,0x90); for(i=0;i<16;i++)  write(1,ma2);
  write(0,0x88); for(i=0;i<16;i++)  write(1,ma3);
  write(0,0x98); for(i=0;i<16;i++)  write(1,ma4);

  write(0,0x36); //圖形方式
  lcdtest();
  lcdcls();
}

}

更多詳情參考附件文檔


游客,如果您要查看本帖隱藏內(nèi)容請(qǐng)回復(fù)

0

主題

234

帖子

1059

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1059
沙發(fā)
發(fā)表于 2022-4-7 20:33:16 | 只看該作者
666666666666666666666666666

發(fā)表回復(fù)

本版積分規(guī)則

關(guān)閉

站長(zhǎng)推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表