八路抢答器(51单片机)

一、任务说明

(一)系统总体方案设计与实现

1、系统总体方案设计

本系统由硬件系统和软件系统组成。

硬件系统包括按键控制模块、中央处理AT89C51系统、指示灯显示模块、LED数码管显示模块和扬声器提示模块。

软件系统包括主程序、定时器0中断服务程序、定时器1中断服务程序、延时程序、按键程序和显示程序。

为方便理解,系统框图如下图所示:

图1 系统框图

2、系统总体方案实现

本次单片机课程设计我们的选题是《八路抢答器》。本次课程设计是以八位选手抢答和主持人的控制为出发点,在传统的功能上进行适当的创新,添加新功能和完善要求的功能,从整体把握进行设计。

①只有一个最先抢答有效,其余抢答无效。

②在主持人的控制下,10秒内抢答有效,用数码管显示抢答10秒倒计时,若有抢答直接结束,显示哪个编号抢到,并进入10秒的答题时间。

③若有提前抢答,则犯规,用蜂鸣器响1秒警示。

④有复位按键,用于复位作用,开始新的一轮。

⑤可以设置抢答时间和答题时间,可调范围是0到99秒,超出或低出范围会返回第10秒。

⑥LED警示灯、LED显示屏和蜂鸣器进行倒计时警示,三重的警示,带来极致的紧迫感。

⑦答题时间暂停,可以确定选手最后的答案耗时多长时间,促进选手的公平。

⑧如果选手在规定时间内或违规抢到第一位,不仅屏幕会显示号码,而且对应选手的LED灯会亮起。

(二)硬件电路设计

1、硬件电路图:

时钟电路模块:

图2 时钟电路

复位电路模块:

图3 复位电路

LED显示屏模块:

图4 LED显示屏

选手抢答按键模块:

图5 选手抢答按键

选手点灯模块:

图6 选手点灯

蜂鸣器提示模块:

图7 蜂鸣器提示

LED灯倒计时警示模块:

图8 LED灯倒计时警示

主持人控制按键模块:

图9 主持人控制按键

2、硬件说明:

本次硬件设计简单来说由:AT89C51最小系统、显示模块、按键模块LED灯和蜂鸣器模块组成。

(三)软件设计

当接通电源开始工作后,单片机中的程序开始运行,将对程序进行初始化。完成初始化后,将进行键盘扫描,同时判断开始按键、调节按键是否按下。最后完成倒计时和选手号码的显示等功能。

软件流程图如下图所示:

图10 软件流程图

二、电路原理图与结果

1、选手违规抢答:以第1位选手违规抢答为例,对应选手的LED灯亮起,LED显示屏显示对应违规选手号码,蜂鸣器先响起1秒警示,如果未进行复位操作,则蜂鸣器将再会响起,同时倒计时警示LED灯会闪烁提示。(第1-8位选手都是如此)

2、抢答时间调整:如果按下抢答时间加键或抢答时间减键,LED显示屏显示对应的调整时间,时间调整范围为0-99秒,超过99秒或低出0秒则返回去10秒。本次将抢答时间增加到15秒。

3、答题时间调整:如果按下答题时间加键或答题时间减键,LED显示屏显示对应的调整时间,时间调整范围为0-99秒,超过99秒或低出0秒则返回去10秒。本次将答题时间减少到8秒。

4、主持人按下开始键:抢答时间开始倒计时,最后几秒抢答时间倒计时警示LED灯将闪烁,要是选手没有选择抢答,则蜂鸣器会不断响起,LED显示屏熄屏,除非按下复位键开启新的一轮。

5、主持人按下开始键:抢答时间开始倒计时,最后几秒抢答时间倒计时警示LED灯将闪烁,要是选手选择抢答,则对应选手的LED灯会亮起。

6、要是选手在抢答时间按下抢答键,进入答题时间:答题时间最后几秒倒计时LED灯亮起,蜂鸣器不断响起,提示按下复位键,开始新的一轮。

6、要是选手在抢答时间按下抢答键,进入答题时间:答题时间内主持人可以按下答题时间暂停键,则显示屏时间暂停,按下答题时间暂停键的第一瞬间LED显示屏熄屏,倒计时LED警示灯亮起,松下答题时间暂停键的第一瞬间LED显示屏显示暂停的时间,倒计时LED警示灯熄灭,除非按下复位键,开始新的一轮。

三、代码说明

代码部分主要由四个模块组成,分别为主程序、显示子程序、时间按键调整子程序、选手按键子程序、开始键子程序、延迟子程序、定时器T0初始化子程序和蜂鸣器和LED灯子程序。

1、主程序:

主程序完成定时器0的初始化、74LS138芯片的初始化和扫描主持人按键,进行对应的操作。

2、显示子程序:

此函数大方向分为开始键按下和开始键没有按下的两种情况。同时两个大方向又各自细分两个小方向。当开始键按下,则有选手在抢答时间按下显示选手号码在LED显示屏上,要是没有则不显示号码。同时显示屏上显示抢答和答题的倒计时。当开始键没有按下,如果有人违规抢答,则显示屏显示违规号码。如果按下答题时间或抢答时间调整键,则对应显示屏进行更新数据操作。

3、时间按键调整子程序:

此函数很简单,要是按下抢答时间或答题时间调整键,则对应时间将进行操作,调整范围为0-99秒,超出99秒或低于0秒,则返回到10秒。

4、选手按键子程序:

以K1为例,程序一直判断按键引脚电压,按下按键电压为0。按键会产生抖动,需要进行消抖处理,先进行消抖延迟10ms,如果按键电压还是0,确定没问题K1进行操作,令按键数目num为1,供主函数处理按键消息。同时将74LS138的对应输入口赋值,数码管显示工作,定时器1和0也进行对应工作。K1-K8功能都是一样的操作。

5、开始键子程序:

如果按下开始键,程序一直判断按键引脚电压,按下按键电压为0。按键会产生抖动,需要进行消抖处理,先进行消抖延迟10ms,如果按键电压还是0,确定没问题K0进行操作.将对应的标志位进行开始工作,将清除违规标志位、开始抢答时间调整键标志位和答题计时时间调整键标志位停止运行。

6、延迟子程序:

确定51单片机为12MHz频率,以此确定ms的延迟子函数。

7、定时器T0初始化子程序:

将定时器T0进行初始化,运用方式1,即16位计数器。取高八位和第八位寄存器进行定时操作。

8、蜂鸣器和LED灯子程序:

用定时器0和定时器1确定蜂鸣器响多久和LED灯亮。

物联沃分享整理
物联沃-IOTWORD物联网 » 八路抢答器(51单片机)

发表评论