抢答器实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
抢答器实训报告
——嵌入式应用实训报告班级:314110 学号:14 姓名:姜云峰
一、实训目的与要求
目的:设计一个8路抢答器;4个主持人按键控制开始、复位、和倒计时的加减。主持人按下开始键后,抢答开始,数码管上显示为“—”,在主持人
按键按下前,有选手按下,为违规。违规时,数码管上显示的是选手编号,
并且闪烁。抢答开始,进入倒计时,在倒计时内,若有选手按下按键,则
说明有人抢答,数码管上显示为选手编号,不闪烁。若倒计时内没有人按
键,则说明没人抢答;主持人按“复位”键,开始下一轮抢答。在此基础
上,还可以有其他功能,比如违规时,蜂鸣器警报、抢答成功时播放音乐
表示祝贺等。
此次实训主要培养学生的动手和思考能力,为以后的毕业设计做准备,此次实训相当于一个小的毕业设计。
要求:
1)使用单片机完成
2)能同时满足8路以上抢答
3)能判别违规现象
4)有较好的人机界面
二、方案设计
本设计采用AT89S52单片机作为控制核心,P0.0~P0.7为8路抢答信号输入端,四位共阳数码管为处理后信号输出端。当有抢答键按下时,对应输入端为低电平"0"反之为高电平"1"。芯片的P3.0口为抢答启动键接口。当按下抢答启动键k1(即主持人“开始”按键)后,向单片机申请一次INT0中断单片机在中断服务程序中对抢答信号进行采样和识别处理。
采用四位LED共阳数码管以动态扫描方式对抢答键号,违规抢答键号,倒计时时间等信息进行显示;在未开始抢答时数码管显示“—”;倒计时时间由选择开关k3、k4进行设定(最高不超过99s),k3键为加,k4键为减;当主持人按下k1前,有人按键为违规抢答,选手编号就在数码管上显示并且闪烁。
1)违规抢答信号的记录
抢答开始,主持人按k1键,单片机开始先采样P0口并将采样值送入工作寄存器R0,显然R0中寄存了抢答开始前最后一瞬间各路抢答输入信号。若无违规抢答,R0值为FFH;若有违规抢答,R0值不为FFH.R0中为0的位对应的抢答键属违规。若出现违规现象,则需返回主程序重新抢答。
所谓"有效抢答信号"是指从数码管显示倒计时开始之后的抢答信号,在抢答提示之前的抢答信号属于"违规信号",最先到达的有效抢答信号称为"第一有效信号"。
2)第一有效抢答信号的处理:
当数码管显示抢答倒计时之后,单片机再采样P1口,用于检测抢答信号,若采样值为FFH表示还没有抢答,继续采样P0口,若不为FFH表示有人按下抢答键。此时送入R1中含有第一有效抢答信号。
三、硬件设计
电源部分:
图1
将输入的12V交流电压通过电桥整流和7805稳压,流出5V的直流电压。
烧写芯片电路:
图2
图中所用的芯片为MAX232,通过上图电路将程序烧写进芯片89S52,
MAX232芯片的11脚和12脚分别接89S52的串行数据信号线P3.0和P3.1。89S52:
图3
P0.0~P0.7为P0口8位双向端口线;P1.0~P1.7为P1口8位双向端口线;
P2.0~P2.7为P2口8位双向端口线;P3.0~P3.7为P3口8位双向端口线;ALE(30脚)用来锁存控制信号;29脚用来外部程序存储器读选通信号;31脚用于访问程序存储控制信号,31脚一定要连接高电平或低电平,我们所用的芯片是接高电平;RST(9脚)是复位引脚,用于复位;18、19脚是外接晶体引线端,此次实训我们所用的晶振为12MHZ的;20脚为接地端,40脚接+5V 电源;10脚、11脚(即P3.0和P3.1口)用于串行数据接受和发送;12、13脚(P3.2、P3.3口)分别是外部中断0申请和外部中断1申请;14、15脚(T0、T1)是定时\计数器0的外部输入和定时\计数器1的外部输入;16、17脚(P3.6、P3.7口)用于外部RAM或外部I/O写选通和外部RAM或外部I/O读选通。
时钟震荡电路:
时钟电路输入端引脚为XTAL1,输出端为引脚XTAL2,所用的电容为30pF 的,晶振为12MHZ,构成一个稳定的自激振荡器。
图4
复位电路:我们采用的是按键复位电路,通过RESET健实现复位,电阻R10起到保护电路的作用。
图5
显示部分:我们采用的是四位共阳数码管,P0.0~P0.7分别连接与数码管的11、7、4、2、110、5、3管脚,用于控制a、b、c、d、e、f、g、dp各段的亮灭,P2.0、P2.1、P2.2与数码管的12、8、6脚项链,用于控制1、3、4位数码管的亮灭。9脚是用来控制第二位的,此次实训小红没有用到,就没有接。
图6
对照原理图排好版,把各个部分依次焊接在电路板上。
图6
上图是此次实训的系统图
四、软件设计
通过编写的程序来实现抢答和报违规警报,并且选手的编号能够显示在数码管上,在没有抢答前,刷关上显示为“—”,如果有人在主持人的开始键没有按下之前抢答,则数码管上显示此人的编号,并且闪烁,蜂鸣器发出声音,说明有人违规抢答;主持人按下开始键,开始抢答,在倒计时内第一个抢到的人的编号会显示在数码管上,并且不闪烁。
下面为此次实训的程序:
#include
unsigned char led[9]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,}; unsigned char aa[5]={0XF9,0XA4,0XB0,0X99,0X92,};
unsigned char k,w,j;
void delay1s()
{ unsigned char i;
for(i=0;i<60;i++){
TH1=0X3C;
TL1=0XB0;
TR1=1;
while(!TF1);
TF1=0;
}
}
void soft_reset(void)
{
((void(code*)(void)) 0x0000)();
}
///////////主函数//////////
void main()
{
while(1)
{ P0=0xbf;
if(P3_2==1)
{
if(P1_0==0){for(k=0;k<4;k++)
{ P0=led[1];delay1s();P0=0xff;delay1s();}P0=led[1];} //显示 1