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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機驅動LCD1602液晶液晶滾動顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:361216 發表于 2018-7-6 14:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /********************************************************************************
  2. *  描述:                LCD1602 滾動顯示                                       *
  3. * 顯示方式:                                                                   *
  4. * 1、從左到右逐字顯示,閃動二次,清屏。                                        *
  5. * 2、再從右到左逐字顯示,閃動二次,清屏。                                      *
  6. * 3、周期性地重復上述顯示方式。                                                *                           
  7. ********************************************************************************/

  8. #include <reg51.h>
  9. #include <intrins.h>

  10. typedef unsigned char BYTE;
  11. typedef bit BOOL;  

  12. sbit LCD_RS = P2^6;            
  13. sbit LCD_RW = P2^5;
  14. sbit LCD_EP = P2^7;

  15. BYTE code dis1[] = {"   WELCOME  TO   "};
  16. BYTE code dis2[] = {" WWW.baidu.COM "};
  17. BYTE code dis3[] = {"   OT  EMOCLEW   "};
  18. BYTE code dis4[] = {" MOC*udiab*WWW "};

  19. delay(int ms)
  20. {                           // 延時子程序
  21. int i;
  22. while(ms--)
  23. {
  24.   for(i = 0; i< 250; i++)
  25.   {
  26.    _nop_();
  27.    _nop_();
  28.    _nop_();
  29.    _nop_();
  30.   }
  31. }
  32. }

  33. BOOL lcd_bz()
  34. {                          // 測試LCD忙碌狀態
  35. BOOL result;
  36. LCD_RS = 0;
  37. LCD_RW = 1;
  38. LCD_EP = 1;
  39. _nop_();
  40. _nop_();
  41. _nop_();
  42. _nop_();
  43. result = (BOOL)(P0 & 0x80);
  44. LCD_EP = 0;
  45. return result;
  46. }

  47. lcd_wcmd(BYTE cmd)
  48. {                          // 寫入指令數據到LCD
  49. while(lcd_bz());
  50. LCD_RS = 0;
  51. LCD_RW = 0;
  52. LCD_EP = 0;
  53. _nop_();
  54. _nop_();
  55. P0 = cmd;
  56. _nop_();
  57. _nop_();
  58. _nop_();
  59. _nop_();
  60. LCD_EP = 1;
  61. _nop_();
  62. _nop_();
  63. _nop_();
  64. _nop_();
  65. LCD_EP = 0;  
  66. }

  67. lcd_pos(BYTE pos)
  68. {                          //設定顯示位置
  69. lcd_wcmd(pos | 0x80);
  70. }

  71. lcd_wdat(BYTE dat)
  72. {                          //寫入字符顯示數據到LCD
  73. while(lcd_bz());
  74. LCD_RS = 1;
  75. LCD_RW = 0;
  76. LCD_EP = 0;
  77. P0 = dat;
  78. _nop_();
  79. _nop_();
  80. _nop_();
  81. _nop_();
  82. LCD_EP = 1;
  83. _nop_();
  84. _nop_();
  85. _nop_();
  86. _nop_();
  87. LCD_EP = 0;
  88. }

  89. lcd_init()
  90. {                        //LCD初始化設定
  91. lcd_wcmd(0x38);          //16*2顯示,5*7點陣,8位數據
  92. delay(1);
  93. lcd_wcmd(0x0c);          //顯示開,關光標
  94. delay(1);
  95. lcd_wcmd(0x06);          //移動光標
  96. delay(1);
  97. lcd_wcmd(0x01);          //清除LCD的顯示內容
  98. delay(1);
  99. }

  100. main()
  101. {
  102.       BYTE i;
  103.       lcd_init();               // 初始化LCD
  104.       delay(10);

  105.     while(1)              
  106.    {
  107.       lcd_wcmd(0x06);            //向右移動光標
  108.       lcd_pos(0);                //設置顯示位置為第一行的第1個字符
  109.       i = 0;
  110.      while(dis1[ i ] != '\0')
  111.      {                           //顯示字符"WLCOME  TO"
  112.        lcd_wdat(dis1[ i ]);
  113.        i++;
  114.        delay(30);                //控制兩字之間顯示速度
  115.      }
  116.       lcd_pos(0x40);             //設置顯示位置為第二行第1個字符
  117.       i = 0;
  118.      while(dis2[ i ] != '\0')
  119.      {
  120.        lcd_wdat(dis2[ i ]);      //顯示字符
  121.        i++;
  122.        delay(30);                //控制兩字之間顯示速度
  123.      }
  124.       delay(800);                //控制停留時間

  125.       lcd_wcmd(0x01);            //清除LCD的顯示內容
  126.       delay(1);
  127.       lcd_wcmd(0x04);            //向左移動光標

  128.       lcd_pos(15);               //設置顯示位置為第一行的第16個字符
  129.       i = 0;
  130.      while(dis3[ i ] != '\0')
  131.      {                           //顯示字符"WLCOME  TO"
  132.        lcd_wdat(dis3[ i ]);
  133.        i++;
  134.        delay(30);                //控制兩字之間顯示速度
  135.      }
  136.       lcd_pos(0x4F);             //設置顯示位置為第二行的第16個字符
  137.       i = 0;
  138.      while(dis4[ i ] != '\0')
  139.      {
  140.        lcd_wdat(dis4[ i ]);      //顯示字符" WWW.baidu.COM  "
  141.        i++;
  142.        delay(30);                //控制兩字之間顯示速度
  143.      }
  144.       delay(800);                //控制停留時間

  145.       lcd_wcmd(0x01);            //清除LCD的顯示內容
  146.       delay(200);                //控制兩屏轉換時間

  147.    }
  148. }
復制代碼

所有資料51hei提供下載:
液晶滾動顯示.zip (42.21 KB, 下載次數: 17)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲美女 | 国产精品一区二区av | av成年人网站 | 成人欧美一区二区 | 日韩at| 黄色精品| 久久九九影视 | 亚洲在线视频 | 欧美日韩久久精品 | 久久久久久久电影 | 欧美日韩手机在线观看 | 亚洲视频在线观看 | 日韩精品在线一区 | 国产一级毛片精品完整视频版 | 日韩成人免费中文字幕 | 国产第一页在线观看 | 91精品国模一区二区三区 | 成人免费一区二区三区牛牛 | 日韩欧美一区二区三区免费看 | 成人免费在线视频 | 亚洲一区二区三区在线 | 日韩欧美三级电影在线观看 | 亚洲国产精品网站 | 国产精品国产三级国产aⅴ中文 | 日本一区二区三区在线观看 | 久久99精品久久久久子伦 | 美国十次成人欧美色导视频 | 久久久久久久一区二区 | 亚洲一区二区精品 | 91五月婷蜜桃综合 | 日本一区高清 | 精品国产一区二区三区久久久蜜月 | 欧美日韩一区二区三区视频 | 久久精品欧美一区二区三区不卡 | 青青久草 | 国产免费黄网 | 国产精品无码专区在线观看 | 精品日韩在线 | 在线永久看片免费的视频 | 男人的天堂在线视频 | 亚洲色欲色欲www |