计算机控制技术毕业设计(论文)八路抢答器_第1页
计算机控制技术毕业设计(论文)八路抢答器_第2页
计算机控制技术毕业设计(论文)八路抢答器_第3页
计算机控制技术毕业设计(论文)八路抢答器_第4页
计算机控制技术毕业设计(论文)八路抢答器_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、扬 州 市 职 业 大 学毕 业 设 计(论 文)设计(论文)题目:八路抢答器系 别:汽车与电气工程系专 业:计算机控制技术 1班 级:07计算机控制技术姓 名: 学 号: 指导教师: 完成时间: 2010/5 目录第一章 概述3第二章 方案论证4第三章 8位抢答器设计要求5第四章 at89c51单片机简介6第五章 按键锁存器74ls373简介9第六章 数码显示器简介12第七章 系统流程图14第八章 系统框图16第九章 元器件清单18第十章 程序18第十一章 单片机防干扰33第十二章 毕业设计体会35.第十三章参考文献36概述随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样

2、。抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低,减少兴致。做为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。单片机原理及应用技术是一门技术性,应用性、实践性很强的学科。课程设计是学好本门课程的又一重要实践性教学环节,课程设计的目的和任务就是配合单片机的教学和平时实验,以达到巩固消化课程的内容,进一步加强综合应用能力及单片机应用系统开发和设计能力的训练,启发创新思维,使之具有独立单片机产品和科研的基本技能,

3、是以培养学生综合运用所学知识的过程,是知识转化为能力和能力转化为工程素质的重要阶段。在实际生活中有好多地方都用到了单片机,因此学习好这门课程有着十分重要的意义本设计是以八路抢答为基本理念。考虑到需要设定限时回答的功能,利用8051单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。方案论证电子智能抢答

4、计分器在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务。如果在抢答中,靠视觉是很难判断出哪组先答题。利用单片机系统来设计抢答器,使以上问题得以解决,即使两组的抢答时间相差几微秒,也可分辨出哪组优先答题。本设计使用atc89c51单片机来设计智能抢答器。并且具有倒计时和时间设置及报警功能。利用atc89c51单片机对信号进行锁存、显示等功能。分别从硬件和软件两方面阐述了该控制系统的设计方法,并经过调试和运行使该系统达到预期目标,具有反应快、功能齐全、实用性强的特点,其设计框图如下:抢答器的设计与制作可以通过两种方法来实现,一种是可以采用数字电路的方法实现,但是其电

5、路结构复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,而且有成本较高的缺点;另一种可使用单片机来设计制作,其功能的实现主要通过少量的硬件和软件编程,由此大大降低了电路的复杂性和成本。所以本次毕业设计的抢答器我采用了单片机来实现。本设计方案以at89c51单片机为控制核心,采用模块化的设计方案,可以实现8位抢答器的各项基本功能,例如定时抢答、显示抢答选手号码,主持人控制等等,另外增加了输入信号的锁存,可以准确无误的判断出那位选手最先抢答,可以媲美市场上的专业产品。 8位抢答器设计要求系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和

