主要錯誤:lcd_wcom(0x08);正確: lcd_wcom(0x80);
無標題.jpg (29.66 KB, 下載次數: 32)
下載附件
2022-8-30 06:03 上傳
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit rs=P3^5; //1602的數據,指令選擇線
- sbit rw=P3^6; //1602的讀寫控制線
- sbit en=P3^7; //1602的使能控制線
- 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的寫命令涵數
- {
- rs=0; //選擇指令寄存器
- rw=0; //選擇寫
- en=1;
- P2=com; //把命令送入P2
- delay(1);
- en=0; //使能線 電平下降沿,命令寫入1602的8位數據口
- }
- void lcd_wdat(uchar dat)
- {
- rs=1;
- rw=0;
- en=1;
- P2=dat;
- delay(1);
- en=0;
- }
- void lcd_init() //1602初始化涵數
- {
- lcd_wcom(0x38); //8位數據,雙列,5*7字形
- lcd_wcom(0x0c); //開啟顯示屏,關光標
- lcd_wcom(0x06); //顯示地址遞,寫一數據后,顯示位置后移一位
- lcd_wcom(0x01); //清屏
- }
- void main() //主涵數
- {
- uchar n,m=0;
- lcd_init(); //液晶初始化
- lcd_wcom(0x08);
- lcd_wcom(0x80);
- for(m=0;m<16;m++) //將tabe[]中的數據依次寫入1602中
- {
- lcd_wdat(table[m]);
- delay(20);
- }
- lcd_wcom(0x80+0x44); //重新設定顯示地址為0xc4,下排第5位
- for(n=0;n<8;n++) //將tabe1[]中的數據依次寫入1602中
- {
- lcd_wdat(table1[n]);
- delay(20);
- }
- while(1);
- }
復制代碼
|