工程设计报告 电子钟_第1页
工程设计报告 电子钟_第2页
工程设计报告 电子钟_第3页
工程设计报告 电子钟_第4页
工程设计报告 电子钟_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、工程设计报告电子钟班级: 学号: 姓名: 基于单片机的电子钟设计简介:电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而电子钟得到广泛应用。随着人们生活环境的不断改善和美化,在许多场合可以看到数字电子钟。功能:本作品是基于2051的电子时钟,有时分秒,年月日,跑表等功能,手动校时的功能。一、原理说明:1、显示原理:显示部分主要器件为6位共阳红色数码管,位选驱动采用PNP型三极管驱动,列选采用74HC164串入并出驱动,单片机采用方式0串口通信,各端口配有限流电阻,驱动方式为扫描。2、键盘原理:按键S1单片机复位键、S2模

2、式切换。S3校时3、单片机系统:采用AT89C2051为核心器件,并配合所有的必须电路,具有上电复位的功能,手动复位功能。AT89C2051二、使用说明:1、时钟功能:上电后即显示HELLO。两秒后显示初始时间2、查看年月日:在显示时钟状态下按下S2即显示年月日,两秒后自动回到显示时钟状态下3、秒表功能:在显示时钟状态下连续按两次S2键 即进入秒表状态,此时按S3即可启动,再次按S3即可暂停,按下S2清零,若在清零状态下再次按下S2即推出秒表状态进入时钟状态4、校时功能:短按一次S3,即当前年月日为闪烁状态,按动S2则相应位位加1,按动S3则月位闪烁,依次类推。当秒闪烁时,按下S2为秒清零电路

3、图:成品图:程序:#include#include#define uchar unsigned char#define uint unsigned int#define y 100 /灭的时间#define z 200 /z-y 亮的时间void DISP(uchar i,j,k);void DISP1(uchar i,j,k);uchar year=0;uchar month=12;uchar day=31;uchar hour=23;uchar min=59;uchar sec=50;uchar ms=0;uchar bsec=0;uchar bmin=0;uchar m,n=0,temp

4、;sbit dip1=P15;/数码管1sbit dip2=P14;/数码管2sbit dip3=P13;/数码管3sbit dip4=P12;/数码管4sbit dip5=P11;/数码管5sbit dip6=P10;/数码管6sbit key1=P32;/调整按键sbit key2=P37;/加1按键uchar time=20;uchar code numtab10=0x03,0x3F,0x45,0x15,0x39,0x91,0x81,0x37,0x01,0x11;uchar code monthtab13=0,32,29,32,31,32,31,32,32,31,32,31,32;voi

5、d Delay_ms(uint i) /函数void Delay_ms(uint i);实现功能:进行毫秒延时unsigned int j;for(;i0;i-) for(j=0;j=60)sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;day+;if(day=monthtabmonth)day=1;month+;if(month=13)month=1;year+;if(year=100)year=0;void timer1(void) interrupt 3 /函数void timer1(void) interrupt 1 ;实现功能:定

6、时中断TH1 = 0x0D8; TL1 = 0x0F0;ms+;if(ms=100)ms=0;bsec+;if(bsec=60)bsec=0;bmin+;if(bmin=60)bmin=0;void jiaoshi (void) /函数void jiaoshi(void) ;实现功能: 校时uchar m;Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放m=0;while(1)m+;if(m=y&m=z)m=0;DISP(year,month,day);if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按

7、键释放year+;if(year=100)year=0;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; m=0;while(1)m+;if(m=y&m=z)m=0;DISP(year,month,day);if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放month+;if(month=13)month=1;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; m=0;while(1)m+;if(

8、m=y&m=z)m=0;DISP(year,month,day);if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放day+;if(day=monthtabmonth)day=1;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; m=0;while(1)m+;if(m=y&m=z)m=0;DISP(hour,min,sec); if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放hour+;if(hour=24

9、)hour=0;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; m=0;while(1)m+;if(m=y&m=z)m=0;DISP(hour,min,sec); if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放min+;if(min=60)min=0;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; m=0;while(1)m+;if(m=y&m=z)m=0;DISP(hour,min,s

10、ec);if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放sec=0;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);/等待按键释放break; /函数void DISP1() ;实现功能:刷新显示器/void DISP1(uchar i,j,k)P1=255;SBUF=numtabi/10;while(TI=0);TI=0;P1=j;/打开第相应数码管Delay_ms(1);P1=255;SBUF=numtabi%10;while(TI=0);TI=0;P1=k;/打开第相应数码管Dela

11、y_ms(1);P1=255;/函数void DISP() ;实现功能:刷新显示器/void DISP(uchar i,j,k)DISP1(i,0xDF,0XEF);/ 1101 1111 1110 1111DISP1(j,0xF7,0XFB);/ 1111 0111 1111 1011DISP1(k,0xFD,0XFE); /1111 1101 1111 1110/函数void main() ;实现功能:主函数/void main()init();/初始化系统temp=0;for(m=0;m200;m+) /显示问候语P1=255;SBUF=0x29;while(TI=0);TI=0;P1=

12、0xEF;/打开第相应数码管Delay_ms(1);P1=255;SBUF=0xC1;while(TI=0);TI=0;P1=0xF7;/打开第相应数码管Delay_ms(1);P1=255;SBUF=0xCB;while(TI=0);TI=0;P1=0xFB;/打开第相应数码管Delay_ms(1);P1=255;SBUF=0xCB;while(TI=0);TI=0;P1=0xFD;/打开第相应数码管Delay_ms(1);P1=255;SBUF=0x03;while(TI=0);TI=0;P1=0xFE;/打开第相应数码管Delay_ms(1);init();/初始化系统while(1)l

13、oop1:if(key1=0)jiaoshi();DISP(hour,min,sec);if(key2=0)Delay_ms(20);if(key2=1)goto loop1;else while(key2=0);/等待加1按键松开m=255;loop2:DISP(year,month,day);m=m-1;if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);/等待按键释放temp=0;while(1)DISP(bmin,bsec,ms);if(key2=0)Delay_ms(20);if(key2=0)while(key2=0);ms=0;bsec=0;bmin=0; goto loop1;if(key1=0)Delay_ms(20);if(key1=0)while(key1=0);TR1=1;while(1) DISP(bmin,bsec,ms);if(key2=0&ms=0&bmin=0&bsec=0)Delay_ms(20);if(key2=0)while(key2=0);TR1=0; goto

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论