单片机课程设计四路抢答器文档.doc

上传人:文库蛋蛋多 文档编号:4147486 上传时间:2023-04-07 格式:DOC 页数:26 大小:625.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、1 设计任务和方案1.1设计任务(一)设计题目:抢答器(二)设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2功能要求说明该抢答器上电或按键复位后能自动显示系统提示符“P.” 。设定S2键、S3键、S4键、S5键、S9键分别为一号选手键、二号选手键、三号选手键、四号选手键、开始键。若在主持人按下开始键之前有人按下抢答键,则抢答违规,数码管显示器显示违规台号,违规指示灯亮(接在P3.0上的灯),其他按键不起作用,只有

2、主持人按复位键后才能重新开始抢答。主持人按下开始键后,抢答开始并限定时间30S;10S内无人抢答,蜂鸣器发出音响;若30S后依然无人抢答,蜂鸣器发出音响,违规指示灯亮。正常抢答下,从抢答键按下开始30S内,答完后键没按下,则数码管显示器显示违规台号,违规指示灯亮,蜂鸣器发出音响。各台数字显示的消除、蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位键实现。1.3设计总体方案及工作原理说明设计中采用AT89S52芯片、LED显示器、蜂鸣器、LED灯和一些独立式按键构成一个简易四路抢答器。设计中是采用单片机的内部定时器进行定时,原理框图如图1.1所示 整个抢答器的工作原理是:在正常的供电状态下,开

3、始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则执行相应的键功能程序。图1.1 原理框图2 抢答器的硬件系统的设计2.1 硬件系统各模块功能简要介绍 该抢答器主要由单片机最小系统、独立式键盘模块、LED显示电路模块、蜂鸣电路模块和LED指示灯电路模块组成。各模块的功能如下:(1)单片机最小系统由AT89S52单片机、时钟电路和复位电路构成。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。复位电路采用上电复位和按键复位结

4、合的方式对电路进行复位,主要是通过RST引脚送入单片机。单片机最小系统为整个电路的核心。(2)独立式键盘模块 采用独立式键盘接法,共有六个按键来对电路进行控制。分别通过上拉电阻接在单片机的P1口线上。其中有四个按键为抢答键(接在P1.0-P1.3口线上),开始键接在P1.7口线上,复位键接在RESET口线上。(3)LED显示电路模块采用两个四位一体共阳型数码管显示器进行显示。由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470的电阻,这些电阻起限流的作用。将段控口a-dp接在P0.0-P0.7上,位控口接在P2.0P2.7

5、口线上,实现对显示的控制。LED显示电路模块主要用来指示第一抢答者,显示倒计时和违规的台号。(4)蜂鸣电路模块单片机P3.1口线上接上一个1K电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。蜂鸣电路主要完成提示和违规报警功能。(5)LED指示灯电路模块单片机P3.0口线上经过一个470的电阻与LED灯的阴极相连接,LED灯的阳极接正五伏电压。470的电阻起限流的作用。LED指示灯电路模块主要用来指示用违规操作发生。2.2 电路原理图Proteus原理图见附录A2.3 PCB图和元器件布局PCB图以及元器件布局图见附录B2.4 元器件清

6、单 元器件清单见附录C3 抢答器软件系统的设计3.1 使用的单片机资源的情况该抢答器用到了单片机的定时器的功能,定时器0和定时器1都采用工作方式1并以中断方式工作;在数据的显示时采用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。本设计采用独立式键盘,键盘直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。用到的LED显示器接到了单片机的P0口线上和P2口线上。LED指示灯和蜂鸣器接在P3口线上。 3.2 各模块功能简要介绍 该抢答器所用的软件模块有定时器模块、按键模块、LED显示模块。(1)定时器模块选择定时器0和定时器1,设置定时器定时方式为方式1工作,设置定时时

