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

標題: 單片機實驗板LCD1602時鐘 [打印本頁]

作者: sunny118    時間: 2020-7-31 23:39
標題: 單片機實驗板LCD1602時鐘
學會了使用LCD1602,然后利用普中的實驗板順利實現了程序運行
  1. #include <reg51.h>
  2. #include <lcd.h>
  3. #include <delay.h>
  4. #include <intrins.h>
  5. unsigned char hour=0,minu=0,sec=0,j=0;
  6. void main()
  7. {
  8.          unsigned char lcd[]="51hei I LOVE U";
  9.         unsigned char i;
  10.         unsigned char time[8]={0};
  11.         TMOD=0X01;
  12.         TH0=(65536-50000)/256;        //定時器time0定時50ms
  13.         TL0=(65536-50000)%256;
  14.         TR0=1;
  15.         EA=1;
  16.         ET0=1;
  17.         LCD1602_DATAPINS=0xff;
  18.         lcd_init();
  19.         delayms(10);
  20.         lcd_w_cmd(0x80);  //顯示的初始位置在第一行第一列
  21.         delayms(10);
  22.         for(i=0;lcd[i]!='\0';i++)  //遇到數組的\0就結束
  23.         {
  24.                 lcd_w_dat(lcd[i]);
  25.                 delayms(50);
  26.         }
  27.         lcd_w_cmd(0x0c); //光標不顯示,字符不閃爍
  28.         delayms(10);
  29.         while(1)   //此處的數組元素值一定要能夠更新,否則數據不會變化
  30.         {
  31.                 time[0]=hour/10+48;//轉換為ASCII碼,十進制值加48
  32.                 time[1]=hour%10+48;
  33.                 time[2]=':';
  34.                 time[3]=minu/10+48;
  35.                 time[4]=minu%10+48;
  36.                 time[5]=':';
  37.                 time[6]=sec/10+48;
  38.                 time[7]=sec%10+48;
  39.                 lcd_w_cmd(0xc3);
  40.                 for(i=0;i<8;i++)
  41.                 {
  42.                         lcd_w_dat(time[i]);
  43.                         delayms(10);
  44.                 }
  45.         }
  46. }
  47. void time_0()interrupt 1 //50ms中斷服務函數,可以放在程序的任意位置
  48. {
  49.          TH0=(65536-50000)/256;        //定時50ms
  50.         TL0=(65536-50000)%256;
  51.         TR0=1;
  52.         j++;
  53.         if(j==20)
  54.         {
  55.                 j=0;
  56.                 sec++;
  57.                 if(sec==60)
  58.                 {
  59.                         sec=0;minu++;
  60.                         if(minu==60)
  61.                         {
  62.                                  minu=0;
  63.                                 hour++;
  64.                                 if(hour==24)
  65.                                         hour=0;
  66.                         }
  67.                 }
  68.         }        
  69. }
  70. 以下是LCD.C
  71. #include <reg51.h>
  72. #include <lcd.h>
  73. #include <delay.h>
  74. void lcd_init()
  75. {
  76.    lcd_w_cmd(0x3c);
  77.    lcd_w_cmd(0x0e);
  78.    lcd_w_cmd(0x01);
  79.    lcd_w_cmd(0x06);
  80.    lcd_w_cmd(0x80);
  81. }
  82. unsigned char  lcd_r_state()        //讀液晶狀態并返回一個值
  83. {
  84.          unsigned char s;
  85.         RW=1;
  86.         delay1();
  87.         RS=0;
  88.         delay1();
  89.         E=1;
  90.         delay1();
  91.         s=LCD1602_DATAPINS;
  92.         delay1();
  93.         E=0;
  94.         delay1();
  95.         RW=0;
  96.         delay1();
  97.         return(s);
  98. }
  99. void lcd_w_cmd(unsigned char com)//向液晶寫入命令
  100. {
  101.         unsigned char i;
  102.         do
  103.         {
  104.                  i=lcd_r_state();
  105.                 i=i&0x80;
  106.                 delayms(1);        
  107.         }while(i!=0);
  108.         RW=0;
  109.         delay1();
  110.         RS=0;
  111.         delay1();
  112.         E=1;
  113.         delay1();
  114.         LCD1602_DATAPINS=com;
  115.         delay1();
  116.         E=0;
  117.         delay1();
  118.         RW=1;
  119. //        delayms(10);
  120. }
  121. void lcd_w_dat(unsigned char dat)//向液晶寫入數據
  122. {
  123.          unsigned char i;
  124.          do
  125.          {
  126.                   i=lcd_r_state();
  127.                 i=i&0x80;
  128.                 delayms(1);
  129.          }while(i!=0);
  130.          RW=0;
  131.          delay1();
  132.          RS=1;
  133.          delay1();
  134.          E=1;
  135.          delay1();
  136.          LCD1602_DATAPINS=dat;
  137.          delay1();
  138.          E=0;
  139.          delay1();
  140.          RW=1;
  141.          delay1();
  142. //         delayms(100);
  143. }
復制代碼



1.JPG (2.14 MB, 下載次數: 74)

1.JPG

LCD1602時鐘.zip

52.77 KB, 下載次數: 11, 下載積分: 黑幣 -5






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人h动漫亚洲一区二区 | 国产精品久久久久久久岛一牛影视 | 国产精品成人在线播放 | 一区二区精品 | 天天色天天色 | 自拍偷拍亚洲欧美 | 日韩在线三级 | 亚洲精品久久久 | 色资源在线视频 | 免费高清av | 亚洲一区二区免费看 | 欧美一级片在线观看 | 日韩中文一区 | 中文在线а√在线8 | 一级免费在线视频 | 成人免费毛片片v | 久久久久久亚洲 | 欧美在线一区二区三区 | 免费成年网站 | 欧美日韩一区在线 | 成在线人视频免费视频 | 日本一区二区三区四区 | 亚洲精品白浆高清久久久久久 | 亚洲午夜网 | 久久九九色| 久久99国产精品久久99果冻传媒 | 无码一区二区三区视频 | 一级免费毛片 | 国产韩国精品一区二区三区 | 久久剧场| 久久久久久久久久久久91 | 国产东北一级毛片 | 午夜精品网站 | av资源在线看 | 亚洲精品在线播放 | 欧美人妇做爰xxxⅹ性高电影 | 福利视频网址 | 欧美综合久久 | 亚洲视频在线免费观看 | 91高清视频| 久久久久久久久综合 |