本项目使用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
###################################################################################
对按键的