无线红外多路遥控发射接收系统设计与实现软件设计_第1页
无线红外多路遥控发射接收系统设计与实现软件设计_第2页
无线红外多路遥控发射接收系统设计与实现软件设计_第3页
无线红外多路遥控发射接收系统设计与实现软件设计_第4页
无线红外多路遥控发射接收系统设计与实现软件设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、1 绪论1.3本课题的主要任务本课题的核心是设计出一个无线红外多路遥控发射/接收系统的软件。本设计要求掌握无线红外多路遥控发射/接收系统的工作原理,本红外多路遥控发射接收是以红外线为传递信息媒体的短距离无线控制系统,可对8个受控对象的工作状态进行遥控,适用于工业,医疗,家用电器等设备的开启或关闭控制,也可以对一种设备八种工作状态进行控制或2种设备的4种工作状态进行控制。具体要求如下:(1 遥控距离不小于3m,即红外遥控发射机与红外接收机之间的距离不小于3m; (2 遥控路数8路,即可对8个受控设备进行开关控制; (3 工作频率40kHz,即红外发射和接收的载频为40kHz; (4 发射端可显示

2、控制路数,接收端可显示受控状态。2 红外遥控系统简介红外遥控是目前家用电器中用得较多的遥控方式,在讲红外线遥控之前,首先讲一讲什么是红外线。我们知道,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76m;紫光的波长范围为0.380.46m。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线遥控就是利用波长为0.761.5m之间的近红外线来传送控制信号的。2.1系统组成框图通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收

3、部分包括光、电转换放大器、解调、解码电路。 图1 红外遥控系统框图发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通发光二极管相同(见图2,只是颜色不同。红外发光二极管一般有黑色、深蓝、透明三种颜色。判断红外发光二极管好坏的办法与判断普通二极管一样:用万用表电阻挡量一下红外发光二极管的正、反向电阻即可。红外发光二极管的发光效率要用专门的仪器才能精确测定,而业余条件下只能用拉距法来粗略判定。 接收部分的红外接收管

4、是一种光敏二极管。在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率一般都较小(100mW左右,所以红外接收二极管接收到的信号比较微弱,因此就要增加高增益放大电路。前些年常用PC1373H、CX20106A 等红外接收专用放大电路。最近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装。均有三只引脚,即电源正(VDD、电源负(GND和数据输出(VO或OUT。图3给出一些成品红外接收头

5、的外形。红外接收头的引脚排列因型号不同而不尽相同,可参考厂家的使用说明。成品红外接收头的优点是不需要复杂的调试和外壳屏蔽,使用起来如同一只三极管,非常方便。但在使用时注意成品红外接收头的载波频率。红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的。在发射端对晶振进行整数分频,分频系数一般取12,所以455kHz1237.9 kHz38kHz。也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。此次遥控系统的设计要求载波频率为40KHz。 2.2多路控制的红外遥控系统多路控制的红外发射部分一般有许多按键,代表不同的控制功能。当

6、发射端按下某一按键时,相应地在接收端有不同的输出状态。接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。“电平”输出是指发射端按下键时,接收端对应输出端输出“有效电平”,发射端松开键时,接收端“有效电平”消失。此处的“有效脉冲”和“有效电平”,可能是高、也可能是低,取决于相应输出脚的静态状况,如静态时为低,则“高”为有效;如静态时为高,则“低”为有效。大多数情况下“高”为有效。“自锁”输出是指发射端每按一次某一个键,接收端对应输出端改变一次状态,即原来为高电平变为低电平,原来为低电平变

7、为高电平。此种输出适合用作电源开关、静音控制等。有时亦称这种输出形式为“反相”。“互锁”输出是指多个输出互相清除,在同一时间内只有一个输出有效。电视机的选台就属此种情况,其它如调光、调速、音响的输入选择等。“数据”输出是指把一些发射键编上号码,利用接收端的几个输出形成一个二进制数,来代表不同的按键输入。一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。这种输出形式一般用于与单片机或微机接口。除以上输出形式外,还有“锁存”和“暂存”两种形式。所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍

8、的“电平”输出类似。3 红外遥控系统的总体设计3.1 发射控制系统设计此部分设计要求:用数码管显示所控制路数,即按下“1”键显示数字“1”,表示对设备“1”进行控制;按下“8”键显示数字“8”,表示对设备“8”进行控制。在所有被控制对象处于停止状态时,数码管熄灭。3.1.1 电路设计发射控制部分电路主要分为:按键及控制电路,显示电路,编码电路,脉码调制振荡电路,红外发射电路这5部分。(1按键及控制电路按键及控制电路由AT89C51与键盘组成,根据设计要求,此系统要求对八路信号进行遥控,因此电路采用最简单的独立式按键输入方式。八个按键表示八个控制设备。按键的一端接89C51的P1(P1.0P1.

9、7口,另一端直接接地。这种方式的优点是编程简单,当有按键按下时P1口由高电平变为低电平,说明有信号输入,89C51测试到此低电平时,将其对应的BCD 码与键值送到相应的端口并行输出。按键接口电路见附图1。(2显示电路在显示电路部分用到八段LED 显示器。八段LED 显示器由8个发光二极管组成。其中7个长形条的发光管排列成”日”字形,另一个贺点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部分英文字母。LED 显示器有两种不同的形式:一种是8个发光二极管的阳极都连在一起的,称为共阳极LED 显示器;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED 显示器。如下图4所示

10、。 共阳极7段数码管a b c d e f g h +5V GND共阴极7段数码管hg f e d c b a图4 数码管电路图 共阴和共阳结构的LED 显示器各笔划段名和安排位置时相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段hgfedcba 对应于一个字节(8位的D7 D6 D5 D4 D3 D2 D1 D0,于是用8位二进制就可以表示欲显示字符的字形代码。例如,对于共阴LED 显示器,当公共阴极接地(为零电平,而阴极hgfedcba 各段为01110011时,显示器显示“P ”字符,即对于共阴LED 显示器,“P ”字符的字形码是73H。如果是共

11、阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH。设计要求用数字显示所控制的路数,即将发送的键值转换成与数码管显示相对应的字符码。选89C51的P2口作为字符码输出端口。因为51单片机I/O口输出低电平时输出的电流很小,数码管不会太亮,所以用锁存器74HC373来驱动数码管发光,显示接口电路见附图1。数码管显示18数字时,P2口应送出的字符值分别为:F9H、A4H、B0H、99H、92H、83H、F8H、80H。并用89C51的P3.4、P3.5口分别控制74HC373允许输入G与输出控制/OE。(3编码电路编码电路有集成电路VD5026组成,它将进行的4

12、位BCD码变换成串行的编码信号。其功能是将并行的4位BCD码转换成串行输出信号,经调制以后发射。将89C51单片机P3口的P3.3P3.0直接接到VD5026的数据输入D3D0端,另外用P3.5接发射指令, VD5026的工作原理与性能见器件介绍。具体电路见附图1。(4脉冲调制振荡电路为了提高传输信号的抗干扰能力,还需要将编码信号调制在较高频率的载波上发射。本课题要求载波频率为40KHz,故可采用CMOS门电路构成的脉冲调制电路。当编码信号A为高电平时,振荡器工作,输出为载频信号;当编码信号为低电平时,振荡器不工作,输出为低电平。输出的编码调制信号波形如下图5中的B所示。A B图5 编码调制波

13、形图脉码调制振荡电路见下图6所示。 图6 脉码调制振荡电路图(5红外发射电路红外发射电路有放大电路和红外发射管组成。G3、G4为隔离级,其作用是减少发射时的大电流对振荡级的影响;三极管对发射信号进行电流放大。当G4输出为高电平是,三极管导通,红外管工作,当G4输出为低电平时,三极管截止,红外管不工作。 图7 红外发射电路图3.1.2软件设计软件设计有两种方法:一种是自上而下,逐步细化;一种是自下而上,先设计出每一个具体的模块(子程序,然后再慢慢扩大,最后组成一个系统。在本设计中我用自下而上的设计方法。首先设计出一个延时子程序,再设计显示子程序,最后组成一个按键查询程序。当然在编程之前要先画程序

14、流程图。画程序流程图是程序设计的一个重要组成部分,而且决定成败的关键部分。画程序流程图的过程就是进行程序的逻辑设计过程,这中间的任何错误或忽视均将导致程序出错或可靠性下降。因此,真正的程序设计过程是流程图设计,而上机编程是将设计好的程序流程图转换成程序设计语言而已。正确的流程图画法是先粗后细、一步一个足印,只考虑逻辑结构和算法,不考虑或少考虑具体指令。这样画流程图就可以集中精力考虑程序的结构,从根本上保证程序的合理性和可靠性。接下来就是进行指令代换,这时只要消除语法错误,一般就能顺利编出源程序。发射部分的软件设计有两种方案。第一种方案是在发射部分从编码程序的设计着手,从而设计出整个发射部分。下

15、面是两种方案的比较。(1方案一:编码程序的设计课题要求用数字显示所遥控的路数,即将发送的键值与数码管显示相对应的字符码。键盘的每一键均表示一种控制,并赋予了键值,因此,编码程序的作用是控制单片机读键盘,然后生成与键值一致的编码,并用串行数据方式发送编码,编码程序流程图如图8所示。 图8 编码流程图其中,置波特率子程序用于设定数据传送速率。当选择串行发送方式1时,其波特率由定时器T1的溢出率和SMOD的位状态确定。串行数据发送子程序用来设定数据发送程序。串行发送方式1是由10位异步通信方式,其中1个起始位,8个数据位和1个停止位。发送时,首先送出起始位,而后发送数据位D0D7(由低位到高位,最后

16、为停止位。当10位发送完毕后,89C51的T1自动跳变为1,产生中断,串行发送结束。注意:在进行多次发送数据时,必须在程序中有清零命令。按键子程序用来判断有无按键按下。判断时可先将P1口中对应行的口全置“1”,即P1输出为0FH,然后用读引脚的办法将P1口值读入,读入值与0FH 一致,则无键按下,否则就有键按下。10ms延时程序是为了消除按键瞬间按下的抖动。(2方案二的程序框图下面是程序框图的一部分,是通用的独立式按键查询程序框图。此程序基本功能:查询有无按键按下,没有转下一次查询,有则调用延时子程序,作用是消除按键的抖动,确定此键确实按下。然后调用显示子程序将此键值送显示电路,其四位BCD码

17、送编码电路进行编码。最后判断此按键是否释放,调用延时子程序直到按键被释放。 图9 独立式按键查询程序框图 图10 延时程序框图(3方案二的程序设计主控程序的设计思想:发射控制程序主要用到了独立式按键查询程序、延时程序和查表显示程序。用89C51单片机的P1口作为按键的输入,P2口作为显示输出,P3口作为键值的BCD码输出和控制输出。用寄存器R0作为计数器,初值为零,在每次测试有无按键按下之前加1,直到加到7为止,然后又从零开始加,是为了显示查表子程序中查表的目的。由于此系统要求是对8路信号的遥控,在编程时没有用到八位二进制数到四位BCD 码的转换。只判断输入健值,然后将其对应的四位BCD码送P

18、3口的低四位输出。P5用做锁存器74HC373和编码器VD5026的输出控制,当有信号要发射时此端口为低电平。P3.4用做控制74HC373的允许输入端,高电平有效。显示电路的程序设计思想:当测试到是哪一路信号输入时,将其对应值的是十六进制数送P2口输出。其对应情况为:信号通道P2口输出(十六进制P3口输出(十六进制按键“1”0F9H 0D1H按键“2”0A4H 0D2H按键“3”0B0H 0D3H按键“4”99H 0D4H按键“5”92H 0D5H按键“6”83H 0D6H按键“7”0F8H 0D7H按键“8”80H 0D8H查表显示电路的程序如下:DISP: ;显示子程序PUSH SPPU

19、SH PSWMOV DPTR,#TABMOV A,R0MOVC A,A+DPTR ;查表MOV P2,A ;将测试到的信号的十六进制送P2口,显示输出POP PSWPOP SPRET ;返回TAB:DB 0F9H,0A4H,0B0H,99H,92H,83H,0F8H,80HEND如下是延时子程序:DELAY: ;延时子程序MOV R7,#01HD1:MOV R6,#0FFHD2:DJNZ R6,$ ;R6减于1不等于零则转移DJNZ R7,D1 ;R7减于1不等于零则转移RET ;返回方案一更适合工作状态数比较大的情况下,如对8路受控对象进行8种工作状态的控制,即工作状态总数为8*8种。由于本

20、课题只要求对8个受控设备进行开关控制。而方案一的读入键值子程序是确定被按下的键。当确定有键被按下时,可先对4根列线轮流置“0”,4根行线全部置“1”,由此产生置位值。再读P1口,读入值与置位值一致,则无键按下,否则就有键按下,读入值即为键值。将键值作为发射码送串行发送口。显然方案二更适用于本次设计,一方面编程比较简单,需要的芯片数比较少,可以节约实验室的器材。方案二程序设计时,在汇编语言的环境下进行编程,在伟福仿真器上运行和调试。3.2接收控制设计接收控制部分的设计要求:用8个LED的亮、灭表示相应设备的开关状态某个LED亮该被控对象处于开启状态某个LED灭该被控对象处于停止状态3.2.1电路

21、设计接收控制部分主要有:红外接收、解调电路,解码电路,控制电路三部分。(1红外接收、解调电路红外接收电路通常由一片专用集成电路和少量外围器件组成。我们采用了应用最为广泛的芯片CX20106,图11是由CX20106组成的红外接收、解调电路。红外接收管将光信号转换为电信号,从CX20106的1脚输入,经前置放大器、限幅放大器放大后送至带通滤波器,带通滤波器的中心频率与红外发射载波频率相同。检波器、积分器组成解调电路,对接收信号进行解调。施密特触发器对解调输出信号进行整形,从7脚输出,该输出为集电极开路电路,因此要接上拉电阻。所有红外遥控器的输出都是用编码后串行数据对3840kHz的方波进行脉冲幅

22、度调制而产生的。如果直接对已调波进行测量,由于单片机的指令周期是微秒(s级,而已调波的脉宽只有20多s,会产生很大的误差。因此先要对已调波进行解调,对解调后的波形进行测量。 F图11 红外接收解调电路(2解码电路解码电路的功能是将解调后的串行数据进行解调,使其成为BCD控制代码,并使控制代码进行输出。VD5027是与VD5026配对使用的通用接收解码器。收到的串行数据从VD5027的14脚输入,经数据提取电路判断后与序列发生器产生的本地地址码亿比特一比特地进行校验。如果第一次接收到的地址码和本地地址码相符,则将紧接着收到的4位数据马储存在内部4bit移位寄存器中(不移到输出锁存器。当第二次收到

23、的地址码仍与本地地址码相符,则将新收到的数据码于上一次储存的数据码加以比较,若两次相同则控制逻辑电路使有效传输输出端VT为高电平,4比特移位积存器中的数据码转移到输出锁锁存器,并且在输出锁存器保留,直到新的数据代替它。保留在锁存器的数据经缓冲器后输出,同时有效传输输出端VT保持高电平。若两次不相同或4个数据周期内没收到信号,则VT为低电平。电路连接见附图2。(3控制电路控制电路有89C51与八个发光二极管组成,二极管的亮、灭表示设备的工作状态:亮说明受控设备开启,灭说明受控设备停止。二极管连接在89C51的P2口,在编程时,89C51将收到的四位BCD码转换二极管的控制信号来使二极管发光或熄灭

24、,证明设备的受控情况。P2.7P2.0分别控制18路信号,每次只有一路信号输出,所以二极管每次只有一只发光。3.2.2软件设计同样的在接收部分主要有译码即解码程序设计和控制程序设计。(1程序框图译码的工作过程是,由89C51将解调后的编码读入,再由内部程序将读入的编码译成相应的路控制信号,由于编码的就是键值,因此可用查表程序将键值转换成相应的控制信号并用识别标志位的方法,识别键值所对应的控制方式,译码程序流程如图12所示。 图12 译码程序流程图接收控制程序的目的是测试接收到的控制信号,从而控制P2口的输出,使其为高电平或低电平,达到控制受控设备的要求。考虑到接收的只是四位BCD码,所以测试时

25、只判断P1口的低四位(P1.3P1.0是否为0或1。例如:当测试到P1.3P1.0为0011时,说明接收到的是第三路信号,则选择P2.5口作为信号的输出端,也就是将P2.5清零,使第三个二极管发亮,说明接收到了第三路信号。测试过程为:先检测P1.3是否为0,为0;再检测P1.1是否为0,不为0。说明是1;最后检测P1.0,为1,证明接收到的是0011,即可控制P2.5为0,使第3只LED 发光。下面是接收部分的程序框图: 图13 接收控制程序框图(2程序设计设计思想:接收控制的输入用89C51的P1口低四位(P1.3P1.0,当有信号输入P3.2也有中断输入,此时测试P1.3P1.0为0或1,

26、判断是哪路信号,再选择相应的端口输出控制信号。其对应情况:P1.3P1.0 P2端口(P2.7P2.0受控设备0001 01111111 LED“1”0010 10111111 LED“2”0011 11011111 LED“3”0100 11101111 LED“4”0101 11110111 LED“5”0110 11111011 LED“6”0111 11111101 LED“7”1000 11111110 LED“8”首先测试P1.3,是1则说明收到的是第八路信号,因为八路信号的BCD码中,只有第八路的BCD码的最高位为1,而其余的都为0,所以将P2.0清零,说明接收到了第八路信号;是

27、0则有7种可能性,因为其它7个数字的BCD码最高位都为0,此时要测试下一位即P1.1位,依次类推测试出其它几路信号。4 器件介绍4.1 AT89C51单片机简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多

28、功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图14 AT89C51管脚图图15 AT89C2051管脚图4.1.1主要特性与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路4.1.2管脚说明V CC:供电电压。GND:接地。P0口:

29、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

30、口缓冲器可接收,输出4个TTL 门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉

31、为低电平,P3口将输出电流(ILL这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3口管脚备选功能P3.0 RXD(串行输入口P3.1 TXD(串行输出口P3.2 /INT0(外部中断0P3.3 /INT1(外部中断1P3.4 T0(记时器0外部输入P3.5 T1(记时器1外部输入P3.6 /WR(外部数据存储器写选通P3.7 /RD(外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在

32、FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE 的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保

33、持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4.1.3振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须

34、保证脉冲的高低电平要求的宽度。4.1.4芯片擦除整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。将CX20106解调出的遥控编码脉冲直接连入8751单片机的INT0和T0脚,定时器T

35、和T1都初始化为定时器工作方式1,T0的GA TE位置位。每次外部中断首先停止定时,记录T0、T1的计数值,然后将T0、T1的计数值清零,并重新启动定时。T0的值即为高电平脉宽,T1-T0的值为低电平脉宽,如图2所示。4.2编译码集成电路VD5026/5027简介VD5026与VD5027是CMOS大规模数字集成电路。前者是编码器,后者是译码器。他们组合应用起来构成一个发射接收数字编译码系统。VD5026编码器是一种8位编码发射器。它的第18脚是编码的输入端,每个输入端可以有3种状态,即“0”、“1”或“开路”,其中“0”表示为低电平,“1”表示为高电平,因此8个脚可以组成38=6561个不同

36、的编码。如果需要更多的编码,可将输入端改为4态连接方式,这时第1脚是第4种状态的公共连接脚,第2脚第8脚与第1脚连接时为第4种状态。所以第2脚第8脚都可以有4种状态,即“0”、“1”、“开路”、“接1脚”。在这种情况下可以组成47=16384个编码。第10脚第13脚也可作为编码地址线,与第1第8脚联合起来组成12位编码地址线,这时编码数可高达411=4194304个。本文要介绍的是VD5026与VD5027配合应用,VD5026的第10第13脚用作数据输入线,根据需要这几个脚可以置“0”或置“1”。第14脚是发射指令端,当此脚接地时,VD5026输出端则发出一组编码脉冲。第15脚、第16脚是一

37、个内置振荡器,外接几十到几百千欧的电阻即可产生振荡,振荡频率为fosc=1600/R(KHz,式中R为外接电阻,单位为千欧。第17脚是编码输出端,第18脚、第9脚分别是电源的正、负极。VD5027接收解码器有相应于VD5026的12位信息。第1脚第8脚是地址线。当VD5026发出的地址编码与VD5027预置的编码相同时,则在VD5027的第10脚13脚有数据输出,该输出信息与VD5026的第10第13脚所置的数据相同。第14脚为输入端,第15脚、第16脚是振荡器,外接电阻值应与VD5026完全相同。第17脚是输出端。编码器VD5026发射时,如果密码相同,VD5027就会输出高电平。VD502

38、6、VD5027的管脚排列见图16。 VD5026 VD5027图16 编译码器附表1列出了他们的电气特性参数,以供参考。附表 1 (DD =5V 静态电流仅有1A 。集成电路内部含有振荡电路,不用再外加晶振。它的外围电路也很简单,也容易与射频、红外线、超声等方式结合起来,组成遥控发射、接收系统。因此这种 电路应用非常广泛。如保安、消防、有线对讲、BP 机等多用户系统。4.3 八D 锁存器74HC3734.3.1特性74HC373管脚图如图17所示。 Q3D3D2Q2Q1D1DO QO OE Vcc Q7D7D6Q6Q5D5D4Q4LED u a l -l n -L i n e P a c k

39、 a g eC PQ 4D 4D 5Q 5Q 6D 6D 7Q 7V c c M R Q O D O D 1Q 1Q 2D 2D 3Q 3G N D1098765432120191817161514131211图17 74HC373 管脚图 图18 74LS273 管脚图74HC373内含八个带三态输出的八D透明锁存器,每个锁存器有一个数据输入(D和数据输出(Q。其主要电特性的典型值如下:(1宽的电源电压范围:26V(2低的输入电流:1A(3高的负载能力:15个LS-TTL负载(4高的工作速度(典型值:tPd =18ns(VCC=5V,CL=45PF(5低的电源电流:80A(6可同总线式系统的

40、数据线接口。设计中用锁存器74HC373来驱动数码管,而没有用74LS273。74LS273的管脚图如图18所示。真值表:如表2所列。 注:H:高电平、LX:任意、Z:高阻、Q0:规定的稳态输入条件建立前Q的电平管脚排列:有双列直插和片装载体两种形式。引脚功能定义:1D8D:数据输入端;EN:三态允许控制端(低电平有效;GND:地;LE:锁存器允许控制端;1Q8Q:数据输出端。V CC:电源极限参数:电源电压-0.57V输入电压VI-0.5V CC+0.5V输出电压-0.5V CC+0.5V钳位二极管电流20mA输出电流-35mA电源端/地端电流- -70mA贮存温度-4085工作环境温度07

41、0推荐工作条件:如表3所示。 静态特性:如表4所示。表4 静态特性表 注:n表示静态特性测试方法n。5 伟福仿真器简介5.1 E6000L/E6000T/E6000S型仿真器介绍5.1.1功能 5.1.2配置仿真头 5.1.3 外形示意图 图 19 伟福E6000/L外形示意图说明:1. 仿真器使用9针串行口,与PC机用两头为孔的串行电缆连接。对于一些只有USB口而没有串口的计算机,可以使用USB转串口电缆将USB转成串行口。2. 根据仿真器型号不同,逻辑测试钩插座只有一个。3. 根据仿真器型号不同,可能会没有20芯仿真电缆插座。4. 电源为直流5V/1A(最小,电源插孔的极性为内“正”“外”

42、“负”。5.2 POD8X5X仿真头介绍POD8X5X仿真头可配E2000系列,E6000系列,K51系列仿真器,用于仿真INTEL8031/51系列及兼容单片机,可仿真CPU种类为8031/32,8051/52, 8751/52/54/55/58,89C51/52/55/58,89C1051/2051/405。华邦的78E51/52/54/58,LG的97C51/52/1051/2051。配有40脚DIP封装的转接座,可选配44脚PLCC封装的转接座。选配2051转接可仿真20脚DIP封装的XXC1051/2051/4051CPU。5.3 WINDOWS版本软件安装1.将1号安装盘插入A:驱

43、动器2.有几种方法可以执行A:盘的安装程序a.在我的电脑中打开A:驱动器,双击SETUP文件b.打开DOS窗口,DOS窗口命令行中输入A:SETUP3.按照安装程序的提示,输入相应内容。4.按照提示插入下一张软盘。5.继续安装,直至结束。也可以将安装盘全部复制到硬盘的一个目录(文件夹中,执行相应目录下的SETUP进行安装。注意:在安装新版本软件时,如果硬盘上已有老版本的软件,请卸载旧版本软件后,再安装新软件。在安装过程中,如果用户没有指定安装目录,安装完成后,会在C:盘建立一个C:WA VE目录(文件夹,结构如下: 5.3.1编译器安装伟福仿真系统已内嵌汇编编译器(伟福汇编器,同时留有第三方的

44、编译器的接口,方便用户使用高级语言调试程序。编译器请用户自备。5.3.2安装51系列CPU的编译器1.进入C:盘根目录,建立C:COMP51子目录(文件夹2.将第三方的51编译器复制到C:COMP51子目录(文件夹下。3.在 主菜单| 仿真器| 仿真器设置| 语言 对话框的编译器路径 指定为C:COMP51 (参见仿真器设置如果用户将第三方编译器安装在硬盘的其它位置,请在编译器路径指明其位置。5.4 使用说明5.4.1文件文件| 打开文件打开用户程序,进行编辑。如果文件已经在项目中,可以在项目窗口中双击相应文件名打开文件。文件| 保存文件保存用户程序。用户在修改程序后,如果进行编译,则在编译前

45、,系统会自动将修改过的文件存盘。文件| 新建文件建立一个新的用户程序,在存盘的时候,系统会要求用户输入文件名。文件| 另存为将用户程序存成另外一个文件,原来的文件内容不会改变文件| 调入目标文件装入用户已编译好目标文件。系统支持两种目标文件格式,BIN,HEX调入已经编译好的目标文件目标文件格式有二种:二进制(BIN:由编译器生成的二进制文件,也就是程序的机器码英特尔格式(HEX。由英特尔定义的一种格式,用ASCII码来存储编译器生成的二进制代码,这种格式包括地址,数据和校验地址选择一般为缺省地址(由编译器定。如果想在当前项目已编译好的二进制代码中插入一段其它代码,可以去掉”缺省地址”前的选择

46、。然后填入开始插入的地址和结束地址。用调入目标文件的方法,可以调试已有的二进制代码程序。而不需要源程序。直接调入目标文件进行仿真的方法是:1.新建项目。2.在新建的项目中,设置仿真器类型,仿真头类型,CPU类型。3.调入目标文件。(不要用加入模块方式,而是直接调入文件4.打开CPU窗口,在CPU窗口中就可以看见目标文件反汇编生成的程序。5.程序停在与CPU相关的地址上(51系列停在0000H处,96系列停在2080H6.这样就可以单步或全速调试程序了。文件| 保存目标文件将用户编译生成的目标文件存盘。对于按项目方式仿真的用户,系统将程序编译正确后,会根据用户在仿真器|仿真器设置下目标文件 中设

47、置的格式,将生成的二进制代码存盘。如果用户是用调入目标文件方式进行仿真,并且对目标码进行了修改。就可以用文件|保存目标文件方式存盘。目标文件可以存成两种格式:二进制格式(BIN:由编译器生成的二进制文件,也就是程序的机器码英特尔格式(HEX:由英特尔定义的一种格式,用ASCII码来存储编译器生成的二进制代码,这种格式包括地址,数据和校验地址选择一般为缺省地址(由编译器定。如果想要存盘的目标文件是由”调入目标文件”方式装入,而不是由系统编译产生的代码并已经修改,最好指定它的开始地址和结束地址,因为代码不是编译系统产生的。系统不知道文件有多长,无法指定开始和结束地址。自己指定地址的方法是: 去掉缺

48、省地址前的选择勾。然后填入开始插入的地址和结束地址。文件| 打印打印当前窗口内容,可以是用户程序,也可以是逻辑分析仪波形,跟踪器窗口文件| 退出退出系统,如果在退出以前有修改过的文件没有存盘,系统将会提示是否把文件存盘。5.4.2设置项目选择菜单设置| 仿真器设置功能或按仿真器设置快捷图标或双击项目窗口的第一行来打开仿真器设置对话框。在仿真器栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。在语言栏中,编译器选择根据本例的程序选择为伟福汇编器。如果你的程序是C语言或INTEL格式的汇编语言,可根据你安装的Keil 编译器版本选择Keil C (V4或更低还是Keil C (V5或更高。按

49、好键确定,当仿真器设置好后,可再次保存项目。通信设置:仿真器与计算机通信设置,包括通信端口选择,速率选择,字间距选择以及串口的测试功能。如果选择了使用伟福软件仿真,则不需要设置通信端口。端口选择: 选择仿真器与计算机连接的串口号。如果计算机与仿真器连接不上,请检查通信端口是否选择正确。波特率选择: 选择仿真器与计算机连接的速度。如果在高速率时通信不流畅,请降低通信速率。字符间隔: 选择通信时,字符与字符之间的间隙。如果在小间隔时,通信不是很流畅,请调到较大的间隔。使用伟福软件模拟器: 如果选择此项,可以在完全脱离硬件仿真器情况下,对软件进行模拟执行。如果使用硬件仿真器调试程序,请去掉使用伟福软

50、件模拟器前的选择勾。测试串行口:用来检测仿真器是否正确连接到计算机的串行口上。仿真器| 跟踪器/逻辑分析仪设置记时器: 在程序下面的状态栏可以看到程序执行的时间。注意:在用硬件单步执行程序时,记时器显示的时间可能略高于实际值,这是因为仿真器在采样时间时加入了监控时间。在全速执行多条指令时,监控时间可以忽略不计。逻辑笔: 通过逻辑笔可以方便地检测到电路的高低电平,脉冲频率和数量。跟踪器: 通过跟踪器,可以方便地看到程序实际执行的过程,在跟踪器窗口中可以观察到程序执行时间,执行过的机器码,反汇编程序,源程序,源程序所在文件,跟踪程序动态执行过程,找出程序中一些不可预见的错误。影子存储器:在程序执行

51、过程中,可以动态地看到存储器的变化,XDA TA窗口和观察窗口约每2秒刷新一次,这样就可以看到存储器当前值。为程序动态调试提供了更有效的手段,程序时效分析,分析程序中,各过程函数执行的时间,执行次数,了解程序执行效率,可以优化程序,进一步改善程序性能。数据时效分析:分析程序中,各变量,数据被访问的次数,访问频率,从而改善程序的结构,开发出更有效、更稳定的程序。5.4.3编译选择菜单项目| 编译功能或按编译快捷图标或F9键,编译你的项目。在编译过程中,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误,在编译之前,软件会自动将项目和程序存盘

52、。在编译没有错误后,就可调试程序了。5.4.4执行执行| 全速执行运行程序执行| 跟踪跟踪程序执行的每步,观察程序运行状态。执行| 单步单步执行程序,与跟踪不同的是,跟踪可以跟踪到函数或过程的内部,而单步执行则不跟踪到程序内部。执行| 执行到光标处程序从当前PC位置,全速执行到光标所在的行。如果光标所在行没有可执行代码。则提示“这行没有代码”。执行| 暂停暂停正在全速执行的程序。执行| 复位终止调试过程,程序将被复位。如果程序正在全速执行,则应先停止。执行| 设置PC将程序指针PC,设置到光标所在行。程序将从光标所在行开始执行。执行| 设置/取消断点将光标所在行设为断点,如果该行原来已为断点,

53、则取消该断点。四种方法可以在光标处设置断点1.将光标移到编辑窗口内,行左边的空白处,光标变成右上指箭头,双击鼠标左键,可以设置/取消断点。2.使用Ctrl-F8快捷键,可以在光标所在行设置/取消断点3.右击鼠标,弹出菜单,选择设置/取消断点,4.主菜单执行/设置取消断点,也可以用Alt-R / B 菜单快捷设置取消断点断点设置好后,当前行左空白处出现X图。如果断点有效,则当前行背景色为红,如果背景色为绿,说明当前程序行不产生代码,断点无效。执行| 清除全部断点清除程序中所有的断点。让程序全速执行5.4.5窗口窗口| 信息窗口显示系统编译输出的信息。如果程序有错,会以图标形式指出,表示错误,表示

54、警告,表示通过在编译信息行会有相关的生成文件,双击鼠标左键,或击右键在弹出菜单中选择”打开”功能,可以打开相关文件。(如果有编译错误,双击左键,可以在源程序中指出错误所在行,有时前一行或后一行程序有错,会造成当前行编译不通过。而将错误定位在本行,所以如果发现了错误,但在本行没有发现错误,可以查查本行上下的程序。5.4.6单步调试程序选择执行| 跟踪功能或按跟踪快捷图标或按F7键进行单步跟踪调试程序,单步跟踪就一条指令一条指令地执行程序,若有子程序调用,也会跟踪到子程序中去。我们可以观察程序每步执行的结果,=所指的就是下次将要执行的程序指令。由于条件编译或高级语言优化的原因,不是所有的源程序都能

55、产生机器指令。源程序窗口最左边的o代表此行为有效程序,此行产生了可以指行的机器指令。程序单步跟踪到Delay延时子程序中,在程序行的R0符号上单击就可以观察R0的值,观察一下R0的值,可以看到R0在逐渐减少。应用执行到光标处的功能,将光标移到程序想要暂停的地方,本设计为延子程序返回后的SJMP Loop行。选择菜单执行| 执行到光标处功能或F4键或弹出菜单的执行到光标处功能,程序全速执行到光标所在行。如果想下次不想单调试Delay延时子程序里的内容,可以按F8键单步执行就可以全速执行子程序调用,而不会一步一步地跟踪子程序。F8 F8F8F8F8F8F8。这样比较繁杂,那就移动光标到暂停行再按F

56、4,如果程序太长,每次这样移来移去,也很累,那就设置断点。全速执行快捷键:将光标移到源程序窗口的左边灰色区,光标变成手指圈单击左键设置断点,也可以用弹出菜单的设置/取消断点功能或用Ctrl+F8组合键设置断点。如果断点有效图标为红圆绿勾,无效断点的图标为红圆黄叉。断点设置好后,就可以用全速执行的功能,全速执行程序,当程序执行到断点时,会暂停下来,这时可以观察程序中各变量的值,及各端口的状态,判断程序是否正确。本设计是将P1端口加一,后延时,再重复,这样若P1就是一个二进制加法器,若P1口接发光二极管,就会闪亮。不过以上都是用软件模拟方式来调试程序。如果想要用仿真器硬件仿真。就要连接上仿真器。5.4.7连接硬件仿真按照说明书,将仿真器通过串行电缆连接计算机上,将仿真头接到仿真器,检查线是否有误,确信没有接错后,接上电源,打开仿真器的电源开关。去掉前面的勾 即为硬件仿真方式如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现如图的硬件仿真的对话框,并显示仿真器、仿真头的型号及仿真器的序列号,表明仿真器初始化正确。如果仿真器初始化过程中有错,软件就会再次出现仿真器设置对话框,这时你应检查仿真器,仿真器的选择是否有错,硬件接线是否有错,检查纠正错误后,再次确认。直至显示硬件仿真

温馨提示

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

评论

0/150

提交评论