基于AT89C52单片机的多动能秒表设计文档格式.docx

上传人:b****5 文档编号:21341947 上传时间:2023-01-29 格式:DOCX 页数:20 大小:324.41KB
下载 相关 举报
基于AT89C52单片机的多动能秒表设计文档格式.docx_第1页
第1页 / 共20页
基于AT89C52单片机的多动能秒表设计文档格式.docx_第2页
第2页 / 共20页
基于AT89C52单片机的多动能秒表设计文档格式.docx_第3页
第3页 / 共20页
基于AT89C52单片机的多动能秒表设计文档格式.docx_第4页
第4页 / 共20页
基于AT89C52单片机的多动能秒表设计文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

基于AT89C52单片机的多动能秒表设计文档格式.docx

《基于AT89C52单片机的多动能秒表设计文档格式.docx》由会员分享,可在线阅读,更多相关《基于AT89C52单片机的多动能秒表设计文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

基于AT89C52单片机的多动能秒表设计文档格式.docx

根据设计的方案,选取了单片机AT89C52,用于显示秒表数值的LED1~LED4,以及用于显示电路工作状态的LED5-LED6,驱动数码管的三极管SS9012以及必要的按键开关及其他元件。

3.1.1AT89C52单片机的介绍

集成在一个芯片上的微型计算机即为单片机,也就是把组成微型计算机的各种功能部件,像CPU、只读存储器ROM(Readonlymemory)、随机存储器RAM(Randomaccessmemory)、基本输入/输出接口电路、定时器/计数器等部件集成在一块芯片上,构成一个较为完整的微型计算机,从而实现一些微型计算机所具有的功能[4]。

在微型单片机选择上,我们应该考虑存储器容量,时钟频率,I/O口线等基本参数。

对于本设计,由于电子秒表系统在数据的处理和存储方面要求不高,所以选取片内带RAM和ROM的单片机即可,在本设计中选取的是ATMEL公司的AT89C52单片机。

AT89C52是一个低电压,高性能CMOS8位单片机[5],片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用[6]。

AT89C52具有很多优异的功能,具体的功能及特点如下:

1.兼容MCS51指令系统;

2.8kB可反复擦写(大于1000次)FlashROM;

3.32个双向I/O口;

4.256byte内部RAM;

5.3个16位可编程定时/计数器中断[7];

6.时钟频率0-24MHz;

7.2个外部中断源,共8个中断源;

8.2个读写中断口线,3级加密位;

9.低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;

10.有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求[8]。

另外,在AT89C52片内存储器中,80H-FFH共128个单元为特殊功能寄存器(SFR)。

并非所有的地址都被定义,从80H—FFH共128个字节只有一部分被定义,还有相当一部分没有定义。

对没有定义的单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。

不应将数据写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单元数值总是“0”。

AT89C52除了有单片机AT89C51所有的定时/计数器0和定时/计数器1外,还增加了一个定时/计数器2。

定时/计数器2的控制和状态位位于T2CONT2MOD,寄存器对(RCAO2H、RCAP2L)是定时器2在16位捕获方式或16位自动重装载方式下的捕获或自动重装载寄存器[9]。

AT89C52单片机的内部结构与MCS-51系列单片机的构成基本相同。

CPU是由运算器和控制器所构成的。

运算器主要用来对操作数进行算术、逻辑运算和位操作的。

控制器是单片机的指挥控制部件,主要任务的识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。

AT89C52单片机的指令系统和引脚功能与MCS-51的完全兼容[10]。

AT89C52的引脚排列如图3-1所示。

图3-1AT89C52引脚排列图

3.1.2LED显示器概述

如3-2图所示为七段LED数码管的原理图,通过该图可以很容易的看出共阳极和共阴极的七段LED管的工作原理的不同点。

对于共阴极的数码管,所有发光二极管的阴极共连后接地,而阳极引出脚用于控制LED是否发亮。

若阳极引出脚接地,则LED被熄灭;

若阳极引脚接高电平,则LED被点亮。

图3-2LED原理图

共阳极的LED正好相反,所有发光二极管的阳极共连后接高电平,而阳极引出脚用于控制LED是否点亮。

若阴极引脚接高电平,则LED被熄灭;

反之,则LED被点亮。

单片机对LED管的显示可以分为静态和动态两种[11]。

静态显示的特点是各LED管能同时稳定地显示各自字符;

动态显示是指各LED轮流一遍一遍显示各自字符,但由于显示的切换较快,在人的视觉看来是各LED管同时显示不同字符。

下面介绍LED的接口方法与电路:

