




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安邮电学院毕业设计(论文)题 目:基于51单片机的抢答器设计院(系):专 业:班 级:学生姓名:导师姓名: 职称:第一章抢答器的概述1系统设计的功能1.2抢答器需求分析1.3抢答器的工作原理第二章单片机的功能简介2.1 89系列单片机的概述2.2 at89s51 的功能2.2.1 ta89s51特殊功能寄存器2.2.2 at89s51单片机的内部结构第三节硬件电路的设计3.1总屯路原理3.2时钟频率电路的设计3.3复位电路的设计3.3.1复位电路的可靠性设计3.3.2人工复位3.4显示电路的设计3.5控制电路的实现3.6 发声3.7系统复位第四章软件设计4.1软件任务分析4.2显示子程序的设
2、计4.3定时器to、t1中断服务程序的设计4.4抢答器处理程序的设计4.5主程序及分析第五章 元器件及焊接调试第六章设计小结致谢 参考文献随着科学技术的发展和普及,各种齐样的竞赛越来越多,其中抢答器的作 用也就显而易见。口前很多抢答器基本上采用小规模数字集成电路设计,使用起 来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。 现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来 设计抢答器,便使以上问题得以解决针对以上情况,本文设计出以at89s51单 片机为核心的八路抢答器。我们采用了数字显示器直接指示,£1动锁存显示结果, 并自动复位的设计思
3、想,它能根据不同的抢答输入信号,经过单片机的控制处理 并产生不同的与输入信号相对应的输出信号,最后通过led数码管显示相应的路 数,即使两组的抢答时间相差几微秒,也可分辨出是哪组优先按下的按键,它充 分利用了单片机系统的优点,具有结构简单、功能强人、可靠性好、实用性强的 特点。本设计是以八路抢答为基本理念。考虑到依需设定限时冋答的功能,利用 89s51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记 数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使 数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能 够实现:在抢答中,只有开始后抢答才
4、有效,如果在开始抢答前抢答为无效;满 时后系统计时口动复位及主控强制复位;按键锁定,在有效状态下,按键无效非 法。笫一章抢答器的概述1.1系统设计的功能1 基本功能:(1)同时供8名选手比赛,分別用8个按钮s0s7表示。(2)设置一个系统清除和抢答控制开关s,该开关由主持人控制。(3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器 发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先 抢答选手的编号一直保持到主持人将系统清除为止。2扩展功能:(1)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。 当主持人启动”开始”键后,定时器进行减计时。
5、(2)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器 上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。在这段(3) 如果定时时间己到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示 器上显少00o1.2抢答器的需求分析1、在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效。2、抢答限定时间和回答问题的时间可是在199s设定。3、可以显示是哪位选手有效抢答和无效抢答,正确按键后有咅乐提示。4、抢答时间和回答问题时间倒记时显示,时间完后系统口动复位。5、按键锁定,在有效状态下,按键无效非法。1.3抢答的工作过程+5vov+5pnu 人忻/i 讒关牖st1
6、71314ltrbia340r sya 74ls48a2 al ao3q r s一 2sr scb74ls279)14 |15y2 yo yex ys _ 74ls148_ _ _ _ k 14 d 12 h 510kqx8表2-1 74ls148的功能真值表输入输出st1n 1nx 1n2 in in in 5砂石耳1xxwxxxxxx1111101 1111111111100xxwxxxxx0000010xxxxxx01001010xxxxx011u10010xxwxx0111011010xxwx01111100010xxw011111101010x0w1111111100100 1111
7、111111011、如果想调节抢答时间或答题时间,按加一键或减一键进入调节状态, 此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下加1s 键,如 果想减一秒按一下减1s键,时间led上会显示改变后的时间,调整范围为099s, os时再减is会跳到99, 99s时再加is会变到oso2、主持人按抢答开始键,会有提示音,并立刻进入抢答倒计时(预设20s 抢答时间),如有选手抢答,会有提示咅,并会显示其号数并立刻进入回答倒计 时(预设20s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。3、如倒计时期间,主持人想停止倒计时可以随时按停止按键,系统会口 动进入准备状态,等待主持人
8、按抢答开始进入下次抢答计时。4、如果主持人未按抢答开始键,而有人按了抢答按键,犯规抢答,led 上不显示任何结果,直到按下停止键为止。1.4抢答器的t作原理及流程抢答器的基本工作原理:在抢答竞赛或呼叫时,有多个信号同时或不同时 送入主电路中,抢答器内部的寄存器工作,并识别、记录第一个号码,同时内部 的定时器开始t作,记录有关时间并产生超时信号。在整个抢答器t作过程中, 显示电路、语音电路等还要根据现场的实际情况向外电路输出相应信号。抢答器 的工作流程分为、系统复位、正常流程、违例流程等几部分,如图2-2所示,下 面分别予以介绍。第二章单片机的功能简介2.1 89系列单片机的概况mcs-51单片
9、机是美国inte公司于1980年推出的产品,典型产品有80 31 (内部没有程序存储器,实际使用方面已经被审场淘汰)、8051 (芯片采用 hmos,功耗是630mw,是89c51的5倍,实际使用方而己经被市场淘汰) 和8751等通用产品,一直到现在,mcs5 1内核系列兼容的单片机仍是应用 的主流产品(比如目前流行的89s51、已经停产的89c51等),各高校及专业 学校的培训教材仍与mcs51单片机作为代表进行理论基础学习。有些文献甚 至也将8051泛指mcs-51系列单片机,8051是早期的最典型的代表作,曲 于mcs51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说 mcs-
10、51内核实际上已经成为一个8位单片机的标准。其他的公司的51单片 机产品都是和mcs51内核兼容的产品而以。同样的一段程序,在各个单片机 厂家的硬件上运行的结果都是一样的,如atmel的89c51 (已经停产)、89s51, philips (菲利浦),和winbond (华邦)等,我们常说的己经停产的89c51 指的是atmel公司的at 89c51单片机,同时是在原基础上增强了许多特性, 如时钟,更优秀的是由flash (程序存储器的内容至少可以改写1000次)存储 器取带了原来的rom (一次性写入),at89c51的性能相对t 8051已经算 是非常优越的了。不过在市场化方面,89c5
11、1受到了 pic单片机阵营的挑战, 89c51最致命的缺陷在于不支持isp (在线更新程序)功能,必须加上isp功 能等新功能才能更好延续mc&51的传奇。89s51就是在这样的背景下取代 89c51的,现在,89s51目前已经成为了实际应用市场上新的宠儿,作为市场 占有率第一的atmel目前公司已经停产at89c51,将用at89s51代替o89s51 在工艺上进行了改进,89s51采用0.35新工艺,成本降低,而且将功能提升, 增加了竞争力。89sxx可以像下兼容89cxx等51系列芯片。市场上见到的 89c51实际都是atmel前期生产的巨量库存而以。如果市场需要,atmel当然
12、 也可以再恢复生产at89c51oat89s51/ls51单片机是低功耗的、具有4kb在线课编程flash存储器的单 片机。它与通用80c51系列单片机的指令系统和引脚兼容。片内的flash可允 许在线重新编程,也可使用非易失性存储器编程。他将通用cpu和在线可编程 flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能性价比的 微控制器。2.2 at89s51 的功能221 at89s51特殊功能寄存器特殊功能寄存器也称专用寄存器,是具有特殊功能的所有寄存器的集合,简 称sfr (special function register)。特殊功能寄存器共含有22个不同寄 存器。它们的
13、地址分配在80hffh中,即在ram地址中。这些寄存器的名称和 地址见表2-2。表2-1器件选型方案的详细清单器件名称规格型号数量微处理器at89s511电阻3wtt10k8电容30pf3晶振12mhz1按钮11反相器37段数码管7seg-mpx4cc4扬声器1虽然特殊功能寄存器地址在80hffh之屮,但在80hffh的地址单元屮, 不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的, 如果对这些单元进行操作,得到的是一些随机数,而写入则无效。所以,用户编 程时不应该将数据写入这些未确定的地址单元,它们是公司留待将来开发新产品 时使用的表2-2 at89s51特殊功能寄心器
14、列表符号地址注释*acceoh累加器*bfoh乘法寄存器*pswdoh程序状态字sp81h堆栈指针dpl82h数据存储器指针低8位dph83h数据存储器指针高8位*iea8h中断允许控制器*ipd8h中断优先控制器*p080h端口 0*p190h端口 1*p2aoh端口 2*p3boii端口 3pc0n87h电源控制及波特率选择*sc0n98h串行口控制器sbuf99h串行数据缓冲器*tc0n88h定吋器控制tmod89h定时器方式选择tlo8ah定时器0低8位tl18bh定时器1低8位tho8ch定时器0低8位th18dh定时器1高8位注:带*号的特殊功能寄存器都是可以位寻址的寄存器2.2.
15、2 at89s51单片机的内部结构at89s51单片机内部由cpu、4kb的fperom , 128b的ram,两个16位的定 时/计数器to和t1, 4个8位的i/o端po、pl、p2、p3等组成。单片微机内部 最核心的部分是cpuo cpu主要功能是产生各种控制信号,控制存储器、输入/ 输出端口的数据传输、数据的算术运算、逻辑运算以及位操作处理等,cpu按其 功能可分为运算器和控制器两部分。控制器由程序计数器pc、指令储存器、指 令译码器、实时控制与条件转移逻辑电路等组成。它的功能是对来自存储器屮的 指令进行译码,通过实时控制电路,在规定的时刻发出各种操作所需的内部和外 部的控制信号,使各
16、部分协调工作,完成指令所规定的操作。运算器由算术逻辑 器部件alu、累加器acc、暂存器、程序状态字寄存器psw, bcd码运算调整电路 等组成。为了提高数据处理和位操作功能,片内增加了一个通用寄存器b和一些专 用寄存器,述增加了位处理逻辑电路的功能。其内部结构如图23所示。第三章硬件电路的设计3.1总电路原理为使磧件电路设计尽可能合理,应注意以下儿方面:(1) 尽可能采用功能强的芯片,以简化电路,功能强的芯片可以代替若t普 通芯片,随着生产工艺的提髙,新型芯片的的价格不断下降,并不一定比若干普 通芯片价格的总和高。(2) 留有设计余地。在设计硬件电路吋,要考虑到将来修改扩展的方便。因 为很少
17、有一锤定音的电路设计,如果现在不留余地,将來可能要为一点小小的修 改或扩展而被迫进行全面返工。(3) 程序空间,选用片内程序空间足够大的单片机,本设计釆用at89c51 单片机。(4) ram空间,at89s51内部ram不多,当耍增强软件数据处理功能时,往 往觉得不足。如果系统配置了外部ram,则建议多留一些空间。如选用8155作 i/o接口,就可以增强256字节ram如果有人批数据需要处理,则应配置足够的 ram,如6264, 62256等。随着软件设计水平的提高,往往只要改变或增加软件 中的数据处理算法,就可以使系统功能提高很多,而系统的硬件不必做任何更换 就使系统升级换代。只要在駛件电
18、路设计初期考虑到这一点,就应该为系统将來 升级留足够的ram空间,哪怕多设计一个ram的插座,暂不插芯片也好。(5) i/o端口:在样机研制出来后进行现场试用时,往往会发现一些被忽 视的问题,而这些问题不是靠单纯的软件措施来解决的。如有些新的信号需耍采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输岀端。如果在 便件电路设计就预留出一些i/o端口,虽然当时空着没用,那么用的时候就派上 用场了。p2.4为开始抢答9, p2.5为加分,p2.6为减分,pl.o-p1.7为六八抢答输 入,数码管段选pod,位选p2 口低3位,蜂鸣器输出为p2. 7 口。八路抢笞器0-1aftatllckg
19、t«3ui403938373635343332m302928272625242322刀3.2时钟频率电路的设计时钟屯路是计算机的心脏,它控制着计算机的工作节奏。mcs-51单片机允 许的时钟频率是因型号而异的。晶振的选择:6mhz的晶振,其机辭周期是2us。12mhz的晶振,其机器周期是lus,也就是说在执行同一条指令时用6mhz 的晶振所用的时间是12mhz晶振的两倍。为了提高整个系统的性能我选择了 12mhz的晶振。振荡方式的选择:内部振荡方式,mcs-51内部都有一个反相放人器,xtalk xtal2分别为反 相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至
20、单 片机内部的各个部件。这样就构成了内部振荡方式外部振荡方式是把已有的时钟信号引入单片机内。这种方式适合用来使单片 机的时钟与外部信号一致。在我的这个设计中没有也无需与外部时钟信号一致,所以我选择了内部振荡 方式,由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激 振荡器并产生振荡时钟脉冲。晶振我选择了 12mhz,相对于6mhz的晶振,整个 系统的运行速度更快了。电容器cl、c2起稳能振荡频率、快速起振的作用,电 容值我选择了 30pfo内部振荡方式所得的时钟信号稳定性高。图3-2时钟电路的设计单片机必须在时钟的驱动下才能工作在单片机内部有一个时钟振荡电路, 只需要外接一个振荡
21、源就能产生一定的时钟信号送到单片机内部的各个单元,决 定单片机的工作速度。一般选用石英品体振荡器。此电路在加电大约延迟10ms后振荡器起振,在x tal2引脚产生幅度为3v左右的止弦波时钟信号,其振荡频率主要由石英晶振的 频率确定。电路中两个电容c1,c2的作用有两个:一是帮助振荡器起振;二是对 振荡器的频率进行微调。c1,c2的典型值为30pfo单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单 元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,常用fxc表 示。如时钟频率为12mhz,即f0sc=12mhz,则时钟周期为1/12m。3.3复位电路的设计3.3.1复
22、位电路的可靠性设计计算机在启动运行是都需要复位,使屮央处理器cpu和系统屮的其它部件 都处于一个确定的初始状态,并从这个状态开始工作。mcs-51的复位输入引脚 rst为mcs-51提供了初始化的手段,可以使程序从指定处开始执行,在mcs-51 的时钟电路工作后,只要rst引脚上出现超过两个机器周期以上的高电平时,即 可产生复位的操作。只要rst保持高电平,则mcs-51循环复位。只有当rst由 高电平变低电平以后,mcs-51才从0000h地址开始执行程序。本系统采用按键 复位方式的复位电路。mcs-51单片机有一个复位引脚rst,它是施密特触发输入,当振荡器起振后, 该引脚上出现2个机器周
23、期(即24个时钟周期)以上的高电平。使器件复位, 只要rst保持高电平,mcs-51保持复位状态。此时ale、/psen、po、pl、p2、 p3 口都输出高电平。rst变为低电平后,退出复位,cpu从初始状态开始工作。 复位以后内部寄存器的初始状态为(sp=07, po、pl、p2、p3为offh外,其它 寄存器都为0。在rst复位端接一个电容至vcciie 一个电阻至vss,就能实现 上电自动复位,对t cmos单片机只耍接一个电容至vcc即可。如图,在加电瞬 间,电容通过电阻充电,就在rst端出现一定时间的高电平,只要高电平时间足 够长,就可以使mcs-51有效地复位。rst端在加电时应
24、保持的高电平时间包括 vcc的上升时间和振荡器起振时间,vcc上升时间若为10ms,振荡器起振时间和 频率有关。lomiiz时间约为1ms, lmilz时约为10ms,所以一般为了可靠地复位, rst在上电时应保持20ms以上的高电平。图2. 5中,rc时间常数越大,上电时 rst端保持高电平的时间越长。当振荡频率为12mhz时,典型值为c二louf, r二8. 2k q.+5vvccfcrstrmcs-511vss图3-3 ±电复位电路3.3.2人工复位除上电自动复位以外,常常需要人工复位,将一个按钮开关并联于上电口动复 位电路,按一下开关就rst端出现一段时间的高电平,即使器件复
25、位。如图所示+5vir1 fr2vccrstmcs-51vss图3-4上电和开关复位而我们在这次的毕业设计中运用的人工复位电路.其中电平复位是通过rst端经电阻和电 源vcc接通而实现的,按键于动电平复位电路如图。当时钟频率选用12mhz时,c选取10uf, r选择1000欧。3.4显示电路的设计显示功能与破件关系极人,当硬件固定后,如何在不引起操作者误解的前提 下提供尽可能丰富的信息,全靠软件来解决。3.4.1显示模块在系统硬件中的安排操作者主要设计从显示设备上获取微机系统的信息的,因此,操作者每操作 一下,显示设备商都应该有一主的反应。这说明,显示模块与操作有关,即监控 程序是需要调用显示
26、模块。不同的操作需要显示不同的内容,这又说明齐执行模 块对显示模块的驱动方式是不同的。另一方面,在操作者没有进行操作时,显示 内容也是变化的,如显示现场各物理量的变化情况。这时显示模块不是由操作者 通过命令键来驱动,而是由各类自动执行的功能模块来驱动。口动执行的各类模 块在安排在各种屮断子程序中,这就是说,齐种中断子程序也耍调用显示模块。 如果监控安排在屮断子程序中,两者的要求就统一了,问题比较好解决,如果监 控程序安排在主程序屮,在监控程序调用显示模块的过程屮发生了屮断,屮断子 程序也调用显示模块,这时就容易出问题。一种比较妥善的办法是只让i处调用 显示模块,其他各处均不得直接调用显示模块,
27、但有权中请显示。这就要设置一 个显示申请标志,当某模块需耍显示时,将申请标志置位,同时设定有关显示内 容(或指针)。由于一处调用显示模块,故不会发生冲突。为了使显示模块能及 时反应系统需要,应将显示模块安排在一个重复执行的循环(如监控循环或时钟 中断子程序)中。当监控程序(键盘解释程序)安排在时钟中断子程序中时,处 理比较方便,只更在监控程序的汇合处调用显示模块就可以了。这里将显示功能集屮到一起,作为一个功能模块,就耍求它的功能全而,能 根据系统软件提供的信息白动完成显示内容的查找,变换和输出驱动。这样设计 使得各功能模块都不必考虑显示问题,只要给出一个简单的信息(如显示格式编 码)甚至不用再
28、提供额外信息,直接利用当前状态变量和软件标志就可以完成所 需的显示要求。如果编写这样一个集中显示模块有困难,也可以将显示模块编小一些,只完 成显示缓冲区的内容输出到显示器件上的工作。这时各功能模块在提出显示申请 时,还需要将显示内容按需要的格式送入显示缓冲区中。这样分而治之比较容易 编程,但要小心岀现显示混乱。例如后台程序需要调用显示,将有关信息送入到 现实缓冲区进行显示;中断返冋后,后台程序继续送完后半部分显示内容,但前 半部分内容己经变了,这样就出现了显示错误。解决的办法是,在申请显示前, 先检查是否已经有显示申请,如果有,就不再申请,等待下次机会;如果没有, 则先申请标志位,再将显示内容
29、送入显示缓冲区。这时就不必担心其他前台模块 來打扰了,就可以得到一次完整的显示机会。在这里我们使用的是七段数码管显示,通常在显示上我们采用的方法一般 包拾两种:一种是静态显示,一种是动态显示。其屮静态显示的特点是显示稳定 不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是显示稳定性没静 态好,程序编写复杂,但是相对静态显示而言占用端口资源少。在本设计屮根据 实际情况采用的是动态显示方法。并通过查表法,将其在数码管上显示出来,其中p0 口为字型码输入端,p2 口低3位为字选段输入端。在这里我们通过查表将字型码送给7段数码管显示的数字,数码管显示原理如下:mov a, r5movc a, a
30、+dptr;查字型码mov p2, #01h;送位选码mov po, a;送字型码acall delay;调延时,去闪烁在七段数码管显示中可分为共阳极和共阴极两种类型极。以共阴为例,耍想 a段亮,向a段送1就是,返之送0,共阳刚好相反。3.5扫描电路的实现键盘是人与微机系统打交道的主要设备。关丁键盘硬件电路的设计方法也可 以在文献和书籍中找到,配合各种不同的硬件电路,这些书籍中一般也提供了相 应的键盘扫描程序。站在系统监控软件设计的立场上來看,仅仅完成键盘扫描, 读取当前时刻的键盘状态是不够的,还有不少问题需要妥善解决,否则,人们在 操作键盘就容易引起误操作和操作失控现象。在单片机应用中键盘用
31、得最多的形 式是独立键盘及炬阵键盘。它们齐有口己的特点,其中独立键盘硬件电路简单,而且在程序设计上也不 复朵,一般用在对駛件电路要求不高的简单电路中;矩阵键盘与独立键盘有很大 区别,首先在硬件电路上它耍比独立键盘复杂得多,而且在程序算法上比它耍烦 琐,但它在节省端口资源上有优势得多,因此它更适合于多按键电路。其次就是 消除在按键过程屮产生的“毛刺”现象。这里采用最常用的方法,即延时重复扫 描法,延时法的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而我 们按键的时间一般远远人于这个时间,所以当单片机检测到有按键动静后再延时 一段时间(这里我们取10ms)后再判断此电平是否保持原状态,如果
32、是则为有效按 键,否则无效。3. 5. 1按钮输入的硬件处理按钮的触点在闭合和断开时均会产生抖动,这是触点的逻辑电平是不稳定 的,如不妥善处理,将会引起按键命令的错误执行或重复执行。现在一般均用软 件延时的方法来避开抖动阶段,这一延时过程一般大于5ms,例如取10-20mso 如杲监控程序中的读键操作安排在主程序(后台程序)或键盘中断(外部中断) 子程序屮,则该延时子程序便可直接插入读键过程屮。如果读键过程安排在定时 中断子程序中,就可省去专门的延时子程序,利用两次定时中断的时间间隔来完 成抖动处理。3.6发声我们知道,声音的频谱范用约在儿十到儿千赫兹,若能利用程序来控制单 片机某个口线的“高
33、”电平或低电平,则在该口线上就能产生一定频率的矩形 波,接上喇叭就能发出一定频率的声咅,若再利用延时程序控制“高” “低”电 平的持续时间,就能改变输出频率,从而改变咅调,使喇叭发出不同的声咅。3. 7系统复位使cpu进入初始状态,从0000h地址开始执行程序的过程叫系统复位。从实 现系统复位的方法来看,系统复位可分为硬件复位和软件复位。硬件复位必须通 过cpu外部的硬件电路给cpu的reset端加上足够时间的高电位才能实现。上电 复位,人丁按钮复位和硬件看门狗复位均为硬件复位。硕件复位后,各专用寄存 器的状态均被初始化,且对片内通用寄存器的内容没有影响。但是,硬件复位还 能自动清除中断激活标
34、志,使中断系统能够正常工作,这样一个事实却容易为不 少编码人员所忽视。软件复位就是用一系列指令来模拟硬件复位功能,最后通过 转移指令使程序从0000h地址开始执行。对各专用寄存器的复位操作是容易的, 也没有必要完全模拟,可根据实际需要去主程序初始化过程屮完成。而对屮断激 活标志的清除工作常被遗忘,因为它没有明确的位地址可供编程。有的编程人员 用020000 (ijmp 000011)作为软件陷阱,认为直接转向000011地址就完成了 软件复位,就是这类错误的典型代表。软件复位是使用软件陷阱和软件看门狗后 必须进行的工作,这时程序出错完全有可能发生在中断子程序中,中断激活标志 已置位,它将阻止同
35、级屮断响应。由于软件看门是高级屮断,它将阻止说要屮断 响应,由此可见清除屮断激活标志的重要性。在所有的指令中,只有reti指令能够清除中断激活标志。前文各处提案到 的出错处理程序err主要完成这一功能,其他的善后工作交由复位后的系统去完 成。有复位时系统的历史状况,可将复位分为“冷启动”和“热启动”。“冷启动”时,系统的状态全部无效,进行彻底的初始化操作;而“热启动”时,对系统的当前状态进行修复和有选择的初始化。系统初次上屯投入运行时,必须是“冷启动”,以后由抗干扰措施引起的复位操作一般均为“热启动”初次上电投入运行时,必须是“冷启动”,以后由抗干扰措施引起的复位操作一般均为“热启动”。为了使
36、系统能正确决定采用何种启动方式,常用上电标志来区分,如图3-6所示。图3-6系统复位策略图第四章软件设计4.1软件任务分析软件任务分析和硬件电路设计结合进行,哪些功能由破件完成,哪些任务由 软件完成,在顽件电路设计基本定型后,也就基本上决定下来了。软件任务分析环节是为软件设计做一个总体规划。从软件的功能來看可分为 两人类:一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示, 打印,输出控制和通信等,另一类是监控软件,它是专门用来协调各执行模块 和操作者的关系,在系统软件中充当组织调度角色的软件。这两类软件的设计方 法各有特色,执行软件的设计偏重算法效率,与顽件关系密切,千变万化。软件
37、任务分析时,应将齐执行模块一一列出,并为每一个执行模块进行功能 定义和接口定义(输入输出定义)。在各执行模块进行定义时,将要牵扯到的数 据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。 首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对來讲,执行 模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作 工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软 件可分为后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程 序,这类程序对实时性要求不是太高,延误几十ms甚至几百ms也没关系,
38、故 通常将监控程序(键盘解释程序),显示程序和打印程序等与操作者打交道的程 序放在后台程序屮执行;而前台程序安排一些实时性要求较高的内容,如定时系 统和外部中断(如掉电中断)。也可以将全部程序均安排在前台,后台程序为“使 系统进入睡眠状态”,以利于系统节电和抗干扰。4.2 显示子程序的设计显示子程序,及部分注解如下:display:mov dptr, #dat1;查表显示程序,利用p0 口做段选码口输出/p2低 三位做位选码输出,mov a, r3movc a理a+dptrmov p2,#0fehmov po, aacall delaymov dptr, #dat2mov a, r5movc
39、a,a+dptrmov p2, ttofdllmov po,aacall delaymov a, r4movc a,©a+dptrmov p2,#ofbhmov po, aacall delayretdat1:db ooh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, ooh, 71h灭,1,2,3,4,5,6,7,8,9,灭,牛dat2:db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, ooh, 71h第一个为零,其他与上相同,因为十位如果为零显示熄灭4.3定吋器to、t1中断服务
40、程序的设计二二二二二to溢出中断(响铃程序)=toint: mov tho,#oechmov tlo, #offhjnb ring, out;cpl p3.6;ring标志位为1时候p3.6 口不断取反使喇叭发出一定频率的声音out:retit1溢出中断(计时程序):t1int: mov th1,#3chinc roretiend4.4抢答器处理程序的设计抢答器处理程序:true1: acall bark;按键发声mov a, r2mov r6,a;抢答时间r2送r6mov r3,#01iiclr ok;因为答题的计时不再查询抢答,所以就锁了抢答ajmp counttrue2:acall ba
41、rk;mov a, r2mov r6,amov r3,#02hclr okajmp 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 r3, #0511clr okajmp counttrue6: acall bark;mov a, r2mov r6,amov r3,#06hclr okajmp counttrue7: acall
42、bark;mov a, r2mov r6, 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 0000hajmp mainajmp intosuborg 000bhajmp to i ntorg 0013hajmp int1suborg 001 bhajmp tiintorg 0040hmain: mov r1,#30;初设抢答时间为30smov
43、r2,#60;初设答题时间为60smov tmod,# 11 h;设置未定时器/模式1mov th0,#0f0hmov tl0,#0ffh;越高发声频率越高,越尖mov th1,#3chmov tl1,#0b0h;50ms为一次溢出中断setb easetb etosetb et1setb exosetb ex1;允许四个中断,t0/t1 /into/int1clr okclr ringsetb tr1setb tro;开始就运行定时器,以开始显示ffe如果想重新计数,重置th1/tl1就可以了; = = = = =査询程序= = = = =start: mov r5,#0bhacall di
44、splay;未开始抢答时候显示fffjb p3.0,next;dddddddacall delayjb p3.0,next;去抖动,如果”开始键”按下就向下执行,否者跳到非法抢答查询acall bark;按键发声mov a.r1mov r6,a;送r1>r6,因为r1中保存了抢答时间setb ok;抢答标志位,用丁 count只程序中判断是否杳询抢答mov r3,#0ah;抢答只显示计时,灭号数ajmp count;进入倒计时程序,"査询冇效抢答的程序“在count里面next: jnb p1.0,false1jnb p1.1,false2jnb p1.2,false3jnb
45、p1.3,false4jnb p1.4,false5jnb p1.5,false6jnb p1.6jz1jnb p1.7,tz2ajmp starttz1:jmp false7tz2:jmp false8; = = = = =非法抢答处理程序二= = = =false1: acall bark;按键发声mov r3,#01hajmp errorajmp errorfalse3: acall barkmov r3,#03hajmp errorfalse4: acall barkmov r3,#04hajmp errorfalse5: acall barkmov r3,#05hajmp error
46、false6: acall barkmov r3,#06hajmp errorfalse7: acall barkmov r3,#07hajmp errorfalse8: acall barkmov r3,#08hajmp error=int0(抢答时间r1调整程序)=intosub:mov a,r1mov b,#0ahdiv abmov r5,amov r4,bacall display;先在两个时间led上显示r1jnb p3.4jnc0;p3.4 为+1s 键,如按下跳到 incojnb p3.5,dec0;p3.5为1s键,如按下跳到decojnb p3.1,back0;p3.1为确定
47、键,如按卜-跳到backoajmp int0subinco: mov a,r1cjne a,#63h,add0;如果不是99,r2加1,如果加到99,r1就置0,重新加起。mov r1 ,#00hacall delay1ajmp intosubaddo: inc r1acall delay1ajmp intosubdeco: mov a,r1jz setr1;如果 r1 为 0, r1 就置 99,dec r1acall delay1ajmp intosubsetr1: mov r1,#63hacall delay1ajmp intosubbacko: reti;=int1(|h|答时间 r2
48、 调整程/?)=int1sub:mov a,r2mov b,#0ahdiv abmov r5,ajnb p3.4jnc1jnb p3.5,dec1jnb p3.1,back1ajmp int1subinc1: mov a,r2cjne a,#63h,add1mov r2,#00hacall delay1ajmp int1subadd1: inc r2acall delay1ajmp int1subdec1: mov a,r2jz setr2dec r2acall delay1ajmp int1subsetr2: mov r2,#63hacall delay1ajmp int1subback1:
49、 reti;=倒计时程序(抢答倒计时和冋答倒计时都跳到改程序)=count: mov r0,#00h;重置定时器中断次数mov th1,#3chmov tl1,#0b0h;重置定时器div ab;除十分出个位/十位mov 30h,a汁位存于(30h)mov 31h,b;个位存t(31h)mov r5,30h;取十位mov r4,31h;取个位mov a,r6subb a,#07hjnc larger;大丁 5s跳到larger,小于等于5s会提醍mov a,rocjne a,#0ah,full;1s 中 0.5s 向下运行clr ringajmp checkfull: cjne a,#14h,
50、check;卜-而是1 s的情况,响并显示号数并清ro,重新计setb ringmov a,r6jz quit;计时完毕mov r0,#00hdec r6;秒标志减1ajmp checklarger: mov a,rocjne a,#14h,check;如果1s向下运行,否者跳到查“停/显示”dec r6;计时一秒r6 口动减1mov r0,#00hcheck: jnb p3.1,quit;如按下停止键退出acall displayjb ok,accout;如杲是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)ajmp recountaccout:jnb p1.0,tru
51、e1jnb p1.1,true2jnb p1.2,true3jnb p1.3,true4jnb p1.4jrue5jnb p1.5,true6jnb p1.6,tz3jnb p1.7,tz4ajmp recounttz3:jmp true7tz4:jmp true8quit: clr ok;如果按下了”停止键”执行的程序clr ringajmp start;=正常抢答处理程序=true1: acall bark;按键发声mov a,r2mov r6,a;抢答时间r2送r6mov r3,#01 hclr ok;因为答题的计时不再査询抢答,所以就锁了抢答ajmp counttrue2:acall
52、bark;mov a,r2mov r6,amov r3,#02hclr okajmp countmov 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,r2m
53、ov r6,aclr okajmp counttrue8: acall bark;mov a,r2mov r6,amov r3,#08hclr okajmp count匸二犯规抢答程序=error: mov r0,#00hmov th1,#3chmov tl1,#0b0hmov 34h,r3;犯规号数儕存与(34h)here: mov a,rocjne a,#0ah,flash;0.5s向下运行灭并停响clr ringmov r3,#0ahmov r4,#0ahmov r5,#0ah;三灯全灭ajmp check1flash: cjne a,#14h,check1;下面是1s的悄况,响并显示号
54、数并淸ro,重新计setb ringmov r0,#00hmov r3,34h;取回号数mov r5,#0bhmov r4,#0bh;显示ff和号数ajmp check1acall displayajmp herequit1: clr ringclr okajmp start;"一显示程序"一di splay: mov dptr,#dat1;杳表显示程序,利用po 口做段选码口输出/ 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏行业绿色发展与环保技术考核试卷
- 人性化指导2025年证券从业资格证考试试题及答案
- 理解注册会计师考试的重要性与试题及答案
- 2025年【工具钳工(高级)】模拟考试题及答案
- 2024年项目管理考试提升指南试题及答案
- 2023年中国葛洲坝三峡建设工程有限公司成熟人才招聘若干人笔试参考题库附带答案详解
- 污水处理中的低温脱氮技术与应用考核试卷
- 橡胶管材在工业通风系统的消声性能考核试卷
- 行政管理研究的现状与展望试题及答案
- 管道工程行业绿色技术创新考核试卷
- 2024年秋儿童发展问题的咨询与辅导终考期末大作业案例分析1-5答案
- 新产品试产管理程序
- 锚索抗滑桩毕业设计(湖南工程学院)
- 各国关于数据与个人隐私的法律规定
- 人教版(PEP)五年级英语下册(U1-U4)单元专题训练(含答案)
- 维生素K2行业研究、市场现状及未来发展趋势(2020-2026)
- 定远县蔡桥水库在建工程实施方案
- 绘本故事《三只小猪盖房子》课件
- GB 13296-2013 锅炉、热交换器用不锈钢无缝钢管(高清版)
- 部编版八年级语文下册写作《学写读后感》精美课件
- LED显示屏项目立项报告(模板参考)
评论
0/150
提交评论