給你改了一下試試。
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit lcdrs = P2^1; //LCD寄存器選擇
- sbit lcdrw = P2^2; //LCD讀寫控制
- sbit lcden = P2^3; //LCD使能控制
- void delay(uint m) //延時函數
- {while(--m);}
- void write(uchar com, uchar lcddata) //LCD1602寫入8位命令/數據子函數
- {
- lcdrs=com; //寫入命令 0 選擇發送命令 1 選擇輸入數據
-
- //P1=(lcddata); //由于4位的接線是接到P1口的高四位,所以傳送高四位不用改
- P1=(lcddata&0xf0)>>4; //由于4位的接線是接到P1口的低四位,接到LCD高四位
- delay(200);
- lcden=1; //寫入時序
- delay(300); //保持時間
- lcden=0; //使能清零
- //P1=(lcddata & 0x0f)<< 4; //發送低四位
- P1=(lcddata&0x0f); //發送高四位
- delay(200);
- lcden=1; //寫入時序
- delay(300); //保持時間
- lcden=0; //使能清零
- delay(20);
- }
- void init() //LCD初始化子函數
- {
- lcdrw=0; //選擇寫入
- lcden=0; //使能
- delay(5);
- write(0,0x32); //將8位總線轉為4位總線
- write(0,0x28); //在四位線下的初始化
- write(0,0x0c); //開顯示不顯示光標
- write(0,0x06); // 讀入后AC(指針)加1,向右寫
- write(0,0x01); //清屏
- write(0,0x80); //設置數據指針起點
- delay(255);
- }
- void main()
- {
-
- init(); //LCD初始化
- while(1)
- {
- write(1,'a');write(1,'b');delay(65255);delay(65255);
- }
- }
復制代碼
|