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

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

QQ登錄

只需一步,快速開始

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

電子萬年歷全部單片機(jī)程序

[復(fù)制鏈接]
ID:257049 發(fā)表于 2017-12-6 08:51 | 顯示全部樓層 |閱讀模式
單片機(jī)源程序如下:
  1. /*********************************************************************************
  2. * 【實(shí)驗(yàn)平臺(tái)】: QX-MCS51 單片機(jī)開發(fā)板
  3. * 【外部晶振】: 11.0592mhz        
  4. * 【主控芯片】: STC89C52
  5. * 【編譯環(huán)境】: Keil μVisio4        
  6. * 【程序功能】: 電子萬年歷,LCD1602液晶顯示,顯示時(shí)分秒、星期、公歷、陰歷、鬧鐘、環(huán)境溫度、可以校時(shí)和設(shè)置鬧鐘。                                                                                          
  7. * 【使用說明】: 使用3條杜邦線把P10接到DS1302的TSCLK上,P11接到TIO,P12接到TRST上。
  8.                                  接上LCD1602液晶。
  9. * 【按鍵功能說明】:在正常顯示狀態(tài)下S2按鍵為切換公歷、時(shí)鐘/陰歷、鬧鐘顯示,在設(shè)置狀態(tài)下S2為設(shè)置左移。
  10.                                         S5為設(shè)置鍵,在顯示公歷時(shí)鐘狀態(tài)下,按下S5為設(shè)置公歷、時(shí)鐘,再次按下S5為寫入設(shè)置參數(shù)并退出
  11.                                         在顯示陰歷、鬧鐘狀態(tài)下,按下S5為設(shè)置陰歷、鬧鐘,再次按下S5為寫入設(shè)置參數(shù)并退出
  12.                                         在設(shè)置狀態(tài)下,S3為數(shù)據(jù)加
  13.                                         在設(shè)置狀態(tài)下,S4為數(shù)據(jù)減
  14. *  說明:免費(fèi)開源,不提供源代碼分析.
  15. **********************************************************************************/
  16. #define  _MAIN_C
  17. #include "config.h"
  18. #include "LCD1602.h"
  19. #include "DS1302.h"
  20. #include "DS18B20.h"
  21. #include "app.h"
  22. #include "Key_Buzzer.h"
  23. #include "main.h"

  24. bit flag1s = 0;    //1s定時(shí)標(biāo)志位
  25. bit flag200ms = 0; //200ms定時(shí)標(biāo)志
  26. enum eStaSystem staSystem = E_NORMAL;  //系統(tǒng)運(yùn)行狀態(tài)

  27. void main()
  28. {
  29.         EA = 1;                        //開總中斷
  30.         Start18B20();   //啟動(dòng)溫度轉(zhuǎn)換
  31.         Init_Timer0();  //初始化定時(shí)器0
  32.         Init_LCD1602(); //LCD1602初始化
  33.         //Init_DS1302();        //初始化DS1302
  34.         while (!flag1s);//上電后延時(shí)1秒
  35.     flag1s = 0;
  36.         RefreshTime();        //刷新時(shí)間
  37.         RefreshDate(1);        //立即刷新日期
  38.         RefreshTemp(1); //立即刷新溫度顯示

  39.         while(1)
  40.         {
  41.             KeyDriver();        //按鍵檢測
  42.                 if(flag200ms)        //200ms時(shí)間到
  43.                 {
  44.                         flag200ms = 0;        //清零標(biāo)志位
  45.                         AlarmMonitor(); //監(jiān)控鬧鐘
  46.                         if (staSystem == E_NORMAL)//如果系統(tǒng)正常運(yùn)行
  47.                         {
  48.                                 RefreshTime(); //刷新時(shí)間
  49.                                 RefreshDate(0);//刷新日期
  50.                         }
  51.                         if (staSystem == Dis_Alarm)
  52.                         {
  53.                                 RefreshLunar(); //刷新陰歷
  54.                         }
  55.                 }        
  56.                 if(flag1s && (staSystem == E_NORMAL))//1s時(shí)間到并且系統(tǒng)為正常運(yùn)行
  57.                 {
  58.                         flag1s = 0;//清零標(biāo)志位
  59.                         RefreshTemp(0);//刷新溫度        
  60.                 }
  61.    }
  62. }

  63. /* 溫度刷新函數(shù),讀取當(dāng)前溫度并根據(jù)需要刷新液晶顯示,
  64. ** ops-刷新選項(xiàng):為0時(shí)只當(dāng)溫度變化才刷新,非0則立即刷新 */
  65. void RefreshTemp(uint8 ops)
  66. {
  67.     int16 temp;
  68.     uint8 pdata str[8];
  69.     static int16 backup = 0;
  70.    
  71.     Get18B20Temp(&temp); //獲取當(dāng)前溫度值
  72.     Start18B20();        //啟動(dòng)下一次轉(zhuǎn)換
  73.     temp >>= 4;          //舍棄4bit小數(shù)位
  74.     if ((backup!=temp) || (ops!=0)) //按需要刷新液晶顯示
  75.     {
  76.         str[0] = (temp / 10) + '0';  //十位轉(zhuǎn)為ASCII碼
  77.         str[1] = (temp % 10) + '0';  //個(gè)位轉(zhuǎn)為ASCII碼
  78.         str[2] = '\'';             //用'C代替℃
  79.         str[3] = 'C';
  80.         str[4] = '\0';             //字符串結(jié)束符
  81.         LCD1602_Dis_Str(12, 1, str);    //顯示到液晶上
  82.         backup = temp;             //刷新上次溫度值
  83.     }
  84. }


  85. /*初始化定時(shí)器0 定時(shí)5ms*/        
  86. void Init_Timer0()
  87. {
  88.         
  89.         TMOD = 0x01;  //定時(shí)器16為計(jì)數(shù)工作模式
  90.         TH0 =0xee;
  91.         TL0 =0x00; //5ms
  92.         ET0 = 1; //開定時(shí)器0中斷
  93.         TR0 = 1;//啟動(dòng)定時(shí)器0
  94. }
  95. /*定時(shí)器0中斷服務(wù)程序*/
  96. void Timer0() interrupt 1
  97. {
  98.         static uint8 tmr1s = 0;
  99.     static uint8 tmr200ms = 0;
  100.         
  101.         TH0 =0xee;
  102. ……………………

  103. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
萬年歷焊接板.zip (124.25 KB, 下載次數(shù): 74)
回復(fù)

使用道具 舉報(bào)

ID:310944 發(fā)表于 2018-4-18 15:42 | 顯示全部樓層
很強(qiáng)很贊有參考價(jià)值
回復(fù)

使用道具 舉報(bào)

ID:441756 發(fā)表于 2018-12-7 17:28 | 顯示全部樓層
好想下載
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精久久久久久久 | 国产一级毛片精品完整视频版 | 俺去俺来也www色官网cms | 国产精品久久久久久久白浊 | 女人毛片a毛片久久人人 | 国产精品毛片无码 | 久久精品黄色 | 欧美人成在线视频 | 91看片网站| 免费视频一区二区 | 成人一区在线观看 | 波多野结衣二区 | 国产精品一区二区三区久久久 | 久久综合狠狠综合久久 | 成人黄色电影在线观看 | 日韩综合在线视频 | 免费一级欧美在线观看视频 | 一区二区久久电影 | 午夜影院在线播放 | 久www| 在线午夜| 国产一区免费视频 | 在线看亚洲 | 伊人久久一区二区 | 日本欧美国产在线 | 天天插天天操 | 四虎影音 | 97天天干| 日韩在线一区二区三区 | 国产精品久久久久久亚洲调教 | 国产成人久久精品 | 亚洲精品一区二区三区丝袜 | 全免费a级毛片免费看视频免费下 | 免费精品视频一区 | tube国产| 国产在线精品一区 | 久久一本 | 国产精品亚洲片在线播放 | 小草久久久久久久久爱六 | 一区二区三区在线免费观看 | 国产小视频在线 |