时间控制器设计论文_第1页
时间控制器设计论文_第2页
时间控制器设计论文_第3页
时间控制器设计论文_第4页
时间控制器设计论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业设计(论文) 题 目 单片机设计 时间顺序控制器 专 业 应用电子技术 班 次 09221 姓 名 尹凯旋 学 号 42 指导老师 曾一江 成都电子机械高等专科学校二零一二年六月 摘要 随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间顺序控制的地方也会愈来愈多,因此,设计开发具有良好的应用前景。由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用atmel公司的at89c51单片机进行时间顺序控制器开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用protues进行仿真调试。在介绍

2、本单片机的发展情况基础上,说明了本设计实现的功能,并对各功能电路进行了分析。主要工作放在软件编程上,用硬件电路实现了工作阶段显示在lcd,外部故障声光报警 ,各阶段工作时间可通过键盘设置。调试可以使用。关键词:单片机 at89c51 时间顺序控制器 汇编语言目 录第1章 设计任务分析11.1 课题背景 11.2 单设计主要内容 21.3 设计系统思路 2第二章 硬件总体方案设计 32.1 单片机的选择 42.2功能电路分析 5第三章 软件设计 93.1 实现时间顺序基本步奏 103.2 主程序113.3 键盘子程序123.4 倒计时显示1s程133.5外部故障计时报警程序 14第四章 系统的仿

3、真154.1 protenus软件的介绍 164.2 wafe软件应用174.3系统的调试 184.4故障分析及解决 19结论 20附录a 硬件仿图 21附录 b 程序图 22第一章 设计任务分析1.1 课题背景单片机自1976年由intel公司推出mcs-48开始,迄今已有二十多年了。由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、pc机外围以及网络通讯等广大领域。单片机有两种基本结构:一种是在通用微型计算机中广泛

4、采用的,程序存储器和数据存储器共用一个存储器空间的结构,称为“冯诺依曼”(von neumann)结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,称为“哈佛”(harvard)结构,目前的单片机采用此种结构为多。本文讨论的单片机时间顺序控制系统的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高,功能多等特点。不仅能满足所需要求而且还有很多功能可供扩展,有着广泛的应用领域。1.2 设计主要内容 1.一个系统按时间顺序分为四段 2.每个工作阶段由单片机输出工作阶段命令 3.控制系统在运行期间自动显示工作进程,即阶段数和剩余

5、工作时间 4.外部故障启动报警 5.各阶段的工作时间通过键盘设 1.3 设计系统功能思路设计功能:系统主要实现功能是:at89c51单片机接受脉冲信号,单片机根据外接受键盘输入4个阶段工作时间,通过七段码查询送入led显示。在led上显示阶段数及阶段剩余工作时间。以及内部定时器to进行工作时间1s倒计时显示。再通过p1口高低电平转换轮流点亮各阶段发光二极管。通过外部中断into启动报警电路由p3.0引脚输出低电平使蜂鸣器发声和发光二级管闪烁。当p3.0引脚输出低电平时,蜂鸣器停止发声发光二级管停止闪烁。 组成及框图:本系统各阶段工作时间通过键盘设定由单片机接收保存在寄存器中送入led显示。通过

6、定时器to进行1s倒计时。再通过p1高低电平电平转化点亮各阶段发光二极管,通过外部中断into启动声光报警。框图如2.1所示 数码管显示电路声光报警电路键盘电路工作阶段电路复位电路时钟电路 51单片机 图1.3 设计原理框图 第二章 硬件总体设计方案 本次设计时间顺序电路,使用了at89c51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整各阶段的工作时间,用一蜂鸣器和发光二级管进行故障声光报警,用一组发光二极管显示工作阶段,同时使用汇编语言程序来控制各阶段工作时间显示,使得编程变得更容易,这样通过五个模块:键盘、芯片、发光二极管组、显示

7、屏、蜂鸣器即可满足设计要求。2.1 单片机的选择单片机我们采用at89c51(其引脚图如图41),相较于intel公司的8051它本身带有一定的优点。at89c51是一种带4k字节闪烁可编程可擦除只读存贮器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos 8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器, at89c单片机为很多嵌入式控

