1、单片机课程设计 抢答器设计计算机与信息工程学院单片机课程设计抢答器的设计专 业:计算机科学与技术班 级:姓 名:学 号:指导教师:年 月 日摘要:抢答器在我们的日常生活中是很常见的,特别是在一些知识竞赛和一些益智性的电视节目中抢答器的作用更是不容忽视。能够实现抢答器功能的方式有多种,可以采用前期的模拟电路、数字电路或模拟与数字电路相结合的方式。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测日新月异更新。现在设计一种利用微电脑芯片作为核心部件进行逻辑控制及信号产生的单片机技术设计的9 路多功能智力竞赛抢答器。关键词: PLC;单片机;抢答器;设计 引言在电视和学校中我们
2、会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。 1. 方案论证抢答器是将键盘部分、单片机部分、锁存显示部分按指示的3个单元电路相接。这样就将整个硬件部分连接起来组成一个整体电路。抢答器由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能;扩展电路完成定时抢答的功能。定时抢答器的工作过程是:接通电源时,节目主持人将开关置于“清除”位置,抢答器处于禁止工作状态,
3、编号显示器灭灯,定时显示器显示设定的时间,当节目主持人宣布“抢答开始”,同时将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,定时器倒计时。当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。2. 硬件详细设计2.1单片机电路引脚各部分连接及功能1)本设计采用Atmel 公司生产的单片机AT89C2051 实现主要功能, AT89C2051 的功能与80C51 功能相似。AT89C205 的各引脚功能情况为:2)P1 口( P110P117) 8 个引脚:P117 为最高位, P110 为最低位。在AT89C2051 不带片外存储器时, P1 口可作
4、为通用I/ O 口使用, 3)P110 P117 :用于传送CPU 的输入/ 输出数据。这时输出数据可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性; 4)P37 引脚外接电阻、放大管以及扬声器;5)RST 复位线,外接电容、电阻,使AT89C2051处于复位工作状态6)TXD :串行口数据发送;7)RXD:串行口数据接收;8)XMT1 和XMT2 外接石英晶体和微调电容,为片内振荡电路输入线,用来连接AT89C2051 片内OSC 的定时反馈网络。9)INT0/ INT1 :外部中断0/ 1 输入; 10)T/ C1 ,T/C0:定时器/ 计数器1/ 0 的外部
5、输入。2.2 单片机的锁存显示部分1)锁存部分:采用串行并行8 位输出锁存移位寄存器74LS595 要显示字符,把这个字符转换成相应的字形码,然后通过串行口发送到74LS595 ,74LS595 把串行口接收到的数据变为并行输出加到数码管上(提供adp的驱动) 。本设计采用的是共阳极8 段数码管显示器。2) 显示部分:采用动态扫描4 位LED 显示接口电路,LED 动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8 个笔划段adp 同名端并联在一起,而每一个显示器的公共极COM 是各自独立地受I/ O线控制,CPU 的字段输出口送出字形码时,所有显示器由于同名端并联接收
6、到相同的字形码,但究竟哪个显示器亮,则取决于COM 端,这一端是由I/ O 控制的,可以自行决定何时显示哪一位。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,尽管实际上各位显示器并非同时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。3.硬件详细设计3.1 单片机内部程序信号流程单片机AT89C2051 内部程序信号流程如图1所示。首先主持人按下复位按钮,单片机进行片内内部扫描的同时主持人可以调节抢答时间和允许答题时间,在整定的时间当中如果没有调节抢答时间,则抢答器工作为设置的默认抢答时间值,同时在主持人未按下抢答按钮的时候有选手抢答则此时单片机发出一个选
7、手犯规信号送入扬声器,只有主持人允许后,选手才能开始抢答。与此同时单片机开始定时并送出一个信号到数字集成电路显示抢答时间,当中如果有选手抢答则送入一个信号到扬声器并显示选手号,同时单片机开始对选手回答问题定时,时间到则对选手报警,在之前允许抢答时间到也发出报警信号。到主持人发出下一次抢答信号。图1 单片机内部程序信号流程图4. PROTUCE软件仿真系统仿真还用到了PROTUCE软件,仿真如图2、图3所示。可通过仿真可以完全显示出所设计系统的功能,对于程序的调试等有很大的帮助.系统仿真时首先要在使用伟福编译器,把所写的程序进行编译,同时在仿真器里设置生成HEX文件,编译无错误时进行PROTUC
8、E仿真。首先要新建一个文档是DNS型的找出需要的器件,可以使用搜索功能。接着把各个器件放到合适的位置都要放到蓝色框内。然后根据自己的设计要求连线。等所有的元件都连接完成后可以把,伟福编译生成的无错误文件加载到AT89C51中,方法是,右键点中器件然后在用左键点击,出来一个对话框在program file后选择要添加文件,文件要求必须是HEX文件。然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。图2 六号抢答到时时的显示图图3 倒计时到30秒时的显示图5.课程设计体会本设计是以实际电路作为最终形式,该电路允许
9、9 人同时参赛(可扩展) ,并显示剩余答题时间与剩余允许抢答时间及抢答选手号,有状态显示电路及报警电路。功能相当齐全,在以后还可扩展功能。如自动控制记分器进行记分,并通过串行口与PC 机通信,用PC 机统计选手得分情况,完全实现智能化和公正,减小人为因素的影响。通过运用我所学习的模拟电子技术、数字电子技术和通信电子线路等关于电子技术的课程中的理论知识来完成此项设计。但在设计的过程中,我遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容,并且通过查阅书籍和相关文献资料来提高独立分析能力和解决实际问题的能力;掌握并熟练运用相关软件进行操作;熟悉常用电
10、子器件的类型、特征和功能,并本着合理采选用的原则进行选用;进一步熟悉电子仪器的正确使用。在此我要感谢我的指导老师,感谢老师给我这样的锻炼机会。在整个设计过程中我懂得了许多东西,不仅培养了我独立工作的能力,树立了对自己工作能力的信心,相信这次设计对今后的工作有非常重要的影响,而且还大大提高了我的动手能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。通过这次设计我最大的收获是我学到了许多新的知识。这次的设计就到此结束了,愿这个小小的抢答器可以发出它的功能!6.参考文献1 沈文斌. 嵌入式硬件系统设计与开发实例详解M . 北京:电子工业出版社,2005.2 张鑫. 单片机原理及应用M .
11、北京:电子工业出版社,2005.3 潘永雄. 电子线路CAD 实用教程M . 2 版. 西安:西安电子科技大学出版社,2005.4 张齐. 单片机应用系统设计技术基于C 语言编程M .北京:电子工业出版社,2004.5 杨元挺. 电子技术技能训练 M . 北京: 高等教育出版社,2002.6 丁元杰. 弹片微机原理及应用 M . 北京: 机械工业出版社,2001.系统提示信息7.程序清单 OK EQU 20H ;抢答开始标志位;将P1口与P2口互换,P3.0-P1.0,P3.1-P1.7RING EQU 22H ;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT
12、0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040H;=-;单片机抢答器主程序设计;=MAIN: MOV R1,#0FH ;初设抢答时间为15sMOV R2,#0AH ;初设答题时间为10sMOV TMOD,#11H ;设置未定时器/模式1MOV TH0,#0F0HMOV TL0,#0FFH ;越高发声频率越高,越尖MOV TH1,#3CHMOV TL1,#0B0H ;50ms为一次溢出中断SETB EASETB ET0SETB ET1SETB EX0SETB EX1 ;允许四个中断,T0/T1/INT
13、0/INT1CLR OKCLR RINGSETB TR1SETB TR0 ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了;=查询程序=START: MOV R5,#0BHMOV R4,#0BHMOV R3,#0BHACALL DISPLAY ;未开始抢答时候显示FFFJB P1.0,NEXT ;dddddddACALL DELAYJB P1.0,NEXT ;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询ACALL BARK ;按键发声MOV A,R1MOV R6,A ;送R1-R6,因为R1中保存了抢答时间SETB OK ;抢答标志位,用于COUNT
14、只程序中判断是否查询抢答MOV R3,0AH ;抢答只显示计时,灭号数AJMP COUNT ;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.1,FALSE1JNB P1.2,FALSE2JNB P1.3,FALSE3JNB P1.4,FALSE4JNB P1.5,FALSE5JNB P1.6,FALSE6AJMP START;=非法抢答处理程序=FALSE1: ACALL BARK ;按键发声MOV R3,#01HAJMP ERRORFALSE2: ACALL BARKMOV R3,#02HAJMP ERRORFALSE3: ACALL BARKMOV R3,#0
15、3HAJMP ERRORFALSE4: ACALL BARKMOV R3,#04HAJMP ERRORFALSE5: ACALL BARKMOV R3,#05HAJMP ERRORFALSE6: ACALL BARKMOV R3,#06HAJMP ERROR;=INT0(抢答时间R1调整程序)=INT0SUB:MOV A,R1MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAY ;先在两个时间LED上显示R1JNB P3.4,INC0 ;P3.4为+1s键,如按下跳到INCOJNB P3.5,DEC0 ;P3.5为-1s键,如按下跳到
16、DECOJNB P1.7,BACK0 ;P3.1为确定键,如按下跳到BACKOAJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1AJMP INT0SUBDEC0: MOV A,R1JZ SETR1 ;如果R1为0, R1就置99,DEC R1ACALL DELAY1AJMP INT0SUBSETR1: MOV R1,#63HACALL DELAY1AJMP INT0SUBBACK
17、0: RETI ;=INT1(回答时间R2调整程序)=INT1SUB:MOV A,R2MOV B,#0AHDIV ABMOV R5,AMOV R4,BMOV R3,#0AHACALL DISPLAYJNB P3.4,INC1JNB P3.5,DEC1JNB P1.7,BACK1AJMP INT1SUBINC1: MOV A,R2CJNE A,#63H,ADD1MOV R2,#00HACALL DELAY1AJMP INT1SUBADD1: INC R2ACALL DELAY1AJMP INT1SUBDEC1: MOV A,R2JZ SETR2DEC R2ACALL DELAY1AJMP INT
18、1SUBSETR2: MOV R2,#63HACALL DELAY1AJMP INT1SUBBACK1: RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=COUNT: MOV R0,#00H ;重置定时器中断次数MOV TH1,#3CHMOV TL1,#0B0H ;重置定时器RECOUNT:MOV A,R6 ;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6MOV B,#0AHDIV AB ;除十分出个位/十位MOV 30H,A ;十位存于(30H)MOV 31H,B ;个位存于(31H)MOV R5,30H ;取十位MOV R4,31H ;取个位MOV A,R6SUB
19、B A,#07HJNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒MOV A,R0CJNE A,#0AH,FULL;1s中0.5s向下运行CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计SETB RINGMOV A,R6JZ QUIT ;计时完毕MOV R0,#00HDEC R6 ;一秒标志减1AJMP CHECKLARGER:MOV A,R0CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查停/显示DEC R6 ;计时一秒R6自动减1MOV R0,#00HCHECK: JNB
20、P1.7,QUIT ;如按下停止键退出ACALL DISPLAYJB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)AJMP RECOUNTACCOUT:JNB P1.1,TRUE1JNB P1.2,TRUE2JNB P1.3,TRUE3JNB P1.4,TRUE4JNB P1.5,TRUE5JNB P1.6,TRUE5AJMP RECOUNTQUIT: CLR OK ;如果按下了停止键执行的程序CLR RINGAJMP START;=正常抢答处理程序=TRUE1: ACALL BARK ;按键发声MOV A,R2MOV R6,A ;抢答时间
21、R2送R6MOV R3,#01HCLR OK ;因为答题的计时不再查询抢答,所以就锁了抢答AJMP COUNTTRUE2: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJMP COUNTTRUE3: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTT
22、RUE6: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNT;=犯规抢答程序=ERROR: MOV R0,#00HMOV TH1,#3CHMOV TL1,#0B0HMOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0CJNE A,#0AH,FLASH ;0.5s向下运行-灭并停响CLR RING MOV R3,#0AHMOV R4,#0AHMOV R5,#0AH ;三灯全灭AJMP CHECK1FLASH: CJNE A,#14H,CHECK1 ;下面系1s的情况,响并显示号数并清R0,重新计SETB RING
23、MOV R0,#00HMOV R3,34H ;取回号数MOV R5,#0BHMOV R4,#0BH ;显示FF和号数AJMP CHECK1CHECK1:JNB P1.7,QUIT1ACALL DISPLAYAJMP HEREQUIT1: CLR RINGCLR OKAJMP START;=单片机抢答器显示程序=DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,MOV A,R5MOVC A,A+DPTRMOV P2,#01HMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R4MOVC A,A+DPTRMO
24、V P2,#02HMOV P0,AACALL DELAYMOV A,R3MOVC A,A+DPTRMOV P2,#04HMOV P0,AACALL DELAYRETDAT1:DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;灭,1,2,3,4,5,6,7,8,9,灭,FDAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一个为零,其他与上相同,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DIS
25、PLAYDJNZ 35H,LOOP0RET;=延时(显示和去抖动用到)=DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1DJNZ 32H,LOOPRET;=发声程序=BARK: SETB RINGACALL DELAY1ACALL DELAY1CLR RING ;按键发声RET;=TO溢出中断(响铃程序)=T0INT: MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUT;CPL P3.6 ;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断(计时程序)=T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2