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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2521|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频一区二区 | 国产一区2区 | 欧美日韩中文在线观看 | 精品国产一区二区三区在线观看 | 日韩精品视频一区二区三区 | 日韩一二区在线观看 | www.夜夜骑.com | 国产精品免费福利 | 91免费视频 | 国产一区二区三区在线 | 黄色毛片免费看 | 99精品免费久久久久久久久日本 | 一区二区久久精品 | 国产中文字幕在线 | 亚洲a毛片| 久久精品视频网站 | 91精品久久久久久久久久 | 人人鲁人人莫人人爱精品 | 精品视频一区二区三区在线观看 | 国产91综合 | 国产综合久久 | 久久久久久久综合 | 欧美日韩国产一区二区 | 综合色播| 久久综合色综合 | 99re6在线视频精品免费 | 国产免国产免费 | 天堂网avav | 久草视频观看 | 91视频网址 | 亚洲精品区 | 91精品国产色综合久久不卡蜜臀 | 老司机成人在线 | 国产精品成人一区二区 | 中文字幕一区在线观看视频 | 欧美日韩免费 | 欧美精品久久久 | 日本成人三级电影 | 精品在线观看一区二区 | 色婷婷久久久亚洲一区二区三区 | 日韩视频在线一区 |