AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。
图2-8为AT89S51单片机的基本组成功能方块图。
由图可见,在这一块芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器、串行口等,各部分通过内部总线相连。
下面介绍几个主要部分。
图2-8单片机结构框图
2.7.2AT89S51单片机管脚说明
图2-9AT89S51单片机管脚图
ATMEL公司的AT89S51是一种高效微控制器。
采用40引脚双列直插封装形式。
AT89S51单片机是高性能单片机,因为受引脚数目的限制,所以有不少引脚具有第二功能。
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是因为内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是因为内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入1后,它们被内部上拉为高电平,并用作输入。
作为输入,因为外部下拉为低电平,P3口将输出电流。
P3口也可作为AT89S51的一些特殊功能口,如下表所示:
P3口管脚备选功能
P3.0RXD<串行输入口)
P3.1TXD<串行输出口)
P3.2INT0<外部中断0)
P3.3INT1<外部中断1)
P3.4T0<记时器0外部输入)
P3.5T1<记时器1外部输入)
P3.6
<外部数据存储器写选通)
P3.7
<外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
ALE/
:
当访问外部存储器时,地址锁存允许端的输出电平用于锁存地址的地址字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
PSEN:
外部程序存储器的选通信号端。
在由外部程序存储器取指期间,每个机器周期两次PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/VP:
当
保持低电平时,则在此期间外部程序存储器<0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,
将内部锁定为RESET;当
端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡器的输出,如采用外部时钟源驱动器件,应不接。
第三章模块最终方案的设计
3.1总体设计思路
主控制器模块:
采用AT89S51单片机控制
抢答器显示模块:
数码管显示
电源方案的选择:
采用5V电源供电
抢答器键盘模块:
独立式键
3.2功能介绍
如果想调节抢答时间或答题时间,按“抢答时间调节”键或“回答时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如果想加1秒按一下“加1秒”键,如果想减1秒按一下“减1秒”键,时间LED上会显示改变后的时间,调整范围为0S~99S,0S时再减1S会跳到99,99S时再加1S会变到0S。
主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时<预设30S抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时<预设60S回答时间),不进行抢答查询,所以第一个按抢答的选手有效。
倒数时间到小于5S会每秒响一下提示音。
如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。
如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止”键为止。
3.3抢答器的软件设计
系统软件由主程序和INT0中断服务组成。
主程序由验键,违规显示,倒计时等功能子程序组成,系统完成初始化后循环检查各个功能当用户使用某个功能时,按下相应的按钮<或开关)单片机进入相应的功能处理。
INT0中断服务程序完成抢答信号采样和识别处理。
该智能抢答器以AT89S51单片机为控制核心,控制精度较高,操作误差主要来自晶振自身所造成的误差。
其他外围电路包括复位电路、时钟电路、报警电路、LED显示电路、抢答按键、功能设置键等。
该智能抢答器具有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定;通过按键扫描输出按键信息,并通过单片机将它转化为在七段数码管上显示的字形符。
单片机的P1口为8组抢答按键的输入口,P0.0~P0.6为数码管的段选口,P2.0~P2.2为数码管的片选口。
外部中断INT0和INT1分别为抢答时间和回答时间的调整口,P3.4和P3.5分别实现时间调整时的加1和减1功能;P3.6为报警电路的控制口。
3.4数码显示
数码显示管用来作为时间的显示输出,一般用7段数码显示管。
本次设计中采用7段共阳数码显示管应用简单、可靠性高、成本低,作为显示输出。
连接时段选信号接在P0口的P0.0~P0.6七个I/O口上,P1口是准双向I/O接口在输出驱动部分具有驱动4个TTL负载的能力,即输出电流不大于400μA,所以在接电阻时选择接510Ω限流电阻。
而在位选方面采
用P2口的P2.0~用单片机P2.2三个I/O口作为位选信号的输出口。
第四章系统调试与仿真
系统调试包括硬件调试和软件调试,而且两者是密不可分的。
我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。
硬件调试分单元电路调试和联机调试,单元电路实验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后实验电路是否正确,并排除一些加工工艺性错误<如错线、开路、短路等)。
这种调试可单独模拟进行,也可通过开发装置由软件配合进行,硬件联机调试则必须在系统软件的配合下进行。
软件调试一般包括分块调试和联机调试两个阶段。
程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。
这时该程序功能块已调试完毕,可去掉附加程序段。
其它程序功能块可按此法进行调试。
程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。
从而实验程序整体运行的完整性、正确性和与硬件电路的配合情况。
在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。
在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。
系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。
4.1软件调试问题分析
数码管显示问题:
本次设计的最终方案是采用数码管显示屏实现显示功能,最初数码管显示不正常,出现闪烁现象。
通过调试发现这是因为延时时间选择不当会使人眼产生视觉暂留效果,每一次显示时都必须加入适当的时