久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3182|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+LCD12864液晶無法顯示,請大佬幫忙看看錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
在本論壇下載了一個(gè)51單片機(jī)門禁系統(tǒng),但是液晶怎么調(diào)都顯示不出來,ce'shi具體電路如圖所示,測試穩(wěn)壓都是沒問題的,VCCC=5V,調(diào)節(jié)可調(diào)電阻,也有變化,但就是沒有字符。

單片機(jī)代碼如下。
  1. #include <reg51.h>
  2. #include <intrins.h>
  3.         
  4. #define uchar unsigned char
  5. #define uint  unsigned int


  6. /*12864端口定義*/
  7. #define LCD_data  P0             //數(shù)據(jù)口
  8. sbit LCD_RS  =  P2^5;            //寄存器選擇輸入
  9. sbit LCD_RW  =  P2^6;            //液晶讀/寫控制
  10. sbit LCD_EN  =  P2^7;            //液晶使能控制
  11. sbit LCD_RST =  P3^2;


  12. sbit beep  =  P3^5;
  13. //sbit LCD_PSB =  P1^2;            //串/并方式控制  電路直接致高 并行


  14. uchar code dis1[] = {"Hello"};
  15. uchar code dis2[] = {"Word"};
  16. uchar code dis3[] = {"你好"};
  17. uchar code dis4[] = {"世界"};                  


  18. #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};         //延時(shí)4US


  19. /*******************************************************************/
  20. /*                                                                 */
  21. /*  延時(shí)函數(shù)                                                       */
  22. /*                                                                 */
  23. /*******************************************************************/
  24. void delay(int ms)                                 //延時(shí)MS
  25. {
  26.     while(ms--)
  27.         {
  28.       uchar i;
  29.           for(i=0;i<250;i++)  
  30.            {
  31.             _nop_();                           
  32.                 _nop_();
  33.                 _nop_();
  34.                 _nop_();
  35.            }
  36.         }
  37. }


  38. /*******************************************************************/
  39. /*                                                                 */
  40. /*因?yàn)橐_的定義DB0..DB7是從P1.7...P1.0排列的                                                    */
  41. /*所以順序需要調(diào)換一下                                             */
  42. /*                                                                 */
  43. /*******************************************************************/
  44. uchar swapbit(uchar udata)
  45. {
  46.   uchar ii,tmp=0;
  47.   for(ii=0;ii<8;ii++)
  48.   {
  49.     tmp<<=1;
  50.     if(udata&0x01)
  51.     {
  52.       tmp|=0x01;
  53.     }
  54.     udata>>=1;
  55.   }
  56.   return tmp;
  57. }
  58.                
  59. /*******************************************************************/
  60. /*                                                                 */
  61. /*檢查LCD忙狀態(tài)                                                    */
  62. /*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫指令與數(shù)據(jù)。      */
  63. /*                                                                 */
  64. /*******************************************************************/
  65. bit lcd_busy()
  66. {                          
  67.     bit result;
  68.     LCD_RS = 0;
  69.     LCD_RW = 1;
  70.     LCD_EN = 1;
  71.     delayNOP();
  72.     result = (bit)(P0&0x80);
  73.     LCD_EN = 0;
  74.     return(result);
  75. }
  76. /*******************************************************************/
  77. /*                                                                 */
  78. /*寫指令數(shù)據(jù)到LCD                                                  */
  79. /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
  80. /*                                                                 */
  81. /*******************************************************************/
  82. void lcd_wcmd(uchar cmd)
  83. {                          
  84.     while(lcd_busy());
  85.     LCD_RS = 0;
  86.     LCD_RW = 0;
  87.     LCD_EN = 0;
  88.     _nop_();
  89.     _nop_();
  90.     P0 =swapbit(cmd);
  91.     delayNOP();
  92.     LCD_EN = 1;
  93.     delayNOP();
  94.     LCD_EN = 0;  
  95. }
  96. /*******************************************************************/
  97. /*                                                                 */
  98. /*寫顯示數(shù)據(jù)到LCD                                                  */
  99. /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                               */
  100. /*                                                                 */
  101. /*******************************************************************/
  102. void lcd_wdat(uchar dat)
  103. {                          
  104.     while(lcd_busy());
  105.     LCD_RS = 1;
  106.     LCD_RW = 0;
  107.     LCD_EN = 0;
  108.     P0 = swapbit(dat);
  109.     delayNOP();
  110.     LCD_EN = 1;
  111.     delayNOP();
  112.     LCD_EN = 0;
  113. }
  114. /*******************************************************************/
  115. /*                                                                 */
  116. /*  LCD初始化設(shè)定                                                  */
  117. /*                                                                 */
  118. /*******************************************************************/
  119. void lcd_init()
  120. {


  121. //  LCD_PSB = 1;         //并口方式
  122.           LCD_RST =0;
  123.         delay(5);
  124.         LCD_RST =1;
  125.         delay(5);
  126.     lcd_wcmd(0x34);      //擴(kuò)充指令操作
  127.     delay(5);
  128.     lcd_wcmd(0x30);      //基本指令操作
  129.     delay(5);
  130.     lcd_wcmd(0x0C);      //顯示開,關(guān)光標(biāo)
  131.     delay(5);
  132.     lcd_wcmd(0x01);      //清除LCD的顯示內(nèi)容
  133.     delay(5);
  134. }


  135. /*********************************************************/
  136. /*                                                       */
  137. /* 設(shè)定顯示位置                                          */
  138. /*                                                       */
  139. /*********************************************************/
  140. void lcd_pos(uchar X,uchar Y)
  141. {                          
  142.    uchar  pos;
  143.    if (X==0)
  144.      {X=0x80;}
  145.    else if (X==1)
  146.      {X=0x90;}
  147.    else if (X==2)
  148.      {X=0x88;}
  149.    else if (X==3)
  150.      {X=0x98;}
  151.    pos = X+Y ;  
  152.    lcd_wcmd(pos);     //顯示地址
  153. }
  154. /*********************************************************/
  155. /*                                                                                                                 */
  156. /* 主程序                                                                                    */
  157. /*                                                       */
  158. /*********************************************************/
  159. void main()
  160. {
  161.     uchar i;


  162.         delay(10);                 //延時(shí)


  163.     lcd_init();                //初始化LCD            
  164.   
  165.     lcd_pos(0,0);             //設(shè)置顯示位置為第一行的第1個(gè)字符
  166.     i = 0;
  167.     while(dis1[ i] != '\0')
  168.      {                         //顯示字符
  169.        lcd_wdat(dis1[ i]);
  170.        i++;
  171.      }
  172.     lcd_pos(1,0);             //設(shè)置顯示位置為第二行的第1個(gè)字符
  173.     i = 0;
  174.     while(dis2[ i] != '\0')
  175.      {
  176.        lcd_wdat(dis2[ i]);      //顯示字符
  177.        i++;
  178.      }
  179.           lcd_pos(2,0);             //設(shè)置顯示位置為第三行的第1個(gè)字符
  180.      i = 0;
  181.     while(dis3 != '\0')
  182.     {
  183.        lcd_wdat(dis3[ i]);      //顯示字符
  184.        i++;
  185.     }
  186.          lcd_pos(3,0);             //設(shè)置顯示位置為第四行的第1個(gè)字符
  187.      i = 0;
  188.     while(dis4[ i] != '\0')
  189.     {
  190.        lcd_wdat(dis4[ i]);      //顯示字符
  191.        i++;
  192.     }
  193. //   while(1);
  194. }
