已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南机电高等专科学校C51程序设计大作业 设计题目: 数字可调时钟 班 级: 通技 091 学 号: 090413128 姓 名: 成 绩: 2011年11月1 设计任务制作数字可调时钟,要求可以分开调节分、时、年、月、日,能够显示温度。2电路原理图以下为protel99se画的的原理图 3 系统流程图数字可调时钟分以下四个部分构成:显示部分:此次显示采用了动态扫描显示,采用74ls573进行数据锁存。温度采集:温度采集采用了18b20采集的,18b20转化温度较快,精度高。时钟:采用普通的ds1302芯片。数据运算:单片机用普通的8051单片机(12M晶振)。数码管显示模块单片机键 盘温度采集模块时钟模块4 源程序/*数字可调时钟*/*by:lhc*/#include#define DataPort P0 void delayms(unsigned char i);sbit DQ=P13; sbit sclk=P14; sbit date=P15; sbit rst=P16;sbit LATCH1=P22;/定义锁存使能端口 段锁存sbit LATCH2=P23;/ 位锁存unsigned char time8=20,11,11,27,11,30,00,7; /年 月日 时 分 秒 周unsigned char time18,readtemflag;unsigned char code DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 显示段码值09unsigned char code WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分别对应相应的数码管点亮,即位码unsigned char code pingnian13= 0,31,28,31,30,31,30,31,31,30,31,30,31;/平年的月份天数unsigned char code yunnian13= 0,31,29,31,30,31,30,31,31,30,31,30,31;/闰年的月份天数unsigned char TempData8; /存储显示值的全局变量void delay(unsigned char i)while(-i);/us延时函数void delayms(unsigned char i)/ms延时函数while(i-) delay(245); delay(245); bit rest(void)/18b20重启函数 bit k=0;DQ=1;delay(5);DQ=0;delay(150);delay(200);DQ=1;delay(40);k=DQ;delay(25);return(k); unsigned char read()/18b20读数据函数 unsigned char i=0;unsigned char dat=0; for(i=0;i=1;DQ=1;if(DQ) dat|=0x80;delay(25); return (dat); void write(unsigned char dat)/18b20写数据函数 unsigned char i=0; for(i=0;i=1; delay(25); unsigned int ReadTemperature(void) /读取温度函数 unsigned char a=0;unsigned int kk=0,b=0; LOOP:if(rest()=0) write(0xCC); /跳过ROMwrite(0x44); /初始化温度转换delayms(20);rest();TH1=0XFa;TL1=0Xff;write(0xCC); write(0xBE); /读取温度a=read(); b=read(); b=8;kk=a+b;return(kk);else goto LOOP;void restds1302(void)sclk=0;rst=0;/ds1302重启void writebyte(unsigned char addr,unsigned char byte)/写入ds1302一个字节数据unsigned char i;rst=1;addr=addr&0xfe;for(i=0;i=1;for(i=0;i=1;rst=0; unsigned char readbyte(unsigned char addr)/读取一个字节的数据 unsigned char i,temp; rst=1;addr=addr|0x01;for(i=0;i1;for(i=0;i1;if(date) temp|=0x80;else temp&=0x7f;sclk=1;sclk=0;rst=0;return temp;void writetime(void) /调时函数 unsigned char i,tmp;for(i=0;i8;i+) /BCD处理tmp=timei/10;time1i=timei%10;time1i=time1i+tmp*16; writebyte(0x8e,0x00);/关闭写保护 writebyte(0x80,0x80);/暂停 writebyte(0x8c,time11);/ 年写入 writebyte(0x88,time12);/月写入 writebyte(0x86,time13);/ 日写入 /些时间 writebyte(0x84,time14);/ 时写入 writebyte(0x82,time15);/分写入 writebyte(0x80,time16);/ 秒写入 writebyte(0x8a,time17);/ 周写入 /writebyte(0x80,0x00);/ 秒写入 writebyte(0x8e,0x80);/打开写保护void readtime(void)/读取时间函数unsigned char i,tmp;time11=readbyte(0x8d);/年读time12=readbyte(0x89);/月读time13=readbyte(0x87);/ 日读/ 读时间time14=readbyte(0x85);/ 时time15=readbyte(0x83);/ 分time16=readbyte(0x81);/ 秒time17=readbyte(0x8b);/ 周for(i=0;i8;i+) /BCD处理 tmp=time1i/16;timei=time1i%16;timei=timei+tmp*10; void Display(unsigned char FirstBit,unsigned char Num)/动态显示函数static unsigned char i=0; DataPort=0; /清空数据,防止有交替重影 LATCH1=1; /段锁存LATCH1=0; DataPort=WeiMai+FirstBit; /取位码 LATCH2=1; /位锁存LATCH2=0; DataPort=TempDatai; /取显示数据,段码 LATCH1=1; /段锁存LATCH1=0; i+; if(i=Num) i=0;unsigned char key(void) /键盘读取函数unsigned char i;if(P3!=0xff) delay(10);if(P3!=0xff) i=P3; while(P3!=0xff) ; switch(i) case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; default:return 0;break; return 0;void T1_rest()/定时器1的初始化函数TMOD|=0X10;TH1=0XF8;TL1=0X30;EA=1 ;ET1= 1;TR1=1;void isr0(void) interrupt 3 static unsigned char qq;TR1=0; TH1=0XF8;TL1=0X30;Display(0,8); /送去显示qq+; if(qq=200) qq=0,readtemflag=1; TR1=1;void main() unsigned char bian=0,k=0; unsigned char num=6; unsigned int h,l,tempp,year; bit nianflag;restds1302();writetime(); T1_rest(); while(1) readtime(); year=time1*200; if(year%4=0&year%100!=0|year%400=0) nianflag=1; else nianflag=0; k=key();if(k!=0) if(k=1) bian+;num=6; k=0; /调节显示的内容 if(bian=3) bian=0; if(k=2) num-; if(num3) bian=0; /选着调节对象分,时,年月日 if(num=0) num=6; k=0; if(k=4&num!=6) /调节对象(分时年月日)加一 timenum+; if(num=5&timenum=60) timenum=0; if(num=4&timenum=24) timenum=0; if(num=3&nianflag) if(time3yunniantime2)time3=1;else if(num=3) if(time3pingniantime2)time3=1; if(num=2&timenum=13) timenum=1; if(num=1&timenum=99) timenum=0;k=0; if(k=3&num!=6) /调节对象(分时年月日)减一 timenum-; if(timenum=-1&num=5) timenum=59; if(timenum=-1&num=4) timenum=23; if(num=3&nianflag) if(time3=0)time3=yunniantime2;else if(num=3)if(time3=0)time3=pingniantime2; if(timenum=0&num=2) timenum=12; if(timenum=-1&num=1) timenum=99;k=0; if(nianflag) if(time3yunniantime2)time3=1;elseif(time3pingniantime2)time3=1; writetime(); if(bian=0)/对时,分,秒,显示数据分离处理 TempData0=DuanMatime4/10; TempData1=DuanMatime4%10; TempData2=0x40; /加入- TempData3=DuanMatime5/10;/分 TempData4=DuanMatime5%10; TempData5=0x40; TempData6=DuanMatime6/10;/秒 TempData7=DuanMatime6%10; if(num!=6) delayms(30); if(num=4) TempData0=0;TempData1=0;delayms(30); if(num=5) TempData3=0;TempData4=0;delayms(30); else if(bian=1)/对年月日的显示数据分离处理 TempData0=DuanMatime1/10; TempData1=DuanMatime1%10;TempData2=0x40;/加入-TempData3=DuanMatime2/10;/月TempData4=DuanMatime2%10;TempData5=0x40;TempData6=DuanMatime3/10;/日TempData7=DuanMatime3%10;if(num!=6) delayms(30); if(num=1) TempData0=0;TempData1=0;delayms(30); if(num=2) TempData3=0;TempData4=0;delayms(30); if(num=3) TempData6=0;TempData7=0;delayms(30); else if(bian=2)/对温度和星期的显示数据分离处理 if( readtemflag=1) tempp=ReadTemperature(); readtemflag=0; if(tempp&0x8000) TempData0=0x40;/负号标志 tempp=tempp; tempp +=1; else TempData0=0;h=tempp4; l=tempp&0x0F; l=l*6/10;/小数近 TempData1=DuanMa(h%100)/10; /十位温度 TempData2=DuanMa(h%100)%10|0x80; /个位温度,带小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人事面试常见问题及答题技巧
- 计算机专业实习总结报告范本
- 针对不同经验层级讲师的面试问题设计
- 包装结构设计与质量控制规范
- 制造业企业绩效考核体系设计
- 水资源保护与合理利用方案
- 调峰燃机电站项目环境影响报告书
- 2026年中国鼻腔治疗仪行业市场前景预测及投资价值评估分析报告
- 2026年中国单桅帆船行业市场前景预测及投资价值评估分析报告
- 2026年中国大型润滑油罐行业市场前景预测及投资价值评估分析报告
- 2025年农电工考试题库题及答案
- 2025贵州毕节市中医医院招聘暨人才引进编外聘用专业技术人员78人考试笔试备考题库及答案解析
- 2025广东广州生态环境监测中心站招聘编外人员4人笔试考试备考试题及答案解析
- 高考成语专项训练
- 2025上海市生物医药技术研究院招聘专技人员2人考试参考题库及答案解析
- 滴灌课件教学课件
- 2025放射工作人员培训考试试题(附答案)
- 冬季水上交通安全培训课件
- 达芬奇调色培训课件
- 2024年护士节护理知识竞赛试题及答案
- 2025年河北保定市12345政务服务便民热线话务服务人员10名考试模拟试题及答案解析
评论
0/150
提交评论