使用DS3231SN制作数字时钟

本项目使用STC15W4K58S4单片机作为控制部分,其速度是传统单片机的12倍。使用有2片74H595驱动的四位数码管显示。
由按键实现时间的调整,时间和温度的切换。通过串口的输出显示,实现对程序的监控,方便debug。

DS3231SN的温度传感,精确到0.25°
DS3231SN的时钟,支持两路闹钟,拥有内部晶振,在有备用电源情况下,精准的进行计时。
DS3231SN支持电压测量。


完整整项目下载:http://download.csdn.net/detail/c1194758555/9596071

DN3231SN中文数据手册:http://download.csdn.net/detail/c1194758555/9596066


项目所用的全部头文件:

####################################################################

IIC通信:

IIC.h

#ifndef _IIC_H_
#define _IIC_H_

#define uchar unsigned char

/*模拟IIC通信*/
#define SCL   P03
#define SDA   P04

void start(void);          /*通信开始*/
void stop(void);           /*通信停止*/
uchar send_bit(uchar dat); /*发送一个bit*/
char Read_bit(void);       /*读取一个bit*/
uchar ASLK(uchar Bit);     /*应答信号*/

#endif

######################################################################

######################################################################

数据的读写:

write_or_read.h


#ifndef _READ_OR_WRITE_H_
#define _READ_OR_WRITE_H_
#include "IIC.h"

uchar W_char(uchar Add,uchar Dat);
char R_w_add_char(uchar Add);
uchar bcd_hex(uchar bcd);
uchar hex_bcd(uchar hex);

#endif

########################################################################

########################################################################

初始化设置时间:

DS3231.h


#ifndef _DS3231_H_
#define _DS3231_H_
#include "IIC.h"

/*存储时间*/
extern          char Time[8];
extern unsigned char Hour;
extern unsigned char Minutes;
extern unsigned char Seconds;
extern          char Wdh;
extern          char Wdl;
extern unsigned char ERRON;

/*地址的定义*/

#define H   0x02            
#define M   0x01
#define S   0x00
#define WDH 0x11
#define WDL 0x12
#define Con 0x0e
#define Pws 0x0f
#define A_W 0xD0
#define A_R 0xD1

uchar Get_H(void);       /*获得小时*/
uchar Get_M(void);       /*获得分钟*/
uchar Get_S(void);       /*获得秒*/
uchar Get_WDH(void);     /*获取温度整数位*/
uchar Get_WDL(void);     /*获取温度小数位*/

uchar init_DS3231(uchar con);                                   /*初始化DS3231*/
uchar Set_time(uchar data_H,uchar data_M,uchar data_S);         /*设置时间*/

#endif
#################################################################################

#################################################################################

对时间设置,时间温度切换控制,时间温度显示:

Interrupt.h

#ifndef _Interrupt_H_
#define _Interrupt_H_
#include "IIC.h"

#define init(x) x ? Read_WD() : Read_SJ()

void init_0(void);     /*初始化定时器0*/
void set_time_key(uchar f); /*设置时间加1*/
void Read_WD(void);  /*读取温度*/
void Read_SJ(void);  /*读取时间*/
void display_us(unsigned int tt); /*μ秒级*/
void display_ms(unsigned int tt);  /*微妙级*/

#endif

###################################################################################

对按键的
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值