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

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

QQ登錄

只需一步,快速開始

搜索
查看: 1879|回復(fù): 0
收起左側(cè)

單片機(jī)紅外通信顯示萬年歷不行是怎么回事

[復(fù)制鏈接]
ID:473410 發(fā)表于 2019-2-18 16:20 | 顯示全部樓層 |閱讀模式
  我在LCD1602顯示數(shù)字的基礎(chǔ)上,加了DS1302制作一個(gè)萬年歷,讓它能實(shí)時(shí)顯示時(shí)間,并且把DS18B20的程序也附加上,使之能夠同時(shí)顯示溫度和時(shí)間,做出來是如下效果。然后,我想在此基礎(chǔ)上添加其它功能,用紅外遙控控制,按電源鍵顯示萬年歷,按其它鍵顯示其它功能,但是我僅僅是編寫了電源鍵的功能,1602就是一片空白,請(qǐng)各位大神指導(dǎo)一下。初學(xué)51,請(qǐng)多指教!下面是紅外通信+萬年歷主文件的代碼:
  1. /*******************************************************************************
  2. * 實(shí)驗(yàn)名                           : 萬年歷實(shí)驗(yàn)
  3. * 使用的IO             :
  4. * 實(shí)驗(yàn)效果       :1602顯示時(shí)鐘,按K3進(jìn)入時(shí)鐘設(shè)置,按K1選擇設(shè)置的時(shí)分秒日月,按K2選擇
  5. *選擇設(shè)置加1。
  6. *        注意                                         :
  7. *******************************************************************************/

  8. #include<reg52.h>
  9. #include"lcd.h"
  10. #include"ds1302.h"
  11. #include"temp.h"
  12. #include"HWTX.h"  //紅外通信


  13. sbit K1=P3^1;
  14. sbit K2=P3^0;
  15. sbit K3=P3^2;
  16. sbit K4=P3^3;



  17. void Int0Configuration();
  18. void LcdDisplay();
  19. unsigned char SetState,SetPlace;
  20. void Delay10ms(void);   //誤差 0us
  21. void datapros(int temp);
  22. /*******************************************************************************
  23. * 函數(shù)名         : main
  24. * 函數(shù)功能                   : 主函數(shù)
  25. * 輸入           : 無
  26. * 輸出                  : 無
  27. *******************************************************************************/

  28. void main()
  29. {
  30.         unsigned char i;
  31.         Int0Configuration();
  32.         LcdInit();
  33.         Ds1302Init();
  34.         IrInit();       //初始化紅外線接收
  35.         if(IrValue[2]==45)                         //45是電源鍵的編碼值
  36.         {
  37.         while(1)
  38.         {      
  39.                 if(SetState==0)
  40.                 {
  41.                         Ds1302ReadTime();
  42.                 }
  43.                 else
  44.                 {
  45.                         if(K1==0)                //檢測(cè)按鍵K1是否按下
  46.                         {
  47.                                 Delay10ms();        //消除抖動(dòng)
  48.                                 if(K1==0)
  49.                                 {
  50.                                         SetPlace++;
  51.                                         if(SetPlace>=7)
  52.                                                 SetPlace=0;                                       
  53.                                 }

  54.                                 while((i<50)&&(K1==0))         //檢測(cè)按鍵是否松開
  55.                                 {
  56.                                         Delay10ms();
  57.                                         i++;
  58.                                 }
  59.                                 i=0;
  60.                         }
  61.                         if(K2==0)                //檢測(cè)按鍵K2是否按下
  62.                         {
  63.                                 Delay10ms();        //消除抖動(dòng)
  64.                                 if(K2==0)
  65.                                 {
  66.                                         TIME[SetPlace]++;
  67.                                         if((TIME[SetPlace]&0x0f)>9)                                         //換成BCD碼。
  68.                                         {
  69.                                                 TIME[SetPlace]=TIME[SetPlace]+6;
  70.                                         }
  71.                                         if((TIME[SetPlace]>=0x60)&&(SetPlace<2))                //分秒只能到59
  72.                                         {
  73.                                                 TIME[SetPlace]=0;
  74.                                         }
  75.                                         if((TIME[SetPlace]>=0x24)&&(SetPlace==2))                //小時(shí)只能到23
  76.                                         {
  77.                                                 TIME[SetPlace]=0;
  78.                                         }
  79.                                         if((TIME[SetPlace]>=0x32)&&(SetPlace==3))                //日只能到31
  80.                                         {
  81.                                                 TIME[SetPlace]=0;      
  82.                                         }
  83.                                         if((TIME[SetPlace]>=0x13)&&(SetPlace==4))                //月只能到12
  84.                                         {
  85.                                                 TIME[SetPlace]=0;
  86.                                         }      
  87.                                         if((TIME[SetPlace]>=0x7)&&(SetPlace==5))                //周只能到7
  88.                                         {
  89.                                                 TIME[SetPlace]=1;
  90.                                         }               
  91. //                                        if(SetPlace==5)                //月只能到12
  92. //                                        {
  93. //                                                TIME[SetPlace]=;
  94. //                                        }      
  95.                                 }
  96.                               
  97.                                 while((i<50)&&(K2==0))         //檢測(cè)按鍵是否松開
  98.                                 {
  99.                                         Delay10ms();
  100.                                         i++;
  101.                                 }
  102.                                 i=0;
  103.                               
  104.                         }                                               
  105.                 }
  106.                 LcdDisplay();      
  107.         }
  108.         }
  109. }


  110. void datapros(int temp)
  111. {
  112.         float tp;
  113.         if(temp<0)
  114.         {
  115.                 temp-=1;
  116.                 temp=~temp;
  117.                 tp=temp;
  118.                 temp=tp*0.0625*100+0.5;
  119.                 LcdWriteCom(0x49+0x80);
  120.                 LcdWriteData('-');                       
  121.         }
  122.         else
  123.         {
  124.                 tp=temp;
  125.                 temp=tp*0.0625*100+0.5;
  126.                 LcdWriteCom(0x49+0x80);      
  127.                 LcdWriteData('+');               
  128.         }
  129.         LcdWriteCom(0x4a+0x80);
  130.         LcdWriteData('0'+temp%10000/1000);
  131.         LcdWriteCom(0x4b+0x80);
  132.         LcdWriteData('0'+temp%10000%1000/100);
  133.         LcdWriteCom(0x4c+0x80);
  134.         LcdWriteData('.');
  135.         LcdWriteCom(0x4d+0x80);
  136.         LcdWriteData('0'+temp%100/10);
  137.         LcdWriteCom(0x4e+0x80);
  138.         LcdWriteData('0'+temp%100%10);
  139. }
  140. /*******************************************************************************
  141. * 函數(shù)名         : LcdDisplay()
  142. * 函數(shù)功能                   : 顯示函數(shù)
  143. * 輸入           : 無
  144. * 輸出                  : 無
  145. *******************************************************************************/

  146. void LcdDisplay()
  147. {
  148.         LcdWriteCom(0x40+0x80);
  149.         LcdWriteData('0'+TIME[2]/16);                                //時(shí)
  150.         LcdWriteData('0'+(TIME[2]&0x0f));                                 
  151.         LcdWriteData(':');
  152.         LcdWriteData('0'+TIME[1]/16);                                //分
  153.         LcdWriteData('0'+(TIME[1]&0x0f));      
  154.         LcdWriteData(':');
  155.         LcdWriteData('0'+TIME[0]/16);                                //秒
  156.         LcdWriteData('0'+(TIME[0]&0x0f));
  157.         datapros(ds18b20readtemp());

  158.         LcdWriteCom(0x80);
  159.         LcdWriteData('2');
  160.         LcdWriteData('0');
  161.         LcdWriteData('0'+TIME[6]/16);                        //年
  162.         LcdWriteData('0'+(TIME[6]&0x0f));
  163.         LcdWriteData('-');
  164.         LcdWriteData('0'+TIME[4]/16);                        //月
  165.         LcdWriteData('0'+(TIME[4]&0x0f));
  166.         LcdWriteData('-');
  167.         LcdWriteData('0'+TIME[3]/16);                        //日
  168.         LcdWriteData('0'+(TIME[3]&0x0f));
  169.         LcdWriteCom(0x8D);
  170.         LcdWriteData('0'+(TIME[5]&0x07));        //星期                        
  171. }
  172. /*******************************************************************************
  173. * 函數(shù)名         : Int0Configuration()
  174. * 函數(shù)功能                   : 配置外部中斷0
  175. * 輸入           : 無
  176. * 輸出                  : 無
  177. *******************************************************************************/

  178. void Int0Configuration()
  179. {
  180.         //設(shè)置INT0
  181.         IT0=1;//跳變沿出發(fā)方式(下降沿)
  182.         EX0=1;//打開INT0的中斷允許。
  183.         EA=1;//打開總中斷      
  184. }
  185. /*******************************************************************************
  186. * 函數(shù)名         : Int0()
  187. * 函數(shù)功能                   : 外部中斷0 中斷函數(shù)
  188. * 輸入           : 無
  189. * 輸出                  : 無
  190. *******************************************************************************/

  191. void Int0() interrupt 0                 
  192. {
  193.         Delay10ms();
  194.         if(K3==0)
  195.         {
  196.                 SetState=~SetState;
  197.                 SetPlace=0;
  198.                 Ds1302Init();      
  199.         }
  200. }
  201. /*******************************************************************************
  202. * 函數(shù)名         : Delay10ms
  203. * 函數(shù)功能                   : 延時(shí)函數(shù),延時(shí)10ms
  204. * 輸入           : 無
  205. * 輸出                  : 無
  206. *******************************************************************************/
  207. void Delay10ms(void)   //誤差 0us
  208. {
  209.     unsigned char a,b,c;
  210.     for(c=1;c>0;c--)
  211.         for(b=38;b>0;b--)
  212.             for(a=130;a>0;a--);
  213. }
