欢迎来到天天文库
浏览记录
ID:12377476
大小:412.50 KB
页数:18页
时间:2018-07-16
《基于51单片机的可预置分秒倒计时装置》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.设计方法本次课程设计的题目是设计并实现可编程倒计时装置。具体要求是按秒倒计时并键盘预置分、秒各两位数,键控启动计时,数码管显示倒计时;计时器归零时输出一音频信号。根据实验要求选用AT89C52单片机作为最基本的部件,包括数码管部分,蜂鸣器部分,矩阵键盘部分等几大模块,以下依次进行介绍。1.1硬件简介(1)AT89C52AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性
2、存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。引脚图如下:图一PDIP封装的AT89C52引脚图该单片机的功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MH
3、z晶振。RST(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)为供电端口,接+5V电源的一端,GND(20脚)为接地端,接地。P0~P3为可编程通用I/O脚,在本设计中,P0端口(32~39脚)被定义为数码管数据输入端口,分别与数码管的相应功能管脚相连接18。P2端口外接一个74LS373对控制信号进行锁存,然后从P2口的低四位输出到数码管的片选端,进行对四位数码管的选择。P3口中的P3.0接蜂鸣器的使能端,控制蜂鸣器的选通。(2)时钟振荡器AT89C52中有一个用于构成内部振荡器的高增益反相放大器,
4、引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10pF。(3)键盘按键电路矩阵键盘:为了节省I/O口,通常将按键排列成矩阵形式,每条水平线和垂直
5、线在交叉处不直接连通,而是通过一个按键加以连接。本设计采用4*4矩阵电路,包括0~9十个数字,设置,启动,暂停,左移,右移和确定这十六个按键。P1.0~P1.3为列扫描,P1.4~P1.7为行扫描。(4)数码管图二数码管简介图如图所示,数码管主要有两种形式,共阴极和共阳极。共阴极的数码管就是公共端接地,共阳极的数码管就是公共端接电源。本次设计采用的是共阳极的设计方案。181.2设计思路在本设计中:(1)4x4矩阵键盘,有数字0-9输入,可以方便快捷的预置分秒,抛弃了‘分’‘秒’按键,采用‘左’‘右’按键,使得预置数值时更
6、加方便,可以随心所以左右移动,选择输入。另增加一个暂停键,功能是使得再倒计时的过程中,随时暂停,再按启动键时,倒计时继续开始。(2)数码管采用的是4位一体共阳数码管,有4个位选端,来分别选择4个数码管。(3)蜂鸣器采用的是有源蜂鸣器,无源蜂鸣器和有源蜂鸣器的区别在于,有源蜂鸣器只需加入一个高电平就可以发声,而无源蜂鸣器需要输入一定频率的脉冲才可以发声,从而选择简单高效的有源蜂鸣器。1.3设计框图图三设计框图182系统硬件设计图根据思路设计出的硬件如下图所示18图四硬件电路连接图3程序设计框图18184资源分配表(1)P0
7、.0-p0.7上先接一个排阻,作为上拉电阻。如下图所示图五上拉电阻然后引脚接入共阳数码管的段选端,如下图所示:图六数码管(2)P1.0-P1.7接矩阵键盘,其中p1.0-p1.3为列扫描,p1.4-p.17为行扫描如下图所示:18图七矩阵键盘连接图(3)P2口的p2.0-p2.3先接入一个74ls373锁存器,之所以要接这个锁存器是因为我们选用的是共阳数码管,需要大驱动,直接用单片机接的话带不起来,亮度会很低。如下图:图八锁存器之后373的Q输出端的q0-q3再接入供养数码管的位选端,分别选中4个数码管,高电平有效,如图
8、4.3所示。(4)P3口的p3.0接入蜂鸣器,输入一个低电平,蜂鸣器便发声。185源程序#include#include#defineuintunsignedint#defineucharunsignedcharsbitP3_0=P3^0;charseg_n[4]={10,10
此文档下载收益归作者所有