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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7432|回復: 1
收起左側

單片機LCD1602循環顯示字符串實驗 Proteus仿真加源程序

[復制鏈接]
ID:175881 發表于 2017-3-29 23:56 | 顯示全部樓層 |閱讀模式
單片機驅動LCD1602液晶屏循環顯示字符串的仿真原理圖(proteus工程文件可到本帖附件下載):
0.png 0.png


單片機源程序:
  1. //-----------------------------------------------------------------------------------
  2. //程序名:  LCD8-3.c
  3. //程序功能:循環顯示字符串
  4. //-------------------------------------------------------------------------------------
  5. #include <reg51.h>   
  6. sbit RS=P2^5;                                   // 引腳定義  
  7. sbit RW=P2^6;                                                           
  8. sbit EN=P2^7;      
  9. sbit busy=P0^7;                                 // "忙"標志位      
  10. #define LCD P0                                  //命令或數據線
  11. //字符串表
  12. unsigned char code str1[]={" Hello! "};  
  13. unsigned char code str2[]={" My name is LCD,"};  
  14. unsigned char code str3[]={" Good luck, "};
  15. unsigned char code str4[]={" See again。"};


  16. //---------------------------------- 判斷液晶顯示器是否忙函數 ----------------------------

  17. CHECK_BF()                                      //判斷是否忙碌
  18. {
  19.   do
  20.    {
  21.     LCD=0xff;   
  22.     RS=0;                                       // RS=0,選擇指令寄存器
  23.     RW=1;                                       // RW=1,選擇讀模式
  24.     EN=0;                                       // 執行顯示命令
  25.     EN=1;                                       // 允許讀/寫
  26.    }  
  27.   while(busy);                                  //busy為高電平表示忙,循環等待
  28. }

  29. //--------------------------------------  寫命令函數  -----------------------------------

  30. WR_COMM()                                       //寫命令
  31. {
  32.   RS=0;                                         // RS=0,選擇指令寄存器
  33.   RW=0;                                         // RW=0,選擇寫模式
  34.   EN=0;                                         // 執行顯示命令
  35.   CHECK_BF();                                   // 等待
  36.   EN=1;                                         // E=1,允許讀/寫LCD
  37. }

  38. //-------------------------------------- 寫數據 函數-------------------------------------

  39. WR_DATA()                                       //寫數據
  40. {
  41.   RS=1;                                         // RS=1,選擇數據寄存器
  42.   RW=0;                                         //準備寫入數據
  43.   EN=0;                                         //執行顯示命令
  44.   CHECK_BF();                                   //判斷液晶模塊是否忙
  45.   EN=1;                                         // E=1,允許讀/寫LCD
  46. }

  47. //------------------------------------- 初始化函數 ---------------------------------

  48. INIT_LCD()                                      //初始化
  49. {
  50.    unsigned char i=200;
  51.     {
  52.       while(--i);
  53.       LCD=0x01;                                //清屏并光標復位
  54.       WR_COMM();                               //寫入命令
  55.       LCD=0x38;                                //設置顯示模式:8位2行5x7點陣
  56.       WR_COMM();
  57.       LCD=0x0f;                                //顯示器開、光標關、光標禁止閃爍
  58.       WR_COMM();
  59.       LCD=0x06;                                //文字不動,光標自動右移
  60.       WR_COMM();                               //寫入命令
  61.     }
  62. }

  63. //------------------------------------- 延時函數 -----------------------------------

  64. void delay10ms(unsigned int count)             //延時函數
  65.     {  
  66.       unsigned int i,j,k;         
  67.           for(i=0; i<count; i++)
  68.         for(j=0; j<10; j++)   
  69.                    for(k=0; k<120; k++);
  70.     }

  71. //---------------------------------------- 主函數 -----------------------------------

  72. main()
  73. {
  74.   unsigned char i;

  75.   INIT_LCD();                                   //調用初始化函數
  76.   
  77.   while(1)
  78.     {
  79.   
  80.   //-----------------------------
  81. //寫入第1行字符
  82. LCD=0x81;                                      //寫入顯示起始地址(第1行第5個位置)                 
  83.   WR_COMM();                                   //寫入命令
  84.   for(i=0;i<7;i++)                                
  85.     {
  86.       LCD=str1[i];                             //提取字符
  87.       WR_DATA();                               //送出
  88.     }
  89. delay10ms(100);  
  90.         //------------------------------
  91. //寫入第2行字符
  92. LCD=0xc0;                                      //寫入顯示起始地址(第2行第6個位置)                  
  93.   WR_COMM();                                   //寫入命令                  
  94.   for(i=0;i<16;i++)                                
  95.     {
  96.       LCD=str2[i];                              //提取字符
  97.       WR_DATA();                                //送出
  98.     }
  99. delay10ms(200);  
  100. LCD=0x01;                                      //清屏
  101. WR_COMM();                                     //寫入命令

  102. //-------------------------------
  103.     //寫入第3行字符
  104. LCD=0x80;                                      //寫入顯示起始地址(第2行第6個位置)                  
  105.   WR_COMM();                                   //寫入命令                  
  106.   for(i=0;i<11;i++)                                
  107.     {
  108.       LCD=str3[i];                              //提取字符
  109.       WR_DATA();                                //送出
  110.     }
  111. delay10ms(100);  
  112.         //------------------------------
  113. //寫入第4行字符
  114. LCD=0xc0;                                      //寫入顯示起始地址(第2行第6個位置)                  
  115.   WR_COMM();                                   //寫入命令                  
  116.   for(i=0;i<11;i++)                                
  117.     {
  118.       LCD=str4[i];                              //提取字符
  119.       WR_DATA();                                //送出
  120.     }
  121. delay10ms(200);  
  122. LCD=0x01;                                         //清屏
  123. WR_COMM();                                        //寫入命令

  124.    }
  125. }

  126. //-------------------------------------------------------------------------------------------------------