(1)LED数码显示的接口方法

单片机与LED数码显示器有以硬件为主和以软件为主的两种接口方法。

以硬件为主接口方法,这种接口方法的电路如3-3图所示。

图3-3LED接口方法电路图

(2)LED数码显示器的接口电路

单片机实际使用的LED数码显示器位数较多。

为降低成本,大部分以软件为主的接口方法对于多位LED数码管显示器,通常采用动态扫描显示方法,即逐个循环点亮各位显示器。

这样虽然在任一时期只有一位显示器被点亮,但是由于人眼有视觉残留效应,看起来与全部显示持续点亮的效果基本一样(在亮度上要有差别)。

此外,单片机一般对LED的驱动效果有限,LED一般还需要外围的驱动才能更好的发挥其显示效果。

LED显示是单片机控制产品中常见的应用。

使用LED模块,这种模块中带有LED显示管和LED驱动电路,用起来较方便。

一般用户直接采用单片机+LED驱动器+LED显示管的方式,一种经常使用的LED驱动器8550,它作为共阳数码管的驱动器,而共阴数码管的驱动器则是A1015,它们都是三极管[12]。

3.2系统电路设计

3.2.1复位电路

复位电路在单片机系统中是必不可少的。

所谓的复位就是讲单片机重新启动,这是单片机内部的都有寄存器都回到初始状态[13]。

对于AT89C52单片机来说,它是高电平复位,也就是说只要将单片机的RESET引脚接高电平并保持一定的时间就可以实现单片机的复位(而对于一些低电平复位的单片机来说就刚好相反,要使其RESET引脚置为低电平并保持一定时间以实现单片机的复位)。

本设计电路中对应的复位电路如图3-4所示。

图3-4复位电路图

从上面的电路可以看出实现的是上电复位和按键复位两个复位功能。

上电的一瞬间,单片机的RESET引脚接到高电平,同时电容C1开始充电,经过一定的时间后电容充电饱和,10K的下拉电阻把RESET引脚拉回到低电平状态,实现了单片机的复位。

同样道理,在单片机工作的时候按下复位按钮,单片机的RESET引脚接到高电平,电容C1马上放电完毕;

松开该按钮后电容C1开始充电,经过一定的时间后电容充电饱和,10K的下拉电阻把RESET引脚拉回到低电平状态,实现了单片机的复位。

3.2.2晶振电路

图3-5晶振电路图

单片机最小系统晶振也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快[14]。

单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好。

单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;

假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:

电路将无法通信。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的晶振精度会更高。

有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器[15](VCO)。

在此系统中,主板时钟芯片即分频器的原始工作振荡频率,由石英晶体多谐振荡器的谐振频率来产生,晶振其实是一个频率产生器,他主要把传进去的电压转化为频率信号。

提供给分频率一个基准的振荡频率,它是一个多谐振荡器的正回馈环电路,也就是说它把输入作为输出,把输出作为输入的回馈频率,象这样一个永无休止的循环自激过程,从而为秒表系统提供一个稳定的时钟频率。

3.2.3数码管显示部分

图3-6数码管连接电路图

如3-6图所示,LED1-LED4数码管与AT89C52的P1.0—P1.7连接,当系统工作时,单片机里面的程序按指定运行,单片机会向引脚P1.0—P1.7传送数码管的段位码,LED上的各个段位对应的发光二极管则根据传输过来的编码点亮或断电熄灭,从而显示的便是0-9各个数字。

各个数码管的显示并不是同时点亮或熄灭的,而是通过对不同数码管在不同时间段的控制来实现,而由于系统执行的快速性,系统执行时会给人们一定的视觉暂留。

所以,同一时刻,人眼看到的便是几个数码管共同显示。

下面的三极管则作为数码管的驱动,从单片机内部传输来的指令信号来决定LED1-LED4各个数码管相应的显示或明亮变化。

基于此,数码管实现了秒表数据的显示。

3.2.4按键部分电路

电路通过对K1、K2、K3等按键的闭合,来实现电路的切换和智能控制。

具体的按键部分电路如3-7所示。

图3-7按键部分电路图

各个按键的功能如下:

按键K1:

在正常情况下,用于控制单一计时模式下秒表的启动、停止。

在倒计时初值设定的情况下为倒计时初值的增加按键,按一下K1,倒计时初值增加1;

按住K1不放,倒计时初值连续增加;

快速连按两下K1然后不放,则倒计时初值快速增加,增加的速度是连续增加的10倍。

按键K2:

在正常情况下,用于倒计时初值减少功能的启动、停止。

