电子秒表显示器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

【实验原理图】

【仿真运行截图】

【实验小结】

通过本次的实验,我更加深入的了解到单片机定时/计数功能实现的机理,通过与单片机中断功能的结合,可以完成更多的预期功能。但是进过讨论我也发现,程序还是存在很大的缺陷,想要实现更加准确实现计时功能还需综合利用各种知识完善程序。

相关文档
最新文档