毕业设计(论文)-基于单片机的红外遥控.pdf_第1页
毕业设计(论文)-基于单片机的红外遥控.pdf_第2页
毕业设计(论文)-基于单片机的红外遥控.pdf_第3页
毕业设计(论文)-基于单片机的红外遥控.pdf_第4页
毕业设计(论文)-基于单片机的红外遥控.pdf_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

毕 业 设 计毕 业 设 计 基于单片机的红外遥控基于单片机的红外遥控 大庆石油学院电气信息工程系 2004.4.24 摘要摘要 本文介绍了红外遥控的基本工作原理; 红外发光二极管的特 性;红外接收头详解;红外编码方式;单片机的应用;红外遥控 程序流程图及通过对红外遥控器各按键发送中波形的分析可以识 别码型,从而为软件解码提供依据。本文以实例介绍红外遥控器 与单片机的硬件接口,并从原理出发给出软件解码的方法。这是 一个可以直接引用的成功例子,同时也为各类红外遥控器在单片 机控制产品中的开发应用提供了一个非常实用的参考。 关键词关键词:单片机 红外编码 红外遥控 串行接口 目录 第一章 概述 1 第一章 概述 1 第一节 红外遥控的基本原理1 第一节 红外遥控的基本原理1 第二节 第二节 红外发光二极管的特性2红外发光二极管的特性2 第三节 第三节 红外接收头的特性3红外接收头的特性3 第四节 第四节 遥控发射技术的基本原理3遥控发射技术的基本原理3 第五节 第五节 单片机的应用5单片机的应用5 第二章 第二章 红外遥控脉冲流分析(软件解码)8红外遥控脉冲流分析(软件解码)8 第一节 康佳 6014w 遥控器 8 康佳 6014w 遥控器 8 第二节 软件解码程序流程图 9软件解码程序流程图 9 第三章 红外遥控实例应用 12 第三章 红外遥控实例应用 12 第一节 红外遥控实例要求 12 红外遥控实例要求 12 第二节 系统硬件和程序流程图 12系统硬件和程序流程图 12 致谢 14 附录 a15 附录 b17 附录 c28 参考文献 29 致谢 14 附录 a15 附录 b17 附录 c28 参考文献 29 1 第一章第一章 概 述概 述 在单片机控制产品的开发应用中,为了向控制系统软件控制命令,键 盘往往是不可缺少的。 传统方法是利用并行输入/输出接口芯片扩展一个键 盘接口,或者直接利用单片机的并行端口进行扩展。在某些应用环境下, 这种方式 2 个弊端: 1. 键盘和控制系统连在一起,不灵活,环境适应性差; 2. 浪费单片机的端口,且硬件成本较高。 使用红外遥控器作为控制系统的输入设备,具有成本低、灵活方便的 特点。本文目的就在于介绍软件解码研究的一般方法和红外遥控器进行二 次开发的应用技术。 红外遥控器是一种非常容易买到,且价格便宜的产品,种类很多, 但它们都是配合某种特定电子产品的(如各种电视机、vcd、空调器等) , 由专用 cpu 解码,作为一般的单片机控制系统能直接使用。使用现成遥控 器作为控制系统的输入, 需要解决如下几个问题: 如何接收红外遥控信号; 如何识别红外遥控信号;解码软件的设计。其它的问题都是非本质的,例 如遥控器面板功能键标注的问题,可自行设计、重印即可。 第一节第一节 红外遥控的基本原理红外遥控的基本原理 红外遥控是利用 950nm 近红外波段的红外线作为传递信息的媒体, 即 通信信道。发送端采用脉时调制(ppm)方式,将二进制数字信号调制成某 一频率的脉冲序列,并驱动红外接收管以光脉冲的形式发送出去;接收端 将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路 进行解调,还原为二进制数字信号后输出。 简而言之,红外遥控的实质就是对二进制数字信号进行调制与解调, 以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调 器。 1 第二节第二节 红外发光二极管的特性红外发光二极管的特性 常用的红外发光二极管 (如 se303 ph303) , 其外形和发光二极管 led 相似,发出红外光(近红外线约 940 nm ) 。管压降约 1.4v ,工作电流一 般小于 20ma。为了适应不同的工作电压,回路中常串有限流电阻。 发射红外线去控制相应的受控装置时, 其控制的距离与发射功率成正 比。为了增加红外线的控制距离,红外发光二极管工作于脉冲状态,因为 脉动光(调制光)的有效传送距离与脉冲的峰值电流成正比,只需尽量提 高峰值 ip,就能增加红外光的发射距离。提高 ip 的方法,是减小脉冲占 空比,即压缩脉冲的宽度,一些彩电红外遥控器,其红外发光管的工作 脉冲中空比约为 1/41/3;一些电气产品红外遥控器,其占空比是 1/10。 减小冲占空比还可使小功率红外发光二极管的发射距离大大增加。常见的 红外发光二极管,其功率分为小功率(1mw10mw) 、中功率(20mw50mw)和 大功率(50mw100mw 以上)三大类。要使红外发光二极管产生调制光,只需 在驱动管上加上一定频率的脉冲电压。 用红外发光二极管发射红外线去控制受控装置时, 受控装置中均有相 应的红外光一电转换元件,如红外按收二极管,光电三极管等。实用中已 有红外发射和接收配对的二极管(或配对的红外接收头) 。 红外线发射与接收的方式有两种,其一是直射式,其二是反射式。 1. 直射式指发光管和接收管相对安放在发射与受控物的两端,中 间相距一定距离; 2. 反射式指发光管和接收管并列一起,平时接收管始终无光照, 只在发光管发出的红外光遇到反射物时,接收管收到反射回来 的红外线才工作。 2 双管红外发射电路,可提高发射功率,增加红外发射的作用距离。 第三节 第三节 红外接收头的特性红外接收头的特性 红外接收电路通常由红外接收二极管与放大电路组成, 放大电路通常 又由一个集成块及若干电阻电容等元件组成,并且需要封装在一个金属屏 蔽盒里,因而电路比较复杂,体积却很小,还不及一个 7805 体积大! 红外接收管功能电路红外接收管功能电路 sfh506-38 与 rpm-638 是一种特殊的红外接收电路,它将红外接收管 与放大电路集成在一体,体积小(大小与一只中功率三极管相当) ,密封性 好,灵敏度高,并且价格低廉,市场售价只有几元钱。它仅有三条管脚, 分别是电源正极、电源负极以及信号输出端,其工作电压在 5v 左右.只要 给它接上电源即是一个完整的红外接收放大器,使用十分方便。 它的主要功能包括放大,选频,解调几大部分,要求输入信号需是已经 被调制的信号。 经过它的接收放大和解调会在输出端直接输出原始的信号。 从而使电路达到最简化!灵敏度和抗干扰性都非常好,可以说是一个接收 红外信号的理想装置。 第四节 第四节 遥控发射技术的基本原理遥控发射技术的基本原理 通常红外遥控信号的发射,就是将某个按键所对应的控制指令和系 3 统码(由 0 和 1 组成的序列),调制在 3256khz 范围内的载波上, (通常为 38khz)然后经放大、驱动红外发射管将信号发射出去。 不同公司的遥控芯片,采用的遥控码格式也不一样。在此介绍较普 遍的两种,一种是 nec 标准,一种是 philips 标准。 nec 标准:nec 标准: nec 标准下的编码波形图nec 标准下的编码波形图 遥控载波的频率为 38khz(占空比为 1:3);当某个按键按下时,系统 首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开 即停止发射。简码重复延时 108ms,每两个引导脉冲上升沿之间的间隔都 是 108ms。 一个完整的编码波形图如图 1 所示。 其中, 引导码高电平 4.5ms, 低电平 4.5ms;系统码 8 位,数据码 8 位,共 32 位;数据 0 用“高电平 0.5625ms低电平 0.5625ms”表示, 数据 1 用“高电平 0.5625ms低电平 1.6875ms”表示,如图 2 所示:一个简码引导码系统码位 0 的反码 结束位(0.5625ms)高电平。 nec 标准下,数据 0 和 1 的表示nec 标准下,数据 0 和 1 的表示 各部分码的作用: 1. 引导码用来通知接收器其后为遥控数据。 2. 系统码用来区分是哪一机型的数据,接收端依此来判断后续的 数据是否为须执行的指令。 3. 数据码用来区分是哪一个键被按下,接收端根据数据码做出应 4 该执行什么动作的判断。 4. 简码是在持续按键时发送的码。它告知接收端,某键是在被连 续地按着。 遥控数据传输系统的关键是数据传输的可靠性。 为了提高编码的可靠 性, nec 标准规定系统码、 数据码后分别接着传送一个同样的码或者反码, 供误码校验用。 philips 标准:标准: philips 标准下的编码波形图philips 标准下的编码波形图 载波频率为 38khz; 没有简码, 点按键时, 控制码在 1 和 0 之间切换, 若持续按键,则控制码不变。一个全码起始码11控制码系统码+数 据码,如图所示。 数据 0 用“低电平 1.778ms高电平 1.778ms”表示;数据用“高电平 1.778ms低电平 1.778ms”表示。 连续码重复延时 114ms。 第五节 第五节 单片机的应用单片机的应用 单片机的应用大致可分为以下两大类: 一.单机应用 一.单机应用 1. 在智能仪器仪表中的应用 这是单片机应用最多, 最活跃的领域之一。 在各类仪器仪表中应用单 片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表 的硬件结构,提高其性能价格比。 2 机电一体化中的应用 机电一体化产品是指集机械技术,微电子技术,计算机技术于一体, 使其产品成为具有智能化特征的电子产品。它是机械工业发展的方向。 3 实时过程控制中的的应用 5 单片机广泛地用于各种实时过程控制系统中,例如工业过程控制,过 程检测,航空航天,尖端武器,机器人系统等各种实时控制系统。用单片 机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作 效率和产品的质量。 4 智能接口中的应用 计算机系统,特别是较大型的工业测控系统中,除通用外部设备(如 打印机,键盘,磁盘,crt)外,还有许多外部通信,采集,多路分配管理, 驱动控制等接口。这些外部设备与接口如果完全由主机进行管理,势必造 成主机负担过重,降低运行速度,接口管理的水平也不可能提高。如果用 单片机进行控制和管理,单片机与主机可并行工作,大大提高了系统的运 行速度。同时,由于单片机可对接口信息进行加工处理,可以大量减少接 口界面的通信密度,极大的提高接口控制管理水平。例如,在大型数据采 集系统中, 用单片机对模/数转换接口进行控制不仅可以提高采集速度, 还 可以对数据进行预处理,如数字滤波,线形化处理,误差修正等。在通信 接口中采用单片机可对数据进行编码解码,分配管理,接受/发送控制等。 5. 在人的生活中的应用 目前国内外各种家用电器已普遍采用单片机代替传统的控制电路。 例如洗衣机,电冰箱,空调机,微波炉,电饭煲,收音机,音响,电风扇 及许多高级电子玩具都配上了单片机。 从而提高了自动化程度, 增强了功 能。当前家电领域的主要发展趋势是模糊控制, 以形成众多的模糊控制家 电产品, 而单片机正是这些产品的最佳选择。 单片机将使人类生活更加方 便舒适,丰富多彩。 6. 其他方面的应用 单片机初以上各方面的应用之外,它还广泛应用于办公自动化领域, 商业营销领域, 汽车及通信系统, 计算机外部设备, 模糊控制等各种领域。 总之,单片机已成为计算机发展和应用的一个重要方面。 二.多机应用 二.多机应用 多机应用是单片机在高科技领域中应用的主要模式。单片机的高可靠 性,高控制功能及高运行速度的“三高”技术必然使得未来的高科技工程 系统将采用单片机多机系统作为主要的发展方向。 单片机的多机应用系统可分为功能弥散系统,并行多机处理系统及局 部网络系统。 1 功能弥散系统 功能弥散系统是为了满足工程系统各种外围功能要求而设置的多机系 统。例如一个加工中心的计算机系统除完成机床加工运行控制外,还要控 6 制对刀系统,坐标系统,刀库管理,状态监视,伺服驱动等机构。只有一 个控制主机时,主机要分时去完成这些任务,必然使各个功能处于低级智 能水平。如果每个功能都能由一个独立的单片机来完成,主机负责协调, 调度,则每个功能都可表现出高智能水平。所谓功能弥散是指工程系统中 可以在任意环节上设置单片机功能子系统, 它体现了多机系统的功能分布。 机器人的计算机多机控制系统是一个典型的功能弥散型系统。机器人的感 觉系统,姿态控制系统,遥控系统,行走控制系统都可以分别由一个单片 机应用系统承担, 它们之间的协调管理也采用一个单片机应用系统来完成。 这样用五个单片机构成了一个机器人的计算机简易控制系统。 2 并行多机控制系统 并行多机控制系统主要解决工程系统的快速性要求,以便构成大型实 时工程系统。典型的有快速并行数据采集,处理系统,实时图象处理系统 等。例如,大型工程结构的动态应力分布测量。当测量点过多时,即使采 用高速巡回检测系统也不可避免地出现较大的非同一性状态误差。如果使 每一个采集通道或每一组采集通道用一个单片机构成一个独立的采集,处 理单元,在主机管理下,不仅可以实现多点的快速采集,而且还可以分别 对所采集的数据进行预处理。并行多机数据采集系统的快速性除了单片机 本身的运行速度高外,主要依靠多机的并行工作取得。 3 局部网络系统 单片机网络系统的出现,使单片机应用进入了一个新的水平。目前单 片机构成的网络系统主要是分布式测控系统。单片机主要用于系统中的通 信控制,以及构成各种测控子系统。 通信控制总站设有标准总线和串行总线与主机相连。主机可使用一般 通用计算机系统, 它享用分布式测控系统中的信息资源, 并对其进行调度, 指挥。通信控制总站是一个单片机应用系统,除了完成主机对各功能子系 统的通信控制外,还协助主机对各功能子系统的协助,调度,大大减轻了 主机的通信工作量。从而可以实现主机的间歇工作方式。通信控制总站通 过串行总线与各个安放在现场的具有特定测控功能的子系统相连,形成主 从式控制模式。通信总站到功能子系统的通信介质形式可以多样,从无线 到有线。有线的介质可以是双绞线,同轴电缆,光导纤维,也可以借助于 电话线路,电力线路进行通信。 测控功能子系统分布在现场,按照功能要求设置,可以是模拟量数据 采集系统,数字量采集系统或开关量监测系统,也可以是开关量输出控制 或伺服控制系统等。 7 第二章第二章 红外遥控脉冲流分析红外遥控脉冲流分析 软码软码(件解)(件解) 第一节 康佳 6014w 遥控器 第一节 康佳 6014w 遥控器 红外遥控器是一种非常容易买到, 且价格便宜 (价格一般在 10-20 元) 的产品,种类很多,但它们都是配合某种特定电子产品的(如各种电视机、 vcd、空调器等) ,由专用 cpu 解码,作为一般的单片机控制系统能直接使 用。 本实验采用康佳 6014w 遥控器为遥控信号发射源。本遥控器可控制 32个按键, 康佳6014w只使用了其中的29个按键。 首先要了解康佳6014w 遥控器的硬件电路图和键盘矩阵,如图。 康佳 6014w 遥控器硬件电路图康佳 6014w 遥控器硬件电路图 8 康佳 6014w 遥控器键盘矩阵康佳 6014w 遥控器键盘矩阵 第二节 软件解码程序流程图 第二节 软件解码程序流程图 一.红外遥控信号的接收 一.红外遥控信号的接收 接收电路可以使用集成红外接收器成品。接收器包括红外接收管和 信号处理 ic(如 hs0038 系列) 。接收器对外只有 3 个引脚:vcc、gnd 和 1 个脉冲信号输出 po。与单片机接口非常方便,如图所示。而系统板电路详 见附录 c。 9 红外接收管与单片机接口图红外接收管与单片机接口图 vcc 接系统的电源正极(+5v) ; gnd 接系统的地线(0v) ; 脉冲信号输出接 cpu 的中断输入引脚(例如 8031 的 13 脚 int0。 采取这种连接方法,软件解既可工作于查询方式,也可工作于中断方式。 二.脉冲流分析 二.脉冲流分析 要了解一个未知的遥控器,首先要分析其脉冲流,从而了解其脉冲 波形特征(以何种方式携带“0”、“1”信息) ,进而了解其编码规律。脉 冲流的分析应从分析脉冲的高、低电平宽度入手。本人用软件的方法实现 了对脉冲流的分析。 以图所示的接口为例,如果没有红外遥控信号到来,接收器的输出 端口 po 保持高电平; 当接收到红外遥控信号时, 接收器件信号转换成脉冲 序列加到 cpu 的中断输入引脚。用软件测试引脚的逻辑电平,同时启动 tc 计时器,测量该引脚分别为逻辑“0”和逻辑“1”情况下的时间值,存储 显示、分析。下面给出对脉冲流进行分析的程序流程图: 脉冲流分析的程序流程图脉冲流分析的程序流程图 脉冲流分析的源程序见附录 a 10 这段程序首先将 tc0 设置成 16 位定时器方式,初始化 ram 地址指针 r0 和循环计数指针 r1,每当引脚的逻辑电平发生跳变时,停止计时,将计 时值保存到连续的 ram 中。 这段程序可以连续测量 26 个脉冲的时间值 (包 括 20 个低电平脉宽) 。 以康佳 6014w 遥控器为对象, 采集了所有按键的编 程脉冲波形,并且对同一按键进行了重复实验。限于篇幅,采样数据不能 给出,仅给出脉冲流的规律(cpu 晶振为 6mhz) : 1. 引导脉冲是一个时间值为(th0=06h)的低电平和时间值为 (th0=06h)的高电平; 2. 数据脉冲的低电平时间值约为(th0=01h) ; 3. 数据脉冲的高电平时间值有 2 种情况: (th0=01h) (窄) 、 (th0=04h) (宽) 。 经过对相同按键脉冲进行多次采样发现,相同按键脉冲序列的对应 位置脉宽时间值是在一个小范围内波动的(tl0 不是一个确定值) ,而 th 是一个确定的值,所以采用 th0 作为脉冲流的时间值。 由大量数据总结分析,按键编码有如下规律: 除引导脉冲外的脉冲是数据编码脉冲, 数据“位”信息由高电平脉宽决定: 窄脉宽表示“0”、宽脉宽表示“1”; 每个按键的脉冲流译码后,包含 25 个二进制的信息: 1. 前 6 个二进制编码都一样,都是“010100b”,为系统码; 2. 接下来的 6 个二进制编码是各按键的键码(数据码) ; 3. 接下来的 6 个二进制编码也都一样,都是“101011” ,为系统反 码; 4. 接下来的 6 个二进制编码是各按键的键码的反码(数据反码) ; 5. 最后一个二进制编码是“1b” ,为结束码。 可以用一个公式表示其关系: 全码 =引导码+ 系统码 +数据码 +系统反码 +数据反码 +结束码 全码 =引导码+ 系统码 +数据码 +系统反码 +数据反码 +结束码 11 第三章第三章 红外遥控实例应用红外遥控实例应用 第一节 红外遥控实例要求 第一节 红外遥控实例要求 根据上述实验规律,将软件译码时对脉冲的分析判断依据及算法设 计思想总结如下: 1. 引导脉冲的低电平和高电平宽度的判断依据是时间值的“th=06h”; 2. 数据脉冲流的低电平脉宽相同“th=01h” ; 3. 数据脉冲流的高电平脉宽是判断数据流每位是“0”还是“1”的依 据。本人抽取的判断是脉宽“th=01h”表示“0”,脉宽“th=04h”表 示“1”; 4. 而结束码不作判断。 在进行脉冲流采集过程中, 首先要判断引导脉冲的低电平和高电平宽度是否足够宽,是否是干 扰; 然后判断数据脉冲流的低电平脉宽和高电平脉宽是否足够宽,是否 是干扰。 在进行脉冲流译码过程中, 判断是脉宽“th=01h”表示“0”,脉 宽“th=04h”表示“1”,如果不是“0”或“1”则退出译码。 从而提高系统抗干扰能力。 此系统的系统码和数据码有它特有的特点。该系统的系统码为 “00010100b” ,数据码跟键盘矩阵有关系。而本系统程序采用系统反码和 数据反码为依据。 第二节第二节 系统硬件和程序流程图系统硬件和程序流程图 基于上述思路设计的软件解码系统成功地应用于多个控制系统。下 面给出一个实例 (用 mcs-51 系列对康佳 6014w 红外遥控器进行软件解码) 的汇编语言程序。 程序中使用的参数是针对 mcu 使用 6mhz 晶振的情况, 使 用其它频率的晶振,只需修改脉宽判据即可。 12 1.系统硬件组成系统硬件组成 红外发射源采用康佳 6014w 红外遥控器。 红外接收管采用 hs0038b,它与 mcs-51 系列单片机的 p3.2 口相接。 本人采用中断法对信号进行采集处理,也可采用程序查询法。而系统板电 路详见附录 c。 系统程序流程图如图所示: 系统程序流程图系统程序流程图 本文虽然是用mcs-51系列mcu对康佳6014w红外遥控器软件解码的 研究,但其方法具有一般性。具体的应用,可自行变通。 13 致谢致谢 在我作毕业设计期间,首先感谢指导教师张继峰老师给我提供了良好 的设计环境,自始至终给我正确的指导。在和张老师接触的这段时间,从 他的身上学到的东西,将会使我受益终生。 毕业设计的顺利完成,更是与张老师的正确指导和无私的帮助是分不 开的,借此之际,我要向张老师表示深深的谢意! 在此期间,其他同学都给我很大的帮助和支持,提出了许多的宝贵意 见和建议,解决了许多技术问题,在这里向他们表示诚挚的谢意。 在整个设计过程中,我竭尽全力,圆满的完成了设计任务。是我三年 所学得的总结和发挥,并进一步增强了理论联系实际的能力,但我也深深 地了解了自己的不足。在此,望广大老师和同学们批评和指正。 14 附 录a 附 录a 脉冲流分析的源程序:脉冲流分析的源程序: org 000h ; sjmp start ; start: mov r0,#30h ;脉冲流地址指针 mov r1,#26 ;脉冲记数指针 mov sp,#60h ;堆栈指针 mov tmod,#01h ;t0,方式 1 mov tl0,#0 ; mov th0,#0 ;记数初值 tt: clr p1.0 ; jb p3.2,tt 循环等待低电平; setb tr0 ;p3.2=0,开始记数 tt0: jnb p3.2,tt0 ;等待高电平 clr tr0 ;停止记数 clr p1.1 ; setb p1.2 ;状态显示 mov a,th0 ; mov r0,a ; inc r0 ; mov a,tl0 ; mov r0,a ;保留记数值 inc r0 ; mov tl0,#0h ; mov th0,#0h ;重新记数 setb tr0 ; tt1: jb p3.2,tt1 ;等待低电平 clr tr0 ;停止记数 clr p1.2 ; setb p1.1 ;状态显示 mov a,th0 ; mov r0,a ; inc r0 ; mov a,tl0 ; 15 mov r0,a ;保留记数值 inc r0 mov tl0,#0 ;重新记数 mov th0,#0 ; setb tr0 ; djnz r1,tt0 ;循环 26 次 acall de ;等待显示 loop: mov r0,#30h ;显示指针 mov r7,#10 ;显示次数 see: clr p1.3 ; setb p1.4 ;状态切换 mov p0,r0 ;th0 显示 inc r0 ; acall de ; clr p1.4 ; setb p1.3 ;状态切换 mov p0,r0 ; th0 显示 inc r0 ; acall de ; djnz r7,see ; cpl p1.7 ;次数状态切换 sjmp loop ; de: mov r2,#20 ;延时 de0: mov r3,#0ffh ; de1: mov r4,#0ffh ; de2: djnz r4,de2 ; djnz r3,de1 ; djnz r2,de0 ; ret ; end ; 16 附 录b附 录b 系统程序:系统程序: org 000h ; sjmp start ; org 003h ; ljmp in0 ;脉冲中断入口 org 01bh ; ljmp t1int ;定时入口 org 020h ; start: mov 20h,#0 ; mov 21h,#0 ;清标志位 mov p0,#0ffh ; mov p1,#0 ; mov sp,#6bh ;堆栈指针 mov tmod,#11h ;t1,方式 1;t0,方式 1 mov tl0,#0 ; mov th0,#0 ;记数初值 setb ex0 ;开外部中断 0 setb et1 ;开定时器中断 1 setb it0 ;边沿触发 setb ea ;开总中断 setb px0 ;外部中断为高优先级 loop: jnb 00h,loop ;是否要定时 jnb 08h,lp1 ;是,是继电器 1 吗? lcall stime1 ;是,进入定时 jnb 0bh,lp1 ;定时成功吗?否,判下一个继电器 setb p1.0 ;是,开继电器 1 lp1: jnb 09h,lp2 ;是继电器 2 吗? lcall stime2 ;是,进入定时 jnb 0ch,lp2 ;定时成功吗?否,判下一个继电器 setb p1.1 ;是,开继电器 2 lp2: jnb 0ah,lp3 ;是继电器 3 吗? lcall stime3 ; 是,进入定时 jnb 0dh,lp3 ; 定时成功吗?否,退出 setb p1.2 ;是,开继电器 3 17 lp3: jnb 0eh,loopq ;定时成功,开定时器 mov tl1,#0 ; mov th1,#0 ;定时初值 setb tr1 ;开始定时 loopq: mov 20h,#0 ;清标志位 mov 21h,#0 ; sjmp loop ;循环判断 stime1: jnb 02h,at160 ;j1=1min mov 23h,#20 ; mov 24h,#30 ; sjmp stt1 ; at160: jnb 03h,at190 ; j1=2min mov 23h,#20 ; mov 24h,#60 ; sjmp stt1 ; at190: jnb 04h,at1120 ; j1=3min mov 23h,#20 ; mov 24h,#90 ; sjmp stt1 ; at1120: jnb 05h,at1150 ; j1=4min mov 23h,#20 ; mov 24h,#120 ; sjmp stt1 ; at1150: jnb 06h,at1180 ; j1=5min mov 23h,#20 ; mov 24h,#150 ; sjmp stt1 ; at1180: jnb 07h,stt1 ; j1=6min mov 23h,#20 ; mov 24h,#180 ; sjmp stt1 ; stt1: setb 0bh ;j1 定时成功 setb 0eh ;统一定时成功 setb 10h ;j1 定时完成 clr 02h ; clr 03h ; clr 04h ; 18 clr 05h ; clr 06h ; clr 07h ;清标志位 att1: ret ; stime2: jnb 02h,at260 ; j2=1min mov 23h,#20 ; mov 25h,#30 ; sjmp stt2 ; at260: jnb 03h,at290 ; j2=2min mov 23h,#20 ; mov 25h,#60 ; sjmp stt2 ; at290: jnb 04h,at2120 ; j2=3min mov 23h,#20 ; mov 25h,#90 ; sjmp stt2 ; at2120: jnb 05h,at2150 ; j2=4min mov 23h,#20 ; mov 25h,#120 ; sjmp stt2 ; at2150: jnb 06h,at2180 ; j2=5min mov 23h,#20 ; mov 25h,#150 ; sjmp stt2 ; at2180: jnb 07h,stt2 ; j2=6min mov 23h,#20 ; mov 25h,#180 ; sjmp stt2 ; stt2: setb 0ch ; j2 定时成功 setb 0eh ;统一定时成功 setb 11h ;j2 定时完成 clr 02h ; clr 03h ; clr 04h ; clr 05h ; clr 06h ; clr 07h ;清标志位 19 att2: ret ; stime3: jnb 02h,at360 ; j3=1min mov 23h,#20 ; mov 26h,#30 ; sjmp stt3 ; at360: jnb 03h,at390 ; j3=2min mov 23h,#20 ; mov 26h,#60 ; sjmp stt3 ; at390: jnb 04h,at3120 ; j3=3min mov 23h,#20 ; mov 26h,#90 ; sjmp stt3 ; at3120: jnb 05h,at3150 ; j3=4min mov 23h,#20 ; mov 26h,#120 ; sjmp stt3 ; at3150: jnb 06h,at3180 ; j3=5min mov 23h,#20 ; mov 26h,#150 ; sjmp stt3 ; at3180: jnb 07h,stt3 ; j3=6min mov 23h,#20 ; mov 26h,#180 ; sjmp stt3 ; stt3: setb 0dh ;j3 定时成功 setb 0eh ;统一定时成功 setb 12h ;j3 定时完成 clr 02h ; clr 03h ; clr 04h ; clr 05h ; clr 06h ; clr 07h ;清标志位 att3: ret ; t1int: mov tl1,#0 ;重新赋值 mov th1,#0 ; 20 djnz 23h,t1q ;到 30s 吗? mov 23h,#20 ;是,重新赋值 jnb 10h,t1p1 ;是 j1 吗? djnz 24h,t1p1 ;是,是否完成定时 clr 10h ;是,清标志位 clr p1.0 ;关 j1 t1p1: jnb 11h,t1p2 ;是 j2 吗? djnz 25h,t1p2 ; clr 11h ; clr p1.1 ; 关 j2 t1p2: jnb 12h,t1q ; 是 j3 吗? djnz 26h,t1q ; clr 12h ; clr p1.2 ; 关 j3 t1q: setb ea ; setb et1 ; reti ; in0: setb tr0 ;开始记数 clr ex0 ;关中断 test: mov r0,#4bh ;脉冲地址指针 mov r2,#24 ;脉冲个数指针 mov r3,#06h ; mov r4,#0c0h ;强行退出中断定时 tst: jb p3.2,tth ;是高电平吗? djnz r3,tst ; jb p3.2,tth ; mov r3,#06h ; jb p3.2,tth ; djnz r4,tst ; sjmp qq0 ;时间到,强行退出 tth: clr tr0 ;是,停止记数 mov tl0,#0h ; mov th0,#0h ;重新赋值 setb tr0 ;重新记数 mov r3,#06h ; mov r4,#0c0h ;强行退出中断定时 test0: jnb p3.2,ttl ; 是低电平吗? 21 djnz r3,test0 ; jnb p3.2,ttl ; mov r3,#06h ; jnb p3.2,ttl ; djnz r4,test0 ; sjmp qq0 ; ttl: clr tr0 ;是,停止记数 mov a,th0 ; mov r0,#0 ; mov r0,a ;保存高电平宽度 inc r0 ; mov tl0,#0h ; mov th0,#0h ;重新赋值 setb tr0 ;重新记数 mov r3,#06h ; mov r4,#0c0h ; tt00: jb p3.2,tt0 ;是高电平吗? djnz r3,tt00 ; jb p3.2,tt0 ; mov r3,#06h ; jb p3.2,tt0 ; djnz r4,tt00 ; sjmp qq0 ; qq0: ljmp exit2 ; tt0: clr tr0 ;是,停止记数 mov tl0,#0h ; mov th0,#0h ; setb tr0 ;重新记数 mov r3,#06h ; mov r4,#0c0h ; tt11: jnb p3.2,tt1 ;是低电平吗? djnz r3,tt11 ; jnb p3.2,tt1 ; mov r3,#06h ; jnb p3.2,tt1 ; djnz r4,tt11 ; sjmp qq0 ; 22 tt1: clr tr0 ;是,停止记数 mov a,th0 ; mov r0,#0 ; mov r0,a ;保存高电平宽度 inc r0 ; mov tl0,#0 ; mov th0,#0 ; setb tr0 ; djnz r2,tt00 ;重新判断 sjmp zhuan ;将高电平进行解码 exit2: sjmp exit ; zhuan: mov r0,#4bh ; mov r1,#64h ;解码地址指针 mov r7,#24 ; mov r6,#6 ; mov r1,#0 ; mov a,r0 ; xrl a,#00000110b;引导脉冲 jnz exit1 ; te1: inc r0 ; mov a,r0 ; xrl a,#00000001b;是“0”吗 jnz te2 ; clr c ;是 sjmp te3 ; te2: mov a,r0 ; xrl a,#00000100b;是“1”吗 jnz exit1 ; setb c ;是 te3: mov a,r1 ;保存 rlc a ; mov r1,a ; djnz r6,te4 ; mov r6,#6 ; inc r1 ; mov r1,#0 ; te4: djnz r7,te1 ; 23 mov a,64h ; anl a,66h ; jnz exit1 ;是本系统吗?不是,退出 mov a,65h ; anl a,67h ;(67)为数据反码 jnz exit1 ; acall key ;调用键盘子程序 sjmp exit ; exit1: nop ; exit: setb ex0 ;开中断 reti ; key: mov a,67h ; xrl a,#00111101b;“1“ jz key1 ; mov a,67h ; xrl a,#00011101b;“2“ jz key2 ; mov a,67h ; xrl a,#00101101b;“3“ jz key3 ; mov a,67h ; xrl a,#00001101b;“4“ jz key4 ; mov a,67h ; xrl a,#00110101b;“5“ jz key5 ; mov a,67h ; xrl a,#00010101b;“6“ jz key6 ; mov a,67h ; xrl a,#00100101b;“7“ jz key7 ; mov a,67h ; xrl a,#00000101b;“8“ jz key8 ; mov a,67h ; xrl a,#00111001b;“9“ 24 jz key9 ; mov a,67h ; xrl a,#00101011b;“stand-by“ jz keyby ; mov a,67h ; xrl a,#00001011b;“time“ jz keyme ; mov a,67h ; xrl a,#00000011b;“recall“ jz keyll ; mov a,67h ; xrl a,#00100111b;“v+“ jz keyv0 ; mov a,67h ; xrl a,#00000111b;“v-“ jz keyv1 ; mov a,67h ; xrl a,#00110001b;“woofer“ jz keyer ; mov a,67h ; xrl

温馨提示

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

评论

0/150

提交评论