电子秒表显示器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二电子秒表显示器
【实验目的】
掌握定时/计数器的工作原理,熟悉定时/计数器中断法编程与调试内容。【实验原理】
按照教材图A.65,绘制实验二电路原理图;
在编程软件配合下,要求实现如下功能:数码管的初始显示值为“00”;当1s产生时,秒计数器加1;秒计数器到60时清0,并从“00”重新开始,如此周而复始进行。
软件编程原理为:采用T0定时方式1中断法编程,其中1s定时采用20次50ms定时中断的方案实现,编程流程图如A.66所示
【实验内容】
(1)理解定时器的工作原理,完成定时中断程序的编写与调试;
(2)练习μVision3与ISIS的联机仿真方法。
【实验步骤】
(1)提前阅读与实验2相关的阅读材料;
(2)参考图A.65和A.6,在ISIS中完成电路原理图的绘制;
(3)参考图A.66在μVision3中编写和编译C51程序,生成可执行文件;
(4)在μVision3中启动ISIS的仿真运行,并联机调试。
【实验程序】
#include
unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char i=0,j=0;
void timer()interrupt 1{
i++;
if(i==20){
i=0;
j++;
}
if(j==60) j=0;
P0=led[j/10];
P2=led[j%10];
TH0=0x3c;
TL0=0xb0;
}
void main(void){
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
P0=led[j/10];
P2=led[j%10];
ET0=1;
EA=1;
TR0=1;
while(1);
}
【实验原理图】
【仿真运行截图】
【实验小结】
通过本次的实验,我更加深入的了解到单片机定时/计数功能实现的机理,通过与单片机中断功能的结合,可以完成更多的预期功能。但是进过讨论我也发现,程序还是存在很大的缺陷,想要实现更加准确实现计时功能还需综合利用各种知识完善程序。