ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:19.19KB ,
资源ID:11342154      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11342154.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(万年历程序.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

万年历程序.docx

1、万年历程序/*万年历*/*2010年10月23日*/*#include#include#includechar TAB10=0x30,0x31,0x32,0x33,/0123 0x34,0x35,0x36,0x37,/4567 0x38,0x39;/89char TABb=ModTudWedThdFriSatSun;/1234567unsigned char hour=0,min=0,sec=0,num=0;/程序开始时时分秒清零unsigned char yearh=20,yearl=0,month=1,day=1,weekday=1;unsigned char sigh1=0,sigh2=

2、0,sigh4=0,sigh5=0,sigh6=0;unsigned char hh,mm,sigh3=0;unsigned char sm=0,ss=0,sn=0;unsigned char set1=0,set2=0;unsigned char Temph,Templ;unsigned int temp;void sett0();/设置定时器tovoid settimer3();void settimer4();/倒计时设置void display1();/时分秒显示void display2();/日期显示void display3();/闹钟显示void display4();/倒计时

3、显示void display5();/显示温度void bz();/void INTI_LCD();void WR_COMM();void CHECK_BF();void WR_DATA();void CLS();/void delay20ms(int x);/void delay(unsigned int i)/温度延时 while(i-);/void init_DS18B20(void);/初始化unsigned char ReadOneChar(void);/读一个字节void WritdOneChar(unsigned char dat);/写一个字节unsigned int Read

4、Temperature(void);/读取温度void debouncer(void) int i; for(i=0;i0;i-) DQ=0;/给脉冲信号/读前总线保持为低 dat=1; DQ=1;/给脉冲信号/开始读总线释放 if(DQ)/DQ为读入的位,要么是0,要么是1 dat|=0x80; delay(5); return(dat);void WriteOneChar(unsigned char dat) unsigned char i=0; for(i=8;i0;i-) DQ=0;/总线低位,开始写入 DQ=dat&0x01; delay(5); DQ=1; dat=1; delay

5、(5);/unsigned int ReadTemperature(void) unsigned char a=0; unsigned int b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xcc);/跳过读序号列号的操作/写入 WriteOneChar(0x44);/启动温度转换/写入 delay(200); Init_DS18B20();/准备读温度之前先复位 WriteOneChar(0xcc);/路过读序列号的操作 WriteOneChar(0xBE);/读取温度寄存器等(共可读9个寄存器)前两个就是温度 a=ReadOneC

6、har();/低八位 b=ReadOneChar();/高八位 b4;/把小数去掉,小数占据低四位 Templ=temp&0x0f; Templ=Templ*6/10;/小数近似处理 LCD=0xcb;WR_COMM(); LCD=TAB(Temph%100)/10;WR_DATA();/十位温度 LCD=TAB(Temph%100)%10;WR_DATA();/个位温度,带小数点 LCD=0x2e;WR_DATA(); LCD=TABTempl;WR_DATA(); LCD=0x43;WR_DATA(); delay20ms(50); if(Temph%100)%10=2&(Temph%10

7、0)/10=3) while(k1=1&(Temph%100)%10=8&(Temph%100)/10=3) LED4=1;delay20ms(25); temp=ReadTemperature(); Temph=temp4;/把小数去掉,小数占据低四位 LED4=0;delay20ms(25); LED4=1;/闹钟设置时间void settimer3() hh=12; mm=30; while(k2!=0) if(k1=0)debouncer();if(k1=1)sigh4+;if(sigh4=3)sigh4=0;LED=0xff;display3(); if(sigh4!=0) swit

8、ch(sigh4) case 1:LED=0xfe; if(k3=0)debouncer();if(k3=1)hh+;if(hh=24)hh=0;display3(); if(k4=0)debouncer();if(k4=1)hh-;if(hh=0)hh=23;display3(); break; case 2:LED=0xfd; if(k3=0)debouncer();if(k3=1)mm+;if(mm=60)mm=0;display3(); if(k4=0)debouncer();if(k4=1)mm-;if(mm=0)mm=59;display3(); break; LED=0xff;

9、sigh4=0;/设置倒计时void settimer4() sm=30; ss=1; display4(); while(k3!=0) if(k4=0)debouncer();if(k4=1)sigh4+;if(sigh4=3)sigh4=0;LED=0xff;display4(); if(sigh4!=0) switch(sigh4) case 1:LED=0xfe; if(k1=0)debouncer();if(k1=1)sm+;if(sm=61)sm=0;display4(); if(k2=0)debouncer();if(k2=1)sm-;if(sm=0)sm=60;display4

10、(); break; case 2:LED=0xfd; if(k1=0)debouncer();if(k1=1)ss+;if(ss=60)ss=0;display4(); if(k2=0)debouncer();if(k2=1)ss-;if(ss=0)ss=59;display4(); break; LED=0xff; sigh4=0;/响铃void bz() while(k3=1) LED1=0; delay20ms(25); LED1=1; delay20ms(25); P1=0xff; sigh3=0; sigh5=0; LED2=1; LED3=1;/中断子程序void T0timrt

11、(void)interrupt 1 TH0=(8192-4990)/32; TL0=(8192-4990)%32; num+; if(num=200)sec+;num=0; if(sec=60)min+;sec=0; if(min=60)hour+;min=0; if(hour=24)day+;weekday+;hour=0;min=0;sec=0; if(weekday=8)weekday=1; switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12:if(day=32)month+;day=1;break

12、; case 4: case 6: case 9: case 11:if(day=31)month+;day=1;break; case 2:if(sigh1=1|sigh2=1)if(day=30)month+;day=1; elseif(day=29)month+;day=1; if(month=13)yearl+;month=0; if(yearl=99)yearh+;yearl=0;/时分秒显示void display1() LCD=0xc0;WR_COMM(); LCD=TABhour/10;WR_DATA(); LCD=TABhour%10;WR_DATA(); LCD=0x3a;

13、WR_DATA(); LCD=TABmin/10;WR_DATA(); LCD=TABmin%10;WR_DATA(); LCD=0x3a;WR_DATA(); LCD=TABsec/10;WR_DATA(); LCD=TABsec%10;WR_DATA(); if(sigh3=1)display3(); if(sigh5=1)display4();/年月日显示void display2() int i; LCD=0x80;WR_COMM(); LCD=TAByearh/10;WR_DATA(); LCD=TAByearh%10;WR_DATA(); LCD=TAByearl/10;WR_DA

14、TA(); LCD=TAByearl%10;WR_DATA(); LCD=0x2d;WR_DATA(); LCD=TABmonth/10;WR_DATA(); LCD=TABmonth%10;WR_DATA(); LCD=0x2d;WR_DATA(); LCD=TABday/10;WR_DATA(); LCD=TABday%10;WR_DATA(); LCD=0x8d; WR_COMM(); for(i=0;i3;i+) LCD=TABb3*(weekday-1)+i;WR_DATA();/延时程序void delay20ms(int x) int i,j; for(i=0;ix;i+) fo

15、r(j=0;j2400;j+);/void daojishi() if(sec!=sn) sn=sec;ss-; if(ss=0&sm!=0)ss=59;sm-; if(sm=0&ss=0)bz();/void ledb() int i; for(i=0;i2;i+) P1=0xf0; delay20ms(50); P1=0x0f; delay20ms(50); P1=0xff;/main() ledb(); P3=0x0f; sett0(); INTI_LCD(); while(1) sigh1=0;sigh2=0; if(yearl=0&yearh%4=0)sigh1=1; if(yearl!=0&yearl%4=0)si

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1