单片机课程设计之秒表_单片机课程设计秒表
单片机课程设计之秒表由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“单片机课程设计秒表”。
单片机课程设计报告
题目:基于stc89c52rc的秒表设计
学生:唐伟轩 11071339
指导老师:
日期:2013年12月8日
基于stc89c52rc的秒表设计
此设计中硬件部分由王华杲完成,软件由唐伟轩完成一、设计要求
使用STC89C52RC单片机设计一个2位LED数码管显示的秒表,显示时间为00—99秒,每秒自动加1,设计开始、停止、复位键。
二、设计思路
为了功能拓展,本设计硬件部分采用了四位一体共阳数码管作为显示单元,采用三极管进行阳极位选驱动,阴极直接接限流电阻接单片机P0口;采用“4+1”按键,分别为“系统复位”、“计数停止”、“复位秒表”、“翻页”、“预留”功能,“系统复位”为系统总复位按键;“计数停止”和“复位秒表”按键接到单片机中断口(即INT0引脚与INT1引脚)。单片机的时钟晶振为12M。
软件部分设计采用“动态刷新”和“定时器精确计时”的方式实现秒表功能,时间最小刻度为0.01s,同时采用外部按键中断的方式实现“计数停止”、“复位秒表”功能,采用按键扫描实现“翻页”功能。
本设计秒表可在一次计时钟保存最多十次计时值。
三、硬件设计与分析
1.单片机最小系统
51单片机最小系统由复位电路和时钟电路组成。
51单片机的Reset引脚为单片机的复位引脚,在该引脚上保持两个机器周期的高电平,单片机复位,PC值复位至0000H,并在Reset引脚恢复至低电平时重新开始执行ROM中的程序,由此可设计典型单片机上电复位与手动复位一体的复位电路,该自动复位电路能在上电后在单片机Reset引脚上保持ms级的高电平时间,满足设计要求,电路如图3.1所示。
51单片机的时钟系统可选择使用外部时钟或内部RC时钟(不准确),xtal1与xtal2引脚为单片机外部时钟引脚,51单片机的机器周期为12个时钟周期,采用12M晶体振荡器时,机器周期为1us,外部晶振电路如图3.2所示。
图3.1图3.22.数码管显示电路设计
本设计中采用4位一体共阳数码管,4个共阳极使用三极管s9012进行控电平的电流放大,8个共阴极接限流电阻接到单片机P0口;51单片机P0属于漏极开路结构,在老式51单片机中作为外部数据总线使用,可在较高输入输出频率下使用,在本设计中,使用了P0的该特点,作为数码管的段码数据控制。
3.中断按键与按键扫描
51单片机支持两路外部中断,分别为INT0引脚和INT1引脚,恰当使用外部中断功能可极大地提高外部触发信号的响应速度。本设计中,共使用了4个按键,其中两个接在两个外部中断引脚上以提高其响应速度实现高级功能,另外两个按键接普通IO实现一般功能。
4.电路图
图3.3四、软件设计与分析
1.刷新显示程序
数码管显示部分由于其公共端共接结构,需采用刷新显示的方式驱动,驱动部分C语言程序如下:
P1=0xFE;//四位数码管扫描
P0=codetab[one];
delay(3);
P1=0xFD;
P0=codetab[two];
delay(3);
P1=0xFB;
P0=0X7F;//显示小数点
delay(3);
P0=codetab[three];
delay(3);
P1=0xF7;
P0=codetab[four];
delay(3);
2.定时器的应用
51单片机中含有两个定时器,分别为T0和T1,共有13位计数定时、16位计数定时、8位自动重装计数定时三种工作模式,每个定时器可产生独立的中断信号。51单片机定时器采用“向上计数”的方式,即加满溢出后产生中断,定时时钟源为系统时钟,每1个机器周期加1,本设计中采用12M外部时钟,对应定时器时钟为1us,要实现0.01s精度显示,即定时最大为10ms,这里采用定时20us,C语言程序设计如下:
void time0()
{//定时器初始化,定时20us
TMOD=0X01;
TH0 =0XF8;
TL0 =0X30;
//TR0 =1;
EA=1;
ET0 =1;
}
3.程序流程图
图4.1五、数据测试
1.秒表计时误差:小于0.1% 2.各按键触发功能是否正常:正常 3.最大单次计时记录次数:10次
六、参考文献
【1】刘焕成.《工程背景下的单片机原理及系统设计(第2版)》.清华大学出版社.2011年10月