標(biāo)題: [求助]1602液晶顯示屏顯示不正確 而單片機(jī)最小系統(tǒng)測(cè)試沒問題 [打印本頁]

作者: 0o平平凡凡o0    時(shí)間: 2017-11-12 11:33
標(biāo)題: [求助]1602液晶顯示屏顯示不正確 而單片機(jī)最小系統(tǒng)測(cè)試沒問題
所用單片機(jī)為STC12C5A60S2,晶振11.0592M。。想用1602顯示一定的字符串,結(jié)果顯示不正確(相同程序和顯示屏在STC89C52RC最小系統(tǒng)班上可以正常顯示),錯(cuò)誤顯示如圖所示求助,什么原因造成的,該怎么解決?


相關(guān)程序如下:

  1. u8 Disp[]="*ABCDEFGHIJKLMNO*";
  2. /*******************************************************************************
  3. * 函 數(shù) 名         : main
  4. * 函數(shù)功能                   : 主函數(shù)
  5. * 輸    入         : 無
  6. * 輸    出         : 無
  7. *******************************************************************************/

  8. void main(void)
  9. {
  10.         u8 i;
  11.     //P0M0=0x0B;
  12.     delay_ms(100);
  13.         LcdInit();//初始化屏幕
  14.     delay_ms(100);
  15.         for(i=0;i<32;i++)//字符讀取
  16.         {
  17.                 LcdWriteData(Disp[i]);        
  18.         }
  19. //    LcdWriteCom(0x40+0x80);//第二行
  20. //    for(i=16;i<32;i++)
  21. //        {
  22. //                LcdWriteData(Disp[i]);        
  23. //        }
  24.         while(1){delay_ms(100);P05=!P05;}                        
  25. }


  26. void LcdWriteData(uchar dat)                        //寫入數(shù)據(jù)
  27. {
  28.         LCD1602_E = 0;        //使能清零
  29.     delay_us(10);
  30.         LCD1602_RS = 1;        //選擇輸入數(shù)據(jù)
  31.     delay_us(10);
  32.         LCD1602_RW = 0;        //選擇寫入
  33.     delay_us(10);

  34.         LCD1602_DATAPINS = dat; //寫入數(shù)據(jù)
  35. //        Lcd1602_Delay1ms(1);
  36.     delay_ms(1);

  37.         LCD1602_E = 1;   //寫入時(shí)序
  38. //        Lcd1602_Delay1ms(5);   //保持時(shí)間
  39.     delay_ms(5);
  40.         LCD1602_E = 0;
  41. }


  42. void LcdWriteCom(uchar com)          //寫入命令
  43. {
  44.         LCD1602_E = 0;     //使能
  45.     delay_us(1);
  46.         LCD1602_RS = 0;           //選擇發(fā)送命令
  47.     delay_us(1);
  48.         LCD1602_RW = 0;           //選擇寫入
  49.     delay_us(1);
  50.         
  51.         LCD1602_DATAPINS = com;     //放入命令
  52. //        Lcd1602_Delay1ms(1);                //等待數(shù)據(jù)穩(wěn)定
  53.     delay_ms(1);

  54.         LCD1602_E = 1;                  //寫入時(shí)序
  55. //        Lcd1602_Delay1ms(5);          //保持時(shí)間
  56.     delay_ms(5);

  57.         LCD1602_E = 0;
  58. }


  59. void LcdInit()                                                  //LCD初始化子程序
  60. {
  61.     LcdWriteCom(0x38);  //開顯示,兩行
  62.         LcdWriteCom(0x0c);  //開顯示不顯示光標(biāo)
  63.         LcdWriteCom(0x06);  //寫一個(gè)指針加1 LcdWriteCom(0x07);  //滾動(dòng)
  64.         LcdWriteCom(0x01);  //清屏
  65.         LcdWriteCom(0x80);  //設(shè)置數(shù)據(jù)指針起點(diǎn)
  66. }
復(fù)制代碼




作者: 0o平平凡凡o0    時(shí)間: 2017-11-12 13:03
有沒有大神?求指教!挺急的
作者: zlgmo    時(shí)間: 2017-11-12 21:53
一個(gè)是1T一個(gè)12T的,要改延時(shí)
作者: 0o平平凡凡o0    時(shí)間: 2017-11-16 19:50
zlgmo 發(fā)表于 2017-11-12 21:53
一個(gè)是1T一個(gè)12T的,要改延時(shí)

已經(jīng)解決了,硬件問題,自己做的板子,管腳有點(diǎn)錯(cuò)位,存在漏電!延時(shí)沒問題,改過了,謝謝了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1