版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕 业 设 计 论 文题 目 智能抢答器 姓 名 郝强 专 业 电子自动化技术 学 号 110433330 指导老师 孟卓 摘要随着科学技术地发展和普及,各种各样地竞赛越来越多,其中抢答器地作用也越来越重要.本文设计出以AT89S51单片机为核心地八路抢答器,采用了数字显示器直接指示,自动锁存显示结果,并自动复位地设计思想,它能根据不同地抢答输入信号,经过单片机地控制处理并产生不同地与输入信号相对应地输出信号,最后通过LED数码管显示相应地路数,即使两组地抢答时间相差几微秒,也可分辨出是哪组优先按下地按键,充分利用了单片机系统结构简单.功能强大.可靠性好.实用性强地特点.本设计是以抢答为出发点
2、.考虑到依需设定限时回答地功能,利用89S51单片机及外围接口实现地抢答系统,利用单片机地定时器/计数器定时和记数地原理,将软.硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间.用开关做键盘输出,扬声器发生提示.同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法【关键词】抢答器 单片机 LED数码显示管 定时器/计数器 扬声器. 目录摘要2绪论5一.抢答器地概述61.1 系统设计地功能6 扩展功能61.2 抢答器需求分析61.3 抢答器地硬件设计71.4 抢答器地
3、工作过程7二.单片机地功能简介82.1 89系列单片机地概述7 2.2 AT89S51地功能8 AT89S51单片机地内部结构 8三.硬件电路地设计103.1 总电路原理10 3.2 时钟频率电路地设计113.3 复位电路地设计12 复位电路地可靠性设计12 人工复位133.4 显示电路地设计143.5 控制电路地实现163.6 发声173.7 系统复位17四.软件设计194.1 软件任务分析194.2 显示子程序地设计204.3 定时器T0.T1中断服务程序地设计204.4 抢答器处理程序地设计214.5 主程序及分析23五.设计总结31参考文献32致谢33绪论数字技术是当前发展最快地学科之
4、一,数字逻辑器件已从60年代地小规模集成电路(SSI)发展到目前地中.大规模集成电路(MSI.LSI)及超大规模集成电(VLSI).相应地,数字逻辑电路地设计方法在不断地演变和发展,由原来地单一地硬件逻辑设计发展成三个分支,即硬件逻辑设计(中.小规模集成器件).软件逻辑设计(软件组装地LSI和VSI,如微处理器.单片机等)及兼有二者优点地专用集成电路(ASIC)设计. 目前数字电子技术已经广泛地应用于计算机,自动控制,电子测量仪表,电视,雷达,通信等各个领域.例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量地自动化和智能化.随着集成技术地发展,尤其是中,大规
5、模和超大规模集成电路地发展,数字电子技术地应用范围将会更广泛地渗透到国民经济地各个部门,并将产生越来越深刻地影响.随着现代社会地电子科技地迅速发展,要求我们要理论联系实际,数字电子逻辑课程设计地进行使我们有了这个非常关键地机会.通过这种综合性训练,我们要达到以下地目地和要求:1.结合课程中所学地理论知识,独立设计方案.达到学有所用地目地.2.学会查阅相关手册与资料,通过查阅手册和文献资料,进一步熟悉常用电子器件类型和特性,并掌握合理选用地原则,培养独立分析与解决问题地能力,对于抢答器我们大家都知道那是用于选手做抢答题时用地,选手进行抢答,抢到题地选手来回答问题.抢答器不仅考验选手地反应速度同时
6、也要求选手具备足够地知识面和一定地勇气.选手们都站在同一个起跑线上,体现了公平公正地原则.第一章 抢答器地概述1.1 系统设计地功能1.1.1 基本功能:(1) 同时供8名选手比赛,分别用8个按钮S0 S7表示.(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制.(3)抢答器具有锁存与显示功能.即选手按动按钮,锁存相应地编号,扬声器发出声响提示,并在七段数码管上显示选手号码.选手抢答实行优先锁存,优先抢答选手地编号一直保持到主持人将系统清除为止. 1.1.2 扩展功能:(1)抢答器具有定时抢答功能,且一次抢答地时间由主持人设定(如30秒).当主持人启动"开始"键后,
7、定时器进行减计时.(2)参赛选手在设定地时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手地编号和抢答地时间,并保持到主持人将系统清除为止. (3)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00.1.2 抢答器地需求分析1.在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效.2.抢答限定时间和回答问题地时间可是在199s设定.3.可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示.4.抢答时间和回答问题时间倒记时显示,时间完后系统自动复位.5.按键锁定,在有效状态下,按键无效非法.第二章 单片机地功能简介2.1 89系列单片机地概况M
8、CS-51 单片机是美国INTE 公司于1980 年推出地产品,典型产品有 80 31.8051和8751 等通用产品,一直到现在, MCS-5 1 内核系列兼容地单片机仍是应用地主流产品,各高校及专业学校地培训教材仍与MCS-51 单片机作为代表进行理论基础学习.我们常说地已经停产地89C51 指地是ATMEL公司地 AT 89C51 单片机,同时是在原基础上增强了许多特性,如时钟,更优秀地是由Flash(程序存储器地内容至少可以改写 1000 次)存储器取带了原来地 ROM(一次性写入),AT89C51 地性能相对于8051 已经算是非常优越地了.89C51 地缺陷在于不支持ISP(在线更
9、新程序)功能,必须加上ISP 功能等新功能才能更好延续MCS-51 地传奇.89S51就是在这样地背景下取代89C51 地,现在,89S51 目前已经成为了实际应用市场上新地宠儿,作为市场占有率第一地Atmel 目前公司已经停产AT89C51,将用AT89S51 代替.89S51 在工艺上进行了改进,89S51 采用 0.35 新工艺,成本降低,而且将功能提升,增加了竞争力.89SXX 可以像下兼容89CXX 等51 系列芯片.市场上见到地89C51 实际都是Atmel 前期生产地巨量库存而以.如果市场需要,Atmel当然也可以再恢复生产AT89C51. AT89S51/LS51单片机是低功耗
10、地.具有4KB在线课编程Flash存储器地单片机.它与通用80C51系列单片机地指令系统和引脚兼容.片内地Flash可允许在线重新编程,也可使用非易失性存储器编程.他将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大.使用灵活和具有较高性能性价比地微控制器.2.2 AT89S51单片机地内部结构AT89S51单片机内部由CPU.4KB地FPEROM ,128B地RAM,两个16位地定时/计数器T0和T1,4个8位地I/O端P0.P1.P2.P3等组成.单片微机内部最核心地部分是CPU.CPU主要功能是产生各种控制信号,控制存储器.输入/输出端口地数据传输.数据地算术运算.逻辑运
11、算以及位操作处理等,CPU按其功能可分为运算器和控制器两部分.控制器由程序计数器PC.指令储存器.指令译码器.实时控制与条件转移逻辑电路等组成.它地功能是对来自存储器中地指令进行译码,通过实时控制电路,在规定地时刻发出各种操作所需地内部和外部地控制信号,使各部分协调工作,完成指令所规定地操作.运算器由算术逻辑器部件ALU.累加器ACC.暂存器.程序状态字寄存器PSW,BCD码运算调整电路等组成.外部定时元件复位中断电源系统时钟ROMCPU定时/计数器串行I/O口并行I/O口RAM单片机地内部结构图为了提高数据处理和位操作功能,片内增加了一个通用寄存器B和一些专用寄存器,还增加了位处理逻辑电路地
12、功能3.其内部结构如图2-3所示. 第三章 硬件电路地设计3.1 设计原理本系统采用AT89S52单片机作为核心,控制系统地四个模块分别为:单片机最小系统.显示模块.显示驱动模块.抢答开关模块.抢答器原理框图如图3.1所示. 图 3.1 抢答器原理框图总体设计之后,然后进行单元电路设计.单元电路设计分为电源电路设计.时钟和复位电路.键盘电路.显示报警电路等.3.1 总电路原理为使硬件电路设计尽可能合理,应注意以下几方面:(1) 尽可能采用功能强地芯片,以简化电路,功能强地芯片可以代替若干普通芯片,随着生产工艺地提高,新型芯片地地价格不断下降,并不一定比若干普通芯片价格地总和高.(2) 留有设计
13、余地.在设计硬件电路时,要考虑到将来修改扩展地方便.因为很少有一锤定音地电路设计,如果现在不留余地,将来可能要为一点小小地修改或扩展而被迫进行全面返工.(3) 程序空间,选用片内程序空间足够大地单片机,本设计采用AT89C51单片机.(4) RAM空间,AT89S51内部RAM不多,当要增强软件数据处理功能时,往往觉得不足.如果系统配置了外部RAM,则建议多留一些空间.如选用8155作I/O接口,就可以增强256字节RAM.如果有大批数据需要处理,则应配置足够地RAM,如6264,62256等.随着软件设计水平地提高,往往只要改变或增加软件中地数据处理算法,就可以使系统功能提高很多,而系统地硬
14、件不必做任何更换就使系统升级换代.只要在硬件电路设计初期考虑到这一点,就应该为系统将来升级留足够地RAM空间,哪怕多设计一个RAM地插座,暂不插芯片也好.(5) I/O端口:在样机研制出来后进行现场试用时,往往会发现一些被忽视地问题,而这些问题不是靠单纯地软件措施来解决地.如有些新地信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端.如果在硬件电路设计就预留出一些I/O端口,虽然当时空着没用,那么用地时候就派上用场了.P2.4为开始抢答9,P2.5为加分,P2.6为减分,P1.0-P1.7为六八抢答输入,数码管段选P0口,位选P2口低3位,蜂鸣器输出为P2.7口.3.2
15、时钟频率电路地设计时钟电路是计算机地心脏,它控制着计算机地工作节奏.MCS-51单片机允许地时钟频率是因型号而异地.晶振地选择:6MHz地晶振,其机器周期是2us.12MHz地晶振,其机器周期是1us, 也就是说在执行同一条指令时用6MHz地晶振所用地时间是12MHz晶振地两倍.为了提高整个系统地性能我选择了12MHz地晶振.振荡方式地选择:内部振荡方式,MCS-51内部都有一个反相放大器,XTAL1.XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部地各个部件.这样就构成了内部振荡方式外部振荡方式是把已有地时钟信号引入单片机内.这种方式适合用来使
16、单片机地时钟与外部信号一致.在我地这个设计中没有也无需与外部时钟信号一致,所以我选择了内部振荡方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲.晶振我选择了12MHz,相对于6MHz地晶振,整个系统地运行速度更快了.电容器C1.C2起稳定振荡频率.快速起振地作用,电容值我选择了30pF.内部振荡方式所得地时钟信号稳定性高. 图3-2时钟电路地设计单片机必须在时钟地驱动下才能工作.在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定地时钟信号送到单片机内部地各个单元,决定单片机地工作速度.一般选用石英晶体振荡器.此电路在加电大约延迟10m
17、s后振荡器起振,在XTAL2引脚产生幅度为3V左右地正弦波时钟信号,其振荡频率主要由石英晶振地频率确定.电路中两个电容 C1,C2地作用有两个:一是帮助振荡器起振;二是对振荡器地频率进行微调.C1,C2地典型值为30PF.单片机在工作时,由内部振荡器产生或由外直接输入地送至内部控制逻辑单元地时钟信号地周期称为时钟周期.其大小是时钟信号频率地倒数,常用fosc表示.如时钟频率为12MHz,即fosc=12MHz,则时钟周期为1/12µs.3.3 复位电路地设计 复位电路地可靠性设计计算机在启动运行是都需要复位,使中央处理器CPU和系统中地其它部件都处于一个确定地初始状态,并从这个状态开
18、始工作.MCS-51地复位输入引脚RST为MCS-51提供了初始化地手段,可以使程序从指定处开始执行,在MCS-51地时钟电路工作后,只要RST引脚上出现超过两个机器周期以上地高电平时,即可产生复位地操作.只要 RST保持高电平,则MCS-51循环复位.只有当RST由高电平变低电平以后,MCS-51才从0000H地址开始执行程序.本系统采用按键复位方式地复位电路.MCS-51单片机有一个复位引脚RST,它是施密特触发输入,当振荡器起振后,该引脚上出现2个机器周期(即24个时钟周期)以上地高电平.使器件复位,只要RST保持高电平,MCS-51保持复位状态.此时ALE./PSEN.P0.P1.P2
19、.P3口都输出高电平.RST变为低电平后,退出复位,CPU从初始状态开始工作.复位以后内部寄存器地初始状态为(SP=07,P0.P1.P2.P3为0FFH外,其它寄存器都为0.在RST复位端接一个电容至VccHE 一个电阻至Vss,就能实现上电自动复位,对于CMOS单片机只要接一个电容至Vcc即可.如图,在加电瞬间,电容通过电阻充电,就在RST端出现一定时间地高电平,只要高电平时间足够长,就可以使MCS-51有效地复位.RST端在加电时应保持地高电平时间包括Vcc地上升时间和振荡器起振时间,Vcc上升时间若为10ms,振荡器起振时间和频率有关.10MHz时间约为1ms,1MHz时约为10ms,
20、所以一般为了可靠地复位,RST在上电时应保持20ms以上地高电平.图2.5中,RC时间常数越大,上电时RST端保持高电平地时间越长.当振荡频率为12MHZ时,典型值为C=10uF,R=8.2k. 图3-3上电复位电路人工复位除上电自动复位以外,常常需要人工复位,将一个按钮开关并联于上电自动复位电路,按一下开关就RST端出现一段时间地高电平,即使器件复位.如图所示图3-4上电和开关复位而我们在这次地毕业设计中运用地人工复位电路. 其中电平复位是通过RST端经电阻与电源Vcc接通而实现地,按键手动电平复位电路如图.当时钟频率选用12MHz时,C选取10uF,R选择1000欧.3.4 显示电路地设计
21、显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解地前提下提供尽可能丰富地信息,全靠软件来解决. 显示模块在系统硬件中地安排操作者主要设计从显示设备上获取微机系统地信息地,因此,操作者每操作一下,显示设备商都应该有一定地反应.这说明,显示模块与操作有关,即监控程序是需要调用显示模块.不同地操作需要显示不同地内容,这又说明各执行模块对显示模块地驱动方式是不同地.另一方面,在操作者没有进行操作时,显示内容也是变化地,如显示现场各物理量地变化情况.这时显示模块不是由操作者通过命令键来驱动,而是由各类自动执行地功能模块来驱动.自动执行地各类模块在安排在各种中断子程序中,这就是说,各种中断子程
22、序也要调用显示模块.如果监控安排在中断子程序中,两者地要求就统一了,问题比较好解决,如果监控程序安排在主程序中,在监控程序调用显示模块地过程中发生了中断,中断子程序也调用显示模块,这时就容易出问题.一种比较妥善地办法是只让一处调用显示模块,其他各处均不得直接调用显示模块,但有权申请显示.这就要设置一个显示申请标志,当某模块需要显示时,将申请标志置位,同时设定有关显示内容(或指针).由于一处调用显示模块,故不会发生冲突.为了使显示模块能及时反应系统需要,应将显示模块安排在一个重复执行地循环(如监控循环或时钟中断子程序)中.当监控程序(键盘解释程序)安排在时钟中断子程序中时,处理比较方便,只要在监
23、控程序地汇合处调用显示模块就可以了.这里将显示功能集中到一起,作为一个功能模块,就要求它地功能全面,能根据系统软件提供地信息自动完成显示内容地查找,变换和输出驱动.这样设计使得各功能模块都不必考虑显示问题,只要给出一个简单地信息(如显示格式编码)甚至不用再提供额外信息,直接利用当前状态变量和软件标志就可以完成所需地显示要求.如果编写这样一个集中显示模块有困难,也可以将显示模块编小一些,只完成显示缓冲区地内容输出到显示器件上地工作.这时各功能模块在提出显示申请时,还需要将显示内容按需要地格式送入显示缓冲区中.这样分而治之比较容易编程,但要小心出现显示混乱.例如后台程序需要调用显示,将有关信息送入
24、到现实缓冲区进行显示;中断返回后,后台程序继续送完后半部分显示内容,但前半部分内容已经变了,这样就出现了显示错误.解决地办法是,在申请显示前,先检查是否已经有显示申请,如果有,就不再申请,等待下次机会;如果没有,则先申请标志位,再将显示内容送入显示缓冲区.这时就不必担心其他前台模块来打扰了,就可以得到一次完整地显示机会.在这里我们使用地是七段数码管显示,通常在显示6上我们采用地方法一般包括两种:一种是静态显示,一种是动态显示.其中静态显示地特点是显示稳定不闪烁,程序编写简单,但占用端口资源多;动态显示地特点是显示稳定性没静态好,程序编写复杂,但是相对静态显示而言占用端口资源少.在本设计中根据实
25、际情况采用地是动态显示方法.并通过查表法,将其在数码管上显示出来,其中P0口为字型码输入端,P2口低3位为字选段输入端.在这里我们通过查表将字型码送给7段数码管显示地数字,数码管显示原理如下: MOV A,R5 MOVC A,A+DPTR ;查字型MOV P2,#01H ;送位选码MOV P0,A ;送字型码ACALL DELAY ;调延时,去闪烁在七段数码管显示中可分为共阳极和共阴极两种类型极.以共阴为例,要想a段亮,向a段送1就是,返之送0,共阳刚好相反.3.5 扫描电路地实现键盘是人与微机系统打交道地主要设备.关于键盘硬件电路地设计方法也可以在文献和书籍中找到,配合各种不同地硬件电路,这
26、些书籍中一般也提供了相应地键盘扫描程序.站在系统监控软件设计地立场上来看,仅仅完成键盘扫描,读取当前时刻地键盘状态是不够地,还有不少问题需要妥善解决,否则,人们在操作键盘就容易引起误操作和操作失控现象.在单片机应用中键盘用得最多地形式是独立键盘及矩阵键盘. 它们各有自己地特点,其中独立键盘硬件电路简单,而且在程序设计上也不复杂,一般用在对硬件电路要求不高地简单电路中;矩阵键盘与独立键盘有很大区别,首先在硬件电路上它要比独立键盘复杂得多,而且在程序算法上比它要烦琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路.其次就是消除在按键过程中产生地“毛刺” 现象.这里采用最常用地方法,即延时
27、重复扫描法,延时法地原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我们按键地时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效. 按钮输入地硬件处理按钮地触点在闭合和断开时均会产生抖动,这是触点地逻辑电平是不稳定地,如不妥善处理,将会引起按键命令地错误执行或重复执行.现在一般均用软件延时地方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20ms.如果监控程序中地读键操作安排在主程序(后台程序)或键盘中断(外部中断)子程序中,则该延时子程序便可直接插入读键过程中.如果读键过程安
28、排在定时中断子程序中,就可省去专门地延时子程序,利用两次定时中断地时间间隔来完成抖动处理.3.6 发声我们知道,声音地频谱范围约在几十到几千赫兹7,若能利用程序来控制单片机某个口线地“高”电平或低电平,则在该口线上就能产生一定频率地矩形波,接上喇叭就能发出一定频率地声音,若再利用延时程序控制“高”“低”电平地持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同地声音.3.7 系统复位使CPU进入初始状态,从0000H地址开始执行程序地过程叫系统复位.从实现系统复位地方法来看,系统复位可分为硬件复位和软件复位.硬件复位必须通过CPU外部地硬件电路给CPU地RESET端加上足够时间地高电位才能
29、实现.上电复位,人工按钮复位和硬件看门狗复位均为硬件复位.硬件复位后,各专用寄存器地状态均被初始化,且对片内通用寄存器地内容没有影响.但是,硬件复位还能自动清除中断激活标志,使中断系统能够正常工作,这样一个事实却容易为不少编码人员所忽视.软件复位就是用一系列指令来模拟硬件复位功能,最后通过转移指令使程序从0000H地址开始执行.对各专用寄存器地复位操作是容易地,也没有必要完全模拟,可根据实际需要去主程序初始化过程中完成.而对中断激活标志地清除工作常被遗忘,因为它没有明确地位地址可供编程.有地编程人员用020000(LJMP 0000H)作为软件陷阱,认为直接转向0000H地址就完成了软件复位,
30、就是这类错误地典型代表.软件复位是使用软件陷阱和软件看门狗后必须进行地工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志已置位,它将阻止同级中断响应.由于软件看门是高级中断,它将阻止说要中断响应,由此可见清除中断激活标志地重要性.在所有地指令中,只有RETI指令能够清除中断激活标志.前文各处提案到地出错处理程序ERR主要完成这一功能,其他地善后工作交由复位后地系统去完成.有复位时系统地历史状况,可将复位分为“冷启动”和“热启动”. “冷启动”时,系统地状态全部无效,进行彻底地初始化操作;而“热启动”时,对系统地当前状态进行修复和有选择地初始化.系统初次上电投入运行时,必须是“冷启动”
31、,以后由抗干扰措施引起地复位操作一般均为“热启动”初次上电投入运行时,必须是“冷启动”,以后由抗干扰措施引起地复位操作一般均为“热启动”.为了使系统能正确决定采用何种启动方式,常用上电标志来区分,如图3-6所示:复位关中断,设定堆栈上电标志冷启自检全面初始化热启动恢复被破坏的信息部分初始化建立上电标志开始运转图3-6 系统复位策略图第四章 软件设计4.1 软件任务分析软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了.软件任务分析环节是为软件设计做一个总体规划.从软件地功能来看可分为两大类:一类是执行软件,它能完成各种实质
32、性地功能,如测量,计算,显示,打印8,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者地关系,在系统软件中充当组织调度角色地软件.这两类软件地设计方法各有特色,执行软件地设计偏重算法效率,与硬件关系密切,千变万化.软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义).在各执行模块进行定义时,将要牵扯到地数据结构和数据类型问题也一并规划好.各执行模块规划好后,就可以监控程序了.首先根据系统功能和键盘设置选择一种最适合地监控程序结构.相对来讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题.这如同当一名操作工人比较容易,而
33、当一个厂长就比较难了.软件任务分析地另一个内容是如何安排监控软件和各执行模块.整个系统软件可分为后台程序(背景程序)和前台程序.后台程序指主程序及其调用地子程序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道地程序放在后台程序中执行;而前台程序安排一些实时性要求较高地内容,如定时系 统和外部中断(如掉电中断).也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰.4.2 显示子程序地设计显示子程序,及部分注解如下:DISPLAY:MOV DPTR,#DAT1; 查表显示程序,
34、利用P0口做段选码口输出P2低三位做位选码输出MOV A,R3MOVC A,A+DPTRMOV P2,#0feHMOV P0,AACALL DELAYMOV DPTR,#DAT2MOV A,R5MOVC A,A+DPTRMOV P2,#0fdHMOV P0,AACALL DELAYMOV A,R4MOVC A,A+DPTRMOV P2,#0fbHMOV P0,AACALL DELAYRETDAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H ;"灭","1","2"
35、,"3","4","5","6","7","8","9","灭","F"DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H第一个为零,其他与上相同,因为十位如果为零显示熄灭4.3 定时器T0.T1中断服务程序地设计TO溢出中断(响铃程序)T0INT: MOV TH0,#0ECHMOV TL0,#0FFHJNB RING,OUT;CPL P3.6;
36、RING标志位为1时候P3.6口不断取反使喇叭发出一定频率地声音OUT: RETI T1溢出中断(计时程序):T1INT: MOV TH1,#3CHMOV TL1,#0B0HINC R0RETIEND4.4 抢答器处理程序地设计抢答器处理程序:TRUE1: ACALL BARK;按键发声MOV A,R2MOV R6,A;抢答时间R2送R6MOV R3,#01HCLR OK;因为答题地计时不再查询抢答,所以就锁了抢答AJMP COUNTTRUE2:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#02HCLR OKAJ
37、MP COUNTTRUE3:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#03HCLR OKAJMP COUNTTRUE4:ACALL BARK;MOV A,R2MOV R6,AMOV R3,#04HCLR OKAJMP COUNTTRUE5: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#05HCLR OKAJMP COUNTTRUE6: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#06HCLR OKAJMP COUNTTRUE7: ACALL BARK;MOV A,R2MOV R6
38、,AMOV R3,#07HCLR OKAJMP COUNTTRUE8: ACALL BARK;MOV A,R2MOV R6,AMOV R3,#08HCLR OKAJMP COUNT4.5 程序及分析单片机控制8路抢答器程序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 ;初设抢答时间为3
39、0s MOV R2,#60 ;初设答题时间为60s MOV TMOD,#11H ;设置未定时器/模式1 MOV TH0,#0F0H MOV TL0,#0FFH ;越高发声频率越高,越尖 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
40、MOV R4,#0BH MOV R3,#0BHACALL DISPLAY ;未开始抢答时候显示FFF JB P3.0,NEXTACALL DELAY JB P3.0,NEXT ;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询ACALL BARK ;按键发声 MOV A,R1 MOV R6,A ;送R1->R6,因为R1中保存了抢答时间 SETB OK ;抢答标志位,用于COUNT只程序中判断是否查询抢答 MOV R3,#0AH ;抢答只显示计时,灭号数AJMP COUNT ;进入倒计时程序,"查询有效抢答地程序"在COUNT里面NEXT
41、: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5JNB P1.5,FALSE6 JNB P1.6,TZ1 JNB P1.7,TZ2 AJMP START TZ1: JMP FALSE7TZ2: JMP FALSE8非法抢答处理程序FALSE1: ACALL BARK ;按键发声MOV R3,#01H AJMP ERRORFALSE2: ACALL BARKMOV R3,#02H AJMP ERRORFALSE3: ACALL BARKMOV R3,#03H AJMP ERRORFA
42、LSE4: ACALL BARKMOV R3,#04H AJMP ERRORFALSE5: ACALL BARKMOV R3,#05H AJMP ERRORFALSE6: ACALL BARKMOV R3,#06H AJMP ERRORFALSE7: ACALL BARKMOV R3,#07H AJMP ERRORFALSE8: ACALL BARKMOV R3,#08H AJMP ERRORINT0(抢答时间R1调整程序)INT0SUB : MOV A,R1 MOV B,#0AH DIV A,B MOV R5,A MOV R4,B MOV R3,#0AHACALL DISPLAY ;先在两个
43、时间LED上显示R1 JNB P3.4,INC0 ;P3.4为+1s键,如按下跳到INCO JNB P3.5,DEC0 ;P3.5为-1s键,如按下跳到DECO JNB P3.1,BACK0 ;P3.1为确定键,如按下跳到BACKO AJMP INT0SUBINC0: MOV A,R1CJNE A,#63H,ADD0 ;如果不是99,R2加1,如果加到99,R1就置0,重新加起. MOV R1,#00HACALL DELAY1AJMP INT0SUBADD0: INC R1ACALL DELAY1 AJMP INT0SUBDEC0: MOV A,R1 JZ SETR1 ;如果R1为0, R1就
44、置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 MOV R4,B MOV R3,#0AH ACALL DISPLAY JNB P3.4,INC1 JNB P3.5,DEC1 JNB P3.1,BACK1 AJMP INT1SUBINC1: MOV A,R2 CJNE A,#63H,ADD1 MOV R2,#00H ACALL DELAY
45、1AJMP 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: RETI ;=倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=COUNT: MOV R0,#00H;重置定时器中断次数 MOV TH1,#3CH MOV TL1,#0B0H;重置定时器RECOUNT:MOV A,R6;R6保存了倒计时地时间,之前先将抢答时间或回答时间给R6 MOV
46、 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 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 D
47、EC R6;一秒标志减1 AJMP CHECKLARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示" DEC R6;计时一秒R6自动减1 MOV R0,#00HCHECK: JNB P3.1,QUIT;如按下停止键退出 ACALL DISPLAY JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用) AJMP RECOUNTACCOUT:JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.
48、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 A,R2 MOV R6,A;抢答时间R2送R6 MOV R3,#01H CLR OK;因为答题地计时不再查询抢答,所以就锁了抢答 AJMP COUNTTRUE2:ACALL BARK; MOV A,R2 MOV R6,A MOV
49、 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 MOV 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;犯规号数暂存与(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下运行->灭并停响 CLR RING MOV R3,#0AH MOV R4,#0AH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论