8、制系统提供了一种灵活性高且价廉的方案。图4-1 at89c51引脚图主要特性:与mcs-51 兼容4k字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年全静态工作:0hz-24hz三级程序存储器锁定128*8位内部ram32可编程i/o线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路2.2 功能电路分析 2.2.1 时钟电路 本设计的时钟电路如图2.3.1所示,其中x1为6mhz,改变两电容的值即可对此晶振频率进行调节该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道晶振频率,以对波特率进行计算。

9、图2.3.1 2.2.2 复位电路 如图2.3.2此复位电路由电阻电容串联而成,由图并结合电容电阻不能突变性质可以知道,当系统一上电 rst脚将会出现高电平并且这高电平的持续时间由rc决定。 图2.3.2 2.2.3 工作阶段电路如图2.3.3 此工作阶段电路由p1.0、p1.1、p1.2、p1.3引脚串联发光二极管组成4个阶段。通过判定各引脚高低电平决定点亮阶段灯。当引脚输出低电平时点亮对应发光二极管。 2.2.4 数码管显示电路如图2.3.4 本设计使用led显示器实现7段数码管显示4位16进制数来显示阶段工作进程。即阶段数和阶段剩余时间。其中数码管的显示可以分为两种:静态显示和动态显示。

10、静态显示的段选位和位选位均单独连接,因此占用的i/o接口多,无法扩展多个数码管,在这种采用这种方式,必须要给led恒定的电压,要求电压一直保持,所以一般在led和单片机之间加锁存器,这种显示方式亮度高,编程较简单,结构清晰,管理也较简单,占用的cpu时间少。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共端com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机

11、对位选通com端电路的控制,所以我们只要将需要显示的数码管选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。本系统采用动态显示,先向p0口送第一位数码管需要显示的段码值,再给p2口送0feh,延时1毫秒使第一位数码管显示,又向p0口送第

12、二位数码管需要显示的段码值,p2口送0fdh,延时1毫秒,使第二位数码管显示。依次递推,直到最后一位数码管,然后再循环。改变延时时长可以调节数码管显示的亮度,由于单片机执行速度很快(微秒级),所以看上去数码管一直亮着。 图2.3.42.2.5键盘电路如图2.3.5所示为阵列按键电路,键盘提供了提供了12个按键,由p2口引脚p2.4p2.6和p3口引脚p3.4p3.7组成的阵列按键,p3.4p3.7为行线,p2.4p2.6为列线。此键盘才用扫描工作方式,若有键按下,则相应位端口被拉低为低电平,由于本系统只用了0到9的10个按键按键,所以只需对10个按键进行扫描。扫描先粗扫描。设置所有列线13为低

13、电平,输出0123=0000输入abcd:若abcd=1111,则无键按下。若非全1,则有键按下。通过粗扫描初步判断是否有键按下再通过逐列扫描判定哪一行哪一列的按键按下。设置第1列扫描码0123=1110.输出列扫描码,扫描该列;输入abcd,若abcd为全 1,则该列无键按下,修改列扫描码0123=1101重复直到所有列扫描完。当扫描某列时,输入abcd非全1,则该列有键按下。列如列扫描码1110,输入行码为1101,则可判断c行3列(9键)按下。根据按键的位置码采用查表的方法求键值。 图2.3.52.2.6 中断故障计时报警电路 如图2.3.6所示。通过单片机控制实现外部故障声光报警功能.

14、设置单片机外部中断into中断为低电平中断。当按键k1按下启动中断。由t1定时器进行10s的故障计时工作。由单片机的p3.0引脚输出低电平时驱动蜂鸣器发声和发光二极管闪烁。当10s秒时间到中断返回。p3.0引脚输出高电平,蜂鸣器停止发声发光二级管停止闪烁。 图2.2.72.2.7 开关电路 如图2.3.7所示。开关接在p3.1引脚。当键盘输入4个阶段的工作时间后闭合开关启动程序。当开关断开时重新进入键盘程序设置4阶段工作时间。 第3章 系统软件设计3.1 软件设计思路 根据系统的功能要求和硬件的连接情况,软件可分为倒计时1s显示程序模块、键盘子程序模块、外部into中断模块。to定时器通过10

