基于ds1302万年历应用实例、基于ds18b20温度检测应用实例

上传人:豆浆 文档编号:92204200 上传时间:2019-07-07 格式:DOC 页数:13 大小:90.52KB
返回 下载 相关 举报
基于ds1302万年历应用实例、基于ds18b20温度检测应用实例_第1页
第1页 / 共13页
基于ds1302万年历应用实例、基于ds18b20温度检测应用实例_第2页
第2页 / 共13页
基于ds1302万年历应用实例、基于ds18b20温度检测应用实例_第3页
第3页 / 共13页
基于ds1302万年历应用实例、基于ds18b20温度检测应用实例_第4页
第4页 / 共13页
基于ds1302万年历应用实例、基于ds18b20温度检测应用实例_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《基于ds1302万年历应用实例、基于ds18b20温度检测应用实例》由会员分享,可在线阅读,更多相关《基于ds1302万年历应用实例、基于ds18b20温度检测应用实例(13页珍藏版)》请在金锄头文库上搜索。

1、基于DS1302万年历以及基于DS18B20的温度检测电路/*主程序*/#include#include LCD1602.h#include 1302.h#includewendu.h#define uchar unsigned char#define uint unsigned intsbit speaker=P24;bit key_flag1=0,key_flag2=0; /*uchar shijian6=0;*/sec_add=0,min_add=0,hou_add=0,day_add=0,mon_add=0,yea_add=0;uchar data_alarm7=0;/*键盘控制*/i

2、nt key_scan() /扫描是否有键按下 int i=0;uint temp;P1=0xf0;temp=P1;if(temp!=0xf0)i=1;elsei=0;return i; uchar key_value() /确定按键的值uint m=0,n=0,temp;uchar value;uchar code v43=2,1,0,5,4,3,8,7,6,b,a,9; /用二维数组进行按键查询P1=0xfe;temp=P1; if(temp!=0xfe)m=0;P1=0xfd;temp=P1;if(temp!=0xfd)m=1;P1=0xfb;temp=P1;if(temp!=0xfb)

3、m=2;P1=0xf7;temp=P1;if(temp!=0xf7)m=3;P1=0xef;temp=P1;if(temp!=0xef)n=0;P1=0xdf;temp=P1;if(temp!=0xdf)n=1;P1=0xbf;temp=P1;if(temp!=0xbf)n=2;value=vmn;return value; /*设置闹铃函数*/ void naoling(void) uchar i=0,l=0,j; init1602(); while(key_flag2&i12) if(key_scan()j=key_value();write_data(j);if(i%2=0)data_a

4、larml=(j-0)9)data11=0;data10+; if(data109)data10=0;data11=0; x1=(data10-0)9)data14=0;data13+; if(data13=1&data14=3)data13=0;data14=1; x2=(data13-0)9)data17=0;data16+; if(data16=3&data17=2)data16=0;data17=1; x3=(data16-0)9)time1=0;time0+; if(time0=2&time1=4) time0=0;time1=0; x4=(time0-0)9)time4=0;tim

5、e3+; if(time3=6&time4=1) time3=0;time4=1; x5=(time3-0)9)time7=0;time6+; if(time6=6&time7=1) time6=0;time7=1; x6=(time6-0)4|(time7-0);dswrite(0x80,x6); break; /case b: reset() ;break; default: break; /*中断处理函数*/void changing(void) interrupt 0 using 0 /需要修改时间和日期,或者停止修改if(key_flag1)key_flag1=0;else key_

6、flag1=1;void alarming(void) interrupt 3 using 0/需要设置闹铃或者停止设置 if(key_flag2)key_flag2=0;else key_flag2=1;/*主函数*/ main()uint i;/uchar *l;uchar p1=D:,p2=TM,p3=Wd;EA=1;EX0=1;IT0=1;EA=1;EX1=1;IT1=1;init1602();/LCD初始化Initial_DS1302() ; /1302初始化ds18b20(); baojing=1; /报警灯while(1) /write_com(0x80);/显示区域不够 去除

7、/ write_string(p1,2); write_com(0x88) ; write_string(p3,2) ; write_com(0xc0); write_string(p2,2); gettime();/从1302中读取时间 datalcd( ); /日期显示转换 timelcd( ); /时间显示转换 xiugai( );/调用修改时间函数 if (key_flag2) naoling(); if (according() alarm(); write_com(0x80); write_string(data1,8); write_com(0xc2); write_string

8、(time,8); ds18b20(); /12位转换时间最大为750ms get_temperature(); display( ); delay(10); /*1302子程序:*/#ifndef _REAL_TIMER_DS1302_2009_5_20_#define _REAL_TIMER_DS1302_2003_5_20_#include #define uchar unsigned char#define uint unsigned intvoid timelcd( );void datalcd( );sbit DS1302_CLK = P26; /实时时钟时钟线引脚 sbit DS1302_IO = P27; /实时时钟数据线引脚 sbit DS1302_RST = P25; /实时时钟复位线引脚sbit ACC0 = ACC0;sbit ACC7 = ACC7;uchar x7=0x20,0x10,0x04,0x18,0x10,0x0,0x00;/分别存放年月日,时分秒/uchar x6=0;uchar time7=0;/ 存放时间uchar data17=0;/存放日期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号