6、软件分开设计。硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。本次设计的数字抢答器具有以下功能:(1)抢答器同时供8名选手或8个代表队比赛,分别用8个按钮s0 s7表示。(2)设置一个系统清除和抢答控制开关s,该开关由主持人控制。(3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在led数码管上显示选手

7、号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。此外还有一些扩展功能:(1)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动“开始”键后,定时器进行减计时。(2) 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。(3) 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。0其工作原理为:接通电源后,主持人将按下清零按键,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人按下开始按键,宣布开始抢答器工作。定时器倒计时,

8、扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由工作人员再次操作清除和开始状态开关。at89c51单片机简介at89c51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能cmos8位微处理器,俗称单片机。89c2051是一种带2k字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。其管脚图如下图1.1:图1.1:at89c5

9、1管脚图管脚说明如下: vcc:供电电压。 gnd:接地。at89c51单片机由微处理器,存储器,i/o口以及特殊功能寄存器sfr等部分构成。其存储器在物理上设计成程序存储器和数据存储器两个独立的空间,片内程序存储器的容量为4kb,片内数据存储器为128个字节。89c51单片机有4个8位的并行i/o口:p0口,p1口,p2口和p3口。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原

10、码,此时p0外部必须被拉高。 p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址

11、的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口,如下表所示: 口管脚 备选功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 /int0(外部中断0) p3.3 /int

12、1(外部中断1) p3.4 t0(记时器0外部输入) p3.5 t1(记时器1外部输入) p3.6 /wr(外部数据存储器写选通) p3.7 /rd(外部数据存储器读选通) p3口同时为闪烁编程和编程校验接收一些控制信号。 rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。 ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳

13、过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。 /psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也

14、用于施加12v编程电源(vpp)。 xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。 xtal2:来自反向振荡器的输出。振荡复位电路 是内部振荡方式,在xtal1,xtal2引脚上外接反馈元件石英晶体振荡和电容组成自激振荡器,一般晶振在1.21.3mhz之间自选。电容取值在20pf.并通过对电容组成的微调作用来对振荡频率进行微调,以满足振荡频率的精度要求,它是通过给抢答器,计时系统和声响的控制脉冲。一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在xtal2引脚产生幅度为3v左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。单片机复位是使cpu和系统中的其他

15、功能部件都在一个确定的初始状态,并从该状态开始工作。实训可以看出,无论是在单片机刚开始接上电源时还是断电后,或者发生故障后。都要复位,所以必须清楚mcs-51型单片机复位的条件,复位电路和复位状态。复位条件:使rstvpd引脚上加上两个周期的高电平。按键所存器74ls373简介为了保证比赛的公正性,我们采用带有锁存功能的移位寄存器74ls373芯片,74373的数据端:qa-qh: 八位并行输出端,可以直接控制数码管的8个段。qh: 级联输出端。我将它接下一个373的si端。si: 串行数据输入端。74373的控制端说明:srclr(10脚): 低点平时将移位寄存器的数据清零。通常接vcc。s

16、rck(11脚):上升沿时数据寄存器的数据移位。qa-qb-qc-.-qh;下降沿移位寄存器数据不变。(脉冲宽度:5v时,大于几十纳秒就行了。我通常都选微秒级)rck(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。(通常我将rck置为低电平,) 当移位结束后,在rck端产生一个正脉冲(5v时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。13脚: 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。有键按下时,74ls373相应的输出位为高电平,74ls373的g端从高电

17、平(没有键按下时)变到低电平(有键按下时),完成输入状态的锁存,并保持低电平。此时按sb0sb7中任意一个键都不会影响锁存器输出状态,保证74ls373处于最先有键按下时的状态,并使相应档位的led始终发光。74373的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。373还多有输出端时能/禁止控制端,可以使输出为高阻态,如图所示:数码显示管简介:根据原理图管脚连接,我们知道p0口控制了8个led数码管的位选中,所以如果想让8个数码管都亮起来,我们可以逐位扫描8位数码管。数码显示一半有两种工作方式。即静态显示方式和动态显示

18、方式。我们采用动态显示方式。动态显示原理:原理上同一时刻只有一位led是点亮的,但只要扫描的频率足够高(一般大于25hz),由于人眼的视觉暂留特性,直观上感觉却是连续点亮的,这就是常说的动态扫描显示。系统流程图在本设计中包括了以下主要的程序:主程序,初始化,键盘查询程序,外部中断,显示程序,延时程序,报警程序等,如图所示:(1)主程序框图:开始初始化调用键盘程序显示程序(2)初始化:初始化定时器设置显示单元初始化中断设置(3)键盘查询:(4)外部中断0:n系统框图与pcb图元器件清单元器件描述元器件编号数量单片机stc89c511led显示屏四联共阴1晶体振荡器12mhz1三极管90121蜂鸣

19、器/1电容30pf3电阻20k19脚排阻/1按键/13程序清单ok equ 20h;抢答开始标志位 ring equ 22h;响铃标志位 org 0000h ajmp main org 0003h ajmp int0sub org 000bh ajmp t0int org 0013h ajmp int1sub org 001bh ajmp t1int org 0040hmain: mov r1,#30;初设抢答时间为30s mov r2,#60;初设答题时间为60s mov tmod,#11h;设置未定时器/模式1 mov th0,#0f0h mov tl0,#0ffh;越高发声频率越高,越尖

20、 mov th1,#3ch mov tl1,#0b0h;50ms为一次溢出中断 setb ea setb et0 setb et1 setb ex0 setb ex1;允许四个中断,t0/t1/int0/int1 clr ok clr ring setb tr1 setb tr0;一开始就运行定时器,以开始显示fff.如果想重新计数,重置th1/tl1就可以了;=查询程序=start: mov r5,#0bh mov r4,#0bh mov r3,#0bh acall display;未开始抢答时候显示fff jb int0,next;ddddddd acall delay jb int0,n

21、ext;去抖动,如果开始键按下就向下执行,否者跳到非法抢答查询 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 jnb p1.3,false4 jnb p1.4,false5 jnb p1.5,false6 ajmp starttz1:jmp f

22、alse7tz2:jmp false8;=非法抢答处理程序=false1: acall bark;按键发声mov r3,#01h ajmp errorfalse2: acall barkmov r3,#02h ajmp errorfalse3: acall barkmov r3,#03h ajmp errorfalse4: acall barkmov r3,#04h ajmp errorfalse5: acall barkmov r3,#05h ajmp errorfalse6: acall barkmov r3,#06h ajmp errorfalse7: acall barkmov r3,

23、#07h ajmp errorfalse8: acall barkmov r3,#08h ajmp error;=int0(抢答时间r1调整程序)=int0sub:mov a,r1 mov b,#0ah div ab mov r5,a mov r4,b mov r3,#0ah acall display;先在两个时间led上显示r1 jnb t0,inc0;t0为+1s键,如按下跳到inco jnb t1,dec0;t1为-1s键,如按下跳到deco jnb int1,back0;int1为确定键,如按下跳到backoajmp int0subinc0: mov a,r1cjne a,#63h,

24、add0;如果不是99,r2加1,如果加到99,r1就置0,重新加起。 mov r1,#00h acall delay1ajmp int0subadd0: inc r1 acall delay1 ajmp int0subdec0: mov a,r1 jz setr1;如果r1为0, r1就置99, dec r1 acall delay1 ajmp int0subsetr1: mov r1,#63h acall delay1 ajmp int0subback0: reti ;=int1(回答时间r2调整程序)=int1sub:mov a,r2 mov b,#0ah div abmov r5,a

25、mov r4,b mov r3,#0ah acall display jnb t0,inc1 jnb t1,dec1 jnb int1,back1 ajmp int1subinc1: mov a,r2 cjne a,#63h,add1 mov r2,#00h acall delay1ajmp int1subadd1: inc r2 acall delay1 ajmp int1subdec1: mov a,r2 jz setr2 dec r2 acall delay1 ajmp int1subsetr2: mov r2,#63h acall delay1 ajmp int1subback1: r

26、eti ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=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

27、cjne a,#0ah,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 t1,quit;如按下停止键退出 acall display jb ok,accou

28、t;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) ajmp recountaccout: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;=正常抢答处理程序=true1: acall bark;按键发声 mov

29、 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 clr ok ajmp counttrue4:acall bark; mov a,r2 mov r6,a mov r3,#04h clr ok ajmp counttrue5: acall bark; mov a,r2 m

30、ov 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,r2 mov r6,a mov r3,#08h clr ok ajmp count;=犯规抢答程序=error: mov r0,#00h mov th1,#3ch mov tl1,#0b0h mov 34h,r3

31、;犯规号数暂存与(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的情况,响并显示号数并清r0,重新计 setb ring mov r0,#00h mov r3,34h;取回号数 mov r5,#0bh mov r4,#0bh;显示ff和号数 ajmp check1check1: jnb t1,quit1 acall display ajmp herequit

32、1: 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 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 delay retdat1:db 00h,06h,5bh

33、,4fh,66h,6dh,7dh,07h,7fh,6fh,00h,71h ;灭,1,2,3,4,5,6,7,8,9,灭,fdat2: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 dj

34、nz 32h,loop ret;=发声程序=bark: setb ring acall delay1 acall delay1 clr ring;按键发声 ret;=to溢出中断(响铃程序)=t0int: mov th0,#0ech mov tl0,#0ffh jnb ring,out; cpl wr;ring标志位为1时候wr口不断取反使喇叭发出一定频率的声音out: reti;=t1溢出中断(计时程序)=t1int: mov th1,#3ch mov tl1,#0b0h inc r0 retiend单片机干扰防护单片机应用系统在实际工作过程中,难免会受到各种外部或内部的干扰,使系统发生异常

35、情况。比如,因干扰使程序指针发生错误时,可能会将非操作码执行,造成程序执行的混乱(跑飞)或进入死循环,甚至可能会损坏元器件。干扰窜入应用系统的主要渠道有三条:通过电磁波辐射窜入系统的空间干扰;通过输入/输出通道窜入的通道干扰;电源的干扰。(1):采用隔离技术对于供电系统的干扰,可以采用交流稳压器、不间断电源(ups)、隔离变压器、底通虑波器等,以防止电源电压的波动和干扰噪声;在直流电源的抗干扰措施中,对应用系统中的不同等级的直流电源采取集成稳压块单独供电,以避免模块间的互相影响,使直流开关电源、dc-dc变换器以加强隔离提高电源稳定性等。在单片机应用系统的输入/输出通道中,普遍采用通道隔离技术来防止通道干扰。其中应用较多的是光电耦合器。光电耦合器的输入/输出之间没有接触,能有效地防止输入端的电磁干扰以电耦合的方式进入应用系统,而且光电耦合器的输入阻抗很小,干扰源的内阻很大,所以能输入到光电偶合器的干扰电压很小。 (2):正确的接地措施在低频电路中,因

温馨提示

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

评论

0/150

提交评论