欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
驅動51單片機練習LCD1602時遇到的關于忙位和延時的問題
[打印本頁]
作者:
wangyi041228
時間:
2023-3-18 11:50
標題:
驅動51單片機練習LCD1602時遇到的關于忙位和延時的問題
二手普中A7套裝,STC89C516,晶振12MHz,12T模式,按手冊資料寫LCD1602的簡單模塊,遇到幾個問題:
1. 檢查忙位讀到0跳出死循環,但是寫數據操作只能成功25%。搜到不少中文資料也提到有類似問題,有解決方法嗎?
2. 然后用軟件延時,調參后發現實際需要的時間略小于各種資料上給出的值很多就能穩定。這和主頻有關嗎?換更好的MCU是不是能進一步較小在程序里的軟件延時?
資料250kHz,清屏和復位1640us,寫40us
資料270kHz,清屏和復位1520us,寫37us
實驗12MHz,清屏和復位1400us,寫25us
3. 我手寫的單變量和計算器給出的延時編譯后占用code和data數量一樣。數值調整到穩定后,參數如下,i--和--i的速度是不是差距較大?
unsigned char i, j;
i = 3;j = 182;
do
{
while (--j);
} while (--i);
unsigned char time=255;
while (time--);
4. 不少資料的寫操作中,會在置高電平和置低電平后分別delay,我的實驗中發現只需要在高電平后delay一次,是不是這款MCU才能這樣,不能普遍運用到其他MCU?當然,LCDWrite(CMD,0x01)或LCDWrite(CMD,0x02)之后還是要delay 1.5ms。
5. 十幾年前的一份資料說,初始化時模式要發三次,是不是對于現在的MCU不再適用?
作者:
人中狼
時間:
2023-3-18 20:18
對于操作1602這類模塊,出現問題如果確定硬件沒問題,那就是軟件的問題了
作者:
wangyi041228
時間:
2023-3-19 00:05
人中狼 發表于 2023-3-18 20:18
對于操作1602這類模塊,出現問題如果確定硬件沒問題,那就是軟件的問題了
感謝指點。
重新翻閱一遍資料,整理一遍思路,在讀寫數據的函數最前面檢查忙信號,成功了。
各種資料中的軟件延時、P0=0xff上拉操作在實驗中都沒有必要。
合并寫命令和寫數據時,rs類型用uchar比部分資料中的bit更省code和data。
主樓中還有問題3,還望指點。
代碼如下:
void LCD_Wait()
{
unsigned char uchar0;
LCD1602_RS=0;
LCD1602_RW=1;
LCD1602_E=1;
while(1){
uchar0=LCD1602_D;
if(uchar0>>7==0)break;
}
LCD1602_E=0;
}
void LCD_Write(unsigned char rs, unsigned char uchar0)
{
LCD_Wait();
LCD1602_RS=rs;
LCD1602_RW=0;
LCD1602_D=uchar0;
LCD1602_E=1;
LCD1602_E=0;
}
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1