7、间为50mS。(2)按键模块采用独立式键盘,共用六个按键对电路进行控制和操作,分别为S2、S3、S4、S5、S9和复位键来控制抢答器。S2、S3、S4、S5代表选手;S9为开始键。(3)LED显示模块 抢答器上电或复位显示P.,按开始键开始抢答,显示器显示倒计时和选手台号,若为无效抢答则显示器显示违规台号。3.3 程序的流程框图(1)主程序流程框图 如图3-1所示程序开始运行后显示P.,然后进行抢答器30S初始化,程序执行等待主持人按下开始键,如果在按下开始键前选手按下按键,则选手违规,再等待主持人按下复位按键,如果在主持人按下开始按键后的10S无人抢答则,蜂鸣器报警,同时等待主持人复位,如果

8、10S内有人抢答,则正常抢答,等待30S内是否按下答完键,若没有按下,则违规超时,等待复位键按下。若30S内正常答完,作业等待主持人复位键的按下,则结束。图3.1 主程序流程框图(2)正常抢答程序流程框图 如图3-2中如果选手抢答成功后,则蜂鸣器响,显示台号和封锁其他键的内容,并等待30内按下答完键,最后主持人按下复位键,抢答结束。图3.2 正常抢答程序流程框图(3)违规抢答程序流程框图 如图3-3所示,如果选手在主持人还没有按下开始键时按下抢答键,则执行违规,同时指示灯亮,显示其台号。图3.3 违规抢答程序流程框图(4)键扫程序流程框图如图3-4所示,先调键处理,再判断是否有键按下,如果没有

9、键按下,则返回,如果有键按下,去抖延时,再调键处理,如果没键按下就返回,如果有键按下,计算并保持键值,再看键是否松开,如果没松开,就再延时判断键是否松开,如果键松开,就保存键值并返回。图3.4 键扫程序流程框图 图3.5 显示程序流程框图(5)显示程序流程框图如图3-5首先送段控来控制数码管的显示字形,接着再送位控来控制不同位的数码管显示。(6)定时1s程序流程框图如图3-6所示通过选用定时器,采用工作方式1定时50ms,再循环20次便历经1S,在打开定时器后开始等待定时时间的带来,定时时间到后重装初值,然后再返回。图3.6 定时1s程序流程框图3.4 程序清单程序清单见附录D4 抢答器的设计

10、结论、误差分析和教学建议4.1 设计结论和使用说明(1)设计结论 通过对单片机进行外接键盘和LED数码管的操作以及加上硬件电路和软件的结合,实现了抢答器P.显示以及抢答倒计时的显示,正常抢答时显示台号,抢答违规时显示违规台号、违规指示灯亮、蜂鸣器报警。通过测试和仿真以及修改,该抢答器完成了设计任务,符合设计要求。(2)使用说明该抢答器采用两个四位一体八段数码管显示。当抢答器一上电即可显示“P.”,进入准备工作状态。按下开始键后,抢答开始并计时30S;若10S内无人抢答,蜂鸣器发出警示音,若计时到仍无人抢答则违规指示灯亮,蜂鸣器报警。若在开始键按下之前有人抢答,则显示器显示违规台号,违规指示灯亮

11、,只有按复位键才能重新开始抢答。正常抢答下,显示器显示台号,蜂鸣器发出音响,其它抢答键无效;正常抢答下,从抢答键按下开始30S内没按下抢答键,则数码管显示器显示违规台号,违规指示灯亮,蜂鸣器发出音响。各台数字显示的消除、蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位键实现。4.2 误差分析由于程序指令等执行会差生一定误差,实验结果和实验要求相比较,相差0.1s左右,误差极小,符合设计的要求。4.3 设计体会本次我设计的抢答器已经能够完成任务,达到了设计要求。这次设计的巧妙之处是在中断服务程序中完成了一些标志位的处理,使得编程更加容易。虽然最后我设计的抢答器能完成任务,但仍存在很多的不足。例