在倒计时初值设定的情况下为倒计时初值的减少按键,按一下K2,倒计时初值减少1;

按住K2不放,倒计时初值连续减少;

快速连按两下K2然后不放,则倒计时初值快速减少,减少的速度是连续减少的10倍。

按键K3:

用于秒表的功能的选择,在默认的情况下,为秒表的计时准备模式;

按下K3后秒表进入倒计时的状态,这是通过按键K1和K2可以进行倒计时初值的调整,再按下K3则进入倒计时。

3.2.5I/O口线连接

P1.0~P1.7:

与数码管的各个位相连,用于传送数码管的段位码。

P3.0~P3.3:

与数码管LED1~LED4相连,通过单片机的P3.0~P3.3可以控制LED的显示。

P2.1:

和按钮K1相连,用于决定单一计时模式下的秒表启动、停止和倒计时初值的增加。

P2.0:

和按钮K2相连,用于决定连续计8个的计时模式下秒表启动、停止和倒计时初值的减少。

P2.2:

和按钮K3相连,用于单片机工作模式的选择。

P2.6:

和LED6相连,用于显示单片机的工作状态。

P2.7:

和LED5相连,用于显示单片机的工作状态。

3.2.6系统总体电路

单片机电子秒表的原理图如图3-8所示。

图3-8电子秒表原理图

电路组建完成之后,向单片机内传输要执行的功能程序代码,系统上电之后,晶振电路部分为系统工作提供必须的时钟频率,系统在代码的执行下对LED数码管传输相应的段位码,控制LED的显示。

LED5—LED6则作为状态指示灯根据单片机的状态显示计时和倒计时两种工作状态来做出相应的明亮变化:

在准备计时时LED5亮,LED6熄灭;

在准备倒计时的时候LED5熄灭,LED6亮。

在系统按键的相应作用下,K1实现倒计时初值的增加,K2实现倒计时初值的减少,K3则实现计时与倒计时两种状态的切换。

而复位电路则通过按键的作用,实现系统的默认设置,对电路起到复位的作用。

通过对各个LED数码管的显示与中断控制,各部分电路相互的作用运行,达到显示秒表运行的目的。

4系统软件设计

系统硬件设计好之后,接下来就要进行软件设计。

电子秒表的软件设计主要有三个方面:

第一是利用定时器来完成秒表的定时周期;

第二是利用定时中断来实现键盘的扫描,确定单片机的工作状态;

第三是利用单片机控制LED的输出显示。

4.1程序功能及主要变量的说明

4.1.1程序功能

电子秒表程序主要完成如下功能:

(1)两种计时模式的启动、停止、复位功能的秒表。

(2)可设定初值的倒计时定时器。

4.1.2主要变量说明

程序中用到的关键变量说明如表4-1和表4-2所示。

表4-1主要变量定义

变量

说明

m

整型变量,用于存储要显示的数

ms

字符型变量,用于10ms的累加

LED1~LED4

整型变量,用于存储要显示的各个位的数字

start

位变量,用于控制秒表单一计时模式的计时开始

stop

位变量,用于控制秒表单一计时模式的计时停止

eight_start

位变量,用于控制秒表连续计时8次模式的计时开始

eight_stop

位变量,用于控制秒表连续计时8次模式的计时停止

count_down

位变量,用于控制倒计时开始

scankey

位变量,用于控制键盘扫描

cheak

位变量,按键的消抖标志位

keydown

位变量,K1的按下标志位

K2_keydown

位变量,K2的按下标志位

表4-2主要变量定义

K3_keydown

位变量,K3的按下标志位

K3_keyup

位变量,K3的弹起标志

mm

字符型变量,用于0.2秒的累加

add

位变量,倒计时初值加1标志位

sub

位变量,位变量,倒计时初值减1标志位

bit_add1

位变量,K1完成一次按键动作的标志位

bit_sub

fast_add

位变量,倒计时初值连续增标志位

double_key

位变量,倒计时初值快速增标志位

fast_sub

位变量,倒计时初值连续减标志位

double_sub

tab[8]

整型变量,存储连续计时8次模式的8的时间值

4.2程序流程图

主程序完成的工作是检测各个标志位的状态,以确定单片机的工作情况。

键盘查询和数据显示的部分在定时中段服务子程序中完成。

由于程序较大,所以将程序的各个功能模块的流程图分别给出。

4.2.1计时功能流程图

图4-1计时功能流程图

4.2.2倒计时初值设定流程图

图4-2倒计时初值增加流程图

图4-3倒计时初值减少流程图

4.2.3倒计时功能流程图

图4-4倒计时开始流程图

