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

標題: 電子萬年歷全部單片機程序 [打印本頁]

作者: 1——212    時間: 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)



作者: zcm1998    時間: 2018-4-18 15:42
很強很贊有參考價值
作者: 793376762    時間: 2018-12-7 17:28
好想下載




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久性| 影音先锋成人资源 | 一区二区三区四区免费观看 | 成人性生交大片免费看中文带字幕 | 精品九九 | 91免费看片 | 欧美精品一区二区三区四区 | 黄色视频a级毛片 | 日韩一区在线播放 | 欧美精品一区二区在线观看 | 91视视频在线观看入口直接观看 | 国产污视频在线 | 538在线精品| av色站| 欧美专区在线 | 亚洲视频一区二区三区 | 国产精品久久免费观看 | 伊人精品在线 | 久久夜视频 | 久久精品综合 | 欧美福利久久 | 国产亚洲精品久久久优势 | 日韩在线小视频 | 国产高清免费在线 | 欧美一级毛片免费观看 | 青青久久| 夜夜精品浪潮av一区二区三区 | 成人精品毛片国产亚洲av十九禁 | 国产在线www | 久久精品一区二区三区四区 | 成人在线免费观看 | 伊人伊人| 91一区| 欧美a级成人淫片免费看 | 成人在线视频观看 | 伊人激情网 | www.日日干 | 欧洲成人午夜免费大片 | 欧美精品一区在线 | 精品一区二区三区四区视频 | 男女羞羞的网站 |