標題: DS3231時鐘程序 [打印本頁]

作者: jtrx805840487    時間: 2017-10-11 19:25
標題: DS3231時鐘程序
DS3231時鐘程序,51單片機控制,數(shù)碼管顯示,帶四個按鍵,可以自 動進行時間調(diào)整。

單片機源程序如下:
  1. #include <STC15W4K58S4.h>
  2. #include "read_or_write.h"
  3. #include "Interrupt.h"
  4. #include "led.h"
  5. #include "IIC.h"
  6. #include "key.h"
  7. #include "uart.h"
  8. #include "DS3231.h"

  9. static uchar f = 0;                              /*時間溫度狀態(tài)切換標志量*/
  10. static uchar flag;
  11. static unsigned int SUM = 1000;
  12. static unsigned int SUMM = 200;
  13. static unsigned int NO;
  14. int main()
  15. {
  16.         uchar set;
  17.         KEY = 0;                                         /*按鍵*/
  18.         ERRON = 1;
  19.         flag = 0;
  20.         
  21.         P2M0 = 0x00;
  22.         P2M1 = 0x00;
  23.         
  24.         Time[0] = 5;
  25.         Time[1] = 5;
  26.         Time[2] = 5;
  27.         Time[3] = 5;
  28.         init_uart1();                             /*初始化串口,用于監(jiān)控代碼運行,方便調(diào)試*/
  29.         init_0();

  30.         init_DS3231(0x1C);      

  31.         /*初始化DS3231*/

  32.         
  33.         //OutChar(Set_time(0x0C,0x01,0x0) + '0');                /*設置時間*/
  34.         
  35.   Out_Time_WD();
  36.         init(f);                                 /*初始化定時器0,顯示時間*/
  37.         
  38.         Out_Time_WD();
  39.         
  40.         while(1)
  41.         {
  42.                 OutString("進入while\r\n");
  43.                 switch(KEY)
  44.                 {
  45.                         case 1:
  46.                                 if(!f)
  47.                                 {
  48.                                         flag = 1;
  49.                                         while(flag < 3)
  50.                                         {
  51.                                                 set = Key_NO();          /*檢測按鍵變化*/
  52.                                                 
  53.                                                 switch(set)
  54.                                                 {
  55.                                                         case 1: { if(flag == 1) W_char(H,hex_bcd(Hour)); if(flag == 2) W_char(M,hex_bcd(Minutes)); flag += 1; }                        break;       /*分鐘位開始閃爍*/
  56.                                                         case 2: set_time_key(flag); break;   /*加1*/
  57.                                                 }
  58.                                         }
  59.                                        
  60.                                         display_ms(100);
  61.                                         flag = 0;
  62.                                         KEY = 0;
  63.                                        
  64.                                 }
  65.                                 init(f);                           /*時間正常顯示*/
  66.                                 break;
  67.                                 
  68.                         /*
  69.                                 case 2:
  70.                           init(!f);                          /*顯示非當前模式*/
  71.      /* display_ms(5000);                   /*延時5秒*/
  72.                  /* init(f);                           /*顯示為當前模式*/                                       
  73.                 /*        break;
  74.                         */
  75.                                 
  76.                         case 3:
  77.                                 f = !f;                            /*切換狀態(tài)*/
  78.                                 init(f);                           /*顯示為設置的工作狀態(tài)*/
  79.                                 break;        
  80.                 }
  81.         }
  82. }

  83. void init_time0() interrupt 1
  84. {
  85.         uchar i,k;
  86.         uchar j = 1;
  87.         
  88.         
  89.         if(flag ==1)
  90.         {
  91.                 if(NO >= SUM)
  92.                 {
  93.                         i = 0;
  94.                         k = 4;
  95.                 }
  96.                 else
  97.                 {
  98.                         i = 0;
  99.                   k = 2;
  100.                 }
  101.         }
  102.         else if(flag == 2)
  103.         {
  104.                 if(NO >= SUM)
  105.                 {
  106.                         i = 0;
  107.                         k = 4;
  108.                 }
  109.                 else
  110.                 {
  111.                         i = 2;
  112.                   k = 4;
  113.                 }
  114.         }
  115.         else
  116.         {
  117.                 i = 0;
  118.                 k = 4;
  119.         }
  120.         
  121.         if(NO == 2*SUM)
  122.                  NO = 0;
  123.         NO += 1;
  124.         
  125.         for(;i < k; i++)
  126.         {
  127.                 if(f && i == 2)
  128.                 {
  129. ……………………

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

所有資料51hei提供下載:
DS3231SN.zip (99.96 KB, 下載次數(shù): 417)



作者: A17094430    時間: 2018-4-2 19:27
這個沒人看嗎?帶幾個鬧鐘的呢
作者: 孤雁飄零    時間: 2018-4-5 15:00
下載 看看   參考
作者: cqhejian    時間: 2018-4-7 07:46
模塊化的,下載學習,謝謝
作者: cqhejian    時間: 2018-4-14 19:49
請大家指教一下,因為我才開始學單片機,這個帖子里面LED的顯示程序的段選和位選分別是什么表示的,因為我初學只看到過在程序前面直接說明的,這個LED的兩個文件都看了也沒有看懂,所以請指導一下,謝謝
作者: fsj5098    時間: 2018-6-7 23:17
辛苦了,模塊化的,下載學習
作者: 孤雁飄零    時間: 2018-7-3 08:29
下載 學習 一下  
作者: tb0412    時間: 2018-9-17 15:54

好貼,有沒有二個調(diào)整鍵的呢?
作者: zym12138    時間: 2018-9-19 10:06
學習下
作者: zym12138    時間: 2018-9-19 10:07
學習學習,希望有幫助
作者: zym12138    時間: 2018-9-19 10:08
下載學習下
作者: jhgvj    時間: 2019-1-15 20:22
cqhejian 發(fā)表于 2018-4-7 07:46
模塊化的,下載學習,謝謝

你好,請問您的關于ds3231的帖子里的資源包里都包括什么呢?

作者: chenkl1996    時間: 2019-1-15 23:55
jhgvj 發(fā)表于 2019-1-15 20:22
你好,請問您的關于ds3231的帖子里的資源包里都包括什么呢?

就程序而已 其他什么都沒有,你看第一張圖就知道了
作者: 隨風飄零翼    時間: 2019-6-5 13:16
謝謝分享
作者: 吳宇    時間: 2019-9-1 20:38
按鍵能調(diào)嗎?
作者: Equator    時間: 2019-9-6 21:29
貌似沒看到你所說的 鬧鐘 功能
作者: 4233333    時間: 2019-11-21 20:53
學習

作者: luoshi133    時間: 2020-3-16 05:35
正在學習ds3231,下載學習,謝謝分享。
作者: 1m49s    時間: 2020-4-24 11:41
感謝分享!
作者: chaoge131    時間: 2021-1-9 09:12
并沒有看到所謂的“帶幾個鬧鐘的呢
作者: yygc    時間: 2021-1-12 17:55
4個按鍵的功能分別是什么

作者: 胡鬧鬧    時間: 2021-2-25 21:03
樓主真高手!
作者: sh-fluke    時間: 2021-3-27 08:33
模塊化的,下載學習,謝謝。
作者: xjx51    時間: 2021-5-29 18:08
Equator 發(fā)表于 2019-9-6 21:29
貌似沒看到你所說的 鬧鐘 功能

我連調(diào)節(jié)鬧鐘的影子都沒看見,浪費我的黑幣




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1