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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

有關LCD1602動態顯示的源程序和仿真原理圖

[復制鏈接]
跳轉到指定樓層
樓主
ID:144383 發表于 2016-10-25 16:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫了一個基本的1602動態顯示程序供大家參考!希望能給初學者帶來幫助。

字符式LCD滾動顯示.rar

71.46 KB, 下載次數: 30, 下載積分: 黑幣 -5

1602

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

使用道具 舉報

沙發
ID:1 發表于 2016-11-13 21:33 | 只看該作者
  1. #include "stc15f2k60s2.h"
  2. #include"intrins.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit  lcd_rs=P0^7;
  6. sbit  lcd_rw=P0^6;
  7. sbit  lcd_en=P0^5;
  8. uchar idata dis0[]={"            "};
  9. uchar idata dis1[]={"hdxydxc@163.com"};  
  10. uchar idata dis2[]={"QQ:1767104479"};
  11. uchar idata dis3[]={"2016-10-20"} ;
  12. uchar idata dis4[]= {"I LOVE YOU"};
  13. void delay(uchar ms)
  14. {
  15.         uchar i;
  16.                 while(ms--)
  17.                         {
  18.                                 for(i=0;i<120;i++);
  19.                         }
  20. }



  21. uchar Busy_Check(void)//   測試LCD忙碌狀態
  22. {
  23.         uchar LCD_Status;
  24.         lcd_rs=0;
  25.         lcd_rw=1;
  26.         lcd_en=1;
  27.         _nop_ ();
  28.         _nop_ ();
  29.         _nop_ ();
  30.         _nop_ ();
  31.         LCD_Status=P0&0x80;
  32.         lcd_en=0;
  33.         return LCD_Status;
  34. }
  35. void lcd_wcmd(uchar cmd)  //寫入指令數據到LCD
  36. {                                                  
  37.         while(Busy_Check()); //等待LCD空閑
  38.         lcd_rs=0;
  39.         lcd_rw=0;
  40.         lcd_en=0;
  41.         _nop_ ();
  42.         _nop_ ();
  43.         P2=cmd;
  44.         _nop_ ();
  45.         _nop_ ();
  46.         _nop_ ();
  47.         _nop_ ();
  48.         lcd_en=1;
  49.         _nop_ ();
  50.         _nop_ ();
  51.         _nop_ ();
  52.         _nop_ ();
  53.         lcd_en=0;

  54. }
  55. void lcd_pos(uchar pos)          //  設定顯示位置
  56. {
  57.         lcd_wcmd(pos|0x80);        //設置LCD當前光標的位置
  58. }
  59. void lcd_wdat(uchar dat)//寫入字符顯示數據到LCD
  60. {                                                                                                       
  61.         while(Busy_Check());        //等待LCD空閑
  62.     lcd_rs=1;
  63.         lcd_rw=0;
  64.         lcd_en=0;
  65.         P2=dat;
  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. void LCD_disp(void)        //向上滾動
  78. {
  79.         uchar i;
  80.         lcd_pos(1);         //設置顯示位置為第一行的第二個字符
  81.         i=0;
  82.         while(dis0[i]!='\0')
  83.         {
  84.                 lcd_wdat(dis0[i]);        //在第一行顯示字符串“”
  85.                 i++;

  86.         }
  87.         delay(1200);
  88.         lcd_pos(0x41);//設置顯示位置為第二行第二個字符
  89.         i=0;
  90.         while(dis1[i]!='\0')
  91.         {
  92.                 lcd_wdat(dis1[i]);         //在第1行顯示字符串“hdxydxc@163.com”
  93.                 i++;
  94.         }



  95.         delay(200);
  96.         lcd_wcmd(0x01);        //清除LCD顯示內容
  97.         delay(1);
  98.         lcd_pos(1);//設置顯示位置為第一行第二個字符
  99.         i=0;
  100.                 while(dis1[i]!='\0')
  101.         {
  102.                 lcd_wdat(dis1[i]);        //在第一行顯示字符串“hdxydxc@163.com”
  103.                 i++;

  104.         }
  105.         delay(1200);
  106.         lcd_pos(0x41);//設置顯示位置為第二行第二個字符
  107.         i=0;
  108.         while(dis2[i]!='\0')
  109.         {
  110.                 lcd_wdat(dis2[i]);         //在第二行顯示字符串“QQ:1767104479”
  111.                 i++;
  112.         }


  113.         delay(200);
  114.         lcd_wcmd(0x01);        //清除LCD顯示內容
  115.         delay(1);
  116.         lcd_pos(1);//設置顯示位置為第一行第二個字符
  117.         i=0;
  118.                 while(dis1[i]!='\0')
  119.         {
  120.                 lcd_wdat(dis2[i]);        //在第一行顯示字符串“QQ:1767104479”
  121.                 i++;

  122.         }
  123.         delay(1200);
  124.         lcd_pos(0x41);//設置顯示位置為第二行第二個字符
  125.         i=0;
  126.         while(dis3[i]!='\0')
  127.         {
  128.                 lcd_wdat(dis3[i]);         //在第二行顯示字符串“2016-10-20”
  129.                 i++;
  130.         }



  131.         delay(200);
  132.         lcd_wcmd(0x01);        //清除LCD顯示內容
  133.         delay(1);
  134.         lcd_pos(1);//設置顯示位置為第一行第二個字符
  135.         i=0;
  136.                 while(dis3[i]!='\0')
  137.         {
  138.                 lcd_wdat(dis3[i]);        //在第一行顯示字符串“2016-10-20”
  139.                 i++;

  140.         }
  141.         delay(1200);
  142.         lcd_pos(0x41);//設置顯示位置為第二行第二個字符
  143.         i=0;
  144.         while(dis4[i]!='\0')
  145.         {
  146.                 lcd_wdat(dis4[i]);         //在第二行顯示字符串“I LOVE YOU”
  147.                 i++;
  148.         }




  149.         delay(200);
  150.         lcd_wcmd(0x01);        //清除LCD顯示內容
  151.         delay(1);
  152.         lcd_pos(1);//設置顯示位置為第一行第二個字符
  153.         i=0;
  154.                 while(dis4[i]!='\0')
  155.         {
  156.                 lcd_wdat(dis4[i]);        //在第一行顯示字符串“I LOVE YOU”
  157.                 i++;

  158.         }
  159.         delay(1200);
  160.         lcd_pos(0x41);//設置顯示位置為第二行第二個字符
  161.         i=0;
  162.         while(dis1[i]!='\0')
  163.         {
  164.                 lcd_wdat(dis1[i]);         //在第二行顯示字符串“hdxydxc@163.com”
  165.                 i++;
  166.         }


  167.         delay(200);
  168.         lcd_wcmd(0x01);        //清除LCD顯示內容
  169.         delay(1);
  170. }
  171. void lcd_init(void)        //LCD初始化設定
  172. {
  173.                 lcd_wcmd(0x38);        //設置顯示格式為:16*2行顯示,5*7點陣,8位數據接口
  174.                 delay(1);
  175.                 lcd_wcmd(0x0c);//0x0f--顯示開關設置,顯示光標并閃爍
  176.                 delay(1);
  177.                 lcd_wcmd(0x06);//0x06--讀寫后指針加1
  178.                 delay(1);
  179.                 lcd_wcmd(0x01);        // 清除LCD顯示內容
  180.                 delay(1);
  181. }
  182. void main(void)
  183. {
  184.          lcd_init();  //   初始化LCD
  185.          delay(10);
  186.          
  187.          while(1)
  188.          {
  189.                  LCD_disp();
  190.          }
  191. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人一区二区三区精 | 亚洲精品视频在线观看视频 | 久久aⅴ乱码一区二区三区 91综合网 | 男女污污动态图 | 日韩1区| 久久久免费精品 | 日本亚洲精品成人欧美一区 | 鸳鸯谱在线观看高清 | 久久在线视频 | 嫩草视频在线免费观看 | 中文字幕一区二区三区精彩视频 | 国产一区二区三区高清 | 国产精品免费av | 久久综合香蕉 | 亚洲品质自拍视频网站 | 欧美国产日韩在线观看成人 | av黄在线观看 | 亚洲图片一区二区三区 | 国产9999精品 | 亚洲一区二区在线播放 | 黄网站涩免费蜜桃网站 | 国产精品v| 一区二区三区四区免费视频 | 国产综合久久久久久鬼色 | 91视在线国内在线播放酒店 | caoporn免费| 国产免费一区二区三区最新6 | 日韩国产一区 | 91文字幕巨乱亚洲香蕉 | 欧美lesbianxxxxhd视频社区 | 国产成人免费观看 | 九九热精品视频在线观看 | 超碰美女在线 | 一区二区在线 | 国产伦精品一区二区三区精品视频 | 欧美精品综合 | 99久久精品免费视频 | 国产高清视频在线观看 | 国产一级视频在线播放 | 黄色在线免费观看 | 久久亚洲欧美日韩精品专区 |