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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

09 液晶顯示類單片機(jī)系統(tǒng)(proteus仿真+keil5)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:628491 發(fā)表于 2019-12-16 10:18 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)仿真實(shí)習(xí)任務(wù):
09 液晶顯示類單片機(jī)系統(tǒng)


  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit LCD_RS = P2^0;            
  6. sbit LCD_RW = P2^1;
  7. sbit LCD_EN = P2^2;

  8. uchar code dis1[] = {" **** WLCOME**** "};
  9. uchar code dis2[] = {" **LAN HONGHAO** "};
  10. uchar code dis3[] = {" ****EMOCLW **** "};
  11. uchar code dis4[] = {" **OAHGNOH NAL** "};

  12. /*******************************************************************/
  13. /*                                                                                                                                  */
  14. /* 延時(shí)子程序                                                                                                                  */
  15. /*                                                                                                                                  */
  16. /*******************************************************************/

  17. void delay(int ms)
  18. {                           
  19.    int i;
  20.    while(ms--)
  21.    {
  22.      for(i = 0; i< 250; i++)
  23.      {
  24.       _nop_();
  25.       _nop_();
  26.       _nop_();
  27.       _nop_();
  28.      }
  29.    }
  30. }

  31. /*******************************************************************/
  32. /*                                                                                                                                  */
  33. /*檢查L(zhǎng)CD忙狀態(tài)                                                                                                             */
  34. /*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫指令與數(shù)據(jù)。                                      */
  35. /*                                                                                                                                  */
  36. /*******************************************************************/

  37. bit lcd_busy()
  38. {                          
  39.     bit result;
  40.     LCD_RS = 0;
  41.     LCD_RW = 1;
  42.     LCD_EN = 1;
  43.     _nop_();
  44.     _nop_();
  45.     _nop_();
  46.     _nop_();
  47.      result = (bit)(P0&0x80);
  48.     LCD_EN = 0;
  49.     return result;
  50. }

  51. /*******************************************************************/
  52. /*                                                                                                                                  */
  53. /*寫指令數(shù)據(jù)到LCD                                                                                                          */
  54. /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                                                                   */
  55. /*                                                                                                                                  */
  56. /*******************************************************************/

  57. void lcd_wcmd(uchar cmd)
  58. {                          
  59.    while(lcd_busy());
  60.     LCD_RS = 0;
  61.     LCD_RW = 0;
  62.     LCD_EN = 0;
  63.     _nop_();
  64.     _nop_();
  65.     P0 = cmd;
  66.     _nop_();
  67.     _nop_();
  68.     _nop_();
  69.     _nop_();
  70.     LCD_EN = 1;
  71.     _nop_();
  72.     _nop_();
  73.     _nop_();
  74.     _nop_();
  75.     LCD_EN = 0;  
  76. }

  77. /*******************************************************************/
  78. /*                                                                                                                                  */
  79. /*寫顯示數(shù)據(jù)到LCD                                                                                                          */
  80. /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                                                                     */
  81. /*                                                                                                                                  */
  82. /*******************************************************************/

  83. void lcd_wdat(uchar dat)
  84. {                          
  85.    while(lcd_busy());
  86.     LCD_RS = 1;
  87.     LCD_RW = 0;
  88.     LCD_EN = 0;
  89.     P0 = dat;
  90.     _nop_();
  91.     _nop_();
  92.     _nop_();
  93.     _nop_();
  94.     LCD_EN = 1;
  95.     _nop_();
  96.     _nop_();
  97.     _nop_();
  98.     _nop_();
  99.     LCD_EN = 0;
  100. }

  101. /*******************************************************************/
  102. /*                                                                                                                                  */
  103. /*  設(shè)定顯示位置                                                                                                              */
  104. /*                                                                                                                                  */
  105. /*******************************************************************/

  106. void lcd_pos(uchar pos)
  107. {                          
  108.    lcd_wcmd(pos|0x80);      //數(shù)據(jù)指針=80+地址變量
  109. }

  110. /*******************************************************************/
  111. /*                                                                                                                                  */
  112. /*  LCD初始化設(shè)定                                                                                                           */
  113. /*                                                                                                                                  */
  114. /*******************************************************************/

  115. void lcd_init()
  116. {                        
  117.     lcd_wcmd(0x38);          //16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)
  118.     delay(5);
  119.     lcd_wcmd(0x38);         
  120.     delay(5);
  121.     lcd_wcmd(0x38);         
  122.     delay(5);

  123.     lcd_wcmd(0x0c);          //顯示開,關(guān)光標(biāo)
  124.     delay(5);
  125.     lcd_wcmd(0x06);          //移動(dòng)光標(biāo)
  126.     delay(5);
  127.     lcd_wcmd(0x01);          //清除LCD的顯示內(nèi)容
  128.     delay(5);
  129. }

  130. /*******************************************************************/
  131. /*                                                                                                                                  */
  132. /*  閃動(dòng)子程序                                                                                                                 */
  133. /*                                                                                                                                  */
  134. /*******************************************************************/

  135. void flash()
  136. {
  137.       delay(600);                    //控制停留時(shí)間
  138.       lcd_wcmd(0x08);            //關(guān)閉顯示
  139.       delay(200);                    //延時(shí)
  140.       lcd_wcmd(0x0c);            //開顯示
  141.       delay(200);                    //延時(shí)
  142.       lcd_wcmd(0x08);            //關(guān)閉顯示
  143.       delay(200);                    //延時(shí)
  144.       lcd_wcmd(0x0c);            //開顯示
  145.       delay(200);
  146. }

  147. /*******************************************************************/
  148. /*                                                                                                                                  */
  149. /*  主程序                                                                                                                       */
  150. /*                                                                                                                                  */
  151. /*******************************************************************/

  152. main()
  153. {
  154.     uchar i;
  155.     delay(10);
  156.     lcd_init();                        // 初始化LCD
  157.       

  158.     while(1)              
  159.    {
  160.       lcd_wcmd(0x06);           //向右移動(dòng)光標(biāo)
  161.       lcd_pos(0);                    //設(shè)置顯示位置為第一行的第1個(gè)字符
  162.       i = 0;

  163.      while(dis1[i] != '\0')
  164.      {                                     //顯示字符"   Welcome  TO   "
  165.        lcd_wdat(dis1[i]);
  166.        i++;
  167.        delay(30);                     //控制兩字之間顯示速度
  168.      }

  169.       lcd_pos(0x40);               //設(shè)置顯示位置為第二行第1個(gè)字符
  170.       i = 0;

  171.      while(dis2[i] != '\0')
  172.      {
  173.        lcd_wdat(dis2[i]);          //顯示字符" WWW*RICHMCU*COM "
  174.        i++;
  175.        delay(30);                     //控制兩字之間顯示速度
  176.      }

  177.       flash();                           //閃動(dòng)二次
  178.       lcd_wcmd(0x01);           //清除LCD的顯示內(nèi)容
  179.       delay(200);                    //控制轉(zhuǎn)換時(shí)間
  180.       lcd_wcmd(0x04);           //向左移動(dòng)光標(biāo)
  181.       lcd_pos(15);                  //設(shè)置顯示位置為第一行的第16個(gè)字符
  182.       i = 0;

  183.      while(dis3[i] != '\0')
  184.      {                                     //顯示字符"   Welcome  TO   "
  185.        lcd_wdat(dis3[i]);
  186.        i++;
  187.        delay(30);                     //控制兩字之間顯示速度
  188.      }

  189.       lcd_pos(0x4F);              //設(shè)置顯示位置為第二行的第16個(gè)字符
  190.       i = 0;

  191.      while(dis4[i] != '\0')
  192.      {
  193.        lcd_wdat(dis4[i]);        //顯示字符" WWW*RICHMCU*COM "
  194.        i++;
  195.        delay(30);                   //控制兩字之間顯示速度
  196.      }

  197.       flash();                         //閃動(dòng)二次
  198.       lcd_wcmd(0x01);         //清除LCD的顯示內(nèi)容
  199.       delay(200);                 //控制轉(zhuǎn)換時(shí)間
  200.          
  201.    }
  202. }
