将单片机项目实训——8路抢答器分享出来,如有不足,敬请指出。
【实验图片】
【实验视频】
【项目实训】8路抢答器
目录
设计一个共8名选手参加的8路抢答器。每名选手一个抢答器按钮,供参加者使用。电路具有第一抢答信号的鉴别和储存存储功能。主持人发出抢答指令后,如果参赛者在第一时间按下抢答按钮,则数码管立即显示出相应的选手编号,同时电路应具有自锁功能,使其他选手抢答按键不起作用。
功能与要求:每名选手有一个抢答按钮,按钮的编号与选手的编号相对应,抢答器具有信号的鉴别和数据的储存显示的功能。抢答开始后若有选手抢答,则在数码管上相显示相应的编号,同时电路应具有自锁功能,禁止其他选手再抢答,优先抢答选手的编号,一直保持到后台管理员将系统清零为止,抢答器具有定时抢答的功能,在主持人发出抢答指令后定时器立即进行减计时,并在显示器上显示,同时蜂鸣器发出短暂的声响。选手在设定的时间内进行抢答,抢答有效。定时器停止工作,显示器显示选手编号,并保持到后台管理员将系统清零为止。
方案1:利用硬件电子元器件实现,但电路结构复杂,调试困难,涉及到外围元件多,不便于安装,实验给实验操作带来很大的麻烦。
方案2:采用STC89C52RC单片机,其片内带有8KB Flash ROM、512KB RAM,指令代码完全兼容传统8051,无需专用仿真器,可通过串口直接下载用户程序,数秒即可完成程序下载。STC89C52RC内部几乎包含了数据采集和控制所需的所有单元模块,其内部结构框图如下:
分析以上两种方案,从方案1可以看出,这个抢答器就是有抢答电路、定时电路、报警电路、时序控制电路4个电路组成的。扩展电路是由秒钟脉冲信号产生电路、译码电路、显示电路等组成的,它的功能很齐全,设计的电路也很稳定。但是它的造价很高,仅仅集成电路它就使用了八个,所以选用单片机方案。
八路抢答器实现方案组成框图如图所示:
系统硬件电路原理图如下图所示。它主要包括系统管理员按键(复位按键)、3个主持人按键(K1、K2、K3)、8个选手按键(S1、S2、S3、S4、S5、S6、S7、S8、S9)、4位共阳极数码管显示电路、蜂鸣器报警电路,以及电源接口和电源指示灯电路。
主函数如下所示:
- void main(void)
- {
- timer0_init();
- while(1)
- {
- time_set();
- display_time(time);
- if(user_flag)//当有用户按键被按下时(user_flag在外部中断函数中被修改)
- {
- if(user != ERROR)//当用户按键被正常按下时
- display_user(user);//显示用户的编号
- else//如果显示错误(当有多个按键同时被按下时)
- display_error();//显示错误
- }
-
- if(stop_flag)//当倒计时停止后(stop_flag在定时器零中断函数装备修改),仍然没有用户按一下按键
- display_error();//显示错误
-
- }
- }
(1)PCB-3D图片
(2)实物图片
(1)演示视频链接:
链接①:哔哩哔哩--------点击播放
链接②:
链接③:爱奇艺--------点击播放
链接④:腾讯视频--------点击播放
链接⑤:快手视频--------点击播放
(2)原理图下载:
(3)源程序下载:
(1)如何将8个用户抢答按键,“综合”到外部中断0端口,使得一旦用户抢答按键被按下,则立刻通过中断响应发生相应动作?
充分利用二极管的单向导电性,一旦某个按键被按下,则外部中断0端口被拉低,就会产生一个高电平到低电平的转变,这时候进入外部中断0响应,然后通过读取用户端口的状态,就可以达到所需的效果。这里是二极管组成了“与”门,一般的“与”门芯片,比如74LS/HC系列,一块芯片的成本至少需要几毛钱,而且体积比较大,这里采用二极管代替“与”门芯片,无论从价格还是从体积上都优于专用芯片。(注意:这里的上拉电阻必不可少)
微创电子工作室,刺客阿瑞
(不断完善中)