实验五——电子秒表显示器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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程序(含程序流程图与源程序) 主
等
中断
启动
数码显
设置
置T0中断
秒秒
将秒
开定定时器T0T0中断服计到计Y
N N
源程序, #include
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有了更多的了解(同时了解到计时系统在实际中的更好应用。经过编程操作起来更加熟练(能很快的完成绘图(编程时也更得心应手(能熟练的运用软件找出自己所编程序中的语法问题及其他问题(并予以改正。对于
程序流程图也有了更深刻的认识。相信在今后的学习与试验中能取得更大的进步。