復(fù)制代碼





這是萬年歷加溫度

這是萬年歷加溫度
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九精品久久久 | 玖玖在线精品 | av片网站| 亚洲精品一区二区三区四区高清 | 成人国产精品久久久 | 人人干97 | 日韩淫片免费看 | 国产精品一码二码三码在线 | 在线天堂免费中文字幕视频 | 成人免费xxxxx在线视频 | 精品综合 | 欧美性猛片aaaaaaa做受 | 97偷拍视频 | 日韩久久精品 | 日韩乱码一二三 | 国产xxxx搡xxxxx搡麻豆 | av毛片免费| 99精品国产一区二区三区 | 亚洲每日更新 | 成人福利网 | 美美女高清毛片视频免费观看 | 国产99久久久国产精品 | 久久香焦 | av黄色免费在线观看 | 国产日韩欧美精品 | 欧美精品久久久 | 亚洲精品免费视频 | 精品视频一区二区三区 | 精品无码久久久久久国产 | 国产精品欧美一区二区三区不卡 | 一级在线观看 | 精品国产欧美 | 久久亚洲国产精品日日av夜夜 | 亚洲国产一区二区三区在线观看 | 国产精品激情 | 国产你懂的在线观看 | 国产激情视频网站 | 成人中文字幕在线观看 | 欧美日韩在线播放 | 精品99久久久久久 | 日韩国产欧美在线观看 |