15、0ms的基本定时,通过软件计时10次达到1s进而实现工作时间倒计时1s显示。由开关k1控制外部中断into进行低电平中断。打开t1定时进行10s的故障计时,p3.0引脚输出低电平启动蜂鸣器和发光二级管声光报警。 系统采用模块化结构,主程序只需调用各个子程序模块即可实现相应功能。其模块结构图如图4-1所示。 主程序 键盘扫描程序显示子程序故障计时子程序键盘子程序倒计时1s显示程序外部中断程序 3.2主程序模块流程设计 主程序通过循环执行的方式实现以下功能:调用键盘子程序设置4个阶段工作时间,由开关sw2启动程序。调用倒计时1s显示程序在led数码管中显示阶段数和工作时间的1s倒计时。再通过p1口

16、输出p1.0p1.3引脚的高低电平点亮各阶段对应的发光二级管。主程序的框图如图3.2所示 开始 置定时器初值调键盘子程序调倒计时1s程序保存4阶值初值sw2闭合?周期运行完?nn 图3.2主程序流程图3.3键盘子程序设计流程程序开始定义存键值首址,通过扫描键盘程序 确定键值第一位送一阶段十位数第二位键值位送一阶段个位数 依次输入8位键值。定义存阶段工作时间首址。由十位和个位组成一个阶段工作时间依次送入阶段工作时间地址。然后判定开关sw2闭合情况送各阶段工作时间进主程序。键盘子程序流程图如下所示。 键盘子程序存键值首址扫描键盘程序8位键值完?n定义工作时间首址求工作时间4个工作时间完?sw2闭合

17、?返回 图3.4键盘子程序 3.4倒计时1s子程序 t0定时器才用模式1定时,最长的定时时间为131ms,要实现1s定时。故才用定时器定时100ms。软件计数器计10次来实现.100ms的定时.由于系统时钟频率为6mhz。机器周期为2us.故to的初始值为tho=#03ch tlo=#0b0h。键盘程序框图如下所示倒计时1s程序取阶段时间送显缓启动to定时器调显示子程序点亮1阶段灯n100ms到?n重设初值1s到?n阶段工作时间减1s工作时间到0?n点亮下一阶段灯指向下一阶段时间单元 返回 图3.4倒计时1s程序3.5显示子程序 通过查询七段码送显缓 从右到左一次点亮每位数码显示器 程序框图如

18、图所示 显示子程序r1 显缓首址r3 右边第一位数位代码 关显示 从显缓取数据 查表求七段码 输出七段码 输出数位代码 修改显缓指针 修改数位代码4位扫描完? 返回 图3.5显示子程序框图3.6 外部中断计时故障程序 因为into采用的是低电平触发中断 ,因此当按下开关k1时进入中断子程序。此时关闭定时器to打开定时器t1进行10s的计时。定时器t1采用模式1,基本时间为100ms,th1=#03h tl1=#0boh.同时使p3.0引脚输出低电平打开声光声光报警。 当计时到10s退出计时子程序 。使p3.0引脚恢复高电平关闭声光报警。中断程序框图如图所示故障计时程序中断返回启动to定时恢复现

19、场调故障计时程序led显示p关闭阶段指示灯灯关闭to定时器保护现场中断程序软件计数初值启动t1定时调显示程序100ms?重设t1初值打开声光报警 关闭声光报警1s到?10s到?关闭t1定时器返回图3.6中断子程序框图 图3.61故障计时子程序 第4章 系统的仿真 4.1protues软件的介绍和使用 proteus软件是labcenter electronics公司的一款电路设计与仿真软件,它包括isis、ares等软件模块,ares模块主要用来完成pcb的设计,而isis模块用来完成电路原理图的布图与仿真。proteus的软件仿真基于vsm技术,它与其他软件最大的不同也是最大的优势就在于它能

20、仿真大量的单片机芯片,比如mcs-51系列、pic系列等等,以及单片机外围电路,比如键盘、led、lcd等等。通过proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。当我们已经将所需的元器件全部加入到文档中时,我们可以点击“ok”按钮来完成元器件的添加。添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方

21、向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。接着按相同的操作即可完成所有元器件的布置,接下来是连线。事实上proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。4.2wave软件程序应用 程序用伟福软件进行汇编语言程序编写,该软件还可进行软件仿真。用汇编语言编好程序后,先编译,把汇编语言编译成二进制代码和十六进制代码。若编译无法进行,说

