找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10672|回复: 23
打印 上一主题 下一主题
收起左侧

DS3231时钟程序

  [复制链接]
跳转到指定楼层
楼主
DS3231时钟程序,51单片机控制,数码管显示,带四个按键,可以自 动进行时间调整。

单片机源程序如下:
  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;                              /*时间温度状态切换标志量*/
  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();                             /*初始化串口,用于监控代码运行,方便调试*/
  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;                            /*切换状态*/
  78.                                 init(f);                           /*显示为设置的工作状态*/
  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, 下载次数: 417)


评分

参与人数 1黑币 +3 收起 理由
vvv64 + 3 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:183763 发表于 2018-4-2 19:27 | 只看该作者
这个没人看吗?带几个闹钟的呢
回复

使用道具 举报

板凳
ID:58092 发表于 2018-4-5 15:00 | 只看该作者
下载 看看   参考
回复

使用道具 举报

地板
ID:96881 发表于 2018-4-7 07:46 | 只看该作者
模块化的,下载学习,谢谢
回复

使用道具 举报

5#
ID:96881 发表于 2018-4-14 19:49 | 只看该作者
请大家指教一下,因为我才开始学单片机,这个帖子里面LED的显示程序的段选和位选分别是什么表示的,因为我初学只看到过在程序前面直接说明的,这个LED的两个文件都看了也没有看懂,所以请指导一下,谢谢
回复

使用道具 举报

6#
ID:78901 发表于 2018-6-7 23:17 | 只看该作者
辛苦了,模块化的,下载学习
回复

使用道具 举报

7#
ID:58092 发表于 2018-7-3 08:29 | 只看该作者
下载 学习 一下  
回复

使用道具 举报

8#
ID:387328 发表于 2018-9-17 15:54 | 只看该作者

好贴,有没有二个调整键的呢?
回复

使用道具 举报

9#
ID:309092 发表于 2018-9-19 10:06 | 只看该作者
学习下
回复

使用道具 举报

10#
ID:309092 发表于 2018-9-19 10:07 | 只看该作者
学习学习,希望有帮助
回复

使用道具 举报

11#
ID:309092 发表于 2018-9-19 10:08 | 只看该作者
下载学习下
回复

使用道具 举报

12#
ID:468714 发表于 2019-1-15 20:22 | 只看该作者
cqhejian 发表于 2018-4-7 07:46
模块化的,下载学习,谢谢

你好,请问您的关于ds3231的帖子里的资源包里都包括什么呢?
回复

使用道具 举报

13#
ID:202926 发表于 2019-1-15 23:55 | 只看该作者
jhgvj 发表于 2019-1-15 20:22
你好,请问您的关于ds3231的帖子里的资源包里都包括什么呢?

就程序而已 其他什么都没有,你看第一张图就知道了
回复

使用道具 举报

14#
ID:237159 发表于 2019-6-5 13:16 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
ID:57570 发表于 2019-9-1 20:38 来自手机 | 只看该作者
按键能调吗?
回复

使用道具 举报

16#
ID:507960 发表于 2019-9-6 21:29 | 只看该作者
貌似没看到你所说的 闹钟 功能
回复

使用道具 举报

17#
ID:546585 发表于 2019-11-21 20:53 | 只看该作者
学习
回复

使用道具 举报

18#
ID:385168 发表于 2020-3-16 05:35 | 只看该作者
正在学习ds3231,下载学习,谢谢分享。
回复

使用道具 举报

19#
ID:500396 发表于 2020-4-24 11:41 | 只看该作者
感谢分享!
回复

使用道具 举报

20#
ID:831068 发表于 2021-1-9 09:12 | 只看该作者
并没有看到所谓的“带几个闹钟的呢
回复

使用道具 举报

21#
ID:829752 发表于 2021-1-12 17:55 | 只看该作者
4个按键的功能分别是什么
回复

使用道具 举报

22#
ID:93502 发表于 2021-2-25 21:03 | 只看该作者
楼主真高手!
回复

使用道具 举报

23#
ID:652804 发表于 2021-3-27 08:33 | 只看该作者
模块化的,下载学习,谢谢。
回复

使用道具 举报

24#
ID:884042 发表于 2021-5-29 18:08 | 只看该作者
Equator 发表于 2019-9-6 21:29
貌似没看到你所说的 闹钟 功能

我连调节闹钟的影子都没看见,浪费我的黑币
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表