基于AT89C51单片机的八路多功能抢答器的设计毕业论文d_第1页
基于AT89C51单片机的八路多功能抢答器的设计毕业论文d_第2页
基于AT89C51单片机的八路多功能抢答器的设计毕业论文d_第3页
基于AT89C51单片机的八路多功能抢答器的设计毕业论文d_第4页
基于AT89C51单片机的八路多功能抢答器的设计毕业论文d_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

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

文档简介

1、基于at89c51单片机的八路多功能抢答器的设计(毕业论文d 目录摘要1绪论21 抢答器系概述311抢答器的功能模块312抢答器的工作原理413抢答器的特点及组成62硬件设计621硬件详细清单622 抢答器总电路图723 at89c51的内部结构和功能724 晶体振荡器和电容的设计925 七段数码管显示电路的设计926 扬声器的设计1027 按钮的设计1028 芯片74hc3074ls04的设计113软件设计1131 软件系统结构图和程序流程图1132 程序分析12结束语23致谢24参考文献25附录26摘要在以往企业或学校举行知识竞赛中都是主持人读题观众选手得安静仔细听题目有条件的花上万元买个

2、电子抢答器算是给知识竞赛赛场添彩了现实中大多数是依靠主持人发挥水平但选手和观众要渴望类似跟电视台搞的知识竞赛中的效果一样是难以实现的而我们设计的抢答器节省的不小的开支还能直观公正的看清哪位选手先抢答到题并有主持人来往下读题目它的功能实现是由主持人按键来控制总开关在抢答中只要主持人按下开始后抢答才有效如果在开始抢答前抢答为无效抢答限定时间和回答问题的时间可在1-99s设定可以显示是哪位选手有效抢答和无效抢答正确按键后有声音提示抢答时间和回答问题时间倒记时显示满时后系统计时自动复位及主持人强制复位按键锁定在有效状态下按键无效非法本次设计是用at89c51单片机为核心控制元件设计一个八路多功能抢答器

3、以at89c51单片机作为主控核心与芯片74ls0474hc30扬声器等等构成硬件操作再利用汇编语言来编程来控制抢答器的功能实现这次设计的系统实用性强操作简单在知识竞赛中特别是做抢答题时在抢答过程中为了知道哪一组或哪一位选手先答题必须要有一个系统来完成这个任务在抢答中只靠人的视觉是很难判断出哪组先答题利用单片机来设计抢答器使以上问题得以解决即使两组的抢答时间相差几微秒也分辨出哪答题本文主要介绍了通过本课题设计与装配调试提高动手能力巩固已学的理论知识建立了解各单元电路之间的关系及相互影响从而能正确设计计算的各个单元电路1 抢答器系概述11抢答器的功能模块本抢答器是用单片机采用模块化设计的八路抢答

4、器包括8路抢答按纽计时显示提示功能等开始与结束控制按钮时限设定各种相关显示调控功能等参赛者除享有抢答按纽的权利功能外还有声音提示功能和时间提示功能也可设定由主控控制在参赛者终端表现的趣味性功能等主控系统的控制按钮做开始与结束控制根据活动参赛者的层次对提前抢答者的行为设定为非法抢答在主控处带有公示性显示的非法抢答者的台位号对抢答限时及回答问题限时设为倒计时并有时间显示和声音提示抢答器系统的主要功能模块方框图如图1-1所示图1-1 抢答器系统主要功能模块本系统采用模块化设计的八路抢答器在抢答器中主持人有开始和结束键还可以修改抢答时间和选手回答问题的时间设置原始状态下抢答时间为10s回答问题时间为3

5、0s通过加键和减键修改上述时间改完后按结束键确定新时间开始有效主持人按键开始后选手开始抢答为有效数码显示屏显示抢答时间倒计时和选手号在最后五秒扬声器发出声音提示如果主持人没有按下开始键而选手就抢答视为犯规数码显示屏显示犯规者的代号扬声器持续发出声音主持人可按结束键结束新一轮抢答开始at89c51是整个抢答器的核心内部电路设计用汇编语言编写它完成了时间参数的设定抢按号码的译码保存显示输出抢按及答题倒计时功能等12抢答器的工作原理抢答器的基本工作原理在抢答竞赛时有多个信号同时或不同时送入主电路中抢答器内部的寄存器工作并识别记录第一个号码同时内部的定时器开始工作记录有关时间并产生超时信号在整个抢答器

6、工作过程中显示电路声音电路等还要根据现场的实际情况向外电路输出相应信号抢答器的工作过程1如果想调节抢答时间或答题时间按键或键进入调节状态此时会显示现在设定的抢答时间或回答时间值如想加一秒按一下"加1s"键如果想减一秒按一下s键时间led上会显示改变后的时间调整范围为099s 0s时再减1s会跳到9999s时再加1s会变到0s2主持人按"抢答开始"键会有提示音并立刻进入抢答倒计时预设s抢答时间如有选手抢答会有提示音并会显示其号数并立刻进入回答倒计时预设0s抢答时间不进行抢答查询所以只有第一个按抢答的选手有效倒数时间到5s会每秒响一下提示音3如倒计时期间主持

7、人想停止倒计时可以随时按停止按键系统会自动进入准备4如果主持人未按抢答开始键而有人按了抢答按键犯规抢答led上不断闪烁ff和犯规号数并响个不停直到按下停止 键为止外围接口实现的抢答系统单片机及图1-2 抢答器的工作流程13抢答器的特点及组成在知识比赛中特别是做抢答题目的时候在抢答过程中为了知道哪一组或哪一位选手先答题必须要设计一个系统来完成这个任务如果在抢答中靠视觉是很难判断出哪组先答题利用单片机系统来设计抢答器使以上问题得以解决即使两组的抢答时间相差几微秒也可分辨出哪组优先答题本文主要介绍了单片机抢答器设计及工作原理以及它的实际用途系统工作原理本系统采用89c51单片机作为核心控制系统的四个

8、模块分别为存储模块显示模块模块抢答开关模块该抢答器系统通过个按键输入抢答信号利用存储程序利用一个数码管来完成显示功能工作时用按键通过开关电路输入各路的抢答信号经单片机的处理输出控制信号控制数码管和工作在数码管上显示哪一组先答题从而实现整个抢答过程图2-1抢答器总电路图图中u1为单片机at89c51u2为74ls04 u3为74hc30k1k8分别为8路抢答按键分别接到单片机的p10p17中开始按键与结束按键分别接到单片机的1011脚由于单片机的1011脚既有串行接口rxdtxd功能又有p30p31的io端口功能此处按键用到单片机1011脚的io端口功能抢答时间调整按键和回答时间调整按键分别接到

9、单片机的1314管脚加一按键和减一按键分别接到单片机的1516管脚4位七段数码管段选p0口4位七段数码管的位选接p2口低3位扬声器输出为p37口23 at89c51的内部结构和功能at89c51单片机内部主要有以下部件8031cpu振荡电路总线控制部件中断控制部件片内flash存储器片内ram并行io接口定时器和串行io接口at89c51单片机内部由cpu4kb的fperom 128b的ram两个16位的定时计数器t0和t14个8位的io端p0p1p2p3等组成单片微机内部最核心的部分是cpucpu主要功能是产生各种控制信号控制存储器输入输出端口的数据传输数据的算术运算逻辑运算以及位操作处理等

10、cpu按其功能可分为运算器和控制器两部分控制器由程序计数器pc指令储存器指令译码器实时控制与条件转移逻辑电路等组成它的功能是对来自存储器中的指令进行译码通过实时控制电路在规定的时刻发出各种操作所需的内部和外部的控制信号使各部分协调工作完成指令所规定的操作运算器由算术逻辑器部件alu累加器acc暂存器程序状态字寄存器pswbcd码运算调整电路等组成为了提高数据处理和位操作功能片内增加了一个通用寄存器b和一些专用寄存器还增加了位处理逻辑电路的功能其内部结构如图所示图2-2 at89c51单片机的内部结构图at89c51的主要性能包括at89c51与mcs51控制器系列产品兼容片内有4k可在线重复编

11、程闪速电擦除存储器flash memory存储器可循环写入擦除1000次存储器数据保存时间可达10年工作电压范围宽vcc可由27v到6v全静态工作可由0h到16mh程序存储器具有3级锁存保护1288位内部ram32条可编程io线两个16位定时器计数器中断结构具有5个中断源和2个中断优先级可编程全双工串行通信空闲状态低功耗和掉电状态保存存储内容图2-3 外部振荡源电路电路中两个电容 c2c3的作用有两个一是帮助振荡器起振二是对振荡器的频率进行微调25 七段数码管显示电路的设计图2-4 共阴极数码管如上图2-4可知数码管采用的是4位七段共阴数码管其中ah段分别接到单片机的p0口由单片机输出的p0口

12、数据来决定段码值位选码com1com3com4分别接到单片机的p20p21p22由单片机来决定当前该显示的是哪一位在图中还有八个10k的电阻连接在p0口上用作p0口的上拉电阻保证p0口没有数据输出时候处于高电平状态26 扬声器的设计利用程序来控制单机某个口线的高电平或低电平则在该口线上就能产生一定频率的矩形波接上喇叭就能发出一定频率的声音若再利用延时程序控制高低电平的持续时间就能改变输出频率从而改变音调使喇叭发出不同的声音图2-5 扬声器电路图2-5中单片机的14脚输出具有复合功能此处用到了单片机17脚的io端口功能单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声27 按钮的设计

13、本抢答器中有8个抢答按键输入一个开始按键一个结束按键此外还有抢答时间调整键回答时间调整键加一按键减一按键各一个如图2-6所示图2-6 抢答按键及调整按键在上图中8个抢答按键分别接入单片机的p10p17端口单片机通过读取p10p17的值来判断当前输入的是8个抢答按键中的哪一个抢答时间调整和回答时间调整接到单片com加一及减一按键接到单片com开始及结束按键接到单片机的1011脚这里用到了单片机1011脚复合功能中的io端口功能单片机通过读取1011脚的p30p31的io端口值来判断当前是否处于抢答开始状态或抢答结束状态28 芯片74hc3074ls04的设计k1k8八个按键的输入电平靠74hc3

14、0输入与非门和74ls04反向器组成的电路改变输入电平图2-7中电路就是由一个74hc30输入与非门和74ls04反向器组成的去抖电路如下图2-7所示图2-7 去抖电路3软件设计31 软件系统结构图和程序流程图在系统架构图中包括系统初始化模块按键模块非法抢答模块正确抢答模块调整抢答模块调整回答模块和数码显示模块如图3-1所示图3-1软件系统结构图在主要的程序中包括主程序查询程序非法抢答程序抢答时间调整程序回答时间调整程序倒计时程序正常抢答处理程序犯规处理程序显示及发声程序主流程图如3-2所示图3-2 程序设计流程图32 程序分析主程序 ok equ 20h 抢答开始标志位 ring equ 2

15、2h 响铃标志位 data0 equ 36h 抢答按键口数据存放地址 org 0000h ajmp main org 0003h ajmp intt0 org 000bh ajmp t0int org 001bh ajmp t1int org 0040hmain mov r110 初设抢答时间为10s mov r230 初设答题时间为30s mov 38h70 启用锦囊时间从70s倒计时 mov tmod11h 设置未定时器模式1 mov th00f0h mov tl00ffh 越高发声频率越高越尖 mov th13ch mov tl10b0h 50ms为一次溢出中断 setb ea setb

16、 et0 setb et1 允许二个中断t0t1 clr ok clr ring setb tr1 setb tr0 一开始就运行定时器以开始显示fff如果想重新计数重置th1tl1就可以了 查询程序start mov data00ffh 初始化 mov r50bh mov r40bh mov r30bh acall display 未开始抢答时候显示fff jnb p33selsub0 jnb p34tz3 倒计时调整 jb p30next acall delay jb p30next 去抖动如果开始键按下就向下执行否者跳到非法抢答查询 setb ex0 开放int0 acall bark

17、按键发声 mov ar1 mov r6a 送r1- r6因为r1中保存了抢答时间 setb ok 抢答标志位在使用锦囊时用作判断是抢答倒计时还是回答倒计时 mov r30ah 抢答只显示计时灭号数 ajmp count 进入倒计时程序查询有效抢答的程序在count里面next jnb p10false1 jnb p11false2 jnb p12false3 jnb p13false4 jnb p14false5 jnb p15false6 jnb p16tz1 jnb p17tz2 ajmp start tz1 ajmp false7tz2 ajmp false8tz3 ajmp selsu

18、b1非法抢答处理程序false1 mov r301h ajmp errorfalse2 mov r302h ajmp errorfalse3 mov r303h ajmp errorfalse4 mov r304h ajmp errorfalse5 mov r305h ajmp errorfalse6 mov r306h ajmp errorfalse7 mov r307h ajmp errorfalse8 mov r308h ajmp errorselsub0 抢答时间r1调整程序 selsub0 mov ar1 mov b0ah div ab mov r5a mov r4b mov r30

19、ah acall display 先在两个时间led上显示r1 jnb p35inc0 p35为1s键如按下跳到inco jnb p36dec0 p36为-1s键如按下跳到deco jnb p31back0 p31为确定键如按下跳到backo ajmp selsub0inc0 mov ar1 cjne a63hadd0 如果不是99r2加1如果加到99r1就置0重新加起 mov r100h acall delay1 ajmp selsub0add0 inc r1 acall delay1 ajmp selsub0dec0 mov ar1 jz setr1 如果r1为0 r1就置99 dec r

20、1 acall delay1 ajmp selsub0setr1 mov r163h acall delay1 ajmp selsub0back0 ajmp startselsub1 回答时间r2调整程序 selsub1 mov ar2 mov b0ah div ab mov r5a mov r4b mov r30ah acall display jnb p35inc1 jnb p36dec1 jnb p31back1 ajmp selsub1inc1 mov ar2 cjne a63hadd1 mov r200h acall delay1ajmp selsub1add1 inc r2 aca

21、ll delay1 ajmp selsub1dec1 mov ar2 jz setr2 dec r2 acall delay1 ajmp selsub1setr2 mov r263h acall delay1 ajmp selsub1back1 ajmp start启用锦囊程序repeatmov a38h 使用锦囊时重新计时 mov r6a clr ring 当倒计时进入最后5秒的时候启用锦囊能消除蜂鸣倒计时程序 抢答倒计时和回答倒计时都跳到改程序 count mov r000h 重置定时器中断次数 mov th13ch mov tl10b0h 重置定时器recountmov ar6 r6保存

22、了倒计时的时间之前先将抢答时间或回答时间给r6 mov b0ah div ab 除十分出个位十位 mov 30ha 十位存于 30h mov 31hb 个位存于 31h mov r530h 取十位 mov r431h 取个位 mov ar6 subb a07h jnc larger 大于5s跳到larger小于等于5s会提醒 mov ar0 cjne a0ahfull 1s中05s向下运行 clr ring ajmp checkfull cjne a14hcheck 下面是1s的情况响并显示号数并清r0重新计 setb ring mov ar6 jz quit 计时完毕 mov r000h d

23、ec r6 一秒标志减1 ajmp checklarger mov ar0 cjne a14hcheck 如果1s向下运行否者跳到停显示 dec r6 计时一秒r6自动减1 mov r000hcheck jnb p31quit 如按下停止键退出 jnb okcheckk 只在回答倒计时才有效 ajmp nexttcheckkjnb p30repeat 判断是否使用锦囊nextt acall display jb okaccout如果是抢答倒计时如是则查询抢答否者跳过查询继续倒数 这里起到锁抢答作用 ajmp recountaccoutmov adata0 jnb acc0true1 jnb a

24、cc1true2 jnb acc2true3 jnb acc3true4 jnb acc4true5 jnb acc5true6 jnb acc6tz7 jnb acc7tz8 ajmp recount tz7 ajmp true7 tz8 ajmp true8 quit clr ok 如果按下了停止键执行的程序 clr ring ajmp start 正常抢答处理程序true1 acall bark mov ar2 mov r6a 抢答时间r2送r6 mov r301h clr ok 因为答题的计时不再查询抢答所以就锁了抢答 ajmp counttrue2acall bark mov ar2

25、 mov r6a mov r302h clr ok ajmp counttrue3acall bark mov ar2 mov r6a mov r303h clr ok ajmp counttrue4acall bark mov ar2 mov r6a mov r304h clr ok ajmp counttrue5 acall bark mov ar2 mov r6a mov r305h clr ok ajmp counttrue6 acall bark mov ar2 mov r6a mov r306h clr ok ajmp counttrue7 acall bark mov ar2 m

26、ov r6a mov r307h clr ok ajmp counttrue8 acall bark mov ar2 mov r6a mov r308h clr okajmp count犯规抢答程序error mov r000h mov th13ch mov tl10b0h mov 34hr3 犯规号数暂存与 34h here mov ar0 cjne a06hflash 03s向下运行- 灭并停响 clr ring mov r30ah mov r40ah mov r50ah 三灯全灭 ajmp check1 flash cjne a0chcheck1 下面是08s的情况响并显示号数并清r0重

27、新计 setb ring mov r000h mov r334h 取回号数 mov r50bh mov r40bh 显示ff和号数 ajmp check1check1 jnb p31quit1 acall display ajmp herequit1 clr ring clr ok ajmp start显示程序displaymov dptrdat1 查表显示程序利用p0口做段选码口输出p2低三位做位选码输出 mov ar3 movc aadptr mov p20feh mov p0a acall delay mov dptrdat2 mov ar5 movc aadptr mov p20fdh

28、 mov p0a acall delay mov ar4 movc aadptr mov p20fbh mov p0a acall delay retdat1db 00h06h5bh4fh66h6dh7dh07h7fh6fh00h71h "灭""1""2""3""4""5""6""7""8""9""灭""f"dat2db 3fh06h5bh4fh66h6dh

29、7dh07h7fh6fh00h71h第一个为零其他与上相同因为十位如果为零显示熄灭加减时间延时 起到不会按下就加n个数 delay1 mov 35h08hloop0 acall display djnz 35hloop0 ret延时 显示和去抖动用到 delay mov 32h12hloop mov 33h0afhloop1 djnz 33hloop1 djnz 32hloop ret发声程序bark setb ring acall delay1 acall delay1 clr ring 按键发声 retto溢出中断 响铃程序 t0int mov th00ech mov tl00ffh jnb ringout cpl p37 ring标志位为1时候p37口不断取反使喇叭发出一定频率的声音out retit1溢出中断 计时程序 t1int mov th13ch mov tl10b0h inc r0 reti中断服务程序 intt0 mov data0p1 clr ex0 reti end结束语经过了快2个月的努力和跟老师的商讨下我完成了这次毕业设计的任务在这次设计中通过在图书馆查资料和上网

温馨提示

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

评论

0/150

提交评论