电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

基于51单片机的DS1302+LCD12864+DS18B20小综合VIP免费

基于51单片机的DS1302+LCD12864+DS18B20小综合_第1页
1/23
基于51单片机的DS1302+LCD12864+DS18B20小综合_第2页
2/23
基于51单片机的DS1302+LCD12864+DS18B20小综合_第3页
3/23
#include#include#defineuintunsignedint#defineucharunsignedchar#definefirst_line0x80#definesecond_line0x90#definethird_line0x88#defineforth_line0x98#definesec_addr_pos0x04#definemin_addr_pos0x02#definehor_addr_pos0x00#defineday_addr_pos0x05#definemon_addr_pos0x03#defineyer_addr_pos0x01#definewek_addr_pos0x02#definesbl_addr_pos0x04#defineTep_addr_pos0x05#defineTmp_addr_pos0x06ucharcodeline_one[]="2016年10月31日";ucharcodeline_two[]="14:22:45";ucharcodeline_three[]="星期五-23℃";ucharstr_wek[]="一二三四五六日℃";charsecond,minute,hour,day,week,month,year;ucharkey_flag,mode_cnt;uinttemperature,symbol;//用于存储DS18B20采集的整个数据ucharDS18B20_H;//用于存储DS18B20数据采集的整数部分ucharDS18B20_L;//用于存储DS18B20数据采集的小数部分ucharinit_18B20_fail;sfrLCD_DATA=0x80;sbitLCD_EN=P2^7;sbitLCD_RS=P2^6;sbitLCD_RW=P2^5;sbitDS_CLK=P3^6;sbitDS_RST=P3^5;sbitDS_IO=P3^4;sbitACC0=ACC^0;sbitACC7=ACC^7;sbitkey_1=P2^4;sbitkey_2=P2^3;sbitkey_3=P2^2;sbitDQ=P3^7;voiddelay_ms(uintms);voiddelay_us(uintus);bitbusy(void);voidwrite_command(ucharcommand);voidwrite_data(uchardat);voidlcd_pos(ucharx,uchary);voidLCD_init(void);voidInput_1byte(ucharTD);ucharOutput_1byte(void);ucharRead_DS1302(ucharDS_ADD);voidwrite_DS1302(ucharDS_ADD,ucharDS_DATE);voidwrite_time(ucharaddr,ucharnum);ucharBCD_to_Dec(ucharnum);voidwrite_week(ucharnum);voidwrite_date(ucharaddr,ucharnum);ucharreadsecond(void);ucharreadminute(void);ucharreadhour(void);ucharreadday(void);ucharreadmonth(void);ucharreadweek(void);ucharreadyear(void);voidreadtime(void);voidDS1302_init(void);voidkey_scan(void);ucharDS18B20_read_byte(void);voidDS18B20_write_byte(ucharbyte);ucharDS18B20_Init(void);uintread_temperature(void);voidwrite_temp(uchartemp_h);voidwrite_symbol(ucharaddr,ucharsymbol);voiddisplay_18B20_err(void);voidmain(void){key_flag=0;second=20;minute=30;hour=10;day=31;week=3;month=12;year=16;LCD_init();/*while(1){write_date(day_addr_pos,day);write_date(mon_addr_pos,month);write_date(yer_addr_pos,year);write_time(sec_addr_pos,second);write_time(min_addr_pos,minute);write_time(hor_addr_pos,hour);write_week(week);}*/if(!(Read_DS1302(0x8E)&0x80)){DS1302_init();}while(1){key_scan();if(key_flag==0){second=Read_DS1302(0x81);write_time(sec_addr_pos,BCD_to_Dec(second));minute=Read_DS1302(0x83);write_time(min_addr_pos,BCD_to_Dec(minute));hour=Read_DS1302(0x85);write_time(hor_addr_pos,BCD_to_Dec(hour));week=Read_DS1302(0x8B);write_week(week);day=Read_DS1302(0x87);write_date(day_addr_pos,BCD_to_Dec(day));month=Read_DS1302(0x89);write_date(mon_addr_pos,BCD_to_Dec(month));year=Read_DS1302(0x8D);write_date(yer_addr_pos,BCD_to_Dec(year));readtime();//读出十进制数,提供给按键进行数据的+/-的处理temperature=read_temperature();init_18B20_fail=DS18B20_Init();if(init_18B20_fail==0){//temperature=read_temperature();if((temperature&0x8000)==0x8000)//判断读取的温度是正温度还是负温度{symbol=0x2D;//write_symbol(0x0A,0x2C);//显示负号temperature=~temperature+1;//负温度时处理,原数取反再加1}else{symbol=0xfe;//write_symbol(0x0A,0xfe);//不显示正号}//write_symbol(0x0A,symbol);DS18B20_H=(temperature>>4)&0x7f;//取温度读数的整数部分DS18B20_L=temperature&0x0f;//取温度读数的小数部分write_symbol(sbl_addr_pos,symbol);write_temp(DS18B20_H);}else{display_18B20_err();}}}}voiddelay_us(uintus){while(us--);}voiddelay_ms(uintms){uchari;while(ms--){for(i=250;i>0;...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

基于51单片机的DS1302+LCD12864+DS18B20小综合

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部