欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1842|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)實(shí)驗(yàn)板LCD1602時(shí)鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
學(xué)會(huì)了使用LCD1602,然后利用普中的實(shí)驗(yàn)板順利實(shí)現(xiàn)了程序運(yùn)行
  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;        //定時(shí)器time0定時(shí)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++)  //遇到數(shù)組的\0就結(jié)束
  23.         {
  24.                 lcd_w_dat(lcd[i]);
  25.                 delayms(50);
  26.         }
  27.         lcd_w_cmd(0x0c); //光標(biāo)不顯示,字符不閃爍
  28.         delayms(10);
  29.         while(1)   //此處的數(shù)組元素值一定要能夠更新,否則數(shù)據(jù)不會(huì)變化
  30.         {
  31.                 time[0]=hour/10+48;//轉(zhuǎn)換為ASCII碼,十進(jìn)制值加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中斷服務(wù)函數(shù),可以放在程序的任意位置
  48. {
  49.          TH0=(65536-50000)/256;        //定時(shí)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()        //讀液晶狀態(tài)并返回一個(gè)值
  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)//向液晶寫入數(shù)據(jù)
  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. }
復(fù)制代碼



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

1.JPG

LCD1602時(shí)鐘.zip

52.77 KB, 下載次數(shù): 11, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表