99秒倒计时器设计副本文档格式.docx
《99秒倒计时器设计副本文档格式.docx》由会员分享,可在线阅读,更多相关《99秒倒计时器设计副本文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,
P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;
在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个
TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2
的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)
时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用
8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
1.2、LED数码管显示器概述
本设计中采用的是SH5261AS共阴两位数码管
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
段码位
D7
D6
D5
D4
D2
D1
D0
显示段
pd
g
f
e
d
b
a
字型
共阳极段码
共阴极段码
0
C0H
3FH
9
90H
1
F9H
06H
A
88H
2
A4H
5BM
B
83H
3
B0H
4FH
C
C6H
4
99H
66H
D
A1H
5
92H
6DH
E
86H
6
82H
7DH
F
84H
7
F8H
07H
空白
FFH
8
80H
7FH
P
8CH
数码管的驱动方式:
静态显示驱动:
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
1.3、其他元器件介绍及参数
晶振,电容,电阻排,电解电容,开关,asp接口,按键
晶振采用频率为12MHZ,连接的两个电容为22pF;
电解电容为10uF;
2.单片机的最小系统与复位电路
2.1最小系统
最小系统就是单片机在发挥具体测控功能时所必须的组成部分。
为复位电路,振荡电路,单片机,I/O口,电源组成。
时钟频率电路的设计
单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。
时钟电路如下图:
外部震荡源电路
一般选用石英晶体振荡器。
此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。
电路中两个电容C1、C2的作用有两个:
一是帮助振荡器起振;
二是对振荡器的频率进行微调。
C1、C2的典型值为30pf。
单片机在工作时,有内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。
其大小是时钟信号频率的倒数,f表示。
图中的时钟频率为12MHz,即f=12MHz,则时钟周期为1/12us。
复位电路的设计
单片机的第九脚RES为硬件复位端,只要将该端持续4个机器周期的高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如下:
复位电路
图中由按键K3以及电解电容C1构成了复位电路。
由于单片机是高电平复位,所以当按下K3时,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态。
当上电后,由于电容缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上复位完毕,系统程序从0000H开始执行。
值得注意的是,在设计当中使用到了硬件复位和软件复位两种功能,由上面的硬件复位后的各状态可知寄存器及存储器的值都恢复到了初始值,而前面的功能介绍中提到的倒计时时间的记忆功能。
显示电路的设计
显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰富的信息,全靠软件来解决。
在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般包括两种:
一种是静态显示,另一种是动态显示。
其中静态显示的特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;
动态显示的特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少。
在本设计中根据实际情况采用的是动态显示方法。
数码管显示电路如下图:
共阴极数码管
总体硬件电路设计图:
三、Keil
用到了KeilC软件,集成调试环境,集成了编辑器、译码器、调试器,支持软件模拟,支持项目管理功能强大的观察窗口,支持所有的数据类型。
树状结构显示,一目了然,支持ASM(汇编)、C语言多模块源程序混合调试,在直接修改、编译、调试源程序,错误指令定位。
功能很强大,用于对程序的调试和编辑。
其界面如下:
KeilC界面
2.1程序框图如图:
设定子程序流程图(按键处理)
四.调试
1、单片机最小系统的调试
先向单片机下载程序,给P1口赋值:
0x55,从p1口接一个LED灯,接不同的的接口会显示灯亮、灭交替的过程,说明程序已经下载进单片机并且已经开始工作
2、将编好的程序下载进单片机,99s开始倒计时,工作正常。
参考文献
【1】邹应全.51系列单片机原理与实验教程.西安:
西安电子科技大学出版社
【2】何立民.单片机高级教程.第1版.北京:
北京航空航天大学出版社,2001
【3】赵晓安.MCS-51单片机原理及应用.天津:
天津大学出版社,2001.3
【4】李全利.单片机原理及接口技术.高等教育出版社,2007.4
软件程序:
ORG0000H
LJMPMAIN
ORG0003H
LJMPINTR0
ORG000BH
LJMPINTRR1
ORG0100H
MAIN:
MOV20H,#99
MOV21H,#9
MOV22H,#9
MOVTH0,#8AH
MOVTL0,#0D8H
MOVTMOD,#01H
MOVR7,#20
SETBET0;
T0中断允许
SETBEA;
CPU中断允许(总允许)位
SETBIT0;
开中断(边沿触发)
SETBEX0;
INT0中断允许
SETBTR0
DISPLAY:
MOVR1,#01H
MOVDPTR,#TAB
MOVA,21H
MOVCA,@A+DPTR
MOVP0,A
MOVP2,R1
LCALLD10ms
MOVR1,#0
MOVA,22H
JMPDISPLAY
;
递减,溢出则清0
INTR1:
DJNZR7,L3
DEC20H
MOVA,20H
CLRC
SUBBA,#0
JZL2
TOBCD转码
MOVB,#10
DIVAB
MOV21H,B
MOV22H,A
JMPL3
L2:
MOV20H,#99
L3:
MOVTH0,#8AH
RETI
延时程序
D10ms:
MOVR6,#10
D1ms:
MOVR5,#20
DL:
NOP
NOP
DJNZR5,DL
DJNZR6,D1ms
RET
INTR0:
CPLTR0
;
显示码表
TAB:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
DB6FH,77H,7CH,39H,5EH,79H,71H,40H,00H
END