|
主要錯(cuò)誤:lcd_wcom(0x08);正確: lcd_wcom(0x80);
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit rs=P3^5; //1602的數(shù)據(jù),指令選擇線(xiàn)
- sbit rw=P3^6; //1602的讀寫(xiě)控制線(xiàn)
- sbit en=P3^7; //1602的使能控制線(xiàn)
- uchar code table[]="LCD1602 check ok";
- uchar code table1[]="study up";
- void delay(uint n)
- {
- uint x,y;
- for(x=n;x>0;x--)
- for(y=110;y>0;y--);
- }
- void lcd_wcom(uchar com) //1602的寫(xiě)命令涵數(shù)
- {
- rs=0; //選擇指令寄存器
- rw=0; //選擇寫(xiě)
- en=1;
- P2=com; //把命令送入P2
- delay(1);
- en=0; //使能線(xiàn) 電平下降沿,命令寫(xiě)入1602的8位數(shù)據(jù)口
- }
- void lcd_wdat(uchar dat)
- {
- rs=1;
- rw=0;
- en=1;
- P2=dat;
- delay(1);
- en=0;
- }
- void lcd_init() //1602初始化涵數(shù)
- {
- lcd_wcom(0x38); //8位數(shù)據(jù),雙列,5*7字形
- lcd_wcom(0x0c); //開(kāi)啟顯示屏,關(guān)光標(biāo)
- lcd_wcom(0x06); //顯示地址遞,寫(xiě)一數(shù)據(jù)后,顯示位置后移一位
- lcd_wcom(0x01); //清屏
- }
- void main() //主涵數(shù)
- {
- uchar n,m=0;
- lcd_init(); //液晶初始化
- lcd_wcom(0x08);
- lcd_wcom(0x80);
- for(m=0;m<16;m++) //將tabe[]中的數(shù)據(jù)依次寫(xiě)入1602中
- {
- lcd_wdat(table[m]);
- delay(20);
- }
- lcd_wcom(0x80+0x44); //重新設(shè)定顯示地址為0xc4,下排第5位
- for(n=0;n<8;n++) //將tabe1[]中的數(shù)據(jù)依次寫(xiě)入1602中
- {
- lcd_wdat(table1[n]);
- delay(20);
- }
- while(1);
- }
復(fù)制代碼
|
|