基于单片机八路抢答器的设计内容摘要:

端通过电阻接高电平来实现单片机的复位。 如图 32 所示。 图 32 复位、时钟电路 抢答电路 按照键盘与单片机的连接方式可分为独立式键盘与矩阵式键盘。 独立式键盘是一种常见的输入装置, 但是独立式键盘局限于个数,以及占用较多 I/O 口,所以本次设计采用的 是矩阵 式键盘。 如图 33 所示。 图 33 抢答电路 矩阵键盘行扫描实现原理: 四川信息职业技术学院毕业设计说明书 (论文 ) 第 9 页 判断键盘中有无键按下 将全部行线 和 置低电平,然后检测列线的状态。 只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与 4 根行线相交叉的 4个按键之中。 若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。 其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。 在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。 若 某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 显示电路 在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要直观交互显示出来。 单片机应用系统中最常用的显示器有 LED 和 LCD 两种。 这两种显示器都可以显示数字、字符及系统的状态, LED 和 LCD 数码显示最为普遍,本设计采用的是更为环保的 4 位 LED 显示器。 如图 34 所示。 图 34 显示电路 4 位数码管动态显示原理与实现: 端口接动态数码管的字形码笔段, 端口接动态数码管的数位选择端。 4 位数码 管的 8 个显示笔划 a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极 COM 增加位选端控制电路,位选端由独立的 I/O 线控制,当单片机 四川信息职业技术学院毕业设计说明书 (论文 ) 第 10 页 输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选端控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。 就使各个数码管轮流受控显示,这就是动态 显示原理。 在轮流显示过程中,每位元数码管的点亮时间为 1~ 2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各 位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 埠,而且功耗更低。 控制电路 本次设计中控制电路采用 4 个独立按键来控制抢答时间的加减,时间对抢答器功能的调节,如图 35 所示。 图 35 控制电路 控制电路的原理与实现: 当控制电路中 K9K12 中有键被按下时,对应的 I/O 口被置低电平,听过中断程序实现相对应的功能。 该电路采用独立式按键,其原理简单明了。 报警电路 因为抢答器的报警比较简单,只 起提示选手的抢答成功信息及时间警告等少许功能,本次报警电路核心器件采用一个蜂鸣器实现报警。 如图 36 所示。 四川信息职业技术学院毕业设计说明书 (论文 ) 第 11 页 图 36 报警电路 整机工作原理 本系统采用单片机作为整个控制核心。 控制系统的四个模块为:显示模块、 控制模块、 报警 模块、抢答 模块 (原理图见附录 1)。 工作时, 该系统通过 矩阵键盘 输入抢答信号, 经单片机的处理,输出控制信号, 利用一个 4 位 数码管来完成显示功能 并伴随蜂鸣器报警 ,用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。 当主持人按下开始键时,向单片机 引脚输入 一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示 00),后两位显示倒计时剩余时间。 若在 25 秒内仍然无人抢答,蜂鸣器在最后 5 秒发出连续报警,提示抢答时间快要结束;若在 30 秒内有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。 若在抢答过程中遇见特殊情况, 主持人则可以通过时间加,时间减按键来进行时间调节。 若要开始新的一轮抢答,主持人按下复位键再按开始键即可。 此次用单片机设计的抢答器 思路简单明了,可操作性强,可靠性高,扩展功能强,能够完全实现普通抢答器的基本功能。 四川信息职业技术学院毕业设计说明书 (论文 ) 第 12 页 第 4 章 软件设计 定时中断模块 由于抢答器中需要显示倒计时来提示选手们抢答时间,在规定时间内作答,所以需要有定时中断模块,当时间小于 6 秒时,抢答器需要提供警告,以及当抢答时间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。 流程图如图 43 所示。 程序: EA=1。 ET0=1。 /*开启总中断源 */ EX0=1。 /*启动外部中断 0*/ if(shijian==0) { TR0=0。 TR2=0。 TF2=0。 } 外部中断模块 抢答器主要外部中断来自于选手们的抢答,当选手抢答时,抢答器同时判断被按下的键号并显示在数码管之上,然后再数码管上显示剩余时间,同时关闭中断,表示抢答定 时器 0 中断 1 秒时间到。 秒加 1。 数码管显示秒值 中断返 回 图 43抢答器定时器中断流程图 四川信息职业技术学院毕业设计说明书 (论文 ) 第 13 页 结束,此时再有键按下抢答器也不会做出反应。 外部中断流程图如图 43 所示。 程序: 外部中断 0 中断 K1 按下。 K0 按下。 K2 按下。 K3 按下。 K4 按下。 K6 按下。 K7 按下。 K5 按下。 中断返回 数码管显示 01 数码管显示 02 数码管显示 03 数码管显示 04 数码管显示 06 数码管显示 05 数码管显示 07 数码管显示 08 图 43 外部中断流程图 Y Y Y Y Y Y Y Y N N N N N N N N 四川信息职业技术学院毕业设计说明书 (论文 ) 第 14 页 void timer_2()interrupt 5 { TH2=(6553650000)/256。 TL2=(6553650000)%256。 P1=0xfe。 temp=P1。 temp=tempamp。 0xf0。 while(temp!=0xf0) { delay(5)。 temp=P1。 temp=tempamp。 0xf0。 while(temp!=0xf0) { temp=P1。 TR2=0。 switch(temp) { case 0xee:{TR0=0。 TF2=0。 num=1。 bj()。 red=1。 huang=0。 }break。 case 0xde:{TR0=0。 TF2=0。 num=2。 bj()。 red=1。 huang=0。 }break。 case 0xbe:{TR0=0。 TF2=0。 num=3。 bj()。 red=1。 huang=0。 }break。 case 0x7e:{TR0=0。 TF2=0。 num=4。 bj()。 red=1。 huang=0。 }break。 } while(temp!=0xf0) { temp=P1。 temp=tempamp。 0xf0。 }}} P1=0xfd。 temp=P1。 temp=tempamp。 0xf0。 while(temp!=0xf0) { 四川信息职业技术学院毕业设计说明书 (论文 ) 第 15 页 delay(5)。 temp=P1。 temp=tempamp。 0xf0。 while(temp!=0xf0) { temp=P1。 TR2=0。 switch(temp) { case 0xed:{TR0=0。 TF2=0。 num=5。 bj()。 red=1。 huang=0。 }break。 case 0xdd:{TR0=0。 TF2=0。 num=6。 bj()。 red=1。 huang=0。 }break。 case 0xbd:{TR0=0。 TF2=0。 num=7。 bj()。 red=1。 huang=0。 }break。 case 0x7d:{TR0=0。 TF2=0。 num=8。 bj()。 red=1。 huang=0。 }break。 } while(temp!=0xf0) { temp=P1。 temp=tempamp。 0xf0。 }}} 报警模块 报警模块主要作用有两个,一是当时间还剩 5 秒时,蜂鸣器放出报警,以此提 示选手们抢答时间将要结束;二是当有选手第一时间抢答成功时发出报警声,提示其他选手不必再抢答。 报警程序流程图 如图 44 所示。 四川信息职业技术学院毕业设计说明书 (论文 ) 第 16 页 程序: if(bb==1) { bb=0。 if(shijian==5) { speak=~speak。 } if(shijian==4) { speak=~speak。 } if(shijian==3) { speak=~speak。 } if(shijian==2) { speak=~speak。 } if(shijian==1) 定时 0 中断 时间 =6。 秒加 1。 报 警 中断返回 图 44 报警程序流程图 Y Y N N 四川信息职业技术学院毕业设计说明书 (论文 ) 第 17 页 { speak=~speak。 } 控制模块 控制模块主要作用是对抢答器的开始和复位 功能进行控制,主要由主持人来实现功能。 当开始键被按下时,抢答器开始正常工作;当抢答器停止工作是,可以按下复位键使抢答器回答初始化状态。 控制程序流程图 如图 45 所示。 程序: void keyscan() { if(sjia==0) { delay(5)。 if(sjia==0) { 初 始 化 部 分 K9==0。 启动中断,数码管开始倒计时 中断返回 K10==0。 K11==0。 K12==0。 时间加。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。