时、分、秒计时器实验报告_第1页
时、分、秒计时器实验报告_第2页
时、分、秒计时器实验报告_第3页
时、分、秒计时器实验报告_第4页
时、分、秒计时器实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE1实验六时、分、秒计时器的设计班级物联0901姓名李王张学号200908888888指导老师袁文澹一、实验目的掌握数码管动态显示的基本方法;掌握键盘按键控制的实现方法; 根据已知电路和设计要求在实验板上实现时、分、秒计时器。二、实验内容 1、在STC89C52实验平台上实现时、分、秒时钟,4位数码管上显示分、秒或者时、分。 2、应用键盘控制时间的显示。键盘按键控制“切换时分、分秒显示”、“启动停止”、“加秒显示内容”、“加分显示内容”、“加时显示内容”。3、根据已知电路和设计要求在PROTEUS平台仿真实现时钟系统。三、实验原理三、程序代码汇集:/*时钟及显示程序,适用于寻迹小车实验板*/#include<reg51.h>//头文件#defineucharunsignedchar#defineuintunsignedintucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳七段编码uchartemp=0;//定义定时器溢出计数变量,每隔50ms产生1次溢出,temp加1ucharmiao=00;//定义时钟变量,当temp计数加20(20x50ms=1s)时,miao加1 ucharfen=00;//定义时钟变量,当miao计数加60(60x20x50ms=60s)时,fen加1 ucharshi=00;//定义时钟变量,当fen计数加60时,shi加1 sbitP0_6=P0^6 ;//定义P0端口/*--定时计数器T0及其中断初始化函数--*/ voidtimer0init(void) {TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值EA=1;//开总中断ET0=1;//开定时器0中断TR0=1;//启动定时器0}/*延时函数*/voiddelay(uintn){uinti,j;for(i=n;i>0;i--)for(j=124;j>0;j--);}/*定时计数器中断程序,每当定时计数器溢出时触发中断,执行该程序*/voidtime0()interrupt1{ TH0=(65536-50000)/256;//重装初值 TL0=(65536-50000)%256;if(temp==20){temp=0;if(miao==59) {miao=0; if(fen==59) {fen=0; if(shi==23)shi=0; elseshi++;} elsefen++; }elsemiao++;}elsetemp++;}/*显示函数*/voiddisplay(void){/*P1=0xfe;*/P1=0x7f;//输出秒的个位的位码P0=table[miao%10];//输出秒的个位的段码delay(5);//亮5ms/*P1=0xfd;*/P1=0xbf;//输出秒的十位的位码P0=table[miao/10];//输出秒的十位的段码delay(5);//亮5ms /*P1=0xfb;*/P1=0xdf; P0=0xbf; delay(5); /*P1=0xf7;*/P1=0xef;//输出分的个位的位码 P0=table[fen%10];//输出分的个位的段码 delay(5); /*P1=0xef;*/P1=0xf7;//输出分的十位的位码 P0=table[fen/10];//输出分的十位的段码 delay(5); /*P1=0xdf;*/P1=0xfb; P0=0xbf; delay(5); /*P1=0xbf;*/P1=0xfd;//输出时的个位的位码 P0=table[shi%10];//输出时的个位的段码 delay(5); /*P1=0x7f;*/P1=0xfe;//输出时的十位的位码 P0=table[shi/10];//输出时的十位的段码 delay(5);}/*主函数*/voidmain(void){timer0init();//调用初始化函数对定时计数器进行初始化while(1){display();//调用显示函数显示时间}四、仿真调试:在完成程序仿真调试过程中,出现了很多小问题,这些问题虽然简单,但真正解决起来还是比较棘手的。例如,数码管显示时、分、秒的位置错乱,或者是某一位数码管不亮,这样的问题对于高手来说就是小菜一碟,一看就知道是哪出了问题,可我却找了半天才查到,原来是显示函数模块中送入位码时位码的编码出错,为了解决这个下问题,我将每一个数码管的位码都重新编写一次。这个问题解决后,再次仿真时钟并没有按要求显示出来,而是出现下图一样的错误显示,通过仔细观察发现,只是小时与分、分与秒之间的那两位数码管显示错误,于是直接检查那两个标志位数码管的段码,发现原来是输送段码时只是将g段送了个0,以致显示时标志位总是跟随前一位数码管显示。五、总结:我们从不懂到懂的慢慢转变的一个过程,记得在刚开始做这个实验报告的时候,我们遇到了很多的问题,首先的时候我们感觉连程序都读不懂,更不用去说写这些程序并分析它的逻辑了。但是困难总是伴随着我们的努力慢慢的解决。我们开始学会参照老师的原始的99秒计数的程序,根据其逆向的思维进行我们分秒时的程序编写。当我们慢慢的了解每个语句的意思所在时,我们再根据其逻辑思想,慢慢的我们了解到了这个程序我们应该怎么去写!怎么去分析它了。通过这次也让我对数字钟的设计与制作,了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际

温馨提示

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

评论

0/150

提交评论