大学方案单片机智能数字闹钟程序代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 item=max。

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>{

相关文档
最新文档