protues课程设计八路抢答器_第1页
protues课程设计八路抢答器_第2页
protues课程设计八路抢答器_第3页
protues课程设计八路抢答器_第4页
protues课程设计八路抢答器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 . . . 目 录摘 要1第1章 系统概述21.2课程设计要求21.3硬件系统框图21.4软件系统框图3第2章 系统硬件设计42.1晶振复位电路42.2开关控制电路42.3显示电路52.4硬件电路总图6第3章 软件系统设计73.1程序概述73.2程序流程图73.3源程序8第4章 系统仿真与调试164.1仿真软件proteus简介164.2 LED数码管显示调试16第5章 总结与展望19参考文献:19摘 要单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。它由 CPU 、存储器(包括 RAM 和 ROM )、 I/O 接口、定时/计数器、中断控制功能

2、等均集成在一块芯片上,片各功能通过部总线相互连接起来。它具有优异的性能价格比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等诸多优点。电子抢答器的中心构造一般都是由单片机以与外围电路组成,对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。多适用于学校和企事业单位举行的简单的抢答活动。通常有一台主机(并配有操作键盘),每位选手配有自动记分的显示器和抢答按钮。系统设置一个系统清除和抢答控制开关S,该开关由主持人控制。并且每次设有抢答时间若无人抢答超过抢答时间扬声器发出报警声响,若有人抢答计时器停止计时并显示回答倒计时和选手编号。关键词:AT89C5

3、1单片机;抢答电路;7SEG8位数码管;复位电路第1章 系统概述1.1课程设计的目的标题行段前段后需设置0.5行加深对MCS-51单片机的理解,掌握单片机应用系统的设计方法;掌握常用接口芯片的正确使用方法;强化单片机应用电路的设计与分析能力;提高学生在单片机应用方面的实践技能和科学作风;培育学生综合运用理论知识解决问题的能力,力现理论结合实际,学以致用的原则。通过查阅资料、硬件设计、程序设计、安装调试、撰写论文等环节,初步掌握工程设计方法和组织实践的基本技能;熟悉科学实践的程序和办法,为今后从事生产技术工作打下必要的基础;学会灵活运用已经学过的知识,并能不断接受新的知识,大胆发明创造的设计理念

4、。1.2课程设计要求设计一个八路抢答器,能进行抢答和显示抢答选手编号,并显示抢答和回答时间并倒计时:(1)掌握51单片机的汇编语言的基本用法。(2)掌握LED数码管的使用。(3)掌握数码管动态扫描的方法。(4)掌握KILE,WAVE6000的编译与调试。(5)掌握PROEUS的仿真与调试。1.3硬件系统框图图1.3(按要求设置图编号) 硬件系统框图1.4 软件系统框图图1.4 软件系统框图第2章 系统硬件设计2.1 晶振复位电路复位是单片机的初始化操作,单片机启动运行时,都必须复位。他的作用是使CPU和系统中其他的部件都处于一个确定的初始状态,并从这个状态开始工作。一般,80C51系列单片机本

5、身是不能自动复位的,必须配合相应的外部电路才能实现。图2.1 晶振与复位电路2.2 开关控制电路P1.0P1.7分别接八位选手的抢答按钮;P3.0和P3.1分别接“开始抢答”按钮和“停止”按钮;P3.7接蜂鸣器;P3.2接74ls04器件;RST接复位开关;P1接八位选择开关;P3.3和P3.4接“抢答时间调整”按钮和“回答时间调整”按钮;P3.5和P3.6接“回答时间”加1和减1按键。图2.2 开关控制电路2.3 显示电路显示电路由一块8位共阴级的7SEG-MPX4-CA 数码管组成。P0(P0.0-P0.6)端口接数码管的段选,同时接7个10k欧的上拉电阻。P1端口通过总线与八位抢答开关和

