1、基于AT89C51单片机抢答器系统框图本项目需要通过学习和查阅资料,掌握和了解如下知识:+5V电源原理及设计单片机复位电路工作原理及设计单片机晶振电路工作原理及设计按键电路设计蜂鸣器驱动电路设计数码管特性及使用AT89C51单片机引脚单片机汇编语言及程序设计电路原理图:其工作原理为:电源电路为单片机以及其他模块提供标准5V电源。晶振模块为单片机提供时钟标准,使系统各部分协调工作。复位电路模块为单片机系统提供复位功能。单片机作为主控制器,根据输入信号对系统进行相应的控制。选手按下相应的键,蜂鸣器发出提示音,直到按键释放。数码管显示最先按下选手的编号。选手回答完毕,主持人按下准备按钮,数码管清零,
2、蜂鸣器停止发声,可以进入下一题的抢答。基于AT89C51的单片机抢答器元件清单如下:序号元件名称规格数量用途151单片机AT89C511个控制核心2晶振12M立式晶振电路3集成电路74LS245(8路总线接收/发送器)驱动4八段数码管一位共阴极显示电路5三极管9015蜂鸣器机器驱动电路6起振电容30pF瓷片电容2个7复位电容10uF/10V复位电路8复位电阻10K欧限流电阻500欧限流电路9喇叭8欧/05W蜂鸣器及其驱动电路10按键主持人按键8个选手按键11电源5V/05A提供+5V软件设计:上电复位后数码管清零,P2.0置高电平,蜂鸣器不发声,循环扫描P3口,看是否有按键按下,如果有按键按下
3、,则转入判断是哪个选手按下按键,并在数码管上显示选手号;P2.0置低电平,蜂鸣器发生,主持人按键按下,系统重新进入主程序继续进行下一轮抢答。程序流程图如下程序流程图:小结:1.程序调试参考了好多资料,也请教了同学,最后编程问题都得到了解决2.在Protus中画图失败,以至于不能仿真出来结果3.理论联系实际,培养自学能力,和动手能力,学会了怎么更好的处理知识和实践相结合的问题4.为以后有关单片机只是的学习积累宝贵经验附:源程序代码如下: ORG 0000H JMP BEGINTABLE: ;共阴极数码管显示代码表 DB 3FH,06H,5BH,4FH,66H, ;01234 DB 6DH,7DH
4、,07H,7FH ;6789DELAY:MOV R5,#20LOOP4:MOV R6,#50HLOOP5:MOV R7,#100H ;延时20*20ms DJNZ R7,$ DJNZ R6,LOOP5 DJNZ R5,LOOP4 RETBEGIN:MOV P2,#0FFH ;P2口置高电平,准备接收信号 MOV R4,#0 MOV A,R4 ;R4位 标志值送A寄存器AGIN:MOV DPTR,#TABLE MOVC A,A+DPTR MOV P1,ALOOP1:MOV A,P3 ;接受P3口的抢答信号 CPL A JZ LOOP1LOOP2:RRC A ;有抢答信号则逐次移动判断哪一位抢答 INC R4 JNC LOOP2* MOV A,R4 MOVC A,A+DPTR ;找到相应位显示代码LOOP3:JNB P2.2,BEGIN ;若主持人按下复位键信号,则转向主程序 CPL P2.0 ;若没有按复位信号键,则通过P2.2口给出高低信号驱动蜂鸣器 LCALL DELAY ;调用延时子程序 SJMP LOOP3 ;P2.2口反复间隔0.4s变化,驱动蜂鸣器 END程序仿真:Protus中画电路图