12、如,我所设计的抢答器统计选手的得分情况,因此还需多加改进。我所用的实物板子的电路虽然不是自己设计的,但是通过老师的讲解我知道了各个模块电路设计的原理。由于以前已经做过几块板子了,因此在用Ptrtel软件绘制电路原理图、画PCB图以及制版的过程中并没有遇到太大的困难。在进行程序编写时,虽然遇到了一些问题,但通过Keil软件调试,最终将编写有误的程序修正过来。通过编写程序,我进一步熟悉了指令的运用。通过这次的锻炼,我们不仅动手能力得到了加强,更重要的是学到了很多新的专业技能知识,经验也更加丰富了。我觉得我还有很多不足的地方,如:基本知识掌握不牢固、动手能力不强、知识面不够宽。我争取在以后的学习当中

13、弥补它,不断的完善自己。实践过程中必须具有良好的耐性,不能急躁,否则会事倍功半。遇到问题是应当迎难而上,不能逃避,必须对自己有足够的信心!本设计还有很多做的不够好的地方,还望老师批评指正。4.4教学建议吴老师不仅传授了知识给我们还教会了我们不少做人的道理,这些做人的道理对于我们经后进入社会将会有很大的帮助。在教学方面,我尤其觉得吴老师做的特别的好,上课重点、难点突出,讲解非常详细,而且还补充了一些很实用的知识。吴老师将理论教学与实际操作相结合,让我们更深刻的掌握了知识,同时也让我们认识到书本上的东西不一定都全对,必须通过实践来检验它。我认为吴老师的课讲得已经很好了,在此我只想提一个自己的拙见,

14、希望在以后吴老师能多启发我们的创新精神。参考文献1马忠梅,籍顺心,张凯,马岩.单片机的C语言应用程序设计M.北京:北京航空航天大学出版社,2006Ma Zhongmei,J, Zhang Kai, MaYan. MCU C language program design M .beijing: Beijing aerospace university press, 20062李广弟,朱月秀,冷祖祁.单片机基础M.北京:北京航空航天大学出版社,2007 Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller M .beijing: Beijing un

15、iversity of aeronautics and press, 2007 3李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9 Li Guangfei. This course design example guide M .beijing: Beijing university of aeronautics and press, 2004.9 4邢增平.Protel 99 SE设计专家指导M.北京:中国铁道出版社,2004 Xing Zengping. Protel 99 SE design expert guidance M .beijing: China

16、railway publishing house, 2004 致 谢在这里我要感谢吴老师这段时间对我的悉心教诲和严格要求,这段时间我确实学到了很多实用的知识,同时经过不断的实践操作,我也加深了对理论的理解。在学习和实践过程中我要感谢吴老师和同学对我提出的问题耐心的讲解,也很感谢他们对我的帮助!附录A 原理图附录B PCB图和元件布局图附录C 元件清单元器件名称规格数量AT89S521底座40脚3晶振12MHz1发光二极管9单排插40脚1三极管90129蜂鸣器1小按键9下载口座子十芯118b20温度传感器1六脚开关1USB电源线加接口1电阻2001电阻4.7K1电阻1K3电阻47024电解电容2

17、20F1瓷片电容33pF2排阻10K2短路帽3杜邦线8p1PCB板子1电源白色插座1 附录D 程序清单ORG 0000HLJMP MAINORG 000BHLJMP TTC0ORG 001BHLJMP TTC1ORG 0030HMAIN:MOV SP, #60H;设置栈底为80HSETB EA;定时器和中断初始化SETB ET0SETB ET1MOV TMOD, #11HMOV TH0, #3CHMOV TL0, #0B0H;赋初值MOV TH1, #3CHMOV TL1, #0B0H MOV DPTR, #DISBH ;系统初始化后提示符P.字符代码表首地址 MOV R5, #08H MOV

