|
所用單片機為STC12C5A60S2,晶振11.0592M。。想用1602顯示一定的字符串,結(jié)果顯示不正確(相同程序和顯示屏在STC89C52RC最小系統(tǒng)班上可以正常顯示),錯誤顯示如圖所示求助,什么原因造成的,該怎么解決?
IMG_20171112_113152.jpg (5.47 MB, 下載次數(shù): 79)
下載附件
錯誤顯示
2017-11-12 11:32 上傳
相關(guān)程序如下:
- u8 Disp[]="*ABCDEFGHIJKLMNO*";
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main(void)
- {
- u8 i;
- //P0M0=0x0B;
- delay_ms(100);
- LcdInit();//初始化屏幕
- delay_ms(100);
- for(i=0;i<32;i++)//字符讀取
- {
- LcdWriteData(Disp[i]);
- }
- // LcdWriteCom(0x40+0x80);//第二行
- // for(i=16;i<32;i++)
- // {
- // LcdWriteData(Disp[i]);
- // }
- while(1){delay_ms(100);P05=!P05;}
- }
- void LcdWriteData(uchar dat) //寫入數(shù)據(jù)
- {
- LCD1602_E = 0; //使能清零
- delay_us(10);
- LCD1602_RS = 1; //選擇輸入數(shù)據(jù)
- delay_us(10);
- LCD1602_RW = 0; //選擇寫入
- delay_us(10);
- LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
- // Lcd1602_Delay1ms(1);
- delay_ms(1);
- LCD1602_E = 1; //寫入時序
- // Lcd1602_Delay1ms(5); //保持時間
- delay_ms(5);
- LCD1602_E = 0;
- }
- void LcdWriteCom(uchar com) //寫入命令
- {
- LCD1602_E = 0; //使能
- delay_us(1);
- LCD1602_RS = 0; //選擇發(fā)送命令
- delay_us(1);
- LCD1602_RW = 0; //選擇寫入
- delay_us(1);
-
- LCD1602_DATAPINS = com; //放入命令
- // Lcd1602_Delay1ms(1); //等待數(shù)據(jù)穩(wěn)定
- delay_ms(1);
- LCD1602_E = 1; //寫入時序
- // Lcd1602_Delay1ms(5); //保持時間
- delay_ms(5);
- LCD1602_E = 0;
- }
- void LcdInit() //LCD初始化子程序
- {
- LcdWriteCom(0x38); //開顯示,兩行
- LcdWriteCom(0x0c); //開顯示不顯示光標(biāo)
- LcdWriteCom(0x06); //寫一個指針加1 LcdWriteCom(0x07); //滾動
- LcdWriteCom(0x01); //清屏
- LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針起點
- }
復(fù)制代碼
|
|