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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

基于stc89c51的萬年歷lcd1602不顯示內(nèi)容 求幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:884825 發(fā)表于 2021-2-19 10:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
該設(shè)計(jì)的時(shí)間和星期可以正常顯示,但是年份沒有具體的平年閏年月份算法,所以并沒有真正實(shí)現(xiàn)萬年歷,僅供參考,也歡迎大家完善該代碼。
  1. #include<reg51.h>
  2. #include<lcd1602.h>        
  3. #include<aj.h>
  4. //#include<ds18b20.h>
  5. #include<temp.h>
  6. //#include<sound.h>                                                            
  7. #include<stdlib.h>
  8. unsigned char datas[] = { 0, 0}; //定義數(shù)組
  9. uchar code digit[]={"0123456789"};
  10. uchar count;
  11. void LcdDisplay(int);
  12. void clock();        
  13. void main()
  14. {  
  15. P1=0xf0;
  16.    lcdinitiata();
  17.    TMOD=0X10;                                 //使用T1的方式1定時(shí)
  18.    TH1=(65536-50000)/256;         //
  19.    TL1=(65536-50000)%256;
  20.    EA=1;                                         //開總中斷
  21.    ET1=1;                                         //允許定時(shí)器T1中斷
  22.    TR1=1;                                         //啟動(dòng)定時(shí)器T1
  23.    count=0;
  24.    s=50;
  25.    m=10;
  26.    h=10;
  27.    d=24;
  28.    w=1;
  29.    n=6;
  30.    y=2019;
  31.    z=12;
  32.    x=12;
  33.    writeaddress(0x04) ;
  34.    writedata('-');
  35.    writeaddress(0x07) ;
  36.    writedata('-');
  37.    writeaddress(0x42) ;
  38.    writedata(':');
  39.    writeaddress(0x45) ;
  40.    writedata(':');
  41.    writeaddress(0x4c) ;
  42.    writedata(':');
  43.    beep=0;
  44.    writeinrtuction(0x80+0x0f);        //寫地址 80表示初始地址
  45.    writedata(0xdf);
  46.    while(1)
  47.    {

  48.          displayyear();                  //年
  49.          delay_ms(5);
  50.          displaymonth();                  //月
  51.          delay_ms(5);
  52.          displaydata();                  //日
  53.          delay_ms(5);
  54.          displayweek();                  //周
  55.          delay_ms(5);
  56.      displayhour();                  //時(shí)
  57.          delay_ms(5);
  58.          displaymin();                  //分
  59.          delay_ms(5);
  60.          displaysec();                  //秒
  61.          delay_ms(5);
  62.          displayzhour();          //鬧鐘時(shí)
  63.          delay_ms(5);
  64.          displayzmin();                  //鬧鐘分
  65.          key_detect();
  66.          LcdDisplay(Ds18b20ReadTemp);
  67.          if(h==z&&m==x)
  68.          {
  69.                  clock();
  70.          }         
  71.    }

  72. }
  73. void displayyear()          //顯示年
  74. {
  75.    uchar i,j,o,p;
  76.    i=y/1000;
  77.    j=y%1000/100;
  78.    o=y%100/10;
  79.    p=y%10;
  80.    writeaddress(0x00) ;
  81.    writedata(digit[i]);
  82.    writedata(digit[j]);
  83.    writedata(digit[o]);
  84.    writedata(digit[p]);
  85. }
  86. void displaymonth()          //顯示月
  87. {
  88.    uchar i,j;
  89.    i=n/10;
  90.    j=n%10;
  91.    writeaddress(0x05) ;
  92.    writedata(digit[i]);
  93.    writedata(digit[j]);
  94. }
  95. void displayweek()          //顯示周
  96. {
  97.    uchar i;
  98.    i=w/1;
  99.    writeaddress(0x0b) ;
  100.    writedata(digit[i]);
  101. }
  102. void displaydata()          //顯示日
  103. {
  104.    uchar i,j;
  105.    i=d/10;
  106.    j=d%10;
  107.    writeaddress(0x08) ;
  108.    writedata(digit[i]);
  109.    writedata(digit[j]);
  110. }

  111. void displayhour()          //顯示時(shí)
  112. {
  113.    uchar i,j;
  114.    i=h/10;
  115.    j=h%10;
  116.    writeaddress(0x40) ;
  117.    writedata(digit[i]);
  118.    writedata(digit[j]);
  119. }

  120. void displaymin()         //        顯示分
  121. {
  122.    uchar i,j;
  123.    i=m/10;
  124.    j=m%10;
  125.    writeaddress(0x43) ;
  126.    writedata(digit[i]);
  127.    writedata(digit[j]);
  128. }

  129. void displaysec()        // 顯示秒
  130. {
  131.    uchar i,j;
  132.    i=s/10;
  133.    j=s%10;
  134.    writeaddress(0x46) ;
  135.    writedata(digit[i]);
  136.    writedata(digit[j]);
  137. }

  138. void LcdDisplay(int temp)          //lcd顯示
  139. {

  140.         float tp;  
  141.         /*        temp=temp-1;
  142.                 temp=~temp;        */
  143.                 tp=temp;   
  144.                 temp=tp*0.0625*100+0.5;               
  145.                 //留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)
  146.                 //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就
  147.                 //算由?.5,還是在小數(shù)點(diǎn)后面。

  148.         datas[0] = temp % 10000 / 1000;
  149.         datas[1] = temp % 1000 / 100;
  150.         writeinrtuction(0x80+0x0d);                 //寫地址 80表示初始地址
  151.         writedata('0'+datas[0]); //十位
  152.         writeinrtuction(0x80+0x0e);                //寫地址 80表示初始地址
  153.         writedata('0'+datas[1]); //個(gè)位
  154. }           

  155. void displayzhour()          //顯示鬧鐘時(shí)
  156. {
  157.    uchar i,j;
  158.    i=z/10;
  159.    j=z%10;
  160.    writeaddress(0x4a) ;
  161.    writedata(digit[i]);
  162.    writedata(digit[j]);
  163. }

  164. void displayzmin()         //        顯示鬧鐘分
  165. {
  166.    uchar i,j;
  167.    i=x/10;
  168.    j=x%10;
  169.    writeaddress(0x4d) ;
  170.    writedata(digit[i]);
  171.    writedata(digit[j]);
  172. }
  173. void clock()
  174. {
  175.         if((h == z) || (m == x))
  176.         {
  177.         beep = ~beep;
  178.         }
  179.         else
  180.         {
  181.                 beep=1;        
  182.         }               
  183. }  

  184. void t1_int() interrupt 3         //T1中斷方式
  185. {
  186.    count++;
  187.      if(count==20)
  188.          {
  189.             count=0;
  190.                 s++;
  191.          }
  192.          if(s==60)
  193.          {
  194.             s=0;
  195.                 m++;
  196.          }
  197.          if(m==60)
  198.          {
  199.             m=0;
  200.                 h++;
  201.          }
  202.          if(h==24)
  203.          {
  204.             h=0;
  205.                 w++;
  206.          }
  207.          if(w==8)
  208.          {
  209.             w=1;
  210.                 d++;  
  211.           }
  212.          if(d > 31)
  213.          {
  214.                 d = 1;
  215.                 n++;  
  216.          }
  217.          if(n > 13)
  218.          {
  219.                  n = 1;
  220.                 y++;
  221.          }
  222.          TH1=(65536-50000)/256;
  223.          TL1=(65536-50000)%256;
  224. }