復制代碼

0.png


該系列源碼包含有很多非常經典,代碼風格十分規范,而且注釋詳細的單片機例程,還帶仿真,對于MCU學習特別是初學者是很有幫助的,全部源碼下載(共25個項目):http://www.zg4o1577.cn/bbs/dpj-79328-1.html

本例程下載(含proteus仿真工程文件與源碼):
單片機LCD1602循環顯示字符串實驗.rar (23.25 KB, 下載次數: 48)



回復

使用道具 舉報

ID:458251 發表于 2018-12-29 23:44 | 顯示全部樓層
為什么燈亮但是沒有字幕呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久亚洲精品 | 自拍偷拍亚洲视频 | 亚洲免费视频播放 | 精品国产乱码一区二区三 | 精品国产乱码久久久久久丨区2区 | 日韩久久久久久久久久久 | 午夜久久久 | 国产午夜精品一区二区三区四区 | 久久久www成人免费精品 | 精品国产一区二区国模嫣然 | 香蕉国产在线视频 | 午夜亚洲| 91一区二区 | 激情91| 日韩男人天堂 | 亚洲精品白浆高清久久久久久 | 久久视频免费看 | 亚洲精品在线视频 | 色毛片| 久久久久国产一区二区三区四区 | 国产精品成人一区 | av天天干 | 国产精品久久久久久久久久免费看 | 天天操 夜夜操 | 国产一区二区在线视频 | 欧美精品成人一区二区三区四区 | www.国产精品 | 欧美不卡视频一区发布 | 久草免费在线视频 | 99视频入口| 天堂一区二区三区 | 狠狠视频| 欧美一级久久 | 男女视频在线观看网站 | 91网在线播放 | 国产黄a一级 | 精品久久久久久久久久久 | 久久久91精品国产一区二区精品 | 精品1区| 99精品欧美一区二区三区综合在线 | 在线欧美小视频 |