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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5724|回復: 2
打印 上一主題 下一主題
收起左側

電子萬年歷全部單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:257049 發表于 2017-12-6 08:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /*********************************************************************************
  2. * 【實驗平臺】: QX-MCS51 單片機開發板
  3. * 【外部晶振】: 11.0592mhz        
  4. * 【主控芯片】: STC89C52
  5. * 【編譯環境】: Keil μVisio4        
  6. * 【程序功能】: 電子萬年歷,LCD1602液晶顯示,顯示時分秒、星期、公歷、陰歷、鬧鐘、環境溫度、可以校時和設置鬧鐘。                                                                                          
  7. * 【使用說明】: 使用3條杜邦線把P10接到DS1302的TSCLK上,P11接到TIO,P12接到TRST上。
  8.                                  接上LCD1602液晶。
  9. * 【按鍵功能說明】:在正常顯示狀態下S2按鍵為切換公歷、時鐘/陰歷、鬧鐘顯示,在設置狀態下S2為設置左移。
  10.                                         S5為設置鍵,在顯示公歷時鐘狀態下,按下S5為設置公歷、時鐘,再次按下S5為寫入設置參數并退出
  11.                                         在顯示陰歷、鬧鐘狀態下,按下S5為設置陰歷、鬧鐘,再次按下S5為寫入設置參數并退出
  12.                                         在設置狀態下,S3為數據加
  13.                                         在設置狀態下,S4為數據減
  14. *  說明:免費開源,不提供源代碼分析.
  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定時標志位
  25. bit flag200ms = 0; //200ms定時標志
  26. enum eStaSystem staSystem = E_NORMAL;  //系統運行狀態

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

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

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


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

  103. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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


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

使用道具 舉報

沙發
ID:310944 發表于 2018-4-18 15:42 | 只看該作者
很強很贊有參考價值
回復

使用道具 舉報

板凳
ID:441756 發表于 2018-12-7 17:28 | 只看該作者
好想下載
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表