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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 47411|回復: 43
打印 上一主題 下一主題
收起左側

用51單片機控制LCD12864顯示屏源程序

  [復制鏈接]
跳轉到指定樓層
樓主
12864液晶在出廠時其對比度已經調好,所以用戶在使用的時候第三管腳可不用接任何東西,本實驗板上為了兼容多家12864液晶所以加了液晶對比度調節電位器,若用戶使用我們配套的12864液晶可不用管它,液晶的第三管腳懸空就可以。有些液晶功耗比較大,用戶在使用的時候可將液晶的第19、20引腳的背光不接,這樣字體會很清楚。



單片機源程序如下:
  1. /**********************BST-V51實驗開發板例程************************
  2. *  平臺:BST-V51 + Keil U3 + STC89C52
  3. *  名稱:
  4. *  晶振:11.0592MHZ
  5. *  說明:免費開源,不提供源代碼分析.
  6. ******************************************************************/
  7. /*******************************************************************/
  8. /*                                                                 */
  9. /* 單片機開發系統演示程序 - 128*64LCD顯示顯示  */
  10. /*                                                                 */
  11. //;*  LCD型號:TS12864A-3(帶漢字庫)或兼容型號    控制器ST7920      */
  12. //;*  MCU:AT89S52 ,晶體頻率:11.0592MHz                              */
  13. /*                                                                 */
  14. /*******************************************************************/

  15. #include <reg51.h>
  16. #include <intrins.h>
  17.        
  18. #define uchar unsigned char
  19. #define uint  unsigned int
  20. /*12864端口定義*/
  21. #define LCD_data  P0             //數據口
  22. sbit LCD_RS  =  P2^6;            //寄存器選擇輸入
  23. sbit LCD_RW  =  P2^5;            //液晶讀/寫控制
  24. sbit LCD_EN  =  P2^7;            //液晶使能控制
  25. sbit LCD_PSB =  P1^2;            //串/并方式控制
  26. sbit wela    =  P2^6;
  27. sbit dula    =  P2^7;

  28. uchar code dis1[] = {"看什么看!"};
  29. uchar code dis2[] = {"顯示屏而已!"};
  30. uchar code dis3[] = {"少見多怪!"};
  31. uchar code dis4[] = {"那涼哪呆著!"};                  

  32. #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  33. uchar IRDIS[2];
  34. uchar IRCOM[4];
  35. void delay0(uchar x);  //x*0.14MS
  36. void beep();
  37. void  dataconv();
  38. void lcd_pos(uchar X,uchar Y);  //確定顯示位置
  39. /*******************************************************************/
  40. /*                                                                 */
  41. /*  延時函數                                                       */
  42. /*                                                                 */
  43. /*******************************************************************/
  44. void delay(int ms)
  45. {
  46.     while(ms--)
  47.         {
  48.       uchar i;
  49.           for(i=0;i<250;i++)  
  50.            {
  51.             _nop_();                          
  52.                 _nop_();
  53.                 _nop_();
  54.                 _nop_();
  55.            }
  56.         }
  57. }               
  58. /*******************************************************************/
  59. /*                                                                 */
  60. /*檢查LCD忙狀態                                                    */
  61. /*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。      */
  62. /*                                                                 */
  63. /*******************************************************************/
  64. bit lcd_busy()
  65. {                          
  66.     bit result;
  67.     LCD_RS = 0;
  68.     LCD_RW = 1;
  69.     LCD_EN = 1;
  70.     delayNOP();
  71.     result = (bit)(P0&0x80);
  72.     LCD_EN = 0;
  73.     return(result);
  74. }
  75. /*******************************************************************/
  76. /*                                                                 */
  77. /*寫指令數據到LCD                                                  */
  78. /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
  79. /*                                                                 */
  80. /*******************************************************************/
  81. void lcd_wcmd(uchar cmd)
  82. {                          
  83.    while(lcd_busy());
  84.     LCD_RS = 0;
  85.     LCD_RW = 0;
  86.     LCD_EN = 0;
  87.     _nop_();
  88.     _nop_();
  89.     P0 = cmd;
  90.     delayNOP();
  91.     LCD_EN = 1;
  92.     delayNOP();
  93.     LCD_EN = 0;  
  94. }
  95. /*******************************************************************/
  96. /*                                                                 */
  97. /*寫顯示數據到LCD                                                  */
  98. /*RS=H,RW=L,E=高脈沖,D0-D7=數據。                               */
  99. /*                                                                 */
  100. /*******************************************************************/
  101. void lcd_wdat(uchar dat)
  102. {                          
  103.    while(lcd_busy());
  104.     LCD_RS = 1;
  105.     LCD_RW = 0;
  106.     LCD_EN = 0;
  107.     P0 = dat;
  108.     delayNOP();
  109.     LCD_EN = 1;
  110.     delayNOP();
  111.     LCD_EN = 0;
  112. }
  113. /*******************************************************************/
  114. /*                                                                 */
  115. /*  LCD初始化設定                                                  */
  116. /*                                                                 */
  117. /*******************************************************************/
  118. void lcd_init()
  119. {

  120.     LCD_PSB = 1;         //并口方式
  121.    
  122.     lcd_wcmd(0x34);      //擴充指令操作
  123.     delay(5);
  124.     lcd_wcmd(0x30);      //基本指令操作
  125.     delay(5);
  126.     lcd_wcmd(0x0C);      //顯示開,關光標
  127.     delay(5);
  128.     lcd_wcmd(0x01);      //清除LCD的顯示內容
  129.     delay(5);
  130. }
  131. /*********************************************************/
  132. /*                                                                                                                 */
  133. /* 主程序                                                                                    */
  134. /*                                                       */
  135. /*********************************************************/
  136.   main()
  137. {
  138.     uchar i;
  139.     delay(10);                 //延時
  140.     wela=0;
  141.         dula=0;
  142.     lcd_init();                //初始化LCD            
  143.   
  144.     lcd_pos(0,0);             //設置顯示位置為第一行的第1個字符
  145.      i = 0;
  146.     while(dis1[i] != '\0')
  147.      {                         //顯示字符
  148.        lcd_wdat(dis1[i]);
  149.        i++;
  150.      }
  151.     lcd_pos(1,0);             //設置顯示位置為第二行的第1個字符
  152.      i = 0;
  153.     while(dis2[i] != '\0')
  154.      {
  155.        lcd_wdat(dis2[i]);      //顯示字符
  156.        i++;
  157.      }
  158.          lcd_pos(2,0);             //設置顯示位置為第三行的第1個字符
  159.      i = 0;
  160.     while(dis3[i] != '\0')
  161.      {
  162.        lcd_wdat(dis3[i]);      //顯示字符
  163.        i++;
  164.      }
  165.          lcd_pos(3,0);             //設置顯示位置為第四行的第1個字符
  166.      i = 0;
  167.     while(dis4[i] != '\0')
  168.      {
  169.        lcd_wdat(dis4[i]);      //顯示字符
  170.        i++;
  171.      }
  172.      while(1);
  173. }



  174. /*********************************************************/
  175. /*                                                                                                                 */
  176. /* 延時x*0.14ms子程序                                                                         */
  177. /*                                                       */
  178. /*********************************************************/

  179. void delay0(uchar x)    //x*0.14MS
  180. {
  181.   uchar i;
  182. ……………………

  183. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
12864顯示字符.rar (19.33 KB, 下載次數: 1635)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏34 分享淘帖 頂6 踩
回復

使用道具 舉報

沙發
ID:382837 發表于 2018-8-4 15:43 來自手機 | 只看該作者
頭文件是自己編寫的嗎
回復

使用道具 舉報

板凳
ID:126254 發表于 2018-9-10 17:12 | 只看該作者
謝謝樓主了
回復

使用道具 舉報

地板
ID:203947 發表于 2018-10-2 09:09 | 只看該作者
好好學習,日后有用之處
回復

使用道具 舉報

5#
ID:241700 發表于 2018-10-27 17:55 | 只看該作者
好東西,收藏了,自己做小玩具的時候一定用得到。
回復

使用道具 舉報

6#
ID:147492 發表于 2018-11-14 14:56 | 只看該作者
學習前輩~~~
回復

使用道具 舉報

7#
ID:436579 發表于 2018-11-30 15:40 | 只看該作者
厲害。
回復

使用道具 舉報

8#
ID:451217 發表于 2018-12-21 10:26 | 只看該作者
這文件好像在哪見過
回復

使用道具 舉報

9#
ID:451363 發表于 2018-12-21 14:04 來自手機 | 只看該作者
學習學習
回復

使用道具 舉報

10#
ID:213280 發表于 2018-12-23 10:13 | 只看該作者
sbit wela    =  P2^6;
sbit dula    =  P2^7;這兩個是定義啥
回復

使用道具 舉報

11#
ID:473264 發表于 2019-1-27 00:10 | 只看該作者
收藏
回復

使用道具 舉報

12#
ID:490006 發表于 2019-3-14 16:39 | 只看該作者
感謝樓主大大,好人一生平安!!!
回復

使用道具 舉報

13#
ID:490330 發表于 2019-4-3 08:47 | 只看該作者
十分感謝
回復

使用道具 舉報

14#
ID:480412 發表于 2019-5-13 23:04 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

15#
ID:470493 發表于 2019-7-30 10:20 | 只看該作者
非常好用,感謝分享
回復

使用道具 舉報

16#
ID:319288 發表于 2019-9-18 10:30 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

17#
ID:234544 發表于 2019-10-3 21:31 | 只看該作者
下載對話框總是一閃而過,怎么回事
回復

使用道具 舉報

18#
ID:581801 發表于 2019-10-6 23:54 | 只看該作者
藍琪 發表于 2018-12-23 10:13
sbit wela    =  P2^6;
sbit dula    =  P2^7;這兩個是定義啥

樓主的開發板上P2^6,P2^7.有與數碼管鏈接,所以需要定義這兩個引腳,然后在初始化中關閉數碼管。
回復

使用道具 舉報

19#
ID:620768 發表于 2019-10-8 22:00 | 只看該作者
有下載的嗎,求一份1273176424@qq.com
回復

使用道具 舉報

20#
ID:470696 發表于 2019-10-21 00:01 來自手機 | 只看該作者
感謝樓主分享,小白我拿去研究一下
回復

使用道具 舉報

21#
ID:198286 發表于 2019-10-22 17:15 | 只看該作者
學習一下,注釋比較詳細,適合初學者
回復

使用道具 舉報

22#
ID:294754 發表于 2019-11-19 19:29 | 只看該作者
感謝分享
回復

使用道具 舉報

23#
ID:643991 發表于 2019-11-19 23:28 來自手機 | 只看該作者
感謝分享
回復

使用道具 舉報

24#
ID:649789 發表于 2019-11-26 11:26 | 只看該作者
原理圖啥樣呀
回復

使用道具 舉報

25#
ID:648008 發表于 2019-12-3 01:27 | 只看該作者
求仿真電路圖
回復

使用道具 舉報

26#
ID:136189 發表于 2020-2-12 22:31 | 只看該作者
好好學習,日后有用之處
回復

使用道具 舉報

27#
ID:421783 發表于 2020-3-10 20:46 | 只看該作者
藍琪 發表于 2018-12-23 10:13
sbit wela    =  P2^6;
sbit dula    =  P2^7;這兩個是定義啥

數碼管位選 段選
回復

使用道具 舉報

28#
ID:423533 發表于 2020-4-3 19:37 | 只看該作者
回帖是一種美德~~~~感謝分享
回復

使用道具 舉報

29#
ID:419529 發表于 2020-4-14 08:42 | 只看該作者
感謝分享
回復

使用道具 舉報

30#
ID:698810 發表于 2020-4-29 15:12 | 只看該作者

頭文件是自己編寫的嗎
回復

使用道具 舉報

31#
ID:231831 發表于 2020-4-30 09:58 | 只看該作者
我要二維碼的,正在到處找!
回復

使用道具 舉報

32#
ID:742667 發表于 2020-5-2 09:56 | 只看該作者
壓縮包里有原理圖嗎?
回復

使用道具 舉報

33#
ID:617947 發表于 2020-5-9 00:13 | 只看該作者
感謝樓主,。。。。
回復

使用道具 舉報

34#
ID:560981 發表于 2020-5-11 16:22 | 只看該作者
感謝樓主,頭文件要自己編寫嗎?
回復

使用道具 舉報

35#
ID:750087 發表于 2020-5-19 21:24 來自手機 | 只看該作者
這跟劉清翔51單片機的教程源碼一樣
回復

使用道具 舉報

36#
ID:775487 發表于 2020-6-26 13:38 | 只看該作者
用來測試新買的屏,非常好用!謝謝分享!
回復

使用道具 舉報

37#
ID:807159 發表于 2020-12-8 13:54 | 只看該作者
用譜中的沒運行成功
回復

使用道具 舉報

38#
ID:870548 發表于 2021-1-12 20:35 | 只看該作者
請問有仿真圖嗎?
回復

使用道具 舉報

39#
ID:784221 發表于 2021-1-25 15:25 | 只看該作者
運行不成功,屏上什么也沒有
回復

使用道具 舉報

40#
ID:784221 發表于 2021-1-25 15:42 | 只看該作者
額!我人傻了,我自己沒搞清楚開發板上接口的位置順序,導致顯示不出來,還以為是程序的問題。樓主的程序是對的,感謝樓主大大,這對我非常有用,救我于水火之中!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 小h片免费观看久久久久 | 91精品国产色综合久久不卡98口 | 国久久| 欧美日韩中文在线 | 精品免费视频 | 成人小视频在线免费观看 | 中文字幕国产第一页 | 久久com| 91xh98hx 在线 国产 | 亚洲最新在线视频 | 久久机热| 精品欧美乱码久久久久久1区2区 | 黑人一级黄色大片 | 日韩a v在线免费观看 | 中文字幕av亚洲精品一部二部 | 亚洲人的av| аⅴ资源新版在线天堂 | 久久久国产一区二区三区 | 婷婷色在线播放 | 亚洲精品av在线 | 中文字幕国产精品 | 黄色一级免费 | 91九色视频 | 午夜在线免费观看视频 | 国产乱码一二三区精品 | 色吊丝2288sds中文字幕 | 在线免费观看黄视频 | 国产久视频 | 国产精品免费一区二区三区 | 国产高清精品在线 | 欧美极品一区二区 | 91成人在线 | 亚洲精品一区二区网址 | 久久伊人影院 | 国产一区黄色 | 91精品亚洲 | 丁香久久| 久久久久亚洲精品 | 亚洲精品国产成人 | 国产精品久久久久久亚洲调教 | 日韩国产精品一区二区三区 |