课程设计单片机原理基于单片机的八路抢答器设计.doc

上传人:文库蛋蛋多 文档编号:4150522 上传时间:2023-04-07 格式:DOC 页数:26 大小:537.50KB
返回 下载 相关 举报
课程设计单片机原理基于单片机的八路抢答器设计.doc_第1页
第1页 / 共26页
课程设计单片机原理基于单片机的八路抢答器设计.doc_第2页
第2页 / 共26页
课程设计单片机原理基于单片机的八路抢答器设计.doc_第3页
第3页 / 共26页
课程设计单片机原理基于单片机的八路抢答器设计.doc_第4页
第4页 / 共26页
课程设计单片机原理基于单片机的八路抢答器设计.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《课程设计单片机原理基于单片机的八路抢答器设计.doc》由会员分享,可在线阅读,更多相关《课程设计单片机原理基于单片机的八路抢答器设计.doc(26页珍藏版)》请在三一办公上搜索。

1、青岛理工大学单片机原理及接口技术课程设计报告课题名称基于单片机的八路抢答器设计学院自机学院专业电气工程专业班级电气(x)班姓名xx学号200x0417xxx时间20xx年12月27日目 录 引言(2)一、设计任务及要求(2) 二、步骤及方案(2) (1)方案(2) (2)设计步骤(4) 三、硬件设计(4)(1)总体设计电路图(4)(2)抢答器电路(4)(3)时序控制电路(5)(4)复位电路(5)(5)报警电路(6)(6)LED数码显示器和驱动电路(6)四、软件设计(6)(1)程序流程图(6)(2)显示和查询子程序(7)(3)抢答处理子程序(8)(4)倒计时子程序(12)(5)报警子程序(12)

2、五、Proteus软件调试仿真(12) (1)调试过程(12) (2)仿真结果(12)六、心得体会(14)七、参考文献(15)附录(16)引言基于MCS-51系列单片机AT89C51的一种抢答器.该电路采用AT89C51单片机的四个8位并行I/O接口连接各个控制电路来实现抢答功能.该电路设计简单,进行简单更改便可实现对8组或8组以下的人员抢答.应用很广泛.一、设计任务及要求 (1)、设计任务基于MCS-51系列单片机AT89C51,设计一个多功能八路抢答器 (2)、设计要求 1)抢答器同时供8名选手或8个代表比赛,分别用8个按钮K1K8。 2)设置一个系统清除和抢答控制开关K0,该开关由主持人

3、控制。 3)抢答器具有锁存功能与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。 4)主持人按下抢答“开始”按钮,抢答开始。 5)当某一路抢答成功时,在数码管上显示成功信息和该路的号数; 6)当某一路抢答违规时,能在数码管上显示违规信息和该路的号数; 7)具有定时抢答发功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。 8)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 9)

4、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。 10)其它功能。二、步骤及方案 (1)、方案用P0口连接上拉电阻,完成驱动LED数码显示管的显示功能;用P1口串接按键,可由选手自己控制抢答机会;利用P3口的RXD、TXD做控制开关。编写简单的汇编语言程序,导入单片机,以达到抢答功能,若有选手进行了犯规抢答,蜂鸣器会发出声响,以告诉主持人有人违规,抢答无效并进行系统清除,重新开始进行抢答,并显示除抢答倒计时,当时间剩余5秒时蜂鸣器发出声响以提醒选手赶快抢答。选手按正确的操作抢答,单片机倒计时,利用AT89C51移位寄存8段数码管,实现倒计时显示时间,当时间剩

5、余5秒时提醒选手时间快到了,要及时作答,并启动蜂鸣器。若抢答倒计时和回答倒计时为零,则显示初始化状态.元件清单:MCS-51系列单片机AT89C51、4位LED数码管(共阳)、普通按钮Button、喇叭Sounder、晶振、排电阻(10K)上拉电阻和电容等。总设计原理框架图:显示电路图报警电路主持人控制开关电路选手控制电路晶振和复位电路图 单 片 机 AT89C51单片机选择:AT89C51作为抢答电路系统的核心器件。该器件是INTEL公司生产的MCS51系列单片机的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS51的CMOS产品。不仅结合了HMOS的高速

6、和高密度技术及HMOS的低功耗特征,而且继承和扩展了MCS48单片机的体系结构和指令系统。AT89C51单片机的主要特征:A、与MCS51兼容,4K字节可编程闪烁存储器;b、灵活的在线系统编程,掉电标识和快速编程特性;c、寿命为1000次写/擦周期,数据保留时间可10年以上;d、全静态工作模式:0HZ33HZ;e、三级程序存储器锁定;f1288位内部RAM,32位可编I/O线;g、两个16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个全双工I/O接口。h、有位寻址功能、适于布尔处理的位处理机。单片机与报警电路系统中的报警电路是由发光二极管和限电流电阻组成,并与单片机的P1.2端口