22、明程序有语法错误,需进行修改。编译成功后则可进行软件仿真,仿真可单步运行,也可连续运行。仿真时应调出数据窗口,看各单元数据是否正确,这是软件仿真的目的。当然,有些错误软件仿真不容易发现,这就得把编译得到二进制代码或十六进制代码下载到实验板上运行(用easy 51pro下载软件,与实验板相配的下载软件。下载时先擦再写,若不能能正常写入,则再擦,再写,直到写入芯片),看是否正常,若不正常,再根据出错的地方返回用软件仿真,查看相应的数据单元,再修改程序,这样反复调试,直至程序可用。后生成hex文件载入protues仿真中执行。4.3系统的仿真调试绘制时间顺序的软件仿真图步骤分一下四步:(1)、查找所

23、需要的元器件;(2)、根据电路图进行连线;(4)、装载所需要汇编程序即可以仿真。通过以上步骤,来实现时间顺序设计的仿真实现,仿真如下图所示: 系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配人情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。硬件调试分单元电路调试和联机调试,单元电路试验在硬件电路设计时已经进行,这里的调试只是将其制成印刷电路板后试验电路是否正确,并排除一些加工工艺性错误(如错线、开路、短路等)。这种调试可单独模拟进行,也可通过开发装置由软件配合进

24、行。硬件联机调试则必须在系统软件的配合下进行。软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正

25、确性和与硬件电路的配合情况。在联调中可能会有某些支路上的程序、功能块因受条件制约而得不到相应的输入参数,这时,调试人员应创造条件进行模拟调试。在联调中如发现硬件问题也应及时修正,直到单片机系统的软件、硬件全部调试成功为止。系统调试完成后,还要进行一段时间的试运行,从而检验系统的稳定性和抗干扰能力,验证系统功能是否达到设计要求,是否达到预期的效果。4.4故障分析与解决方案 1.系统无法在设置完4阶段工作时间再次重新设置4阶段工作时间 2.蜂鸣器在中断进去不发出声音 3.单片机显示部分无法工作,显示不稳定 解决方案(针对上述故障-一一对应的解决方案)(1) 系统在开始调入键盘子程序后设置好的工作时

26、间送入单片机,单片机在送入数码显示管显示。此后进入循环 周期完后回到保存工作时间。所以没有再进入键盘子程序故不能重新设置4阶段工作时间。针对这一问题经过老师点拔外接了一个开关查询。在程序调入倒计时一秒显示后查询开关sw2闭合状态。如果开关是闭合则继续执行程序。如果开关断开则重新调入键盘子程序设置4阶段工作时间。(2) 系统运行后按下k1按键。则系统进入中断子程序。进入后只见发光二级管闪烁不见蜂鸣器发声。查找问题发现蜂鸣器端口一端没有接收低电平。重新连接蜂鸣器端口 一端直接接入p3.0引脚。另一端和发光二级管接入高电平。故这样当中断进行后p3.0引脚输出低电平同时使蜂鸣器和发光二极管工作。(3)

27、由于显示部分的程序是动态显示,是一位一位的显示,在位选信号这里出现了问题,在左移的时候出现问题,以及显示完一个字型后调用的延时时间不合理导致显示不稳定,出现闪烁现象,改变时间到1毫秒左右就差不多对了。结 论经过近一个月的努力,在老师和同学的商讨和帮助下,我勉强完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。在学习单片机这门课程的时候,我们

28、应该好好你的记笔记,课下好好的做练习题才能把汇编语言设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握89c51/52系列的实际应用上的设计。在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正.。 参考文献单片机典型模块设计实例导航 单片机原理及应用技术 单片机原理及接口技术数字电路设计与应用实践教程单片机系统的proteus设计及仿真c程序设计单片机原理与

29、实用技术电子技术基础电路基础数字电子技术模拟电子技术电路基本分析电子电路及电子器件致 谢本文介绍的应用于单片机系统在时间顺序这一领域的应用,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点,关于本次毕业设计,感受颇多。总的来说是可以的,富有收获的,尽管其中充满了艰辛与困难。但看到自己的成果时,所有的艰辛与疲倦都抛到了九霄云外。一种成就感在心头油然而生。另外一方面,在自己的亲身实践中,也发现了自己的一些不足的地方,有待进一步提高与改善。此次毕业设计任务是4个阶段的工作时间,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。整个毕业设计过程是对自己大学三年所学知识归纳总结和应用

