实现时钟计时功能,闹钟设置功能,时间调整、12/24小时切换功能,能实时显示温度,包含显示电路,按键电路,单片机电路,温度传感器电路,时钟电路,声光电路等。
#include
#include
#define NOP _nop_()
#define TEMP_ALERT_L 0x00
#define TEMP_ALERT_H 0x25
#define SET_TIME 6500
#define END_ALERT 100
typedef unsigned char uchar;
typedef unsigned int uint;
sbit RS = P2 ^ 0; /* P2^0; */
sbit RW = P2 ^ 1; /* P2^1; */
sbit EN = P2 ^ 2; /* P2^2; */
sbit RST = P2 ^ 3; /* DS1302使能信号,高电平有效 */
sbit CLK = P2 ^ 4; /* 时钟信号 */
sbit IO = P2 ^ 5;
sbit DQ = P2 ^ 6; /* ds18b20数据线 */
sbit BUZ = P2 ^ 7;
sbit Touch = P1 ^ 4;
sbit BG = P1 ^ 5;
sbit Key_Select = P1 ^ 0;
sbit Key_Up = P1 ^ 1;
sbit Key_Down = P1 ^ 2;
sbit Key_Alert = P1 ^ 3;
sbit Key_12_24 = P1 ^ 6;
sbit Key_clear = P1 ^ 7;
bit timerflag = 0;
uint j, bg_count = 0, sf1 = SET_TIME, sf2 = 0;
uchar i, tmp, TEMP, dat, re_dat, wr_dat, alert = 0, temp_flag = 0, select = 0;
uchar temperature[2];
uchar alesta[2] = { 'F', 'F' };
uchar alert_sleep[2] = { 0, 0 };
uchar alert_hour[2];
uchar slpcon[2] = { 0, 0 };
uchar disp1[16] = " Welcome! ";
uchar disp2[16] = "Have A Nice Day!";
uchar alerttime1[2] = { 0, 0 };
uchar alerttime2[2] = { 12, 0 }; /* 闹钟初始时间 */
uchar rtc[7] = { 0, 0, 4, 9, 0, 0, 0 }; /* 即时时间 real time clock */
uchar writeaddr[7] = { 0x8c, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80 }; /* 写命令数组 年周月日时分秒 */
uchar readaddr[7] = { 0x8d, 0x8b, 0x89, 0x87, 0x85, 0x83, 0x81 };
void delay_ms( uint );
void delay_50us( uint );
void delay_us( uchar );