18、 R0, #78HDISPTSF:CLR A ;上电显示P. MOVC A, A+DPTR MOV R0, A INC R0 INC DPTR DJNZ R5, DISPTSFDKEY:LCALL DISP LCALL KEY ;调键扫JB 20H.7, KEY7 ;判断键值JB 20H.0, KEY1JB 20H.1, KEY2JB 20H.2, KEY3JB 20H.3, KEY4LJMP DKEY;键功能程序区*KEY7: MOV A, #30 ;按下开始键 MOV R2, ALOOP: LCALL JS ;计算当前秒,并送给显示缓冲区MOV S1, #0FFHLCALL DISP LC

19、ALL Z1;显示当前秒DEC R2MOV A, R2JZ TZ;判断30秒是否到CJNE R2, #20, PDCY ;判断是否过了10秒FM: CLR P3.1 ;过了10秒,开蜂鸣器LJMP LOOPPDCY: JC FMLJMP LOOP TZ: LCALL JS;停止在00处TZ1:LCALL DISP LJMP TZ1 KEY1: CLR P3.0 ;1号违规,显示1号台和违规灯 MOV 7FH, #01HLCALL DISPLJMP KEY1 KEY2: CLR P3.0 ;2号违规,显示2号台和违规灯 MOV 7FH, #10H MOV 7EH, #02HLCALL DISPL

20、JMP KEY2KEY3: CLR P3.0 ;3号违规,显示3号台和违规灯 MOV 7FH, #10H MOV 7DH, #03HLCALL DISPLJMP KEY3 KEY4: CLR P3.0 ;4号违规,显示4号台和违规灯 MOV 7FH, #10H MOV 7CH, #04HLCALL DISPLJMP KEY4;抢答区*KEY11: MOV R1, #1 ;1号抢答,倒计时30秒 MOV A, #30 MOV R2, ALOOP10:LCALL JSMOV S1, #01HCLR P3.1LCALL DISPLCALL Z2DJNZ R2, LOOP10 LCALL JSLOOP

21、11:LCALL DISP CLR P3.0CLR P3.1LJMP LOOP11KEY22: MOV R1, #2 ;2号抢答,倒计时30秒 MOV A, #30 MOV R2, ALOOP20:LCALL JSMOV S2, #02HCLR P3.1LCALL DISPLCALL Z2DJNZ R2, LOOP20 LCALL JSLOOP21:LCALL DISP CLR P3.0CLR P3.1LJMP LOOP21KEY33: MOV R1, #3 ;3号抢答,倒计时30秒 MOV A, #30 MOV R2, ALOOP30:LCALL JSMOV S3, #03HCLR P3.1

22、LCALL DISPLCALL Z2DJNZ R2, LOOP30 LCALL JSLOOP31:LCALL DISP CLR P3.0CLR P3.1LJMP LOOP31KEY44: MOV R1, #4 ;4号抢答,倒计时30秒 MOV A, #30 MOV R2, ALOOP40:LCALL JSMOV S4, #04HCLR P3.1LCALL DISPLCALL Z2DJNZ R2, LOOP40 LCALL JSLOOP41:LCALL DISP CLR P3.0CLR P3.1LJMP LOOP41;答完区*KEY111:CJNE R1, #1, TT1;1号答完,显示台号和当

23、前剩余时间 SETB P3.1 LCALL DISP LJMP KEY111TT1:LJMP FFKEY222:CJNE R1, #2, TT2 ;2号答完,显示台号和当前剩余时间 SETB P3.1 LCALL DISP LJMP KEY222TT2: LJMP FFKEY333:CJNE R1, #3, TT3 ;3号答完,显示台号和当前剩余时间 SETB P3.1 LCALL DISP LJMP KEY333TT3: LJMP FFKEY444:CJNE R1, #4, TT4 ;4号答完,显示台号和当前剩余时间 SETB P3.1 LCALL DISP LJMP KEY444TT4:

24、LJMP FF;*;定时器延时子程序区Z1: PUSH PSW ;延时子程序,延时1秒,用于抢答时的倒计时延时 CLR RS0SETB RS1SETB TR0MOV R5, #20EE: LCALL DISP LCALL KEYJB 20H.0, K1JB 20H.1, K2JB 20H.2, K3JB 20H.3, K4 CJNE R5, #0, CCCLR TR0POP PSWLJMP BBCC:LJMP EEBB:RET;跳转区*;由于跳转范围有限,在此设一跳转区K1: LJMP KEY11K2: LJMP KEY22K3: LJMP KEY33K4: LJMP KEY44K11: LJ

25、MP KEY111K22: LJMP KEY222K33: LJMP KEY333K44: LJMP KEY444 ;伪指令定义*G EQU 78HKAI EQU 79HS1 EQU 7FHS2 EQU 7EHS3 EQU 7DHS4 EQU 7CH;定时延时子程序2*Z2: PUSH PSW ;延时子程序,延时1秒,用于回答问题倒计时时的延时 CLR RS0 SETB RS1;寄存器第2组 SETB TR1 MOV R6, #20FF: LCALL DISP LCALL KEY JB 20H.0, K11 JB 20H.1, K22 JB 20H.2, K33 JB 20H.3, K44 C

26、JNE R6, #0, FF CLR TR1 POP PSW RET;计算字符序号子程序 ;把当前秒分成十位和个位送往显示缓冲数组JS:MOV A, R2 MOVB, #10 DIVAB MOVKAI, A MOVG, B;键盘扫瞄子程序KEY: LCALL KEYCHU ; 调P1口数据处理子程序 JZ EXIT ; 没有键按下,转返回 LCALL DISP ; 调显示子程序去抖动 LCALL DISP LCALL KEYCHU ; 调P1口数据处理子程序 JZ EXIT ; 没有键按下,转返回 MOV B, 20H ; 保存取反后的键值KEYSF: LCALL KEYCHU ; 调P1口数

27、据处理子程序 JZ KEYA ; 键释放,转恢复键值 LCALL DISP ; 调显示子程序延时 LJMP KEYSF ; 等待键释放KEYA: MOV 20H, B ; 键值送20H保存 EXIT: RET KEYCHU: PUSH PSW ; 保护现场 MOV P1, #0FFH ; 先向P1口写1 MOV A, P1 ; 读P1口数据 CPL A ; P1口数据取反 ANL A, #0FFHMOV 20H , A; POP PSW ; 恢复现场 RET *;数码管显示子程序DISP;入口:7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED

28、4,LED3,LED2,LED1,LED0)DISP: PUSH DPHPUSH DPLPUSH ACCPUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示DISP1:MOV A, R1MOV DPTR, #TABMOVC A, A+DPTRMOV P0, A;送段控 MOVP2, R2 ;送位控LCALL DL ;延时1毫秒MOV A, R2JNB ACC.7, DISP2RL AINC R1MOV R2, ALJMP DISP1DISP2:POP PSW ;恢复当前寄存器

29、组的组号POP ACCPOP DPLPOP DPHRETDL: PUSH PSW ;延时1毫秒子程序 SETB RS1 SETB RS0 MOV R7, #02HDL1: MOV R6, #0FFHDL2: DJNZ R6, DL2DJNZ R7, DL1 POP PSWRET;中断服务程序*TTC0: PUSH PSW ;重赋初值,R5自减CLR RS0SETB RS1MOV TH0, #3CHMOV TL0, #0B0HDEC R5POP PSW RETITTC1: PUSH PSW ;重赋初值,R6自减CLR RS0SETB RS1MOV TH1, #3CHMOV TL1, #0B0HDEC R6POP PSW RETI;*;常数表格区;系统初始化后提示符P.字符代码表DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H;显示字符段选码表(共阳极代码)TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH ;0-8,9,A,B,C,D,E,F,灭, END

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号