单片机课程设计多路抢答器_第1页
单片机课程设计多路抢答器_第2页
单片机课程设计多路抢答器_第3页
单片机课程设计多路抢答器_第4页
单片机课程设计多路抢答器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、烟台南山学院单片机课程设计题目:多路抢答器 目录1.抢答器课程设计目的.12.抢答器设计功能要求.13.抢答器设计正文.13.1软件分析. 13.1.1 程序流程图.13.2硬件分析. 23.3 元件分析.23.4功能实现. 23.5系统调试. 24.原理图.35.程序代码.46.参考文献.9一抢答器课程设计目的在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢

2、答的公平性二器设计功能要求1.四个抢答台和四个抢答成功指示灯,一个比赛主持人“开始”键和一个抢答指示灯以及一个led 显示器。2.采用中断和查询的方法确定按键的动作3.主持人按下“开始”按键后,若有人抢答,则抢答指示灯确认有人抢答,并用七段led 显示抢答者的号码,并同时点亮对应抢答台上的抢答成功指示灯,、;若十秒钟内无人抢答,则发出超市报警声,此题作废,主持人可按下“开始”键开始下一道题的抢答。三抢答器设计正文3.1 软件分析 当主持人宣布抢答开始的时候,按下开始按钮,此时电路进入抢答状态,选手的输入采用了扫描式的输入,之后把相应的信息送往单片机,再由单片机输出到显示输出电路中。此时有人第一

3、按下相应的抢答按钮,经过单片机的控制选择,在七段显示器上显示相应的号码。若十秒内无人抢答,程序将进入定时器中断,蜂鸣器响。主持人按下“开始”键进行下一轮答题3.1.1 程序流程图蜂鸣器响定时器到时答题数码管显示 二极管发光外部中断并查询按键 定时器开始定时 主持人按下按键 等 待 是 否 有选 手按 无人按下 下按 按键 键 显 示 输 出 3.2硬件分析 输出锁存单片机控制 控制输入抢答输入 本设计是采用单片机设计的 四 人比赛用抢答器系统 。 它具有电路简单 、 功能齐全 、 制作成本低、性价比高等特点,是一种经济、实用的比赛用抢答器。硬件部分主要由单片机、cd4511 译码器 、 led

4、 显示器 、 发光二极管 、 声音报警器 、 主持人操作键盘和其它基本外围电子电路组成 3.3元件功能cd4511 驱动译码单片机 , 输入接单片机的 p 口 , 输出接数码管的七段 ; 三极管驱动发光二极管和蜂鸣器;排阻用做 p0 口的上拉电阻。3.4功能实现整个原理图由最小系统,滤波电路,抢答电路,抢答显示电路,主持人控制电路,以及蜂鸣器控制电路。下面主要介绍:1. 主持人控制电路 , 当主持人按下 “ 开始 ” 按键时 , p1.7 变为低电平 , 通过软件启动定时器。2. 抢答电路 , “ 开始 ” 后,选手可以答题,当有人按下抢答按键时,对应的 p 口将变为低电平,通过程序控制使得对

5、应的发光二极管发光,并在数码管上显示对应的按键号码。3. 如果单片机内部的定时器定时完毕无人抢答,则通过定时器中断来启动蜂鸣器响。4. 抢答显示电路,单片机通过 p0 口输出对应的低电平控制发光二极管发光,以及将按键号码输到 cd4511 ,通过 cd4511 译码给数码管,显示按键号码。3.5系统调试故障: 调试时定时到时时刻蜂鸣器未响,查其原因是蜂鸣器与电源之间的电阻太大,使蜂鸣器的电流太小,不能发音,将板子的电阻取下后 ,再用仿真器仿真 ,蜂鸣器恢复功能 ,当定时到时立即响起。情况正常时:接上电源,发光二极管全部发光,蜂鸣器响,按下主持人按键,发光二极管灭,蜂鸣器不响,数码管显示定时器开

6、始倒计时,从此时起分两种情况:第一种情况 , 定时到之前有人按下按键抢答 , 则定时器锁定并显示按键号码,主持人按下 “ 开始 ” 按键开始另一轮答题 ; 第二种情况,无人按键抢答,定时器到时,蜂鸣器响,主持人按下 “ 开始按键 ”开始另一轮答题。4.原理图5.程序代码p3.0为开始抢答,p3.1为停止,p1.0-p1.7为八路抢答输入,数码管段选p0口,位选p2的低三位口,蜂鸣器输出为p3.6口。 org 0000h ajmp main org 0003h ajmp int0sub org 000bh ajmp t0int org 001bh ajmp t1intok equ 20h ; 抢

7、答开始标志位ring equ 22h ; 响铃标志位 org 0040hmain: mov r1,#0fh; 初设抢答时间为15s mov r2,#0ah; 初设答题时间为10s mov tmod,#11h; 设置未定时器/模式1 mov th0,#0f0h mov tl0,#0ffh; 越高发声频率越高,越尖 mov th1,#3ch mov tl1,#0b0h; 50ms为一次溢出中断 setb ea setb et0 setb et1 setb ex0 setb ex1; 允许四个中断,t0/t1/int0/int1 clr ok clr ring setb tr1 setb tr0;