7、连接。P1端口的作用和接线方法与P2端口相同,不同的是Flash编程和程序校验,P1接收低8位地址数据。程序存储器 本系统的所需的没有必要外扩程序存储器,所以不用考虑存储器扩充容量的大小,单片机本身的存储器就已足够。数据存储器 根据系统的功能要求,不需扩展外部RAM,89C51本身的RAM就能满足要求。I/O接口芯片 根据系统的功能要求,I/O接口芯片的也不需进行扩展。总线驱动能力 MCS-51系列单片机的外部扩展功能很强,但4个8位并行的带负载的能力是有限的。P0口能驱动8个TTL电路,P1P3口只能驱动3个TTL电路。在实际运用中,这些端口的负载不应超过总负载能力的70%,以保证留有一定的

8、余量,以增强系统的抗干扰能力,在外接负载较多的情况下,应采用总线驱动电路,以提高端口的驱动能力和抗干扰能力 (2)步骤 1) 确定方案后,绘制总设计电路图,并选择适当的元件画出设计图; 2)编写汇编语言程序,并进行认真修改和调试; 3)将程序导入单片机,并进行仿真; 4)成功完成所需功能后进行整理,并书写报告总结.三、硬件设计 (1)总设计电路图(2)抢答器电路该电路完成两个功能:一是分辨出选手按键的先后,并锁存有县抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键,即使其他选手操作无效。抢答器具有锁存、定时、显示和报警功能。(3)时序控制电路时序控制电路是抢答器设计的关键,它要完成

9、的功能是:一、主持人按动“开始”按键KO时,抢答电路和定时电路进入正常抢答状态。二、当主持人未按动“开始”按键,但有参赛选手按动抢答键时,蜂鸣器声响,抢答电路和定时电路停止工作。(4)复位电路复位是计算机的一个重要工作状态。在单片机工作时,接电之前要复位,断电后也要复位,在抢答器中复位则为定时做铺垫的,在抢答之前要复位,抢答完毕后也要复位,按了复位键之后,LED的显示全为P00,当引脚RST端保持两个机器周期以上的高电平,AT89C51可以进入复位状态。(5)报警电路如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示为00,并发出一段时间的报警声 (6)LED数码显

10、示器和驱动电路本设计所用的显示器为7段共阴极接法LED显示器,当某一发光二极管的阳极输入高电平时,则该段发光。利用P0口做段选码口输出,P2口的134三位做位选码输出.四、软件设计(1)程序流程图(2)显示和查询子程序;=查询程序=START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未开始抢答时候显示P00 JB P3.0,NEXT ACALL DELAY JB P3.0,NEXT ;抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 ACALL BARK MOV A,R1 MOV R6

11、,A ;送R1-R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R3,#0AH ;抢答只显示计时,灭号数 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,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1: JMP FALSE7TZ2: JMP FALSE8;=显示程序= DIS

12、PLAY: MOV DPTR,#DAT1 ;查表显示程序 MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAYRETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H ;灭,1,2,3,4,5,6,7,8,9,灭,PDAT

13、2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,3fH ;第一个为零,最后一个为零,其他与上相同,因为十位如果为零显示熄灭(3)抢答处理子程序;=非法抢答处理程序=FALSE1: ACALL BARK ;按键发声 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALSE5: ACALL BARK MOV

14、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;=正常抢答处理程序=TRUE1: ACALL BARK MOV A,R2 MOV R6,A ;回答时间R2送R6 MOV R3,#01H CLR OK ;因为答题的计时不再查询抢答,所以就锁了抢答,回答倒计时开始. AJMP COUNTTRUE2:ACALL BARK MOV A,R2 MOV R6,A MOV R

15、3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJMP COUNTTRUE7: ACALL BARK

16、MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯规抢答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH ;0.5s向下运行-灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 AJMP CHECK

17、1FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情况,响并显示号数并清R0,重新计 SETB RING MOV R0,#00H MOV R3,34H ;取回号数 MOV R5,#0BH MOV R4,#0BH ;显示00和号数 AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OKAJMP START (4)倒计时子程序;=倒计时程序(抢答倒计时和回答倒计时都跳到该程序)=COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1

18、,#0B0H ;重置定时器RECOUNT: MOV A,R6 ;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MOV B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;个位存于(31H) MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHEC

19、K ;下面是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 JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT:

20、 MOV A,DATA0 JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNT TZ3: JMP TRUE7 TZ4: JMP TRUE8 QUIT: CLR OK ;如果按下了停止键执行的程序 CLR RING AJMP START(5)报警子程序;=发声程序=BARK: SETB RING ACALL DISPLAY ACALL DISPLAY CLR RING ;按键发声RET;=TO溢

21、出中断(响铃程序)=T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.6 ;RING标志位为1时候P3.6口不断取反使喇叭发出一定频率的声音OUT: RETI五、Proteus的调试与仿真(1)调试过程基于设计思想,我们将编写好的汇编语言程序导入了单片机,利用软件Proteus进行仿真,得到想要的结果。 (2)仿真结果1)按下仿真开关,出现下图(图.a)的结果:图.a按下仿真开关,LED显示管上显示初始状态P00,等待主持人按下“开始”按键;2)开始:当按下仿真开始键,出现下图(图b)的仿真结果:图.b主持人按下“开始”按键,LED

