学习型万能遥控器的设计与实现.doc_第1页
学习型万能遥控器的设计与实现.doc_第2页
学习型万能遥控器的设计与实现.doc_第3页
学习型万能遥控器的设计与实现.doc_第4页
学习型万能遥控器的设计与实现.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

毕业设计(论文)题 目 学习型万能遥控器的 设计与实现 班 级 姓 名 指导教师 学习型万能遥控器的设计与实现【摘要】 本设计以单片机为核心设计一种学习型万能遥控器,可以对各种红外线遥控器发射的信号进行识别、存储和再现等功能,从而实现对各类家电的控制。学习型万能遥控器由单片机、红外线接收、红外线发射、显示、存储、按键和欠电压指示等部分组成。本设计详细介绍了学习型万能遥控器的软硬件设计方法,并给出了具体的各单元电路设计、程序设计及主程序流程图。【关键词】 单片机、学习型、红外线遥控器【Abstract】 This is to design an intelligent infrared remote focusing on single chip. It can distinguish, store and recurrence to signals that all kinds of infrared remote launched .Thereby, the control of all household electrical appliances can be realized. The intelligent infrared remote is made up of singe clip, infrared receiving, infrared launching, displaying, storing, keys, owe voltage indicating, etc.This design introduced detailedly the soft and hard designing methods of intelligent infrared remote and gave the details of circuit design, procedure design and main procedure flow chart of every unit.【Keywords】 Single chip、Detailedly、Infrared remote目 录前 言 4第一章 概 述41.1 设计目的和意义51.2 设计思想51.3 设计重点与难点5第二章 硬件的选取52.1 单片机62.2 键盘62.3 存储器72.4 红外接收头8第三章 系统组成设计83.1 系统的总体设计84.1 单片机AT89C5294.2 键盘电路114.4 红外发射电路124.5 红外接收电路134.6 存储器电路13第五章 程序设计155.1 主程序流程图155.2 键号判别程序设计155.3 红外解码(接收)的程序设计175.4 红外发射程序设计19第六章 程序源代码206.1 键盘程序206.2 IC总线程序23第七章 程序的调试247.1 编译软件的使用和编译过程247.2 烧片25第八章 设计总结26附 录27前 言在当今社会科学技术的发展与日俱增,人们是生活水平也是日益提高,为了减少人的工作量,所以是对各种家用电器、电子器件的非人工控制的要求也是越来越高,针对与这种情况,设计出一种集成度比较高的控制体系是必然的。单片机的集成度很高,它具有体积小、质量轻、价格便宜、耗电少等突出特点,尤其耗电少,又可使供电电源体积小、质量轻。所以特别适用与“电脑型产品”,它的应用已深入到工业、农业、国防、科研、教育以及日常生活用品(家电、玩具)等各种领域。单片机特别适合于把它做到产品的内部,取代部分劳师机械、电子零件或元器件。可使产品缩小体积,增强功能,实现不同程度的智能化。红外线是一种光线,具有普通光的性质,可以以光速直线传播,强度可调,可以通过光学透镜聚焦,可以被不透明物体遮挡等等。特别制造的半导体发光二极管,可以发出特定波长(通常是近红外)的红外线,通过控制二极管的电流可以很方便地改变红外线的强度,达到调制的目的,因此,在现代电子工程应用中,红外线常常被用做近距离视线范围内的通讯载波,最典型的应用就是家电遥控器。使用红外线做信号载波的优点很多:成本低、传播范围和方向可以控制、不产生电磁辐射干扰,也不受干扰等等。因此被广泛地应用在各种技术领域中。第一章 概 述1.1 设计目的和意义带红外遥控器的家电给我们的生活带来极大的方便,但遥控器多了很容易弄混,如果有一种可对家中各种红外遥控器发射的控制信号进行识别、存储和再现的智能型红外遥控器,用这样一个遥控器控制家中所有电器该有多好。为此,我们试着设计一种以单片机为核心的智能型遥控器。通过此设计可以提高我们对专业知识的运用能力,让我们把在大学三年中所学到的专业知识真正的运用到实践当中。在设计过程中使我们能够把专业知识系统的,有条理的连接起来。该红外遥控器可以很好地学习市面上流行的各种遥控器的红外遥控编码,并且能够学习和控制各种不同类型的红外遥控设备。同时也给人们日常生活中遥控红外家用电器时带来方便。1.2 设计思想本系统的设计思想是不考虑红外编码方式,仅利用单片机AT89C52对多个红外遥控编码的脉冲宽度进行测量,并原封不动地把发射信号中高、低电平的时间宽度记忆至扩展存储区的指定地址。当要发射红外信号时,从扩展存储区中还原出相应的红外遥控编码,并调制到38KHz的载波信号上,最后,通过三极管放大电路驱动红外发光二极管发射红外信号,达到学习和发射的目的,从而实现一个遥控器控制多种红外遥控设备。 遥控器有两种工作状态:“学习”状态和“控制”状态,使用者可通过学习/控制复用键进行转换。当使用者在学习状态每按下一个控制键,红外线接收电路就开始接受红外线信号,同时将其转换成电信号,然后经过检波、整形、放大,再由CPU定时对其进行采样,将每个采样点的二进指数据以8位为一个单位,分别存放到指定的存储单元中去,供以后对该设备控制使用。当遥控器处于控制状态时,使用者每按下一个控制键,CPU从指定的存储单元中读取一系列的二进制数据,串行输出(位和位之间的时间间隔等于采样时时间间隔)给信号保持电路,同时由调制电路进行信号调制,将调制信号经放大以后,由红外线发射二极管进行发射,从而实现对该键对应设备功能的控制。1.3 设计重点与难点系统组成的设计;各部分硬件的选取;单片机串行接口的键盘设计;红外线遥控器信号的接收、发射与调式解码软件的设计;流程图及程序的设计。第二章 硬件的选取2.1 单片机由于此单片机应用在家用遥控器上,所以本设计选用了低功耗、低价格、小管脚(28脚)的AT89C52单片机。2.1.1 AT89C52概述AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合2.1.2 AT89C52特性AT89C52主要功能特性表 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能2.2 键盘 矩阵按键部分由16个轻触按键按照4行4列排列,连接到JP50端口。将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。这种键盘外围元件少,扩充灵活,而且功耗低。键盘的硬件电路如图2-2所示:图2-2键盘硬件图由图2-2可以看出,该键盘为4行4列(44)共16个键,使用8条I/O口作为控制线,其中P1.0、P1.1、P1.2、P1.3为扫描线,P1.4-P1.7作为列回复线。其工作原理是:首先使P1.4-P1.7为低电平,P1.0、P1.1、P1.2、P1.3为高电平,读取P1.4P1.7的状态并存放在某个存储器的低4位中,此时高4位置零。然后使P1.4P1.7为高电平,P1.0、P1.1、P1.2、P1.3为低电平,读取P1.0、P1.1、P1.2、P1.3的状态并存放在某个存储器的高4位,而低4位为低电平。最后,将这两个存储器存放的数值取逻辑后,再判断其结果产生按键的键值。2.3 存储器存储器有RAM、EEPROM、非易失性的静态存储器等。RAM掉电时数据会丢失,EEPROM在掉电时数据不会丢失。2.3.1 AT24C02串行E2PROM的概述AT24C02是美国ATMEL公司的低工耗CMOS串行EEPROM,它是内含256*8位存储空间,具有工作电压宽(2.55.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。该器件,可直接与微处理器接口、不需要额外的支持电路。2.3.2 AT24C02串行E2PROM 的特性 在没有外部电源的情况下最少可以保存数据10年; 掉电期间数据被自动保护; 直接替代2K8易失静态RAM或EEPROM; 没有写次数限制; 低功耗CMOS操作; JEDEC标准的28引脚DIP封装; 150ns的读写时间; 10%工作范围; 可选的-40C+85C工业级温度范围,指定为IND。2.4 红外接收头接收电路使用集成红外接收器成品,一般不需要任何外接元件就能完成从红外接收到输出TTL 电平兼容信号的所有工作。注意选择接收器件时要保证接收器件的中心频率与发射信号的中心频率相匹配。接收器对外只有3 个引脚:Vcc 、GND 和1 个脉冲信号输出OUT。与单片机接口非常方便。2.4.1 NB1838的概述NB1838是一种用于红外遥控接收或其它方面的小型一体化接收头,中心频率为38.0kHz,可改善自然光的反射干扰.独立的PIN二极管同前置放大器集成在同一封装上.NB1838环氧树脂封装提供一个特殊的红外滤光器,可防止自然光的干扰.NB0038在抗自然光的干扰方面有极好的性能,可防止无用脉冲输出. 2.4.2 NB1838的特性 光电检测和前置放大器集成在同一封装上. 内带PCM频率滤波器. 对于自然光有较强的抗干扰性. 改进了对电场干扰的防护性. 电源电压5V,低功耗. 输出电平兼容TTL,CMOS .第三章 系统组成设计3.1 系统的总体设计系统由发射单元、接收单元、存储单元、输入单元、检测单元等构成。系统总的结构框图如图3-1所示: CPU AT89C52键盘及状态指示电路程序及数据存贮器红外接收电路红外发射电路LCD图3-1 学习型万能遥控器的系统框图系统框图中的单片机AT89C52用来协调各个单元,红外接收电路用来接收要学习的红外信号,红外发射电路用来发射控制电器的红外信号,存储器用来存储接收的信号,键盘及状态指示电路中设计有欠压电路,用来检测电源的电压。第四章 各单元电路设计4.1 单片机AT89C52图4-1 AT89C524.1.1 管脚描述VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。4.1.2 管脚应用P0口、P2.0P2.4作为存储器和显示器的数据与地址线,并通过74HC573/74HC273扩展,增加引脚。P2.5、P1.7、P3.1连接欠电压指示电路,用来检测电压。P89LPC932看门狗定时器具有片内独立振荡器,所以P3.0、P3.1可以用作I/O口,且P3.0与74HC573、74HC273的CLK相连,用作ALE。P1.2、P1.3用来与键盘通信。P1.4用来控制发射电路,P1.5、P1.7控制接收电路。P1.6用来控制74HC273。P2.6、P2.7分别用来控制DS1225Y的写与读。4.2键盘电路4.2.1键盘通过与单片机AT89C52接口如图4-2-1所示,用单片机的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。对应的按键的序号排列如图4-2-2所示图4-2-1 键盘按键的分布图4.2.2 键连击现象的克服和处理当我们按下某个键时,对应的功能便会通过键盘分析程序得以执行,如果在操作者释放之前,对应的功能多次执行,如同操作者在连续不断的操作该键一样,这种现象就称为连击。连击先可用图4-2-3所示流程图的软件方法来解决:当某个键按下时,首先进行软件去抖处理,确认键被按下后,便执行与该键相对应的功能,执行完后不是立即返回,而是等待键释放之后再返回,使每一次按键只被响应一次,从而达到避免连击的目的。如果把连击现象加以利用,有时会给操作者带来便利。例如在某些仪器中。因设计的按键很少,没有安排09数字键,只设置了一个调整键,这时需要采用加1(或者减1)的方法来调整有关参数,但当调整量较大时就需要多次按键,使操作者很不方便。如果允许存在连击现象,我们只要按住键不放,参数就会不停的加1(或者减1),会让操作比较方便、快捷。具体实现流程图如图4-2-3所示,其中加入的延时环节是为了控制连击的速度。读键延时去抖执行等键释放读键延时去抖执行延时图4-2-3 键连击现象的处理 图4-2-3 键连击现象的合理利用4.4 红外发射电路红外发射电路图如图4-4所示。当系统进入发射功能时,AT89C52首先扫描矩阵键盘以识别相应的按键,然后从EEPROM中取出相应键值的遥控基带信号,即红外遥控编码的高、低电平持续时间。同时,直接用定时器T1来产生38KHz的载波信号,从而改善了文献4中使用振荡器NEC555产生载波信号的缺陷。最后,将遥控基带信号调制到载波上,经三极管9013和8050进行两级放大以驱动红外发射管辐射出940nm的红外脉冲信号。AT89C52单片机的基本原理:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 图4-5 红外线接收电路4.5 红外接收电路红外接收电路如图4-5所示。一体化红外接收头采用NB1838,其光电检测和前置放大器集成于同一封装,中心频率为37.9kHz。NB1838的环氧树脂封装结构为其提供了一个特殊的红外滤光器,对自然光和电场干扰有很强的防护性。NB1838的目的是对接收到的红外信号放大、检波、整形,并解调出红外遥控编码,得到TTL电平,反相后输入至AT89C52的P2.1口。当系统进入学习功能时,定时器T0先把经P2.1遥控编码暂存到RAM ,最后将其存储至EEPROM指定的地址中,以免数据掉电丢失。图4-5 红外线发射电路4.6 存储器电路4.6.1 24c02引脚说明 24C02它的引脚及接口应用。如图2-7为24C02引脚图,A0,A1,A2为芯片地址线,单片使用时一般接VSS;SCL为串行移位时钟;SDA为串行数据或地址。通过SDA,CPU可对芯片写入或读出数据;WP为写保护。若WP接VCC,芯片只读。图2-7 24C02引脚分布 4.6.2 单片机与24C02的接口图2-8 为单片机与24C02的接口电路图。单片使用A0,A1,A2,Vss均接地。串行时钟SCL接P3.4,串行数据或地址线SDA接P3.3引脚。这里的24C02主要用于存遥控器的高低电平的宽度。其芯片的写地址为A0H,读地址为A1H。图2-8 24CO2与8031接口4.6.3 单片机与1602的接口第五章 程序设计5.1 主程序流程图键盘扫描开始初始化学习有键按下进入学习状态学习宏定义完毕读入宏定义键发射控制信号恢复控制状态结束学习否否是是是否 否否否是否是图5-1 主程序流程图5.2 键号判别程序设计判别键盘上有无键闭合:其方法使p1口“ 0”,读P1.1P1.7的状态,若全为“ 1”(键盘上行线全为高电平),则键盘上没有键闭合;若P3.1P3.4、P3.7不全为“ 1”,则有键处于闭合状态。其方法为在判别到键盘闭合后,延时一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合期;否则认识键的抖动。判别闭合键的键号:方法为对键盘的列线进行扫描,扫描口P1口依次输出:P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.011111110111111O1111110111111011111101111110111111011111101111111顺次读出P3.1P3.7口的状态,若全为“ 1”,则列线输出为“ 0”的这一列上没有键闭合;否则有键闭合。闭合键的键号为低电平的列号加上为低电平的行的首键号。例如:P1口的输出为11111101时,读出P3.1P3.4为11101,则1行1列相交处于闭合状态,第一行的首键为8,列号为1,闭合键的键号为:N=行首键号+列号=8+1=9使CPU对键的一次闭合仅做一次处理:采用的方法为等待闭合键释放以后再作处理。键盘输入子程序的框图如图5-2所示(从该程序返回输入号在A):图5-2 键盘输入程序流程图5.3红外解码(接收)的程序设计要了解一个未知的遥控器,首先要分析其脉冲,从而了解到其脉冲波形特性(以何种方式携带“ 0” 、“ 1”信息),进而了解其编码规律。脉冲流的分析应从分析脉冲的高、低电平入手,下面是用软件的方法来实现对脉冲流的分析: MOV RO,00H MOV R1,#28H MOV TMOD,#01H TK: JB P3.3,TK ;等待低电平到来;测低电平宽度 TK1: MOV TH0,#00H MOV TL0,00H SETB TR0 TK0: JB TKE ;超时无效返回 JNB P3.3, TK2 CLR TRO MOV A,YH0 MOVX R0,A INC R0 ;测高电平宽度 MOV TH0,#00H MOV YL0,#00H SETB TR0 TK3: JB TF0,TKE ;超时无效返回 JB P3.3,TK3 CLR TR0 MOV A,TH0 MOVX R0,A INC R0 MOV A,TL0 MOVX R0,A INC R0 DJNZ R1,TK ;循环 TKE: RET这段程序首先将TC0设置成16位定时器方式,初始化RAM地址指针R0和循环计数指针R1,每当引脚的逻辑电平发生跳变时,停止计时,将计时值保存到连续的RAM中。这段程序可以连续测量40个脉冲的时间值(包括40个低电平脉宽)。设计时通过大量的不同种类的遥控码波形实验分析, 遥控码的帧间歇位宽度均在10 ms 以上, 起始位码宽度在100 s 20ms 之间, 编码位在100 s 5ms 之间, 为确保所有遥控器学习的成功, 采用以下设计方法: 1 寻提起始位方法: 用16 位DPTR计数器对高电平进行宽度计数, 计数采样周期为21 s, 当高电平结束时, 如高8 位计数器为非零, 则说明高电平宽度超过5.35ms( 25521 s), 紧接来的低电平码就是起始位, 否则重新开始。 2读起始位方法:采用16 位DPTR对低电平进行宽度计数( 最大可读宽度为1.376s),当高电平跳变时结束计数, 并将DPTR 的高8 位、低8 分别存入R4, R5 寄存器。 3 读遥控编码的方法: 采用DPTR 低8 位计数器对码( 高电平或低电平) 进行宽度计数, 电平跳变时结束计数, 并将值存入规定的地址, 在高电平码计数时, 如DPTR 高8 位计数器为非零( 宽度大于5.35ms), 则判定为结束帧间隔位, 在相应存储单元写入OOH作为结束标志。5.4 红外发射程序设计单片机不断扫描矩阵键盘,若有键按下,从EEPROM中取出对应键值的存储数据取反后作为T0的初始值,同时启动T0和T1,并用T1产生38KHz的载波信号。在高电平且T0没溢出时,从P2.6口不断地输出载波信号,T0溢出后关闭T0、T1。然后重新启动T0,把EEPROM中下一个地址的数据取反并作为T0的初始值,此时关闭T1,在这个脉冲周期内不产生载波。如此循环反复,从P2.6口输出的就是已调制到载波上的红外脉冲信号,经三极管两级放大来驱动红外发射管输出红外遥控信号。图5-4为系统发射程序流程图。 图5-3 学习程序流程图 图 5-4 发射程序流程图第六章 程序源代码6.1 键盘程序子程序清单:KEYBUF EQU 30H ORG 00HSTART: MOV KEYBUF,#16WAIT: MOV P1,#0FFH CLR P1.7 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY1 LCALL DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P1 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1NK4: NOPNOKEY1: MOV P1,#0FFH CLR P1.6 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY2 LCALL DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P1 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK1NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK1NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK1NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJMP DK1NK8: NOPNOKEY2: MOV P1,#0FFH CLR P1.5 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY3 LCALL DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P1 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK1NK9: CJNE A,#0DH,NK10 MOV KEYBUF,#9 LJMP DK1NK10: CJNE A,#0BH,NK11 MOV KEYBUF,#10 LJMP DK1NK11: CJNE A,#07H,NK12 MOV KEYBUF,#11 LJMP DK1NK12: NOPNOKEY3: MOV P1,#0FFH CLR P1.4 MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY4 LCALL DELY10MS MOV A,P1 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P1 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK1NK13: CJNE A,#0DH,NK14 MOV KEYBUF,#13 LJMP DK1NK14: CJNE A,#0BH,NK15 MOV KEYBUF,#14 LJMP DK1NK15: CJNE A,#07H,NK16 MOV KEYBUF,#15 LJMP DK1NK16: NOPDK1: MOV A,KEYBUF LJMP START NOKEY4: LJMP WAIT;-DELY10MS: MOV R6,#10D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET6.2 IC总线程序6.2.1位传输I2C总线每传送一位数据必须有一个时钟脉冲。被传送的数据在时钟SCL的高电平期间保持稳定,只有在SCL低电平期间才能够改变,在标准模式下,高低电平宽度必须不小于4.7us。那么是不是所有I2C总线中的信号都必须符合上述的有效性呢?只有两个例外,就是开始和停止信号。l开始信号:当SCL为高电平时,SDA发生从高到低的跳变,就定义为开始信号。l 停止信号:当SCL为高电平时,SDA发生从低到高的跳变,就定义为结束信号。6.2.2 数据传输的字节格式SDA传送数据是以字节为单位进行的。每个字节必须是8位,但是传输的字节数量不受限制,首先传送的是数据的最高位。每次传送一个字节完毕,必须接收到从机发出的一个应答位,才能开始下一个字节的传输。如果没有接受到应答位,主机则产生一个停止条件结束本次的传送。那么从机应该发出什么信号算是产生了应答呢?这个过程是这样的。当主器件传送一个字节后,在第9个SCL时钟内置高SDA线,而从器件的响应信号将SDA拉低,从而给出一个应答位。6.2.3 I2C数据传输协议I2C总线的数据传输协议如下:(1)、主器件发出开始信号(2)、主器件发出第一个字节,用来选通相应的从器件。其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,方向位为“1”表示接受。(3)、从机产生应答信号,进入下一个传送周期,如果从器件没有给出应答信号,此时主器件产生一个结束信号使得传送结束,传送数据无效。(4)、接下来主、从器件正式进行数据的传送,这时在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位(传送的时候先送高位,再送低位)。当一个字节传送完毕时,再发送一个应答位(第9位),如上一条所述,这样每次传送一个字节都需要9个时钟脉冲。第七章 程序的调试7.1 编译软件的使用和编译过程 编译软件的使用A: 编译软件的装载:这个软件不需要安装,只要复制到机子里就行。B:双击快捷方式,进入编辑界面,进行下一步编辑(如图)。图3.2 编译使用界面C点击文件,新建一个文件,将源程序输入后保存(生成.ASM文件)。D. 选择项目,点击全部编译,系统自动进行编译后弹出对话框,提示编译中出现的问题,双击提示后

温馨提示

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

评论

0/150

提交评论