4.3主要程序代码

全部的程序包括了头文件、变量的定义、主程序及各子程序。

本部分对设计中的主要程序单独说明。

(1)主程序

在主程序中需要完成以下的功能:

首先调用初始化函数对各个变量进行初始化,再对定时器的定时初值进行设定,接着根据各个标志位的值来判断单片机的工作模式及工作状态。

键盘扫描由scan()来完成,各个位的数值的计算由add1()完成。

voidmain(void)

{

begin1();

//调用初始化函数

TMOD=0x01;

TL0=0x18;

TH0=0xfc;

EA=1;

ET0=1;

TR0=1;

for(;

;

){

if(scankey==1)//进行键盘扫描

{scankey=o;

scan();

if(double_key==1)//倒计时初值快速增加

{P2_6=0;

P2_7=1;

m=m+10;

add1(m);

}

if(fast_add==1)//倒计时初值连续增加

m++;

add1(m);

bit_add1=0;

if(add==1)//倒计时初值增加1

{P2_6=0;

add=0;

}

if(double_sub==1)//倒计时初值快速减少

m=m-10;

if(fast_sub==1)//倒计时初值连续减少

m--;

bit_sub=0;

if(sub==1)//倒计时初值减少1

sub=0;

if(start==1)//计时开始

{if(mm==0)

{P2_7=!

P2_7;

P2_6=1;

if(mm==6000)m=0;

if(stop==1)start=0;

//计时停止

if(count_down==1)//倒计时开始

{if(m>

0)m--;

if(mm==0)P2_6=!

P2_6;

(2)定时器中断子程序

这里的秒表的计时、键盘的扫描及数值显示灯都是利用定时中断来完成的。

定时的时间设为1ms,用于数值显示;

同时利用累加的方法实现10ms和200ms的定时,用于键盘的扫描及控制显示灯的闪烁。

voidtime0(void)

ms++;

if(ms==10)

{ms=0;

mm++;

if(mm==20)mm=0;

scankey=1;

display();

(3)显示子程序

显示子程序其实包括了display()和add1(time)两个子程序。

add1(time)是用来计算数码管各个位要显示的数值的子程序,display()是查段位码表及进行动态扫描的子程序。

voidadd1(time)

uinttime;

{uintn,a;

a=time/1000;

LED1=a;

//计算十秒位数值

n=time&

1000;

LED2=(n/100);

//计算秒位数值

n=n%100;

LED3=(n/10);

//计算十分一秒位数值

LED4=n%10;

//计算百分一秒位数值

voiddisplay(void)

{switch(ms%4)

{

caseo:

P3=0xfe;

P1=table[LED4];

P1_7=1;

Break;

case1:

P3=0xfd;

P1=table[LED3];

case2:

P3=0xfb;

P1=table[LED2];

P3=0xf7;

P1=table[LED1];

default:

return;

5结论

本次毕业设计的任务是以单片机AT89C52作为控制核心,设计电子秒表,使其具有计时、倒计时功能。

通过我几个月的努力,本次毕业设计取得了较好的成果,基本上达到了本次毕业设计任务书的要求。

初步实现了具有计时、倒计时功能的电子秒表设计。

虽然还有一些欠缺的地方,但是总体来说这次的毕业设计还是很成功的。

这次毕业设计让我收获很大,学到很多将来一定能用到的知识,设计、定时器应用、LED应用等。

更重要的是,我学会了软硬件开发的思想。

在这次设计中给我感受最深的就是我们应该加强同学与老师之间的相互合作与配合,老师在其中起着很大作用,他时刻地洞察着你的进展情况,关键时候给你指明了方向,让你向着他理想的目标前进。

同时,我们作为学生要能理解老师的一番苦意,我们要有进取心,持之以恒的精神,遇到困难不能气馁,只有这样才能让指导老师看到成功的希望。

我相信,在以后的工作学习中,我会更加努力,全身心地投入社会,做出我理想的成绩!

参考文献

[1]郑毛祥.单片机应用基础.人民邮电出版社,2006.6:

21-42

[2]戢卫平,胡耀辉,朱朝华等主编.单片机系统开发实例经典[M].北京:

冶金工业出版社,2006:

29-47

[3]桑胜举,沈丁主编.单片机原理及应用[M].北京:

中国铁道出版社,2010:

1-32

[4]宋浩主编.单片机原理及应用[M].北京:

清华大学出版社,2005:

103-149

[5]李叶紫等主编.MCS-51单片机应用教程[M].北京:

清华大学出版社,2004:

22-45

[6]高伟主编.AT89单片机原理及

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1