6、74HC30的八位端口连接。P2.0-P2.2接数码管的1、2、4位位选。图2.31(什么芯片?)管脚连接图和引脚图图2.32 显示电路部分2.4 硬件电路总图将各个部分组装连接起来,认真检查并烧入程序,调试直至结果正确。总电路图如下:图2.5 仿真电路总图第3章 软件系统设计3.1 程序概述本抢答器程序通过LED动态扫描的方法,允许二个中断T0/T1,一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了。并有去抖动程序,如果"开始键"按下就向下执行,否者跳到非法抢答查询,用来实现非法抢答和正确抢答。还含有加一减一程序用来调整抢答和回答时间。3.

7、2 程序流程图初始化显示FFF开始键是否按下20秒钟是否回答时间调整键是否按下是否有人按下抢答键显示抢中号倒计时30秒结束调整时间蜂鸣器报警停止键是否按下YYNYNYNN图3.2 程序总流程图3.3源程序英文和数字字号必须是四号,文字是小四号OK EQU 20H ;抢答开始标志位 RING EQU 22H ;响铃标志位 DATA0 EQU 36H ;抢答按键口数据存放地址 ORG 0000H AJMP MAIN ORG 0003H AJMP INTT0 ORG 000BH AJMP T0INT ORG 001BH AJMP T1INT ORG 0040HMAIN: MOV R1,#20 ;初设

8、抢答时间为20s MOV R2,#30 ;初设答题时间为30s mov 38h,#60 ;启用锦囊时间从60s倒计时 MOV TMOD,#11H ;设置未定时器/模式1 MOV TH0,#0F0H 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 ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了; =查询程序= START: MOV

9、 DATA0,#0FFH ;初始化 MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY ;未开始抢答时候显示FFF JNB P3.3,SELSUB0 JNB P3.4,TZ3 ;倒计时调整 P3.0,NEXT ACALL DELAY P3.0,NEXT ;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询 SETB EX0 ;开放INT0 ACALL BARK ;按键发声 MOV A,R1 MOV R6,A ;送R1->R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位,在使用锦囊时用作判断是抢答倒计时

10、还是回答倒计时 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 START TZ1: AJMP FALSE7TZ2: AJMP FALSE8TZ3: AJMP SELSUB1;=非法抢答处理程序=FALSE1: MOV R3,#01H

11、AJMP ERRORFALSE2: MOV R3,#02H AJMP ERRORFALSE3: MOV R3,#03H AJMP ERRORFALSE4: MOV R3,#04H AJMP ERRORFALSE5: MOV R3,#05H AJMP ERRORFALSE6: MOV R3,#06H AJMP ERRORFALSE7: MOV R3,#07H AJMP ERRORFALSE8: MOV R3,#08H AJMP ERROR;=SELSUB0(抢答时间R1调整程序)=;= SELSUB0: MOV A,R1 MOV B,#0AH DIV AB MOV R5,A MOV R4,B M

12、OV R3,#0AH ACALL DISPLAY ;先在两个时间LED上显示R1 JNB P3.5,INC0 ;P3.5为+1s键,如按下跳到INCO JNB P3.6,DEC0 ;P3.6为-1s键,如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键,如按下跳到BACKO AJMP SELSUB0INC0: MOV A,R1 CJNE A,#63H,ADD0 2加1,如果加到99,R1就置0,重新加起。 MOV R1,#00H ACALL DELAY1 AJMP SELSUB0ADD0: INC R1 ACALL DELAY1 AJMP SELSUB0DEC0: MOV A

13、,R1 JZ SETR1 ;如果R1为0, R1就置99, DEC R1 ACALL DELAY1 AJMP SELSUB0SETR1: MOV R1,#63H ACALL DELAY1 AJMP SELSUB0BACK0: AJMP START;=SELSUB1(回答时间R2调整程序)= SELSUB1: MOV A,R2 MOV B,#0AH DIV AB MOV R5,A MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.5,INC1 JNB P3.6,DEC1 JNB P3.1,BACK1 AJMP SELSUB1INC1: MOV A,R2 CJNE