復(fù)制代碼




09 LCD MCU.rar

130.29 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产精品一区二区 | 一区精品国产欧美在线 | 产真a观专区 | 丁香综合 | 精品国产伦一区二区三区观看说明 | 美女操网站 | 成人亚洲性情网站www在线观看 | 欧美另类日韩 | 亚洲一区成人 | 国产伦精品一区二区三区在线 | 成人乱人乱一区二区三区软件 | 欧美成人精品一区二区三区 | 亚洲 欧美 日韩 在线 | 欧美一区二区三区四区视频 | 超碰在线久 | 免费精品 | 国产欧美一区二区三区国产幕精品 | 日韩 国产 在线 | 91精品国产综合久久久久久丝袜 | 免费在线观看成年人视频 | 国产在线精品一区二区 | 国产精品美女久久久久 | 在线观看第一页 | 在线观看av免费 | 91一区二区三区在线观看 | 国产91在线精品 | 国产一级特黄真人毛片 | 亚洲第一网站 | 国产偷录视频叫床高潮对白 | 欧美高清视频一区 | 日韩不卡一二区 | 久久狠狠| 亚洲男人天堂网 | 成人免费看片又大又黄 | 欧美日韩亚洲在线 | 欧美久久一区二区三区 | 精品日韩欧美一区二区 | 国产成在线观看免费视频 | 中文字幕一区二区三区精彩视频 | 成人在线h| 午夜精品一区二区三区在线视频 |