《单片机抢答器课程设计报告书.doc》由会员分享,可在线阅读,更多相关《单片机抢答器课程设计报告书.doc(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1设计课题任务、功能要求说明与总体方案介绍1.1设计课题任务(一)设计题目:单片机抢答器课程设计(二)设计任务:通过理论知识的运用和实物制作相结合,写出抢答器汇编程序,做出抢答器实物,掌握和理解单片机技术书本中所学的理论知识和实验方法,掌握一些单片机应用系统的设计方法,掌握keil和proteus软件的使用方法,提高自己的思维能力、学习能力以与动手实践能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2功能要求说明设计一个具有特定功能的抢答器。该抢答器上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;10S无人抢答,蜂
2、鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号。蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响与违规指示灯的关断,都要通过主持人按复位按钮。1.3设计总体方案介绍设计中采用AT89S52芯片、LED显示器、蜂鸣器、LED灯、数码管和一些独立式按键构成一个简易六路抢答器。设计中是采用单片机的部定时器进行定时,原理框图如图1所示 图1 抢答器原理框图整个抢答器的
3、工作原理是:在正常的供电状态下显示“P.”,开始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到LED显示器的输入口,当有键按下时则执行相应的键功能程序。2 抢答器的硬件系统的设计2.1 抢答器硬件系统各模块功能简要介绍该抢答器主要由单片机最小系统、按键电路模块、LED显示电路模块、蜂鸣电路模块和LED指示灯电路模块组成。各模块的功能如下:(1)单片机最小系统单片机最小系统包括AT89S52单片机如图2、晶振电路如图3所示、复位电路如图4所示。只有当单片机有了这些电路才会工作。电源电路给单片机供电,晶振电路给单片机提供计数时间,复位电路可以实现单片机的复位。图2 AT89S52单片机芯
4、片图3 晶振电路图4 复位电路(2)独立键盘电路模块 如图5所示运用独立键盘电路,设计一段公共接地,另一端通过上拉电阻接到P1口,当有按键按下,相应的口就会变成低电平,产生一个下降沿。图5 独立键盘电路(3)LED显示电路模块如图6所示采用两个四位一体共阳型数码管显示器进行显示。由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470的电阻,这些电阻起限流的作用。将段控口a-dp接在P0.0-P0.7上,位控口接在P2口线上,实现对显示的控制。LED显示电路模块主要用来指示第一抢答者,显示倒计时和违规的台号。图6 LED显示电
5、路模块(4)蜂鸣电路模块如图7所示单片机P3.1口线上接上一个1K电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。蜂鸣电路主要完成提示和违规报警功能。图7 蜂鸣电路模块(5)LED指示灯电路模块如图8所示单片机P3.2口线上经过一个470的电阻与LED灯的阴极相连接,LED灯的阳极接正五伏电压。470的电阻起限流的作用。LED指示灯电路模块主要用来指示用违规操作发生。图8 LED指示灯电路模块(6)下载口电路模块如图9所示下载口的1脚接P1.5口,2脚悬空,3脚接单片机的复位口,4脚接P1.6口,5脚接P1.7口,6脚接地,7、8、8
6、、10脚接地。图9 下载口电路2.2 抢答器电路原理图、PCB图、元器件布局图Proteus原理图、PCB顶层图、PCB底层图 、元器件布局图分别见附录A附录B附录C以与附录D。2.3 抢答器元器件清单元器件清单见附录E。3 抢答器软件系统的设计3.1抢答器使用单片机资源的情况该抢答器使用了单片机的定时器的功能,其中具体用到了单片机的定时器0和定时器1,并且让它们都以中断方式工作,没有用到外部中断。寄存器用到了第0组,第1组,第2组。在数据的显示时,采用查表的方法,因此需要将表格、数据存放在单片机的程序存储器上。用到的LED显示器接到了单片机的P0口线上和P2口线上。LED指示灯和蜂鸣器接在P
7、3口线上。3.2抢答器软件系统各模块功能简要介绍该抢答器所用的软件模块有定时器模块、按键模块、LED显示模块。(1)定时器模块选择定时器0,设置定时器定时方式为方式1以中断方式工作,设置定时时间为50ms。(2)按键模块采用独立式键盘,共用七个按键对电路进行控制和操作,分别为S1、S2、S3、S4、S5、S6、S7来控制抢答器。S1、S2、S3、S4、S5、S6代表选手;S7为答完键、S8为开始键、S9为复位键。(3)数码管显示模块抢答器上电显示“P.”,按开始键开始抢答,显示器显示倒计时30s,10s若无人抢答报警一次,若30s都无人抢答,报警并灯亮。若没按下开始键为无效抢答则显示器显示违规
8、台号并报警。3.3 抢答器软件系统程序流程框图3.3.1主程序流程框图主程序流程框图如图10所示。图10 主程序流程框图3.3.2开始键程序流程框图开始键程序流程框图如图11所示。图11 开始键程序流程框图3.3.3抢答键程序流程框图抢答键程序流程框图如图12所示。图12 开始键程序流程框图3.3.4答完键程序流程框图答完键程序流程框图如图13所示。图13 答完键程序流程框图3.3.5复位键程序流程框图复位键程序流程框图如图14所示。图14 答完键程序流程框图3.4 程序清单见附录F。4 抢答器的设计结论、心得体会、教学建议4.1抢答器的设计结论4.1.1抢答器的设计结论通过对单片机进行外接键
9、盘和LED数码管的操作以与加上硬件电路和软件的结合,实现了抢答器P.显示以与抢答倒计时的显示,正常抢答时显示台号,抢答违规时显示违规台号、违规指示灯亮、蜂鸣器报警。本课程设计直接在实物数码管板子上测试和修改,没有仿真。该抢答器完成了设计任务,符合设计要求。4.1.2使用说明本设计的S2到S7为抢答键,S8为自定义复位键,S9为开始键,S1为系统复位键。当开始键按下后才能进行抢答,抢答时间为30秒,抢答时,其他按键无效,答完后,答题人按下答完键,答题结束。若10S无人抢答,蜂鸣器发出警示音,若计时到仍无人抢答则违规指示灯亮,蜂鸣器报警。若没有按下开始就抢答则违规,违规灯亮,显示违规者台号。若倒计
10、时时间到,还没按下答完键则违规,违规灯亮。各台数字显示的消除、蜂鸣器音响与违规指示灯的关断,都要通过主持人按复位键来实现。4.2 抢答器课题心得体会与教学建议临近期末考试,学了一个学期的单片机课了,虽然感觉要掌握的知识容很复杂,而且需要完成的实验也比较多,但是真正觉得学到了不少东西。通过这次抢答器课程设计,不仅加深了我对书本知识的认识,而且更加深一步地掌握了单片机的接口技术以与汇编语言的应用和功能。在刚刚接触单片机汇编语言的时候,别说自己编相关的程序,就是要我看懂某个不太难的程序都感觉有点吃力,然在进行了一系列的知识学习、实验实践,特别是这次的抢答器课程设计以后,让我深刻的了解了单片机的汇编功
11、能以与方法,不仅可以看懂许多的程序,而且也能编写一些不是太难的程序,也使得自己也不再像以前那样,总把汇编看成是一个老大难的问题。当然在这其中,也出现了不少问题。比如说在进行数码管的焊接时,因没去了解其不同引脚的排列顺序,导致数码管正反顺序焊反,从而使得显示数字也变法了。这算是个自己不细心导致的,所以以后再做此类相关的课程设计或者实验的时候,许多细节方便一定得多注意些。从这个学期开始到结束,凌云老师一直都兢兢业业的指导我们学好单片机这门课程,很感老师的这份责任心。总体来说,我觉得老师的教学还是挺好的,要说建议的话,可能还真说不上一两点什么。结束语将本设计的程序下载到单片机中,通过测试,基本上完成
12、了任务书的要求,并且抢答的精确度也比较高,因为在调用键扫描函数的时候是在500ms函数中,基本上每50ms就会调用一次键扫描函数。当然对于高精度的抢答比赛,本设计的精度还是不够的,还需要进一步的改进,甚至可以精度提高到微秒级。还有就是抢答的人数有限,只有六个人,所以当有更多的人抢答时,应该把独立式键盘改接成行列式键盘。而且制作工艺比较粗糙。通过本次单片机课程设计,让我更加深刻的了解了AT89S52芯片在电气工程各方面的应用,掌握了keil软件和proteus软件的使用操作。而且通过本次单片机课程设计,让我也意识到了自己的理论知识掌握的不够熟练,动手实践能力也有待加强,所以在以后的学习中,一定要
13、努力学会掌握书本上的知识,锻炼自己在专业设计方面的动手能力。致 在本次抢答器课程设计的过程中,得到了凌云老师的悉心指导和同学们的热情帮助,在这里特别要感老师和同学们。虽然说我们是凌云老师教的第一届学生,老师在教学经验和方法上和其他一些有着丰富教学经验的老师相比,可能欠缺一点,但是真心觉得老师的教学很不错,特别是不像其他老师那样管得特别死板,很有活力。也很注重和同学们的沟通和交流,是我们的良师益友哦。参考文献1马忠梅,籍顺心,凯,马岩.单片机的C语言应用程序设计M,:航空航天大学,2006Ma Zhongmei,Ji shunxin, Zhang Kai, MaYan. MCU C langua
14、ge program design M .beijing: Beijing aerospace university press, 20062广弟,朱月秀,冷祖祁.单片机基础M.:航空航天大学,2007 Li Guangdi, ZhuYuexiu, Leng Zuqi. Microcontroller M .Beijing: Beijing university of aeronautics and press, 2007 3光飞.单片机课程设计实例指导M.:航空航天大学,2004.9 Li Guangfei. This course design example guide M .Beiji
15、ng: 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 railway publishing house, 2004 附录Aproteus原理图附录BPCB顶层图附录C PCB底层图附录D 元器件布局图附录E 元器件清单元器件名称规格数量AT89S521底座40脚3晶振12MHz1发光二极管9单排插40脚1三极管90129蜂鸣器1小
16、按键9下载口座子十芯1六脚开关1USB电源线加接口1电阻2001电阻1K3电阻47024电解电容220F1瓷片电容33pF2排阻10K2短路帽3杜邦线8p1PCB板子1附录 F汇编语言程序清单*项目名称:抢答器设 计 者:湘平时 间:2012年12月14日项目功能:该抢答器上电或按键复位后能自动显示系统提示符P.,进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;10S无人抢答,蜂鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮
17、开始30S,答完按钮没;按下,则作超时处理,超时处理时,违规指示灯亮,数码管显示违规台号,蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响与违规指示灯的关断,都要通过主持人按复位按钮。伪指令定义*G EQU 78H ;赋值命令 EQUSHI EQU 79HX1 EQU 7FHX2 EQU 7EHX3 EQU 7DHX4 EQU 7CHX5 EQU 7BHX6 EQU 7AH系统起始程序区* ORG 0000H LJMP MAIN ;跳转主程序ORG 000BH;定时器0中断向量区LJMP TTC0 ;跳转中断服务子程序ORG 001BH ;定时器1中断向量区LJMP TTC1 ;跳转中断服务子程
18、序监控程序区*ORG 0030HMAIN:MOV SP, #60H ;设置栈底为60HSETB EA;定时器和中断初始化SETB ET0 ;允许定时器0中断SETB ET1 ;允许定时器1中断MOV TMOD, #11H ;定时器0/定时器1选择工作方式1MOV TH0, #3CH ;定时器0设置计数初值MOV TL0, #0B0H MOV TH1, #3CH ;定时器1设置计数初值MOV TL1, #0B0H MOV DPTR, #DISBH ;系统初始化后提示符P.字符代码表首地址 MOV R5, #08H MOV R0, #78HDISPTSF:CLR A ;上电显示P MOVC A,
19、A+DPTR ;查表 MOV R0, A INC R0 ;R0自动加1 INC DPTR ;DPTR自动加1 DJNZ R5, DISPTSF ;减1条件转移D:LCALL DISP ;调用显示子程序 LCALL KEY;调键扫描程序;判断键值 20H.7, KEY7 ;指定位状态为1转移 20H.0, KEY1 ;20H单元地址的第0位 20H.1, KEY2 ;20H单元地址的第1位 20H.2, KEY3 ;20H单元地址的第2位 20H.3, KEY4 ;20H单元地址的第3位 20H.4, KEY5 ;20H单元地址的第4位 20H.5, KEY6 ;20H单元地址的第6位LJMP
20、D ;跳转回D键功能程序区*;开始键KEY7: MOV A, #30;按下开始键,时间30秒 MOV R2, A ;将A送入R2LOOP: LCALL JS;计算当前秒,并送给显示缓冲区MOV X1, #0FFHLCALL DISP ;调用显示子程序 LCALL Z1;显示当前秒DEC R2 ;R2自减1MOV A, R2 ;将R2的值送入寄存器AJZ TZ;判断30秒是否到CJNE R2, #20, PDCY;判断是否过了10秒SJMP FM ;跳转FMPDCY:CJNE R2,#10,LOOP ;R2为10跳转 FM: MOV R7,#125FM1: CLR P3.1 ;过了10秒,开蜂鸣
21、器 DJNZ R7,FM1 ;判断R7是否为1跳转 SETB P3.1 ;P3.1置1 LJMP LOOP ;返回循环TZ: LCALL JS ;停止在00处TZ1: LCALL DISP ;调用显示子程序 CLR P3.1 ;P3.1清零 LCALL KEY JNB 20H.6,TZ1 ; LJMP FUWEI ;跳转复位程序违规区*1号选手违规 ;1号违规,显示1号台和违规灯KEY1: CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零 MOV 7FH, #01H ;01H赋值给7FHLCALL DISP ;调用显示子程序LCALL KEYJNB 20H.6,KEY1 LJM
22、P FUWEI ;跳转复位程序2号选手违规 ;2号违规,显示2号台和违规灯KEY2: CLR P3.1 ;P3.1清零 CLR P3.1 ;P3.1清零 MOV 7FH, #10H MOV 7EH, #02HLCALL DISP ;调用显示子程序LCALL KEYJNB 20H.6,KEY2 LJMP FUWEI ;跳转复位程序3号选手违规 ;3号违规,显示3号台和违规灯KEY3: CLR P3.2 ;P3.2清零CLR P3.1 ;P3.1清零 MOV 7FH, #10H MOV 7DH, #03HLCALL DISP ;调用显示子程序LCALL KEYJNB 20H.6,KEY3 LJMP
23、 FUWEI ;跳转复位程序4号选手违规;4号违规,显示4号台和违规灯KEY4: CLR P3.3 ;P3.3清零 CLR P3.1 ;P3.1清零 MOV 7FH, #10H MOV 7CH, #04H LCALL DISP ;调用显示子程序 LCALL KEYJNB 20H.6,KEY4 LJMP FUWEI ;跳转复位程序5号选手违规;5号违规,显示5号台和违规灯KEY5: CLR P3.4 ;P3.4清零 CLR P3.1 ;P3.1清零 MOV 7FH, #10H MOV 7BH, #05HLCALL DISP ;调用显示子程序 LCALL KEYJNB 20H.6,KEY5 LJM
24、P FUWEI ;跳转复位程序6号选手违规 ;6号违规,显示6号台和违规灯KEY6: CLR P3.5 ;P3.5清零 CLR P3.1 ;P3.1清零 MOV 7FH, #10H MOV 7AH, #06HLCALL DISP ;调用显示子程序LCALL KEYJNB 20H.6,KEY6 LJMP FUWEI ;跳转复位程序抢答区*1号抢答 ;1号抢答,倒计时30秒KEY11: MOV R1, #01H MOV A, #30 ;预置时间30秒 MOV R2, ALOOP10:LCALL JS ;调用JSMOV X1, #01H ;送入#7FHCLR P3.1 ;P3.1清零LCALL DI
25、SP ;调用显示子程序LCALL Z2 ;调用Z2程序DJNZ R2, LOOP10 ;满1跳转循环 LCALL JS ;继续调用JSLOOP11:LCALL DISP ;调用显示子程序 CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零LCALL KEYJNB 20H.6,LOOP11 LJMP FUWEI ;跳转复位程序2号抢答;2号抢答,倒计时30秒KEY22: MOV R1, #2 MOV A, #30 ;预置时间30秒 MOV R2, ALOOP20:LCALL JS ;调用JSMOV X2, #02H ;送入#7EHCLR P3.1 ;P3.1清零LCALL DISP
26、 ;调用显示子程序LCALL Z2 ;调用延时子程序DJNZ R2, LOOP20 ;满1跳转循环 LCALL JS ;继续调用JSLOOP21:LCALL DISP ;调用显示子程序 CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零LCALL KEYJNB 20H.6,LOOP21 LJMP FUWEI ;跳转复位程序3号抢答 ;3号抢答,倒计时30秒KEY33: MOV R1, #3 MOV A, #30 ;预置时间30秒 MOV R2, ALOOP30:LCALL JS ;调用JSMOV X3, #03H ;送入#7DHCLR P3.1 ;P3.1清零LCALL DISP
27、 ;调用显示子程序LCALL Z2 ;调用延时子程序DJNZ R2, LOOP30 ;满1跳转循环 LCALL JS ;继续调用JSLOOP31:LCALL DISP CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零LCALL KEYJNB 20H.6,LOOP31 LJMP FUWEI ;跳转复位程序4号抢答;4号抢答,倒计时30秒KEY44: MOV R1, #4 MOV A, #30 ;预置时间30秒 MOV R2, ALOOP40:LCALL JS ;调用JSMOV X4, #04H ;送入#7CHCLR P3.1 ;P3.1清零LCALL DISP ;调用显示子程序L
28、CALL Z2 ;调用延时子程序DJNZ R2, LOOP40 ;满1跳转循环 LCALL JS ;继续调用JSLOOP41:LCALL DISP CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零LCALL KEYJNB 20H.6,LOOP41 LJMP FUWEI ;跳转复位程序5号抢答;5号抢答,倒计时30秒KEY55: MOV R1, #5 MOV A, #30 ;预置时间30秒 MOV R2, ALOOP50:LCALL JS ;调用JSMOV X5, #05H ;送入#7BHCLR P3.1 ;P3.1清零LCALL DISP ;调用显示子程序LCALL Z2 ;调
29、用延时子程序DJNZ R2, LOOP50 ;满1跳转循环 LCALL JS ;继续调用JSLOOP51:LCALL DISP CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零 LCALL KEYJNB 20H.6,LOOP51 LJMP FUWEI ;跳转复位程序6号抢答;6号抢答,倒计时30秒KEY66: MOV R1, #6 MOV A, #30 ;预置时间30秒 MOV R2, ALOOP60:LCALL JS ;调用JSMOV X6, #06H ;送入#7AHCLR P3.1 ;P3.1清零LCALL DISP ;调用显示子程序LCALL Z2 ;调用延时子程序DJN
30、Z R2, LOOP60 ;满1跳转循环 LCALL JS ;继续调用JSLOOP61:LCALL DISP CLR P3.0 ;P3.0清零CLR P3.1 ;P3.1清零LCALL KEYJNB 20H.6,LOOP61 LJMP FUWEI ;跳转复位程序答完区*KEY111:CJNE R1, #1, TT1;1号答完,显示台号和当前剩余时间 SETB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序LCALL KEY 20H.6,FUWEI LJMP KEY111TT1:LJMP FFKEY222:CJNE R1, #2, TT2;2号答完,显示台号和当前剩余时间 SE
31、TB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序 LJMP KEY222TT2: LJMP FFKEY333:CJNE R1, #3, TT3 ;3号答完,显示台号和当前剩余时间 SETB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序LCALL KEY 20H.6,FUWEI LJMP KEY333TT3: LJMP FFKEY444:CJNE R1, #4, TT4;4号答完,显示台号和当前剩余时间 SETB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序LCALL KEY 20H.6,FUWEI LJMP KEY444TT4: LJMP FF ;跳转FFKEY555:CJNE R1, #5, TT5;5号答完,显示台号和当前剩余时间 SETB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序LCALL KEY 20H.6,FUWEI LJMP KEY555TT5: LJMP FFKEY666: CJNE R1, #6, TT6;6号答完,显示台号和当前剩余时间 SETB P3.1 ;开启P3.1 LCALL DISP ;调用显示子程序LCALL KEY 20H.6,FUWEI LJMP KEY666TT6: LJMP FFFUWEI: MOV P3,#0FFH LJMP MAIN*
限制150内