30、,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,对自己有信心,相信自己能够很好的完成本次设计任务。在调试中不断发现问题进而解决问题,这是一个再学习的过程,其本身就是对自己的一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善了自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。在本次毕业设计中,特别要感谢曾老师以及其他老师和同学给我们的热心帮助和鼓励,才使得我们的毕业设计能够很好的完成。附录a 系统仿真

31、图 附录b:程序清单 org 0000h ljmp main org 0003h ;外中断int0入口地址 ljmp lt ;外中断int1入口地址main: mov tmod, #11h ;置工作方式 mov th0, #03ch ;设定时器初值 mov tl0, #0b0h mov th1, #03ch mov tl1, #0b0h clr it0 ;电平触发 clr it1 setb ex1 ;允许中断 setb ex0 setb ea lcall jan ;调键盘子程序 lp: mov p3, #0ffh mov 60h, 30h ;保存各阶段初值 mov 61h, 31h mov 6

32、2h, 32h mov 63h, 33h mov 42h, #11h mov 43h, #01h mov a, #0ffh mov p2, a mov p1, a ;总开关是否开启 mov r0, #60h mov r5, #0feh ;准备点亮一阶段的灯 lp1: lcall kkk ;调倒计时显示1s子程序 cjne r0, #64h, lp1 ;判断是否运行一个周期 ajmp lp ;倒计时显示1s子程序: kkk: mov a, r0 anl a, #0fh ;保留低4位 mov 40h, a ;送显缓 mov a, r0 swap a ;高低半字节交换 anl a, #0fh ;保留

33、高4位 mov 41h, a ;送显缓 mov r2, #0ah setb tr0 ;启动t0定时器 tp2: lcall qqq ;调显示子程序 mov p1, r5 ;点亮阶段的灯 ;调显示程序 jb tf0, tp1 ;100ms到来时转 ajmp tp2 tp1: mov th0, #03ch ;重设初值 mov tl0, #0b0h clr tf0 djnz r2, tp2 ;1s未到时转 clr tr0 mov a, #99h ;送-1补码 add a , r0 ;减1s da a ;bcd码调整 mov r0, a cjne r0, #99h, don ;一个阶段未运行完转 in

34、c 43h ;运行下一个阶段 inc r0 ;指向下一个阶段的初值单元 mov a, r5 rl a ;点亮下个阶段的灯 mov r5, a don: ret ;显示子程序: qqq: mov r1, #40h ;指向显缓首地址 mov r3, #0feh ;右边第一位数位代码 tp3: mov a, #0ffh mov p2, a ;关显示 mov a,r1 ;取数据 mov dptr, #sgtr ;指向七段码表首地址 movc a,a+dptr ;查七段码 mov p0, a ;输出七段码 mov a, r3 ;取数位代码 mov p2, a ;输出数位代码 inc r1 ;指向下个显缓

35、单元 mov a, r3 rl a ;左移,准备显示下一位 mov r3, a jb acc.4, tp3 ;最后一位未显示完转 ret ;故障子程序: lt: push 40h ;保护现场 push 41h push 42h push 43h clr tr0 ;关闭t0定时器 setb p1.0 ;关闭总开关 setb p1.2 ;关闭各个阶段的指示灯 setb p1.3 setb p1.4 setb p1.5 mov 40h, #12h ;显示p mov 41h, #12h mov 42h, #12h mov 43h, #12h lcall k0 ;调故障计时程序 mov p1.0,#0f

36、fh pop 43h ;恢复现场 pop 42h pop 41h pop 40h setb p3.0 ;关闭故障指示灯 setb tr0 ;启动t0定时器 wa: reti ; 故障计时子程序 k0: mov r4, #0ah ;1s计时器 mov r6, #0bh mov 44h, #00h setb tr1 ;启动t1定时器 clr p3.0 k2: lcall qqq jb tf1, k1 ;100ms到来时转 ajmp k2 k1: mov th1, #03ch ;重设t1的初值 mov tl1, #0b0h clr tf1 cpl p3.0 ;让故障指示灯闪烁 djnz r4, k2 ;1s未到转 mov r4, #0ah mov 40h, 44h ;显示故障的阶段 mov 41h, #00h mov 42h, #11h mov 43h, #05h inc 44h djnz r6, k2 clr tr1 ;关闭t1定时器 ret ;键盘子程序 jan: mov 40h, #12h ;未设初值前显示0 mov 41h, #12h mov 42h, #12h mov

温馨提示

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

评论

0/150

提交评论