8、一开始就运行定时器,以开始显示fff.如果想重新计数,重置th1/tl1就可以了查询程序:start: mov r5,#0bh mov r4,#0bh mov r3,#0bh acall display; 未开始抢答时候显示fff jb p3.0,next acall delay jb p3.0,next;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询 acall bark;按键发声 mov a,r1 mov r6,a; 送r1->r6,因为r1中保存了抢答时间 setb ok; 抢答标志位,用于count只程序中判断是否查询抢答 mov r3,#0ah;

9、 抢答只显示计时,灭号数 ajmp count;进入倒计时程序,"查询有效抢答的程序"在count里面next: jnb p1.0,false1 jnb p1.1,false2 jnb p1.2,false3 jnb p1.3,false4 jnb p1.4,false5 jnb p1.5,false6 jnb p1.6,false7jnb p1.7,false8 ajmp start非法抢答处理程序:false1: acall bark; 按键发声 mov r3,#01h ajmp errorfalse2: acall bark mov r3,#02h ajmp erro

10、rfalse3: acall bark mov r3,#03h ajmp errorfalse4: acall bark mov r3,#04h ajmp errorfalse5: acall bark mov r3,#05h ajmp errorfalse6: acall bark mov r3,#06h ajmp errorfalse7: acall bark mov r3,#07h ajmp errorfalse8: acall bark mov r3,#08h ajmp error倒计时程序(包括有效抢答程序): count: mov r0,#00h; 重置定时器中断次数 mov th

11、1,#3ch mov tl1,#0b0h; 重置定时器recount: mov a,r6; r6保存了倒计时的时间 mov b,#0ah div ab; 除十分出个位/十位 mov 30h,a; 十位存于(30h) mov 31h,b; 个位存于(31h) mov r5,30h ; 取十位 mov r4,31h ; 取个位 mov a,r6 clr c subb a,#07h jnc larger ; 大于5s跳到larger,小于等于5s会提醒 mov a,r0 cjne a,#0ah,full; 1s中0.5s向下运行 clr ring ajmp checkfull: cjne a,#14

12、h,check; 1s时,响并显示号数并清r0,重新计时 setb ring mov a,r6 jz quit; 计时完毕 mov r0,#00h dec r6; 一秒标志减1 ajmp checklarger: mov a,r0 cjne a,#14h,check; 如果1s向下运行,否者跳到查"停/显示" dec r6; 计时一秒r6自动减1 mov r0,#00hcheck: jnb p3.1,quit; 如按下停止键退出 acall display jnb p1.0,true1 jnb p1.1,true2 jnb p1.2,true3 jnb p1.3,true4

13、 jnb p1.4,true5 jnb p1.5,true6 jnb p1.6,true7 jnb p1.7,true8 ajmp recountquit: clr ok ; 如果按下了"停止键"重新回到开始 clr ring acall bark ajmp start正常抢答处理程序:true1: acall bark; 按键发声 mov a,r2 mov r6,a; 抢答时间r2送r6 mov r3,#01h clr ok; ajmp loop2true2:acall bark; mov a,r2 mov r6,a mov r3,#02h clr ok ajmp loo

14、p2true3:acall bark; mov a,r2 mov r6,a mov r3,#03h clr ok ajmp loop2true4:acall bark; mov a,r2 mov r6,a mov r3,#04h clr ok ajmp loop2true5: acall bark; mov a,r2 mov r6,a mov r3,#05h clr ok ajmp loop2true6: acall bark; mov a,r2 mov r6,a mov r3,#06h clr ok ajmp loop2true7: acall bark; mov a,r2 mov r6,a

15、 mov r3,#07h clr ok ajmp loop2true8: acall bark; mov a,r2 mov r6,a mov r3,#08h clr okloop2: ajmp display; 抢答后停止计时,等待返回setb ring jnb p3.1 quit ajmp loop2犯规抢答程序:error: setb ring; 犯规响铃 mov r5,#0bh mov r4,#0bh; 显示ff和犯规号数loop3: acall display jnb p3.1 quit1; 等待“停止”键按下 ajmp loop3 quit1: clr ring clr ok ajm

16、p start显示程序:display:mov dptr,#dat1; 查表显示程序,利用p0口做段选码口输出/p2低三位做位选码输出 mov a,r5 movc a,a+dptr mov p2,#01h mov p0,a acall delay mov dptr,#dat2 mov a,r4 movc a,a+dptr mov p2,#02h mov p0,a acall delay mov a,r3 movc a,a+dptr mov p2,#04h mov p0,a acall delay retdat1:db 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6f

17、h,00h,71h;"灭","1","2","3","4","5","6","7","8","9","灭","f"dat2:db 3fh, 06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00h,71hdelay1: mov 35h,#08hloop0: acall display djnz 35h,loop0 ret延时(显示和去抖

18、动用到):delay: mov 32h,#12hloop: mov 33h,#0afhloop1: djnz 33h,loop1 djnz 32h,loop ret发声程序:bark: setb ring acall delay1 acall delay1 clr ring; 按键发声 retint0(抢答时间r1调整程序): int0sub:mov a,r1 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display; 先在两个时间led上显示r1 jnb p3.2,inc0; p3.2为+1s键,如按下跳到inco jnb p3.3,dec0; p3.3为-1s键,如按下跳到deco jnb p3.4,back0; p3.4为确定键,如按下跳到backo ajmp int0subinc0: mov a,r1 cjne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论