课程设计(论文)-基于单片机的单片机抢答器设计.doc_第1页
课程设计(论文)-基于单片机的单片机抢答器设计.doc_第2页
课程设计(论文)-基于单片机的单片机抢答器设计.doc_第3页
课程设计(论文)-基于单片机的单片机抢答器设计.doc_第4页
课程设计(论文)-基于单片机的单片机抢答器设计.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

目 录1 设计任务和方案31.1 设计任务3 1.2功能要求说明3 1.3 设计总体方案及工作原理说明32 抢答器的硬件系统的设计5 2.1 硬件系统各模块功能简要介绍5 2.2 电路原理图、pcb图和元器件布局图5 2.3 元器件清单63 抢答器软件系统的设计73.1使用的单片机资源的情况8 3.2 各模块功能简要介绍8 3.3 程序的流程框图8 3.4 程序清单124 抢答器的设计结论、仿真结果和教学建议13 4.1 设计结论和使用说明13 4.2 仿真结果13 4.3 设计体会14 4.4 教学建议15参考文献16致谢17附录181 设计任务和方案1.1设计任务(一)设计题目:抢答器(二)设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。1.2功能要求说明该抢答器上电或按键复位后能自动显示系统提示符“p.” 。设定s2gn键、s3gn键、s4gn键、s5gn键、s6gn键、s7gn键、s8gn键分别为一号选手键、二号选手键、三号选手键、四号选手键、开始键、答完键、复位键。若在主持人按下开始键之前有人按下抢答键,则抢答违规,数码管显示器显示违规台号,违规指示灯(接在p3.2上的灯)亮,只有主持人按复位键后才能重新开始抢答。主持人按下开始键后,抢答开始并限定时间30s;10s内无人抢答,蜂鸣器发出音响;若30s后依然无人抢答,蜂鸣器发出音响,违规指示灯亮。正常抢答下,从抢答键按下开始30s内,答完键没按下,则数码管显示器显示违规台号,违规指示灯亮,蜂鸣器发出音响。各台数字显示的消除、蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位键实现。1.3设计总体方案及工作原理说明设计中采用at89s52芯片、led显示器、蜂鸣器、led灯和一些独立式按键构成一个简易四路抢答器。设计中是采用单片机的内部定时器进行定时,原理框图如图1.1所示 整个抢答器的工作原理是:在正常的供电状态下,开始抢答时利用单片机倒计时,并由单片机将所需要显示的数据送到led显示器的输入口,当有键按下时则执行相应的键功能程序。 图1.1 原理框图2 抢答器的硬件系统的设计2.1 硬件系统各模块功能设计 该抢答器主要由单片机最小系统、独立式键盘模块、led显示电路模块、蜂鸣电路模块和led指示灯电路模块组成。各模块的功能如下:(1)单片机最小系统由at89s52单片机、时钟电路和复位电路构成。at89s52是一种低功耗、高性能cmos8位微控制器,具有8k在系统可编程flash存储器。时钟电路由一个12mhz的石英晶体振荡器和两个33pf的的电容组成振荡电路和分频电路。复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过rst引脚送入单片机。单片机最小系统为整个电路的核心。(2)独立式键盘模块 采用独立式键盘接法,共有七个按键来对电路进行控制。分别通过上拉电阻接在单片机的p1口线上。其中有四个按键为抢答键(接在p1.0-p1.3口线上),开始键接在p1.4口线上,答完键接在p1.5口线上,复位键接在p1.6口线上。(3)led显示电路模块采用两个四位一体共阳型数码管显示器进行显示。由于位控线的驱动电流较大,因此在p2口线上接了8个pnp型三极管提高驱动能力;在单片机的p1口线和p2口线上接了16个470的电阻,这些电阻起限流的作用。将段控口a-dp接在p0.0-p0.7上,位控口接在p2口线上,实现对显示的控制。led显示电路模块主要用来指示第一抢答者,显示倒计时和违规的台号。(4)蜂鸣电路模块单片机p3.1口线上接上一个1k电阻然后再通过一个pnp型三极管与蜂鸣器相连接组成蜂鸣器电路,接入pnp型三极管是为了增强蜂鸣器的驱动电流。蜂鸣电路主要完成提示和违规报警功能。(5)led指示灯电路模块 单片机p3.2口线上经过一个470的电阻与led灯的阴极相连接,led灯的阳极接正五伏电压。470的电阻起限流的作用。led指示灯电路模块主要用来指示用违规操作发生。2.2 电路原理图、pcb图和元器件布局proteus原理图、pcb图以及元器件布局图分别见附录1附录2与附录3。 2.3 元器件清单 元器件清单见附录4。3 抢答器软件系统的设计3.1 使用的单片机资源的情况该抢答器用到了单片机的定时器的功能,定时器0采用工作方式1并以中断方式工作;在数据的显示时采用的是查表的方法,因此需要将表格、数据存到单片机的程序存储器中去。本设计采用独立式键盘,键盘直接接在p1口上且按键的结果存贮在单片机的内部数据存储器里面。用到的led显示器接到了单片机的p0口线上和p2口线上。led指示灯和蜂鸣器接在p3口线上。 3.2 各模块功能简要介绍 该抢答器所用的软件模块有定时器模块、按键模块、led显示模块。(1)定时器模块选择定时器0,设置定时器定时方式为方式1以中断方式工作,设置定时时间为50ms。(2)按键模块采用独立式键盘,共用七个按键对电路进行控制和操作,分别为s2gn、s3gn、s4gn、s5gn、s6gn、s7gn、s8gn来控制抢答器。s2gn、s3gn、s4gn、s5gn代表选手;s6gn为开始键、s7gn为答完键、s8gn为复位键。(3)led显示模块 抢答器上电显示p.,按开始键开始抢答,显示器显示倒计时,若为无效抢答则显示器显示违规台号。3.3 程序的流程框图(1)主程序流程框图如图3.1所示。图3.1 主程序流程框图(2)抢答键程序流程框图 抢答键程序流程框图如图3.2所示。图中的代表主程序流程框图中的。图3.2 抢答键程序流程框图(3)开始键程序流程框图开始键程序流程框图如图3.3所示。图中的代表主程序流程框图中的。图代表抢答键程序流程框图中的图3.3 开始键程序流程框图(4)答完键程序流程框图开始键程序流程框图如图3.4所示。图中的代表主程序流程框图中的。图3.4 答完键程序流程框图(5)复位键程序流程框图复位键程序流程框图如图3.5所示,图中的代表主程序流程框图中的。图3.5 复位键程序流程框图3.4 程序清单见附录5。4 抢答器的设计结论、仿真结果和教学建议4.1 设计结论和使用说明(1)设计结论 通过对单片机进行外接键盘和led数码管的操作以及加上硬件电路和软件的结合,实现了抢答器p.显示以及抢答倒计时的显示,正常抢答时显示台号,抢答违规时显示违规台号、违规指示灯亮、蜂鸣器报警。通过测试和仿真以及修改,该抢答器完成了设计任务,符合设计要求。(2)使用说明该抢答器采用两个四位一体八段数码管显示。当抢答器一上电即可显示“p.”,进入准备工作状态。按下s6gn(开始键)键后,抢答开始并计时30s;若10s内无人抢答,蜂鸣器发出警示音,若计时到仍无人抢答则违规指示灯亮,蜂鸣器报警。若在s6gn键按下之前有人抢答,则显示器显示违规台号,违规指示灯亮,只有按s8gn(复位键)才能重新开始抢答。正常抢答下,显示器显示台号,蜂鸣器发出音响,其它抢答键无效;正常抢答下,从抢答键按下开始30s内,s7gn键(答完键)没按下,则数码管显示器显示违规台号,违规指示灯亮,蜂鸣器发出音响。各台数字显示的消除、蜂鸣器音响及违规指示灯的关断,都要通过主持人按s8gn键实现。4.2 仿真结果在仿真时用到了两个软件,第一个是keil,第二个是proteus,本次仿真是将两个软件结合起来进行的。运用keil软件用来编译和调试程序,运用ptoteus软件来仿真。ptoteus仿真电路原理图参见附录。抢答器上电时,仿真的数码管显示器显示如图4.1所示,当按下开始键时,显示器显示倒计时,此时数码管显示器的显示如图4.2所示,若在开始键按下之前有人抢答,数码管显示违规台号,违规指示灯亮,仿真图如图4.3所示。正常抢答时,数码管显示台号仿真图如图4.4所示。抢答超时时,数码管显示违规台号,违规指示灯亮,蜂鸣器发出音响,仿真图如图4.5所示。图4.1 抢答器上电显示p.图图4.2 抢答器显示倒计时图图4.3 抢答器正常抢答图图4.4 抢答器抢答违规图图4.5 抢答器超时违规图4.3 设计体会本次我设计的抢答器已经能够完成任务,达到了设计要求。这次设计的巧妙之处是在中断服务程序中完成了一些标志位的处理,使得编程更加容易。虽然最后我设计的抢答器能完成任务,但仍存在很多的不足。例如,我所设计的抢答器统计选手的得分情况,因此还需多加改进。我所用的实物板子的电路虽然不是自己设计的,但是通过老师的讲解我知道了各个模块电路设计的原理。由于以前已经做过几块板子了,因此在用ptrtel软件绘制电路原理图、画pcb图以及制版的过程中并没有遇到太大的困难。在进行程序编写时,虽然遇到了一点小小的问题,但是我通过keil软件调试,最终将编写有误的程序修正过来。在进行编程时我用汇编语言和c语言各编写了一套。通过编写程序,我进一步熟悉了指令的运用。这次课程设计让我认识到,调试程序时必须具有良好的耐性,不能急躁,否则会事倍功半。遇到问题是应当迎难而上,不能逃避,必须对自己有足够的信心!4.4 教学建议王老师不仅传授了知识给我们还教会了我们不少做人的道理,对于大学教师来说这是难能可贵的,这些做人的道理对于我们经后进入社会将会有很大的帮助。在教学方面,我尤其觉得王老师的课件做的特别的好,课件重点、难点突出,讲解非常详细,而且还补充了一些很实用的知识。王老师将理论教学与实际操作相结合,让我们更深刻的掌握了知识,同时也让我们认识到书本上的东西不一定都全对,必须通过实践来检验它。我认为王老师的课讲得已经很好了,在此我只想提一个自己的拙见,希望在以后王老师能多启发我们的创新精神。参考文献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 university 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 railway publishing house, 2004 附 录1附 录4 元器件名称规格数量at89s521底座40脚3晶振12mhz1发光二极管9单排插40脚1三极管90129蜂鸣器1小按键9下载口座子十芯118b20温度传感器1六脚开关1usb电源线加接口1电阻2001电阻4.7k1电阻1k3电阻47024电解电容220f1瓷片电容33pf2排阻10k2短路帽3杜邦线8p1pcb板子1电源白色插座1附 录5 (1)汇编语言;*;项目名称:抢答器;设计者:潘艳;设计日期:2010年12月20日;项目功能要求:抢答器上电或按键复位后能自动显示系统提示符“p.”,; 进入准备工作状态。主持人按下开始按钮后,抢答开始并; 限定时间30s;10s内无人抢答,蜂鸣器发出音响;主持人; 按下开始按钮之前有人按下抢答器,抢答违规,显示器显; 示违规台号,违规指示灯亮,其它按钮不起作用;正常抢; 答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无; 效;正常抢答下,从按下抢答按钮开始30s内,答完按钮; 没按下,则作超时处理,超时处理时,违规指示灯亮,数; 码管显示违规台号,蜂鸣器发出音响;各台数字显示的消; 除,蜂鸣器音响及违规指示灯的关断,都要通过支持人按; 复位按钮。;违规指示灯使用接在p3.2上的led灯;*;堆栈栈底7fh;*;8个led灯接至p30-p37;*;led数码管显示器设定;p0.7-p0.0段控线,接led的显示段dp,g,f,e,d,c,b,a;p2.7-p2.0位控线,从左至右(led7,led6,led5,led4,led3,led2,led1,led0);显示缓冲区设定从右至左依次为78h,79h,7ah,7bh,7ch,7dh,7eh,7fh ;*;独立式键盘设定;8个按键s2至s9分别依次接在p1.0至p1.7口线; ;*;键功能程序;s2gn (s2键键功能程序) 1号选手;s3gn (s3键键功能程序)2号选手;s4gn (s4键键功能程序)3号选手;s5gn (s5键键功能程序) 4号选手;s6gn (s6键键功能程序) 开始键;s7gn (s7键键功能程序)答完键;s8gn (s8键键功能程序)复位键;*;常数表格;disbh(系统提示符p.字型代码序号表);tab(共阳数码管字型代码表);*; ;子程序;key(键扫描子程序);keychuli(p1口数据处理子程序);disp(数码管显示子程序);dl(1毫秒延时子程序);*;中断服务程序;tc0(50ms定时器0以中断方式1进行中断);*;数据存储器变量及常量单元定义;;40h字节单元:十六进制数存放定时50ms循环次数;20h字节单元:十六进制数 键值;21h.0:开始键按下标志位;21h.1:抢答键按下标志位;21h.2:超时标志位;78h-7fh字节单元: 显示缓存区;30h字节单元:十进制数秒个位数非压缩bcd码;31h字节单元:十进制数秒十位数非压缩bcd码;32h字节单元:十进制数秒值 压缩bcd码;*;伪指令定义区 secgeequ30h secshiequ31h shuequ32h;*; ;系统起始程序区 org 0000h start: ljmp main org 000bh ljmp tc0;*;系统监控程序区 org 0030h main: movsp,#7fh ;确立堆栈区 mov psw, #00h mov r0, #20h ;ram区首地址 mov r7, #96 ;ram区单元个数 ml: mov r0, #00h inc r0 djnz r7, ml mov tmod, #01h;定时器初始化,定时器0以工作方式1工作 movth0,#3ch movtl0,#0b0h setb ea;开启总中断 setb et0;开启定时器0分中断;*;显示系统提示符“p.”tsf: mov dptr, #disbh ;系统初始化后提示符“p.”字符代 mov r5, #08h ;码表首地址 mov r0, #78h disptsf: clr a movc a, a+dptr mov r0, a inc r0 inc dptr djnz r5, disptsf lcall disp;*;键盘控制指令 tt: lcall disp ;调用显示程序 lcall key jb 20h.0, s2gn;1号选手 jb 20h.1, s3gn1;2号选手 jb 20h.2, s4gn1 ;3号选手 jb 20h.3, s5gn1;4号选手 jb20h.4,s6gn1;开始键 jb20h.5,s7gn1;答完键 jb20h.6,s8gn1;复位键 ljmp tt;无键按下,则返回tt,继续调显示、扫描按键 s3gn1: ljmps3gn s4gn1: ljmps4gn s5gn1: ljmp s5gn s6gn1: ljmps6gn s7gn1: ljmps7gn s8gn1: ljmps8gn ;*;键功能区;s2键功能区 s2gn: jnb21h.0,w20;若抢答违规则跳转到w20 setbtr0 clrp3.1 setb21h.1 lcalldll w23: movr2,#5 movr0,#78h movr0,#0 incr0 movr0,#3 incr0 w21: movr0,#16 incr0 djnzr2,w21 movr0,#01h;此段程序为更新显示缓冲区 setbp3.1w24: lcalldisp lcallkey jb20h.5,s7gn22;答完键 jb20h.6,s8gn22;复位键 jb21h.2,w25 ljmpw24 w20: movr2,#7 movr0,#78h w22: movr0,#16 incr0 djnzr2,w22 movr0,#01h ljmpw26w25: lcalldisp clrp3.2 clrp3.1 lcallkey jb20h.6,s8gn22;复位键 ljmpw25w26: lcalldisp clrp3.2 lcallkey jb20h.6,s8gn22;复位键 ljmpw26 s7gn22: ljmps7gn s8gn22: ljmps8gn;s3键功能区 s3gn: jnb21h.0,w30;若抢答违规则跳转到w30 setbtr0 clrp3.1 lcalldll setb21h.1 w33: movr2,#5 movr0,#78h movr0,#0 incr0 movr0,#3 incr0 w31: movr0,#16 incr0 djnzr2,w31 movr0,#02h;此段程序为更新显示缓冲区 setbp3.1w34: lcalldisp lcallkey jb20h.5,s7gn33;答完键 jb20h.6,s8gn33;复位键 jb21h.2,w35 ljmpw34 w30: movr2,#7 movr0,#78h w32: movr0,#16 incr0 djnzr2,w32 movr0,#02h ljmpw36w35: lcalldisp clrp3.2 clrp3.1 lcallkey jb20h.6,s8gn33;复位键 ljmpw35 w36: lcalldisp clrp3.2 lcallkey jb20h.6,s8gn33;复位键 ljmpw36s7gn33: ljmps7gns8gn33: ljmps8gn;s4键功能区 s4gn: jnb21h.0,w40 ;若抢答违规则跳转到w40 setbtr0 clrp3.1 lcalldll setb21h.1 w43: movr2,#5 movr0,#78h movr0,#0 incr0 movr0,#3 incr0 w41: movr0,#16 incr0 djnzr2,w41 movr0,#03h;此段程序为更新显示缓冲区 setbp3.1w44: lcalldisp lcallkey jb20h.5,s7gn44;答完键 jb20h.6,s8gn44;复位键 jb21h.2,w45 ljmpw44 w40: movr2,#7 movr0,#78h w42: movr0,#16 incr0 djnzr2,w42 movr0,#03h ljmpw46w45: lcalldisp clrp3.2 clrp3.1 lcallkey jb20h.6,s8gn44;复位键 ljmpw45w46: lcalldisp clrp3.2 lcallkey jb20h.6,s8gn33;复位键 ljmpw46 s7gn44: ljmps7gn s8gn44: ljmps8gn;s5键功能区 s5gn: jnb21h.0,w50;若抢答违规则跳转到w50 setbtr0 clrp3.1 lcalldll setb21h.1 w53: movr2,#5 movr0,#78h movr0,#0 incr0 movr0,#3 incr0 w51: movr0,#16 incr0 djnzr2,w51 movr0,#04h;此段程序为更新显示缓冲区 setbp3.1w54: lcalldisp lcallkey jb20h.5,s7gn55;答完键 jb20h.6,s8gn55;复位键 jb21h.2,w55 ljmpw54 w50: movr2,#7 movr0,#78h w52: movr0,#16 incr0 djnzr2,w52 movr0,#04h ljmpw56w55: lcalldisp clrp3.2 clrp3.1 lcallkey jb20h.6,s8gn;复位键 ljmpw55w56: lcalldisp clrp3.2 lcallkey jb20h.6,s8gn;复位键 ljmpw56 s7gn55: ljmps7gn s8gn55: ljmps8gn;s6键功能区 s6gn: setbtr0 setb21h.0w63: movr2,#6 movr0,#78h movr0,#0 incr0 movr0,#3 incr0 w61: movr0,#16 incr0 djnzr2,w61w64: lcalldisp lcallkey jb 20h.0, s2gn66;1号选手 jb 20h.1, s3gn66;2号选手 jb 20h.2, s4gn66 ;3号选手 jb 20h.3, s5gn66;4号选手 jb20h.6,s8gn;复位键 jb21h.2,w65 ljmpw64w65: lcalldisp clrp3.2 clrp3.1 lcallkey jb20h.6,s8gn;复位键 ljmpw65 s2gn66: ljmps2gn s3gn66: ljmps3gn s4gn66: ljmps4gn s5gn66: ljmps5gn;s7键功能区 s7gn: jnb21h.0,t7 clrtr0 lcalldisp lcallkey jb20h.6,s8gn;复位键 ljmps7gn t7: ljmptt ;s8键功能区 s8gn: movp3,#0ffh clr21h.0 clr21h.1 clr21h.2 mov40h,#00h clrtr0 ljmp main ;*;子程序区;(1)键扫描子程序 key: lcall keychuli;调p1口数据处理子程序 jz exit;没有键按下,转返回 lcall disp;调显示子程序去抖动 lcall disp lcall keychuli;调p1口数据处理子程序 jz exit;没有键按下,转返回 movb,20h;保存取反后的键值 keysf: lcall keychuli;调p1口数据处理子程序 jzkey1;键释放,转恢复键值 lcall disp;调显示子程序延时 ljmp keysf;等待释放 key1: mov 20h,b;键值送20h保存 exit: ret ;子程序返回;(2)p1口数据处理子程序 keychuli: push psw ;保护现场 clrrs1;改变当前寄存器组为组1 setb rs0 movp1,#0ffh;先向p1口写1 mova,p1;读p1口数据 cpla;p1口数据取反 mov20h,a;保存取反后的键值 clrrs1;恢复当前寄存器组为组0 clr rs0 poppsw;恢复现场 ret ;子程序返回;*;常数表格区;系统初始化后提示符“p.”字符代码表 disbh: db 10h,10h,10h,10h,10h,10h,10h,11h ;提示符“p.”字 ;符序号;显示字符段选码表(共阳极代码) tab: db 0c0h, 0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h ;0-8 db 90h, 88h,83h,0c6h,0a1h,86h,8eh,0ffh,0ch,0bfh ;9,a,b,c,d,e, ;f,灭,p.,-;*;(3)数码管显示子程序disp;入口:7fh,7eh,7dh,7ch,7bh,7ah,79h,78h(led7,led6,led5,led4,led3,led2,led1,led0) disp: pushdph pushdpl pushacc pushpsw clr rs1 ;改变当前寄存器组为组1 setb rs0 mov r1, #78h ;显示缓冲存储单元首地址 mov r2, #0feh ;从右至左显示mov r5,#08h;循环次数,即驱动数码管的位数 disp1:mov a, r1 movdptr, #tab

温馨提示

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

评论

0/150

提交评论