单片机电子秒表显示器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验课程:单片机原理及应用

实验项目:电子秒表显示器

实验地点:计算机中心三楼一号机房

班级:

姓名:

学号:

指导教师:

实验日期: 2019-12-18

一、实验目的

掌握中断和定时/计数器工作原理,熟悉C51编程与调试方法。

二、实验原理

实验电路原理图如图所示。

在编程软件配合下,要求实现如下功能:数码管的初始显示值为

“00”;当1s产生时,秒计数器加1;秒计数到60时清0,并从“00”重新开始,如此周而复始进行。

软件编程原理为:采用T0定时方式1中断法编程,其中1s定时采用20次50ms定时中断的方案实现。

三.实验内容

(1)理解定时器的工作原理,完成定时中断程序的编写与调试。

(2)练习μVision3与ISIS的联机仿真方法。

四.实验结果

(1)C51源程序

/*电子秒表显示器程序*/

#include

unsigned char count=0; //定义中断次数计数器

unsigned char second=0;//定义秒计数

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;//0-9数码管段码

timer0() interrupt 1//T0中断函数声明

/*以下函数实现秒计数

实现方式为: count 自增,若count=20则count清零,s增1*/ {

count++; //count增1

if(count==20)//若count=20

{

count=0;//count清零

second++;//s增1

}

if(second==60)

second=0;//若s=60,s清零

P0=table[second/10];//P0对s取整

P2=table[second%10];//P0对s取余

TH0=0x3c;//T0重新载计数初值

TL0=0xb0;

}

main()

{

TMOD=0x01;//T0定时(50ms)方式1初始化

TH0=0x3c;//T0赋计数初值

TL0=0xb0;

P0=table[second/10];//P0与P2显示初始值0 P2=table[second%10];

ET0=1;//启动T0

EA=1;//开中断

TR0=1;//启动定时器0

while(1);//无限循环

}

(2)仿真运行结果截图

五.实验总结

做好一件事的前提是对自己做的事情有充分的了解和认识,做好完全的准备才能够有保证将这件事情做好,学习也是如此,想要做好一个程序,就要将他的工作过程以及条件搞清楚才能将程序编好编清楚。

相关文档
最新文档