大学方案单片机智能数字闹钟程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姚辉虎的毕业设计--基于单片机的智能数字闹钟程序代码程序代码
main.c
#include
#include
#include
unsigned char clock_data[4]。
sbit speaker = P2^4。// 蜂鸣器
sbit bell = P2^2。 //铃响
bit bell_on=0。
bit key_ok=0。
unsigned char bell_time=0x20。
uchar week_clock_set。
#define FIRST_ADDR 0
//定义全局变量
unsigned char yy,mo,dd,xq,hh,mm,ss。// 定义时间映射全局变量<专用寄存器)uchar j。
/****************************************************************************/
//函数声明
extern unsigned char read_clock(unsigned char ord>。
extern void lcdwc(unsigned char cmdcode>。
extern void hzkdis(unsigned char code *s>。
extern void hzkdis2(unsigned char *s>。
extern char Read_One_Byte(unsigned char addr>。
extern void Write_One_Byte(unsigned char addr,unsigned char thedata>。
void lcm_w_ss(void>。
extern void lcdreset(void>。
extern void Init_DS18B20(void>。
extern char gotkey(>。
extern void Init_1302(void>。
extern unsigned int ReadTemperature(void>。
extern void write_clock(unsigned char ord, unsigned char dd>。
extern void disp_hz(uchar x,uchar *c_str,uchar w>。
extern void delay(unsigned int t>。
void new_time(void>。
void read_clockss(x>。
//void lcm_w_temp(void> 。
void read_clockS(void>
{
ss = read_clock(0x81>。//读取秒数据
mm = read_clock(0x83>。//读取分钟数据
hh = read_clock(0x85>。//小时
dd = read_clock(0x87>。//日
mo = read_clock(0x89>。//月
xq = read_clock(0x8b>。//星期
yy = read_clock(0x8d>。//年
}
/*void Set_time(unsigned char sel>{ //根据选择调整的相应工程加1并写入DS1302 signed char address,item。
signed char max,mini。
if(sel==7> {address=0x80。 max=0。mini=0。} //秒
if(sel==6> {address=0x82。 max=59。mini=0。} //分钟
if(sel==5> {address=0x84。 max=23。mini=0。} //小时
if(sel==3> {address=0x86。 max=31。mini=1。} //日
if(sel==2> {address=0x88。 max=12。mini=1。} //月
if(sel==1> {address=0x8c。 max=99。 mini=0。} //年
if(sel==4> {address=0x8a。 max=7。mini=1。} //星期
//读取1302某地址上的数值转换成10进制赋给item
item=((read_clock(address+1>>/16>*10 + (read_clock(address+1>>%16。
if(KEY_Y == 0>{
item++。//数加 1
}
if(KEY_N== 0>{
item--。//数减 1
}
if(item>max> item=mini。//查看数值有效范围
if(item
write_clock(0x8e,0x00>。//允许写操作
write_clock(address,(item/10>*16+item%10>。//转换成16进制写入1302 write_clock(0x8e,0x80>。//写保护,禁止写操作
// updata (>。 //刷新数据
// lcm_w_mm(>。//刷新分
}
*/
void DelayM(unsigned int a>{//延时函数 1MS/次
unsigned char i。
while( --a != 0>{
for(i = 0。 i < 125。 i++>。 //一个。表示空语句,CPU空转。
} //i 从0加到125,CPU大概就耗时1毫秒
}
/*****************************************************************************/
//向LCM中填写年数据
void lcm_w_yy(void>
{ // if (read_clock(0x8d> != yy> {
unsigned char str[2]。
str[2]=0。
yy = read_clock(0x8d>。
lcdwc(0x83+FIRST_ADDR>。
hzkdis("20">。
lcdwc(0x84+FIRST_ADDR>。
str[0]=(yy/16+0x30>。
str[1]=(yy%16+0x30>。
hzkdis2(str>。
hzkdis2("年">。
}
/*****************************************************************************/
//向LCM中填写月数据
void lcm_w_mo(void>{
// if(read_clock(0x89> != mo>{