14、 A,#63H,ADD1 MOV R2,#00H ACALL DELAY1AJMP SELSUB1ADD1: INC R2 ACALL DELAY1 AJMP SELSUB1DEC1: MOV A,R2 JZ SETR2 DEC R2 ACALL DELAY1 AJMP SELSUB1SETR2: MOV R2,#63H ACALL DELAY1 AJMP SELSUB1BACK1: AJMP START;=启用锦囊程序=REPEAT:MOV A,38h ;使用锦囊时重新计时 MOV R6,A CLR RING ;当倒计时进入最后5秒的时候,启用锦囊能消除蜂鸣;=倒计时程序(抢答倒计时和回答倒

15、计时都跳到改程序)= COUNT: MOV R0,#00H ;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#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,#0A

16、H,FULL ;1s中0.5s向下运行 CLR RING AJMP CHECKFULL: CJNE A,#14H,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;如按下停止键退出 JNB OK,CHECKK ;

17、只在回答倒计时才有效 AJMP NEXTTCHECKK:JNB P3.0,REPEAT ;判断是否使用锦囊NEXTT: ACALL DISPLAY OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT:MOV A,DATA0 JNB ACC.0,TRUE1 JNB ACC.1,TRUE2 JNB ACC.2,TRUE3 JNB ACC.3,TRUE4 JNB ACC.4,TRUE5 JNB ACC.5,TRUE6 JNB ACC.6,TZ7 JNB ACC.7,TZ8 AJMP RECOUNTTZ7: AJMP

18、TRUE7TZ8: AJMP 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 BARK MOV A,R2 MOV R6,A MOV R3,#02H CLR OK AJMP COUNTTRUE3:ACALL BARK MOV A,R2 MOV R6,A MOV R3,#03H

19、 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 MOV A,R2 MOV R6,A MOV R3,#07H CLR OK AJMP COUNTTRUE8: ACALL BARK MOV A

20、,R2 MOV R6,A MOV R3,#08H CLR OKAJMP COUNT;= =犯规抢答程序=ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3 ;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#06H,FLASH ;0.3s向下运行->灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH ;三灯全灭 AJMP CHECK1 FLASH: CJNE A,#0CH,CHECK1 ;下面是0.8s的情况,响并显示号数并清R0,重新计 SETB RING

21、MOV R0,#00H MOV R3,34H ;取回号数 MOV R5,#0BH MOV R4,#0BH ;显示FF和号数 AJMP CHECK1CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HEREQUIT1: CLR RING CLR OK AJMP START;=显示程序=DISPLAY:MOV DPTR,#DAT1 ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出, MOV A,R3 MOVC A,A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOV

22、C 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 DELAY RETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;"灭","1","2","3","4","5","6","7","8","9"

23、;,"灭","F"DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;第一个为零,其他与上一样,因为十位如果为零显示熄灭;=加减时间延时(起到不会按下就加N个数)=DELAY1: MOV 35H,#08HLOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=延时(显示和去抖动用到)= DELAY: MOV 32H,#12HLOOP: MOV 33H,#0AFHLOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=发声程序=BARK: SET

24、B RING ACALL DELAY1 ACALL DELAY1 CLR RING ;按键发声 RET;=TO溢出中断(响铃程序)= T0INT: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT; CPL P3.7 ;RING标志位为1时候P3.7口不断取反使喇叭发出一定频率的声音OUT: RETI;=T1溢出中断(计时程序)= T1INT: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI;=INTT0中断服务程序=INTT0:MOV DATA0,P1 CLR EX0 RETI END第4章 系统仿真与调试4.1仿真软件prote

25、us简介Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。该软件的特点: 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。具有模拟电路仿真、数字电路仿真、单片机与其外围电路组成的系统的仿真、RS-232动态仿真、1 C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以与各种外围芯片。 支持大量的存储器和外围芯片。总之,该软件是一款集

温馨提示

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

评论

0/150

提交评论