实验五——电子秒表显示器

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

实验课程: 单片机原理及应用
实验名称: 实验五——电子秒表显示器
实验日期: 2013 年 4 月 12 日
一、实验目的
掌握定时/计数器的工作原理,熟悉定时/计数器中断法编程与调试容。

二、实验容
1、按图绘制实验五电路原理图:
2、采用12MHz晶振,50ms T0定时方式1+中断(20次中断为1s)法编程:
3、实现如下功能程序运行开始时先显示“00”,随后显示数值逐渐增大。

待计数到59后,自动从“00”开始。

4、观察仿真结果,完成实验报告。

三、实验要求
提交的实验报告中应包括电路原理图,T0定时方式1中断原理阐述,源程序(含编程分析与源程序),运行效果图,实验小结。

提交实验报告的电子主题及存盘
1、电路原理图
电路分析上图为实验原理图。

电路由80C51芯片,两个开关LED显示器,电阻,还包括时钟电路和复位电路组成。

上拉电阻接在P0口,因为P0口部没有上拉电阻,为使漏极开路有效,必须通过外接上拉电阻与电源连通。

数码管的初始显示值为00:当1s产生时,秒计数器加1: 秒计数到60时清零,并从“00”重新开始,如此周而复始的进行下去。

定时器T0每50ms产生一次中断,每产生20次中断时,秒计数器加1并将数值显示在数码管上,其中P0口显示十位,P1口显示个位,定时1s无限循环。

2、T0定时方式1中断原理阐述
当M1M0=01时(定时器的工作与方式1。

方式1为16位的定时/计数器,满计数值为2^16,
初值不能自动重装。

定时器Tx 工作于方式1的逻辑结构框图如下图,当Tx 工作于方式1时,由THx 作为高8位,TLx 作为低8位,构成一个16位的计数器。

若Tx 工作于定时方式1,计数初值位a,则其定时时间按下式计算:
定时时间: t=(2^16-a)*12/fosc (us)
最大计数值为65536。

3、C51程序(含程序流程图与源程序)
源程序, #include<reg51.h>
unsigned char count=0; //定义中断次数计数器,count
unsigned char second=0; //定义秒计数器,second
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d
,0x7d,0x07,0x7f,0x6f}; //定义显示字模数组并赋初值)table[ ]
timer0() interrupt 1 //T0中断函数声明
{
count++; //count 增1
if(count==20)
{ //若count =20, count 清零, second 增1
count=0;
second++;
}
if(second==60) second=0; //若second =60,second清零 P0=table[second/10]; //P0与P2口分别显示count值 P2=table[second%10];
TH0=0x3c; //T0重装载计数初值
TL0=0xb0;
}
main() //主函数声明
{
TMOD=0x01; //T0定时(50ms)方式1初始化
TH0=0x3c; //T0赋计数初值
TL0=0xb0;
P0=table[second/10]; //P0与P2口显示“00”值
P2=table[second%10];
ET0=1; //启动T0
EA=1; //开中断
TR0=1;
while(1); //原地循环
}
4、仿真运行效果
如上图所示(数码管的初始显示值为00)当1s产生时(秒计数器加1)秒计数到60时清零(并从“00”重新开始(如此周而复始的进行下去。

定时器T0每50ms产生一次中断(每产生20次中断时(秒计数器加1并将数值显示在数码管上(其中P0口显示十位(P1口显示个位(定时1s无限循环。

5、实验小结
通过实验对Protues有了更多的了解(同时了解到计时系统在实际中的更好应用。

经过编程操作起来更加熟练(能很快的完成绘图(编程时也更得心应手(能熟练的运用软件找出自己所编程序中的语法问题及其他问题(并予以改正。

对于程序流程图也有了更深刻的认识。

相信在今后的学习与试验中能取得更大的进步。

相关文档
最新文档