单片机电子秒表显示器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)仿真运行结果截图
五.实验总结
做好一件事的前提是对自己做的事情有充分的了解和认识,做好完全的准备才能够有保证将这件事情做好,学习也是如此,想要做好一个程序,就要将他的工作过程以及条件搞清楚才能将程序编好编清楚。