復(fù)制代碼


7.png (12.3 KB, 下載次數(shù): 56)

7.png

6.png (10.85 KB, 下載次數(shù): 54)

6.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:45439 發(fā)表于 2019-7-2 10:37 | 只看該作者
說一下個(gè)人見解,如果你的代碼都沒有問題的話,建議在液晶上電或復(fù)位之后加一定的延遲,如果剛開始不知道延遲時(shí)間多久合適,可以先設(shè)置100ms。或者你應(yīng)該先去讀一下液晶的ID或者其它寄存器,先保證可以正常通信
回復(fù)

使用道具 舉報(bào)

板凳
ID:591189 發(fā)表于 2019-11-15 11:12 | 只看該作者
樓主解決了嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:298008 發(fā)表于 2020-1-6 20:34 | 只看該作者
謝謝樓主分享!!!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99久久精品免费 | 亚洲视频在线一区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 亚洲一区国产精品 | 亚洲日韩中文字幕一区 | 亚洲国产成人av好男人在线观看 | 免费黄色网址视频 | caoporn国产 | 国产高清精品一区二区三区 | 欧美日韩亚洲视频 | 成人在线精品 | 91精品国产高清久久久久久久久 | 四色成人av永久网址 | 日本高清中文字幕 | 男人天堂社区 | 男女羞羞免费视频 | 久久精品国产清自在天天线 | 亚洲天堂一区 | 国产精品中文字幕一区二区三区 | 欧美一区二区三区免费在线观看 | 久久激情视频 | 狠狠操在线 | 亚洲综合无码一区二区 | 午夜电影福利 | 国产成人在线播放 | 国产精品久久在线 | 日韩欧美国产精品一区二区 | 黄色在线免费网站 | 欧美美女一区二区 | 日韩精品在线免费 | 日韩精品一区二区三区在线观看 | 中文字幕视频在线观看 | 91一区二区三区在线观看 | 在线电影日韩 | 日韩精品视频一区二区三区 | 国产精彩视频在线观看 | 精区3d动漫一品二品精区 | 精彩视频一区二区三区 | 一级黄色生活视频 | 精品无码久久久久久久动漫 | 久国产|