资源描述:
《51单片机实现基于DS1302_1602_18B20的多功能电子时钟_带测温功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#defineucharunsignedchar#defineuintunsignedint/*------------------寄存器地址定义------------*/#defineWRITE_SECOND0x80#defineWRITE_MINUTE0x82#defineWRITE_HOUR0x84#defineWRITE_DAY0x86#defineWRITE_MONTH0x88#defineWRITE_YEAR0x8C#defineWRITE_PROTECT0x8E#def
2、ineWRITE_WEEK0x8A#defineWRITE_CURRENT0x90#defineREAD_SECOND0x81#defineREAD_MINUTE0x83#defineREAD_HOUR0x85#defineREAD_DAY0x87#defineREAD_MONTH0x89#defineREAD_WEEK0x8B#defineREAD_YEAR0x8DsbitRST=P3^5;//DS1302片选sbitDIO=P3^4;//DS1302数据信号sbitSCLK=P3^6;//DS1302时钟信号sbi
3、tACC7=ACC^7;sbitACC0=ACC^0;unsignedcharcount;sbitbeep=P1^4;voidINITIAL_1302();unsignedcharREAD_1302(unsignedcharaddr);voidWRITE_1302(unsignedcharaddr,unsignedchardate);sbitLCD_E=P2^7;//液晶使能端sbitLCD_RS=P2^6;//液晶数据命令选择端sbitLCD_RW=P2^5;//液晶读写选择端sbitkey0=P3^2;//功能键s
4、bitkey1=P3^3;//增大键sbitkey2=P3^4;//减小键sbitDQ=P3^7;//18b20温度输入输出端charhour,minute,second,week,day,month,year,tem;unsignedcharnum,flag;unsignedcharstr1[]="20--";unsignedcharstr2[]="::C";voiddelay(unsignedcharz);voidLCD_WRITE_COM(unsignedcharcom);voidLCD_WRITE_DATA(u
5、nsignedchardate);voidLCD_WRITE_SFM(unsignedcharaddr,unsignedchardate);voidLCD_WRITE_NYR(unsignedcharaddr,unsignedchardate);voidLCD_WRITE_WEEK(unsignedcharweek);voidLCD_INITIAL();voidLCD_WRITE_TEMP(ucharaddr,uchartemp);voidkeyscan();voidINITIAL_TEMER0();ucharTMPH
6、,TMPL;voidw1602c(ucharcom);voidw1602d(uchardata01);voiddelay2(uintms);voiddelay3(uintus);ucharresert(void);ucharread_byte();voidwrite_byte(ucharval);uintget_temp();voiddisplay();voiddelay3(uintus);//18b20ucharresert(void);//18b20ucharread_byte();//18b20voidwrite
7、_byte(ucharval);//18b20uintget_temp();//18b20voidmain(){LCD_INITIAL();//液晶初始化INITIAL_1302();//DS1302初始化INITIAL_TEMER0();//定时器初始化while(1){keyscan();//按键扫描if(flag==0)//当标志位为0,允许读取DS1302数据,将数据送入液晶显示{second=READ_1302(0x81);LCD_WRITE_SFM(10,second);minute=READ_1302(0
8、x83);LCD_WRITE_SFM(7,minute);hour=READ_1302(0x85);LCD_WRITE_SFM(4,hour);week=READ_1302(0x8b);LCD_WRITE_WEEK(week);day=READ_1302(0x87);LCD_WRITE_NYR(9,day);month=READ_