復(fù)制代碼


電子表.zip

95.71 KB, 下載次數(shù): 17

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

使用道具 舉報(bào)

沙發(fā)
ID:242298 發(fā)表于 2021-2-21 00:53 | 只看該作者
請(qǐng)問有原理圖發(fā)一張可以嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:883031 發(fā)表于 2021-2-21 08:08 | 只看該作者
用內(nèi)部定時(shí)器走的準(zhǔn)嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:268402 發(fā)表于 2021-6-4 13:26 | 只看該作者
為什么不顯示呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线观看网站 | 天天干天天操天天爽 | 天天艹天天干天天 | 成年男女免费视频网站 | 美国黄色一级片 | 午夜网址 | 人人叉 | 秋霞影院一区二区 | 国产一区二区在线免费观看 | 麻豆久久久9性大片 | 久久aⅴ乱码一区二区三区 91综合网 | 亚洲 中文 欧美 日韩 在线观看 | 久久国产精品色av免费观看 | 精品久久香蕉国产线看观看亚洲 | 欧美日韩久久精品 | 国产成人影院 | 91视频在线观看 | 四虎影院在线播放 | 亚洲欧美日韩国产综合 | 亚洲免费视频在线观看 | 久久免费视频1 | 国产精品一区二区三区久久久 | 国产美女h视频 | 区一区二在线观看 | 中文字幕 欧美 日韩 | 国产精品视频入口 | 精品视频一区二区 | 国产一区www | 日韩一区精品 | 国产精品一码二码三码在线 | 成人在线免费观看视频 | 欧美日韩国产综合在线 | 国产激情在线播放 | 91精品国产欧美一区二区成人 | 色吧综合网 | 精品视频一区在线 | 精品久久久久久亚洲精品 | 色综合久 | 欧美日韩中文国产一区发布 | 五月天国产视频 | 亚洲啪啪一区 |