22、显示管上显示抢答倒计时30s,并逐渐往下减1,直到有人按下抢答按键。3)抢答倒计时剩余5秒时出现下图(图c)的结果:图.c若抢答倒计时剩余5秒时,蜂鸣器发出声响,直到为零时恢复初始状态。4)正确抢答后出现下图(图d)的结果:图.d有选手正确抢答后,显示管上显示选手号码和回答倒计时,并且回到倒计时开始逐渐减1,直到按下“停止”键。5)回答倒计时剩余5秒时,出现下图(图e)的结果:图.e若无人按下“停止”键,回答时间剩余5秒时,蜂鸣器发出声响,直到时间为零时,恢复初始状态。6)有选手违规抢答是,出现下图(图f)的结果:图.f如果有选手在主持人还未按下“开始”键就做抢答,显示管将显示出该选手的号码,

23、同时开始闪烁,蜂鸣器发出声响。 六、心得体会开始选择课程设计题目是,看见这个题目觉得挺好弄得,但是想的总是美好的。这次课程设计的仿真工具是从来没有使用过,是在老师和同学的指导下学会的,结合单片机设计电路更是从来没有接触过,但是没有办法,所以通过上网或去图书馆查阅资料了解了一些,经过两个星期的设计,从开始的什么都不会,慢慢的自己会更改电路,会仿真,导入程序后会自己进行一些修改。虽然不是很系统的学习这些,但是基本的操作已经了解了。通过这次课程设计,我们意识到,要想设计出好的电路,必须清楚明白的知道题目所要表达的意思,并且要了解各种元器件的用途,这次设计综合了我们所学习过的知识,也对这些知道进行了一

24、定的扩展了解,这些对我们是很有帮助的。七、参考文献(1)吴亦峰,陈德为,单片机原理与接口技术,电子工业出版社,2010(2)程相波,卫安军,基于MCS单片机的八路抢答器设计方法研究【J】,北京工业职业技术学院学报2007,6(2)附录:定时器T1时间初值,设50ms时间初值为X,X的计算方法为X=(216-50*103),X=15536D=3CB0HOK EQU 25H ;抢答开始标志位 RING EQU 27H ;响铃标志位 DATA0 EQU 40H ;抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH AJMP T

25、1INTMAIN: MOV R1,#30 ;初设抢答时间为30s MOV R2,#60 ;初设答题时间为60s MOV TMOD,#10H ;设置未定时器方式2 MOV TH0,#0ECH MOV TL0,#0FFH ;越高发声频率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H ;50ms为一次溢出中断 SETB EA SETB ET0 SETB ET1 ;允二个中断,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0 ;=查询程序=START: MOV DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3

26、,#0BH ACALL DISPLAY ;未开始抢答时候显示P00 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 ;抢答只显示计时,灭号数 AJMP COUNT ;进入倒计时程序,查询有效抢答的程序在COUNT里面NEXT: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3

27、 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP STARTTZ1: JMP FALSE7TZ2: JMP FALSE8;=非法抢答处理程序=FALSE1: ACALL BARK ;按键发声 MOV R3,#01H AJMP ERRORFALSE2: ACALL BARK MOV R3,#02H AJMP ERRORFALSE3: ACALL BARK MOV R3,#03H AJMP ERRORFALSE4: ACALL BARK MOV R3,#04H AJMP ERRORFALS

28、E5: 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 TH1,#3CH MOV TL1,#0B0H ;重置定时器RECOUNT: MOV A,R6 ;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6 MO

29、V B,#0AH DIV AB ;除十分出个位/十位 MOV 30H,A ;十位存于(30H) MOV 31H,B ;个位存于(31H) MOV R5,30H ;取十位 MOV R4,31H ;取个位 MOV A,R6 SUBB A,#07H JNC LARGER ;大于5s跳到LARGER,小于等于5s会提醒 MOV A,R0 CJNE A,#0AH,FULL ;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,#14H,CHECK ;下面是1s的情况,响并显示号数并清R0,重新计时 SETB RING MOV A,R6 JZ QUIT ;计时完毕 MO

30、V 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 JB OK,ACCOUT ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT: MOV A,DATA0 JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P

31、1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TZ3 JNB P1.7,TZ4 AJMP RECOUNT TZ3: JMP TRUE7待添加的隐藏文字内容2 TZ4: JMP TRUE8 QUIT: CLR OK ;如果按下了停止键执行的程序 CLR RING AJMP START;=正常抢答处理程序=TRUE1: ACALL BARK MOV A,R2 MOV R6,A ;回答时间R2送R6 MOV R3,#01H CLR OK ;因为答题的计时不再查询抢答,所以就锁了抢答,回答倒计时开始. AJMP COUNTTRUE2:ACALL BA

32、RK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H CLR OK AJMP COUNTTRUE4:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#04H CLR OK AJMP COUNTTRUE5: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#05H CLR OK AJMP COUNTTRUE6: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#06H CLR OK AJ

33、MP COUNTTRUE7: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK MOV A,R2 MOV R6,A MOV R3,#08H CLR OK AJMP COUNT;=犯规抢答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH ;0.5s向下运行-灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 AJMP CHECK1FLASH: CJNE A,#14H,CHECK1 ;下面是1s的情

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号