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

標題: 51單片機驅動LCD1602移動顯示C語言源程序 [打印本頁]

作者: 凱爾特    時間: 2018-7-30 17:32
標題: 51單片機驅動LCD1602移動顯示C語言源程序
單片機源程序如下:
  1. #include <reg52.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[] = {"    CHINESE     "};
  9. uchar code dis2[] = {"    NEW YEAR    "};


  10. /*******************************************************************/
  11. /*                                                                                                                                  */
  12. /* 延時子程序                                                                                                                  */
  13. /*                                                                                                                                  */
  14. /*******************************************************************/

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

  29. /*******************************************************************/
  30. /*                                                                                                                                  */
  31. /*檢查LCD忙狀態                                                                                                             */
  32. /*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數據。                                      */
  33. /*                                                                                                                                  */
  34. /*******************************************************************/

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

  49. /*******************************************************************/
  50. /*                                                                                                                                  */
  51. /*寫指令數據到LCD                                                                                                          */
  52. /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                                                                   */
  53. /*                                                                                                                                   */
  54. /*******************************************************************/

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

  75. /*******************************************************************/
  76. /*                                                                                                                                  */
  77. /*寫顯示數據到LCD                                                                                                          */
  78. /*RS=H,RW=L,E=高脈沖,D0-D7=數據。                                                                     */
  79. /*                                                                                                                                  */
  80. /*******************************************************************/

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

  99. /*******************************************************************/
  100. /*                                                                                                                                  */
  101. /*  設定顯示位置                                                                                                              */
  102. /*                                                                                                                                  */
  103. /*******************************************************************/

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

  108. /*******************************************************************/
  109. /*                                                                                                                                  */
  110. /*  LCD初始化設定                                                                                                           */
  111. /*                                                                                                                                  */
  112. /*******************************************************************/

  113. void lcd_init()
  114. {
  115.     delay(15);                     //等待LCD電源穩定        
  116.     lcd_wcmd(0x38);          //16*2顯示,5*7點陣,8位數據
  117.     delay(5);
  118.     lcd_wcmd(0x38);         
  119.     delay(5);
  120.     lcd_wcmd(0x38);         
  121.     delay(5);

  122.     lcd_wcmd(0x0c);          //顯示開,關光標
  123.     delay(5);
  124.     lcd_wcmd(0x06);          //移動光標
  125.     delay(5);
  126.     lcd_wcmd(0x01);          //清除LCD的顯示內容
  127.     delay(5);
  128. }

  129. /*******************************************************************/
  130. /*                                                                                                                                  */
  131. /*  清屏子程序                                                                                                                 */
  132. /*                                                                                                                                  */
  133. /*******************************************************************/

  134. void lcd_clr()
  135. {
  136.     lcd_wcmd(0x01);          //清除LCD的顯示內容
  137.     delay(5);
  138. }

  139. /*******************************************************************/
  140. /*                                                                                                                                  */
  141. /*  閃動子程序                                                                                                                 */
  142. /*                                                                                                                                  */
  143. /*******************************************************************/

  144. void flash()
  145. {
  146.     delay(600);                     //控制停留時間
  147.     lcd_wcmd(0x08);            //關閉顯示
  148.     delay(200);                    //延時
  149.     lcd_wcmd(0x0c);            //開顯示
  150.     delay(200);
  151.     lcd_wcmd(0x08);            //關閉顯示
  152.     delay(200);                     //延時
  153.     lcd_wcmd(0x0c);            //開顯示
  154.     delay(200);
  155. }

  156. /*******************************************************************/
  157. /*                                                                                                                                  */
  158. /*  主程序                                                                                                                       */
  159. /*                                                                                                                                  */
  160. /*******************************************************************/

  161. main()
  162. {
  163.     uchar i,j;
  164.     delay(10);
  165.     lcd_init();                          //初始化LCD

  166.     while(1)              
  167.    {
  168.       lcd_clr();

  169.       lcd_pos(0x10);               //設置顯示位置為第一行第17列
  170.       i = 0;

  171.      while(dis1[i] != '\0')
  172.      {                                      //顯示字符"    CHINESE     "
  173.        lcd_wdat(dis1[i]);
  174.        i++;
  175.      }

  176.       lcd_pos(0x50);              //設置顯示位置為第二行第17列
  177.       i = 0;

  178.      while(dis2[i] != '\0')
  179.      {
  180.        lcd_wdat(dis2[i]);         //顯示字符"    NEW YEAR    "
  181.        i++;
  182.      }

  183.      /*for(j=0;j<16;j++)          //左移動16格
  184.      {
  185.        lcd_wcmd(0x18);           //字符同時左移一格
  186.        delay(100);                   //控制移動時間
  187.      }  

  188.       flash(); */                           //閃動二次

  189.           for(j=0;j<29;j++)               //向左移動29格
  190.      {
  191.        lcd_wcmd(0x18) ;            //字符同時左移一格
  192.        delay(100) ;                    //控制移動時間
  193.      }  

  194.       for(j=0;j<13;j++)         //向右移動13格
  195.      {
  196.        lcd_wcmd(0x1C) ;          //字符同時左移一格
  197.        delay(100) ;                   //控制移動時間
  198.      }  
  199.       flash() ;                            //閃動二次


  200.    }




  201. }
復制代碼

所有資料51hei提供下載:
LCD1602 移動顯示C.rar (14.67 KB, 下載次數: 13)




作者: wb8899    時間: 2018-7-30 17:48
支持下,謝謝




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 操视频网站 | 国产亚洲成av人在线观看导航 | 精品欧美一区二区三区精品久久 | 在线视频一区二区 | 日日夜夜影院 | 欧美大片一区 | 国产精品久久久久久亚洲调教 | 二区久久 | 亚洲国产一区视频 | 欧美在线网站 | 亚洲另类春色偷拍在线观看 | 久久精品国产v日韩v亚洲 | 热久色| 日韩一区二区三区在线观看视频 | 亚洲人成人一区二区在线观看 | 欧美亚洲另类丝袜综合网动图 | 伊人久久在线 | 精品久久久久久久久久久久久 | 日日夜夜操天天干 | 华人黄网站大全 | 中文字幕在线第一页 | 国产精品精品视频一区二区三区 | 蜜臀久久99精品久久久久久宅男 | www四虎com | 一区二区免费在线 | 蜜桃免费av| 伊人久久精品 | 在线免费观看黄色网址 | 99re6在线视频| 精品久久久久久久久久久 | 成人毛片一区二区三区 | 精品国产一区二区国模嫣然 | 中文字幕成人av | 久久噜噜噜精品国产亚洲综合 | 2019天天操| 黄a大片| 欧美videosex性极品hd | 亚洲一区二区免费看 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 国产欧美日韩一区二区三区在线 | 成人午夜免费福利视频 |