多路红外遥控灯

更新时间:2024-06-24 07:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

专业综合实验报告

题 目 名 称 可变亮度灯光红外遥控装置 课 程 名 称 专业综合实验 学 生 姓 名 黄昌明 学 号 0741227228 系 、专 业 信息工程系07通信工程 指 导 教 师 李新亮

2010年 12 月 20 日

第1部分 系统整体方案设计与比较

一、实验目的

1.用所学知识结合所查阅的资料提出设计方案 2.掌握系统整体方案设计的方法

3.培养分析系统设计方案的能力并从方案中选择一个最优的设计方案

二、实验内容

针对本次课题,提出几种总体设计方案,并比较其优缺点,确定两套方案中的一套为本课题采纳的方案并对主要思想进行初步的阐序。用方框图画出个方案的原理框图。并分析方案的重点也难点。

三、实验原理与方法

题目的要求是实现多路无线遥控开关,控制范围是5—10米。该设计的实现方法有很多。可以用无线遥控或用红外线遥控等方式实现。题目很有灵活性。由于红外遥控对家用来说有其特殊的性质。所以该设计选用红外遥控来实现该设计,并且依靠单片机来实现对每个开关的编码过程并发射出去,再由接收电路的红外接收设备对接收到的编码信号进行解码并将要控制的电路指令传达给每个管脚,也就实现了对每个电路的通断控制。

本次设计的重点与难点:

1 要对单片机的内部结构,特别是各个I/O口,中断和定时器部分。以及其外围电路的具体连接方法。

2 要对单片机的语言指令特别的熟练运用,能够根据参考资料结合自己的设计进行对程序的设计,排错。

3 选择一种适合的无线遥控方法,以及编码的规则。同时掌握遥控器件的工作方式。

四、实验步骤

多路遥控开关的实现方法有很多。但大部分都是纯硬件的电路。这样的电路结构复杂,不容易调试。但总的来说有无线和红外线等几种方式。就器件的简单程度和特定的民用要求,采用了红外线的遥控方式。且利用的是两片AT89S51单片机来实现的。根据老师的建议及性能的比较,选择了用软硬件结合的方式来实现。现在对如下两种方案做如下的简要介绍。

方案1:

图1.1、1.2介绍的遥控开关工作可靠、调试简单,可实现九路控制。用以对各种家用电器和需要多路控制的装置进行遥控。整个电路由发射和接收两部分组成。 发射电路如图1.1所示,编码由一块脉冲式电话号码拨号集成电路CIC9110完成。当按下“1—9”任一键时,专用脉冲发生器输出对应的高电平脉冲,其速度可达20个/秒。这些脉冲直接送至门控振荡器,其振荡频率约为38KHZ,再经C门缓冲推动一个

1

三极管,由红外发光管向外发射已调制过的红外脉冲信号。

接收电路如图1.2所示(只画出一路控制电路),接通电源,将接收到的红外脉冲转变为微弱电信号,经运放放大后,输出原编码信号。当接收到4个脉冲时,再经过记数,译码,输出等,把从红外接收头读到的数据进行解调输出。利用译码器出的结果对外部电路进行控制。这样就实现了红外遥控的目的。

图1.1 红外发射电路

图1.2 红外接收电路

方案2:

图1.3、1.4介绍的是一种用AT89S51单片机控制的红外码分制遥控系统。一共有4路可控制的开关电路。结构简单,原理较容易理解,实现也比较容易。

脉冲传播的频率为40MHZ。脉冲数为2到16个。

图1.3 红外发射电路

2

图1.4 红外接收电路

六、实验记录与结论

以上两种方案都有各自的优缺点,其中前者是纯硬件电路,电路所涉及的器件相对较多,结构比较复杂,产品的寿命也因器件的数量而减少。同时电路中用到的CIC9110也不容易买到。然而方案2应用到软件的知识太多也因而变的比较麻烦和烦琐,增加了电路实现的难度。但根据设计的技术含量和调试的简便性,同时该方案的系统稳定性较好,故选择了后者。

3

第2部分 原理图的绘制及仿真软件训练

一、实验目的

1.掌握原理图的绘制方法和protel软件的使用,便于以后实验的设计与进行 2.掌握电路仿真的方法和proteus软件的使用,便于对以后的实验的仿真与修改 3.掌握运用SYSTEM VIEW的使用方法并用其对以后的软件系统做仿真

二、实验内容

1.练习使用protel软件,并且用其绘制系统原理图 2.练习使用proteus软件,并且用来仿真单片机的部分实例 3.练习使用SYSTEM VIEW系统平台,并进行系统的设计与仿真

三、实验原理与方法

本次实验主要用到了protel软件和proteus软件。 1.PROTEL软件介绍

PROTEL是PORTEL公司在80年代末推出的EDA软件,在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,它较早就在国内开始使用,在国内的普及率也最高,有些高校的电子专业还专门开设了课程来学习它,几乎所有的电子公司都要用到它,许多大公司在招聘电子设计人才时在其条件栏上常会写着要求会使用PROTEL。

2. Proteus软件介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。

3. SYSTEM VIEW软件介绍

System View 是一个用于现代工程与科学系统设计及仿真的动态系统分析平台。从滤波器设计、信号处理、完整通信系统的设计与仿真,直到一般的系统数学模型建立等各个领域,System View 在友好而且功能齐全的窗口环境下,为用户提供了一个精密的嵌入式分析工具。

四、实验步骤

使用protel绘制原理图的步骤

1.设计图纸大小。首先要构思好零件图,设计好图纸大小。图纸大小是根据电路图的规模和复杂程度而定的,设置合适的图纸大小是设计好原理图的第一步。

4

2.设置protel 99 se/Schematic设计环境。包括设置格点大小和类型,光标类型等等,大多数参数也可以使用系统默认值。

3.旋转零件。用户根据电路图的需要,将零件从零件库里取出放置到图纸上,并对放置零件的序号、零件封装进行定义和设定等工作。

4.原理图连线。利用protel 99 se/Schematic提供的各种工具,将图纸上的元件用具有电气意义的导线、符号连接起来,构成一个完整的原理图。

5.调整线路。将初步绘制好的电路图作进一步的调整和修改,使得原理图更加美观。 6.报表输出。通过protel 99 se/Schematic提供的各种报表工具生成各种报表,其中最重要的报表是网络表,通过网络表为后续的电路板设计作准备。

7.文件保存及打印输出。最后的步骤是文件保存及打印输出。 使用proteus仿真的步骤

1. 添加元件;添加本次仿真所需要的元件到元件列表。 2. 放置元件;将添加进来的元件,放置到原理图编辑区中。 3. 电路图布线;将各个元件连接起来。

4. 系统仿真;导入程序文件,进行仿真,观察结果。

五、实验记录与结论

使用protel绘制出来的ADC转换原理图截图,如图2.1。

5

图2.1 ADC转换原理图

使用proteus设计的电动机显示实例截图,如图2.2。

图2.2 电动机原理图

通过本次实验让我对Proteus,protel和System view有了一定的了解,能用Proteus绘制一些简单的仿真图如图2.1和2.2。同时对protel的制作步骤也有了个较深的了解,相信对后面的系统设计有很大的帮助。最后也对System view做了一定的了解,但是还很薄弱,以后还得加强。

6

第3部分 系统的硬件电路及软件设计

一、实验目的

1.掌握运用汇编语言编写程序和模块化的编程概念 2.对系统硬件电路进行详细设计,画出原理图 3.掌握各单元模块的使用方法及功能

二、实验内容

1.画出各主要控制部分的流程图 2.运用汇编语言编写程序

3.熟悉各硬件模块如AT89C51、SM0038的各自功能 4.设计发射电路和接收电路图并在proteus中画出原理图

三、实验原理与方法

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51与AT89S51管脚分布相同。如图3.1为AT89S51管脚分布图。

图3.1 AT89S51单片机管脚图

(1)主要特性

8031 CPU与MCS-51 兼容

4K字节可编程FLASH存储器(寿命:1000写/擦循环) 全静态工作:0HZ-24MHZ 三级程序存储器保密锁定 128*8位内部RAM

7

32条可编程I/O线 两个16位定时器/计数器 6个中断源 可编程串行通道

低功耗的闲置和掉电模式 片内振荡器和时钟电路 (2)管脚说明 VCC:供电电压。 GND: 接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。当P1口的管脚第一次写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被上拉为高电平。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收、输出4个TTL门电流。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口将输出电流。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

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

8

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。 (3)振荡器特性

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

(4)芯片擦除

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

(5) 红外线及器件的基本知识

我们知道,人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.62~0.76μm;红外线波长比红光还长,红外线遥控就是利用波长为0.76~1.5μm之间的红外线来传送控制信号的。

红外遥控系统一般分为发射和接收两个部分。发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管。由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量的使用的红外发光二极管发出的红外线波长为0.94μm左右,外形与普通φ5发光二极管相同,只是颜色不同。红外发光二极管一般有黑色、深蓝、透明三种颜色。

红外遥控常用的载波频率为38KHZ这是由发射端所使用的455 KHZ晶振来决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455KHZ÷12≈37.9KHZ≈38KHZ。也有一些遥控系统采用36 KHZ、40 KHZ、56 KHZ等,一般由发射端晶振的振荡频率来决定。红外遥控的特点是不影响周边环境的、不干扰其他电器设备。由于其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。由于各生产厂家生产了大量红外遥控专用集成电路,需要时按图索骥即可。因此,现在红外遥控在家用电器、室内近距离(小于10米)遥控中得到了广泛的应用。

9

在多路控制的红外遥控系统中,当发射端按下某一按键时,相应地接收端有不同的输出状态。接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。“电平”输出是指发射端按下键时,接收端对应输出端输出“有效电平”消失。此处的“有效脉冲”和“有效电平”,可能是高、也可能是低,取决于相应输出脚的静态状况,如静态时为低,则“高”为有效;如静态时为高,则“低”为有效。大多数情况下“高”为有效。“自锁”输出是指发射端每按一次某一个键,接收端对应输出端改变一次状态,即原来为高电平变为低电平,原来低电平变为高电平。此种输出适合用作电源开关、静音控制等。有时亦称这种输出形式为“反相”。“互锁”输出是指多个输出互相清除,在同一时间内只有一个输出有效。电视机的选台就属此种情况,其他如调光、调速、音响的输入择等。“数据”输出是指把一些发射键编上号码,利用接收端的几个输出形成一个二进制数,来代表不同的按键输入。一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便以后适时地来取数据。这种输出形式一般用于与单片机或微机接口。

(6)IrDA器件的构成及其使用

红外发送器件:红外发送器大多是使用Ga、As等材料制成的红外发射二极管,其能够通过的LED电流越大,发射角度越小,产生的发射强度就越大;发射强度越大,红外传输距离就越远,传输距离正比于发射强度的平方根。有少数厂商的红外发送器件内置有驱动电路。

红外检测器件:红外检测器件的主要部件是红外敏感接收管件,有独立接收管构成器件的,有内含放大器的,有集成放大器与解调器的。接收灵敏度是衡量红检测器件的主要性能指标,接收灵敏度越高,传输距离越远,误码率越低。内部集成有放大与解调功能的红外检测器件通常还含有带通滤波器,这类器件常用于固定载波频率(如40kHz)的应用。判定红外遥控器发射是否正常时,可将一个光敏管正极接万用表红笔,负极接黑笔,万用表置R×1K挡位,把遥控器对准光敏管发射,万用表摆动,则有红外线发射;无摆动则无红外线发射。检测红外接收头好坏的另方法是,在保证发射头没问题的情况下,用示波器观察接收头处的波形。当发射头发射红外信号时,如有波形产生,则说明接收头是好的。否则,就需要对接收头进行更换检测。

红外收发器件:红外收发器件集发射与接收于一体。通常,器件的发射部分含有驱动器,接收部分含有放大器,并且内部集成有关断控制逻辑。关断控制逻辑在发送时关断接收,以避免引入干扰;不使用红外传输时,该控制逻辑通过SD引脚接受指令,关断器件电源供应,以降耗节能。使用器件时需要在LED引脚接入适当的限流电阻。大多数红外收发器件带有屏蔽层。该层不要直接接地,可以通过串联一磁珠再接地,以免引入干扰影响接收灵敏度。

10

红外遥控系统的一般原理框图

红外遥控系统的一般原理框图如图3.2,图3.3所示:(分别为接收和发射电路)

图3.2 红外发射电路

图3.2是发射器的一般原理框图。它由指令键、指令信号产生电路、调制电路、驱动电路及红外线发射器件组成。当指令键被按下时,指令信号产生电路便产生所需要的指令控制信号。这里的控制指令信号是以某些不同的特征来区分的。常用的区分指令信号的特征和码组特征,即用不同的频率或不同的编码电信号代表不同的指令。这些不同的指令信号由调制电路进行调制后,最后由驱动电路驱动红外线发射器件,发出红外线遥控指令信号。

图3.3红外接收电路

图3.3是接收器的一般原理框图。它由红外接收器件、前置放大电路、解调电路、指令信号检出电路、记忆驱动电路、执行电路组成。

本实验由发射部分和棘手部分组成;发射部分由按键,红外发射电路,晶振电路,AT89C51单片机,上拉电阻网络。接收部分由红外接收电路,晶振电路,AT89C51单片机,验证电路;如图3.4。

11

(1)发射部分电路原理框图:

图3.4 发射电路框图

(2)接收部分电路原理框图:

图3.5接收部分原理框图

如图3.5为该系统遥控接收器电原理图,其具体接法是P0.0——P0.7以及P2.0——P2.6口作为15个电器的电源控制输出,接口可以接继电器来作为控制其他电路的中介电路。在本电路中直接接发光二极管来验证电路。点10脚P3.0口为50HZ交流市电相位基准输入,第12脚为中断输入口;P3.1口用于接收红外遥控码输入信号。

12

具体电路设计: 1、红外发射部

图3.6 红外发射模块电路图

如图3.6为红外发射模块,该部分的功能是向外部发射红外信号,信号由单片机控制发射。信号的频率是40KHZ。红外发射头,一个PNP9013的三极管和两个限流电阻组成。根据红外发射头工作时的电流需要,采用280倍的放大器9013。同时红外发射头的串接电阻在100欧姆数量级,这里采用50欧姆。9013的基极接千欧级电阻,这里选用5K欧姆的电阻。

2、键盘输入部分

图3.7按键模块部分电路图

如图3.7为按键模块,该部分的功能是产生触发脉冲,并传递给单片机。由四个单脉冲开关组成。

13

3、红外接收部分

图3.8红外接收模块电路图

如图3.8为红外接收模块,该部分的功能是接收外部的红外信号并传递给单片机部分进行分析处理并做出动作。从左至右分别为一,二,三脚。它的具体接法是一脚接地,二脚接五伏电源,三脚是信号输出端信号,接单片机的P3.5口。

4、验证电路部分

图3.9 验证模块电路图

如图3.9为验证模块,该部分的功能是验证单片机的管脚输出动作,当接收到信号时发光二极管就会发光。它由一个9012三极管,一个发光二极管和两个电阻组成。由于P0口需接上拉10K欧姆电阻,而P2口无需接上拉电阻,故在9012的基极接的电阻为10K或20K欧姆的电阻。该电阻在10K欧姆数量级的范围。这里就选用10K和20K。9012的放大倍数为200倍左右。这样才能满足给发光二极管提供合适的电压来完成发光验证的过程。再根据发光二极管为电流驱动器件,所以经实验测得与其串联的电阻为510欧姆时正常发光。所以这里选用510欧姆的电阻。

系统功能的实现方法

(1)遥控码的编码格式:该遥控器采用脉冲个数编码,不同的脉冲个数代表不同的编码,最小为2个脉冲,最大为16个脉冲。为了使接收可靠,第一位码的码宽为3毫秒,其余为1毫秒,遥控码数据帧间隔大于10毫秒,当某个操作按键按下时单片机

14

先读出按键值,然后根据键值设定遥控码的脉冲个数,再调制成40KHZ方波由红外线发光管发射出去。 图3.10为按键1对应的波形编码,图3.11为按键2对应的波形编码。

图3.10 按键1对应编码

图3.11按键2对应编码

(2)数据帧的接收处理

当红外线接收器输出脉冲数据帧时,第一位码的低电平将启动中断程序,实时接收数据帧。在数据帧接收时,将对第一位(起始位)码的码宽进行验证。若第一位低电平码的脉宽大于3毫秒时,接收结束,然后根据累加器A中的脉冲个数,执行相应输出口的操作。图3.12为红外接收器输出的按键4对应的一帧遥控码波形图。

图3.12 红外线接收器输出的一帧遥控码波形图

15

发射电路各部分流程图

(1) 发射部分主程序流程图:

图3.13 发射模块流程图

(2) 键盘扫描子程序: 程序名:KEYWORK

图3.14 键扫描程序流程图

16

该部分直接决定按键的位置判断,正确对按键开关的位置做出正确辨认,才能发出正确的编码信号。从而实现对电路的正确控制。

接收电路各部分流程图 (1)遥控接收程序:

图3.15 遥控接收流程图

如图3.15为遥控接收电路流程图。该部分也是一直处于工作状态,系统要不停的对是否存在中断信息进行判断,当收到中断信息时,则调用中断子程序,执行中断信息相对的指令。完成其功能作用。

17

(2)中断子程序流程图 程序名:INTEX0

图3.16 中断程序流程图

如图3.16为中断程序流程图。该部分功能是识别指令要控制的开关电路,并将信号输入到该电路相对应的管脚,完成起控制电路通断的作用。也是接收电路的核心部分。

18

四、实验记录及结果

PROTEL原理图:

图3.17 接收电路

图3.18 接收电路

程序设计清单: (1)发射程序

KEYX0 EQU P1.0 ; P1.0~P1.1位键盘行扫描 KEYX1 EQU P1.1 ;本系统采用15路开关阵列 KEYY EQU P0 ;P0口键盘列扫描 ORG 0000H ;程序执行开始地址 AJMP START ;跳至START执行 ORG 0003H ;外中断0中断入口地址 RETI ;中断返回(不开中断) ORG 000BH ;定时器T0中断入口地址 RETI ;中断返回(不开中断) ORG 0013H ;外中断1中断入口地址 RETI ;中断返回(不开中断) ORG 001BH ;定时器T1中断入口地址

19

LJMP INTT1 ;跳至INTT1中断服务程序 ORG 0023H ;串行口中断入口地址 RETI ;中断返回(不开中断) ORG 002BH ;定时器T2中断入口地址 RETI ;中断返回(不开中断) CLEARMEMIO: CLR A ;A清0 DEC A ;A为#0FFH CLEARMEM: START: MAIN: INTT1: KEYWORK: KEYOUT: MOV P0,A ; MOV P1,A ; MOV P2,A ; MOV P3,A ;

CLR P3.5 ;关遥控输出 MOV SP,#70H ;设堆栈基址为70H MOV IE,#00H ;关所有中断 MOV IP,#01H ;设优先级 MOV TMOD,#22H ;8位自动重装初值模式 MOV TH1,#0F3H ;定时为13微秒初值 MOV TL1,#0F3H ;

SETB EA ;开总中断允许 RET ;返回

LCALL CLEARMEMIO ;调用初始化子程序 LCALL KEYWORK ;主体程序。调用查键子程序 LJMP MAIN ;转MAIN循环 NOP ;PC值出错处理 NOP

LJMP START ;重新初始化 CPL P3.5 ;40KHZ红外遥控信号产生 RETI ;中断返回

MOV KEYY,#0FFH ;置列线输入状态 CLR KEYX0 ;行线(P1口)全置0 CLR KEYX1

MOV A,KEYY ;读入P0口值 MOV B,A ;KEYY口值暂存B中 CJNE A,#0FFH,KEYHIT ;不等于#0FFH,转KEYHIT RET ;没有键按下返回

20

KEYHIT: LCALL DL10MS ;延时去抖动 MOV A,KEYY ;再读入P0口值至A

CJNE A,B,KEYOUT ;A不等于B(是干扰) SETB

KEYX1 有键按下,找键号开始,查0行

MOV A,KEYY ;读入P0口值 CJNE A,#0FFH,KEYVAL0 ;P0口不等于#0FFH,按下键在0行 SETB KEYX0 ;不在0行,开始查1行 CLR KEYX1

MOV A,KEYY ;读入P0值 CJNE A,#0FFH,KEYVAL1 ;P0口不等于#0FFH,按下键在1行 LJMP KEYOUT ;不在第1行,子程序返回 KEYVAL0: MOV R2,#00H ;按下键在第0行,R2赋行号初值0 LJMP KEYVAL2 ;跳到KEYVAL2 KEYVAL1: MOV R2,#08H ;按下键在第1行,R2赋行号初值8 LJMP KEYVAL2 ;跳到KEYVAL2 KEYVAL2 MOV DPTR,#KEYVALTAB ;键值翻译成连续数字 MOV B,A ;P0口值暂存B内 CLR A ;清A MOV R0,A ;清R0

KEYVAL3 MOV A,R0 ;查列号开始,R0数据放入A SUBB A,#08H ;A中数减8

JNC KEYOUT ;借位C为0,查表出错,返回 MOV A,R0 ;查表次数小于8,继续查 MOVC A,@A+DPTR ;查列号表 INC R0 ;RO加1

CJNE A,B,KEYVAL3 ;查得值和P0口值不等,转KEYVAL3再查 DEC R0 ;查得和P0口值相等,R0减1 MOV A,R0 ;放入A(R0中数值即为列号值0 ADD A,R2 ;与行号初值相加成为键号值(0-15) MOV B,A ;键号乘3处理用于JMP散转指令 RL A ;键号乘3处理用于JMP散转指令 ADD A,B ;键号乘3处理用于JMP散转指令 MOV DPTR,#KEYFUNTAB ;取散转功能程序(表)首地址 JMP @A+DPTR ;散转至对应功能程序标号 KEYFUNTAB: LJMP KEYFUN00 ;跳到键号0对应功能程序标号

21

LJMP KEYFUN01 ;跳到键号1对应功能程序标号 LJMP KEYFUN02 ;跳到键号2对应功能程序标号 LJMP KEYFUN03 ;跳到键号3对应功能程序标号 LJMP KEYFUN04 ;跳到键号4对应功能程序标号 LJMP KEYFUN05 ;跳到键号5对应功能程序标号 LJMP KEYFUN06 ;跳到键号6对应功能程序标号 LJMP KEYFUN07 ;跳到键号7对应功能程序标号 KEYVALTAB: ;对应列号: KEYFUN00: KEYFUN01: KEYFUN02: KEYFUN03: KEYFUN04: KEYFUN05: LJMP KEYFUN08 ;跳到键号8对应功能程序标号 LJMP KEYFUN09 ;跳到键号9对应功能程序标号 LJMP KEYFUN10 ;跳到键号10对应功能程序标号 LJMP KEYFUN11 ;跳到键号11对应功能程序标号 LJMP KEYFUN12 ;跳到键号12对应功能程序标号 LJMP KEYFUN13 ;跳到键号13对应功能程序标号 LJMP KEYFUN14 ;跳到键号14对应功能程序标号 RET ;列号对应数据表 DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH 0 1 2 3 4 5 6 7 MOV A,#02H ;发2个脉冲 LJMP REMOTE ;转发送程序 RET

MOV A,#03H ;发3个脉冲 LJMP REMOTE ;转发送程序 RET

MOV A,#04H ;发4个脉冲 LJMP REMOTE ;转发送程序 RET

MOV A,#05H ;发5个脉冲 LJMP REMOTE ;转发送程序 RET

MOV A,#06H ;发6个脉冲 LJMP REMOTE ;转发送程序 RET

MOV A,#07H ;发7个脉冲 LJMP REMOTE ;转发送程序 RET

22

KEYFUN06: MOV A,#08H ;发8个脉冲 LJMP REMOTE ;转发送程序 RET

KEYFUN07: MOV A,#09H ;发9个脉冲 LJMP REMOTE ;转发送程序 RET

KEYFUN08: MOV A,#0AH ;发10个脉冲 KEYFUN09: KEYFUN10: KEYFUN11: KEYFUN12: KEYFUN13: KEYFUN14: REMOTE: OUT: OUT1: LJMP REMOTE RET

MOV A,#0BH LJMP REMOTE RET

MOV A,#0CH LJMP REMOTE RET

MOV A,#0DH LJMP REMOTE RET

MOV A,#0EH LJMP REMOTE RET

MOV A,#0FH LJMP REMOTE RET

MOV A,#10H LJMP REMOTE RET

MOV R1,A LJMP OUT3 MOV R0,#55H SETB ET1 SETB TR1 NOP NOP NOP

;转发送程序 ;发11个脉冲 ;转发送程序 ;发12个脉冲 ;转发送程序 ;发13个脉冲 ;转发送程序 ;发14个脉冲 ;转发送程序 ;发15个脉冲 ;转发送程序 ;发16个脉冲 ;转发送程序 ;装入发射脉冲个数 ; 转第一个码发射处理 ;1ms宽低电平发射控制数据 ;开T1中断 ;开启定时器T1 ;延时 23

NOP NOP

DJNZ R0,OUT1 ;时间不到转OUT1再循环 MOV R0,#32H ;1MS高电平间隙控制数据 OUT2: CLR TR1 ;关定时器T1 CLR ET1 ;关T1中断 CLR P3.5 ;关脉冲输出 OUT3: DELAY: DELAY1: DL10MS: DL10MS1: DL500MS: DL500MS1: NOP ;空操作延时 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP

DJNZ R0,OUT2 ;时间不到转OUT2在循环 DJNZ R1,OUT ;脉冲未发送完,转OUT再循环发射 LCALL DL500MS ; RET

MOV R0,#0FFH ;装发射3MS宽控制数据 LJMP OUT1 ;转OUT1 MOV R2,#0FFH DJNZ R2,DELAY1 RET

MOV R3,#14H LCALL DELAY DJNZ R3,DL10MS1 RET MOV R4,#32H LCALL DL10MS DJNZ R4,DL500MS

END ;程序结束

24

(2)接收程序

ORG 0000H ;程序开始地址 LJMP START ;跳至START执行 ORG 0003H ;外中断0中断入口 LJMP INTEX0 ;跳至INTEX0执行中断服务程序 ORG 000BH ;定时器T0中断入口地址 RETI ;中断返回(不开中断) ORG 0013H ;外中断1中断入口地址 RETI ;中断返回(不开中断) ORG 001BH ;定时器T1中断入口地址 RETI ;中断返回(不开中断) ORG 0023H ;串行口中断入口地址 RETI ;中断返回(不开中断) ORG 002BH ;定时器T2中断入口地址

RETI ;中断返回(不开中断) CLEARMEMIO: CLR A ; DEC A ; A为#0FFH MOV P0,A ;P1--P3口置1 MOV P1,A ; MOV P2,A ; MOV P3,A ; CLEARMEM: MOV IE,#00H ;关所有中断 SETB EX0 ;开外中断 SETB EA ;总中断允许 RET ;子程序返回 START: LCALL CLEARMEMIO ;上电初始化 MAIN: JB P3.0,MAIN ; 50HZ交流电未过零转MAIN CLR P2.7 ; 发调光脉冲 LCALL DELAY ; 持续512微秒 SETB P2.7 ; 关调光脉冲 LJMP MAIN ; 转MAIN循环 NOP ; PC值出错处理 NOP ;

LJMP START ; 出错时重新初始 INTEX0: CLR EX0 ; 关外中断

25

JNB P3.1,READ1 ; P3.1口为低电平转READ1 READOUTT0: SETB EX0 ; P3.1口为高电平开中断(系干扰) RETI ; 退出中断 READ1: CLR A ; 清A MOV DPH,A ; 清DPTR MOV DPL,A ;

HARD1: JB P3.1,HARD11 ;P3.1变为高电平转HARD11 HARD11: READ11: READ12: READ13: INC DPTR ; 用DPTR对低电平记数 NOP ; 1微秒延时 NOP ;

AJMP HARD1 ; 转HARD1循环(循环周期为8微秒) MOV A,DPH ; DPTR高8位放入A JZ READOUTT0 ; 为0(脉宽小于8微秒*255=2毫秒)退出 CLR A ; 不为0,说明是第一个宽脉冲(3毫秒) INC A ; 脉冲个数计1 JNB P3.1,READ12 ; 低电平是等待 MOV R1,#06H ; 高电平宽度判断定时值 JNB P3.1,READ11 ; 变低电平是转READ11脉冲计数 LCALL DELAY ; 延时(512微秒)

DJNZ R1,READ13 ; 6次延时不到转READ13再延时 DEC A ; 超过3毫秒判为结束,减1 DEC A ; 减1

JZ FUN0 ; 为0执行FUN0(2个脉冲) DEC A ; 减1

JZ FUN1 ; 为0执行FUN1(3个脉冲) DEC A ; JZ FUN2 ; 为0执行FUN2(4个脉冲) DEC A ; JZ FUN3 ; 为0执行FUN3(5个脉冲) DEC A ; JZ FUN4 ; 为0执行FUN4(6个脉冲) DEC A ; JZ FUN5 ; 为0执行FUN5(7个脉冲) DEC A ; JZ FUN6 ; 为0执行FUN6(8个脉冲)

26

DEC A ; JZ FUN7 ; 为0执行FUN7(9个脉冲) DEC A ;

JZ FUN8 ; 为0执行FUN8(10个脉冲) DEC A ;

JZ FUN9 ; 为0执行FUN9(11个脉冲) DEC A ;

JZ FUN10 ; 为0执行FUN10(12个脉冲) DEC A ; JZ FUN11 ; 为0执行FUN11(13个脉冲) DEC A ; JZ FUN12 ; 为0执行FUN12(14个脉冲) DEC A ;

JZ FUN13 ; 为0执行FUN13(15个脉冲) DEC A ;

JZ FUN14 ; 为0执行FUN14(16个脉冲) NOP ; NOP ; LJMP READOUTT0 ; 出错退出 FUN0: CPL P0.0 ; P0口各端口开关输出控制 LJMP READOUTT0 ; 转中断退出 FUN1: CPL P0.1 ; LJMP READOUTT0 ; FUN2: CPL P0.2 ; LJMP READOUTT0 ; FUN3: CPL P0.3 ; LJMP READOUTT0 ; FUN4: CPL P0.4 ; LJMP READOUTT0 ; FUN5: CPL P0.5 ; LJMP READOUTT0 ; FUN6: CPL P0.6 ; LJMP READOUTT0 ; FUN7: CPL P0.7 ; LJMP READOUTT0 ;

27

FUN8: CPL P2.6 ; P2口各端口开关输出控制 LJMP READOUTT0 ; 转出中断退出 FUN9: CPL P2.5 ; LJMP READOUTT0 ; FUN10: CPL P2.4 ; LJMP READOUTT0 ; FUN11: CPL P2.3 ; LJMP READOUTT0 ; FUN12: CPL P2.2 ; LJMP READOUTT0 ; FUN13: CPL P2.1 ; LJMP READOUTT0 ; FUN14: CPL P2.0 ; P2.0开关控制 LJMP READOUTT0 ; 转出中断退出 OUTT0:

LJMP READOUTT0 ; 中断退出 DELAY: MOV R0,#0FFH ; DELAY1: DJNZ R0,DELAY1 ; RET

DL10MS: MOV R1,#14H ; DL10MS1: LCALL DELAY ; DJNZ R1,DL10MS1 ; RET

通过本次实验让我对汇编有了进一步的了解,并用其编写了红外发射和接收程序。也对模块化设计有了一定的印象,能用它做一些简单的设计。还让我学会了PWM调制的原理,熟悉了AT89C51单片机,这对以后的设计都打下了坚实的基础。

28

第4部分 电路仿真及修改

一、实验目的

1.掌握巩固PROTEUS,KEIL的使用方法及原理 2.验证程序和电路的正确性是否能达到预期的结果

3.学会在PROTEUS中调试原理图和在KEIL中对程序排错;用其仿真并对电路及程序进行验证和修改

二、实验内容

利用Proteus软件进行系统仿真,并且使用Proteus中自带的调试工具,修改设计过程中的错误。

利用KEIL软件对编写的程序进行排错,并在Proteus中运行进行仿真。

三、实验原理与方法

用Proteus软件画出红外发射仿真图,如图4.1。

图4.1 红外发射仿真图

用Proteus软件画出红外接收仿真图,如下图:

图4.2 红外接收仿真图

29

四、实验记录及结果

使用Proteus软件中自带的数字示波器,观察发射IO口输出的方波波形。如下图:

图4.3 信号发射仿真图

使用Proteus软件中自带的数字示波器,观察验证IO口输出的方波波形。如下图:

图4.4 接收信号仿真图

通过本次实验让我对Keil,Proteus都有了进一步的了解和认识。并在Proteus中画出了红外发射、接受的电路原理图,且用其进行的仿真,原理图基本正确,但程序有一点瑕疵,不过进过自己的仔细检查,最后发现只是书写错误,改正后就没问题了。最后有了图4.3和图4.4的仿真图。

30

第5部分 PCB图的绘制及制版

一、实验目的

1.学习Protel的使用方法和原理并初步掌握PCB图的绘制 2.了解PCB制作过程中各种工艺要求,掌握PCB制版的全过程 3.按照发射和接收原理图画出PCB图,便于实际的产品制作

二、实验内容

查阅资料学习protel的PCB制板方法,使用Protel软件绘制出接收、发射系统的PCB电路板,并指出制版过程中的工艺要求体会制版过程。保存PCB制版图。对PROTEL的制版步骤有一个比较全面的了解,并对过程步骤做阐叙,对实际的制版有一个比较深刻的了解。

三、实验原理、方法与步骤

利用Protel绘制PCB版的基本流程,制作工艺包含在步骤内。

1.绘制好原理图:电路板的设计的先期工作,主要是完成原理图的绘制,包括生成网络表。原来用于仿真的原理图需将信号源及测量仪表的接口连上适当的连接器且要保证每一个元器件都带有封装信息。

2.规划电路板:在绘画电路板之前我们要对电路板有一个初步的规划,如电路板采用多大的物理尺寸等。这是一项极其重要的工作,是确定电路板的设计的框架。

3.设置参数:设置参数主要是设置元件的布置参数、层参数、布线参数等。一般,有些参数采用其默认值即可。

4.装入网络表及元件封装:网络表是电路板自动布线的灵魂,也是原理图设计系统俞印制电路板设计系统的接口,只有将网络表装入之后,才可能对电路板的自动布线。元件的封装就是元件的外形对于每个装入的元件必须有相应的外形封装,才能保证电路板设计的顺利进行。

5. PCB设计时,要合理布局器件:滤波电感、电容等要就近器件放置,以确保滤波效果;红外器件与系统的地线要分开布置,仅在一点相连;晶体等振荡器件要靠近所供器件,以减少辐射干扰。

6. 自动布线:如果相关的参数设置得当,元件的布局合理,自动布线的概率很高。 7.手工手工调整:自动布线结束后往往有令人不满意之处,需手工调整。

8.文件保存及输出:完成电路板的布线后,保存往常的电路线路图文件。 需要注意的几点的地方:在印制板布线时,应先确定元器件在板上的位置,然后布地线,电源线。在安排高速信号线,最好考虑低速信号线。元气件的位置按电源电压,数字模拟,速度快慢,电流大小等分组。安全的条件下,电源线应尽量靠近地。减小差摸辐射的环面积,也有助于减小电路的交扰。当需要在电路板上布置快速,中速,低速

31

逻辑电路时,高速的应放在靠近边缘连接器范围内,而低速逻辑和存储器,应放在远离连接器范围内。

四、实验记录及结果

最后绘制出来的发射端PCB电路板如.图5.1。

图5.1 发射电路PCB

最后绘制出来的接收端PCB电路板如图5.2。

图5.2 接收电路PCB

通过本次实验让我对PCB有了个大概的了解,因为以前我们没学过Protel的PCB制图,刚开始制作还是很困难,不过借书自己自学,最后终于基本完成了任务如图5.1和5.2。相信对我以后找工作都有很大的帮助。

32

第6部分 系统的安装调试与故障排除

一、实验目的

1.掌握元件安装调试的方法

2.掌握调试过程中故障排除及系统功能和参数测试的方法 3.掌握调试和故障排除的一些基本方法和原则

二、实验内容

进行PCB元件安装,调试,并且排除安装测试过程所出现的故障。了解PCB板原件的焊接过程如焊前准备、焊接顺序及原件的焊接要求。对系统硬件的调试过程进行阐叙并测试出系统的功能和各种系统参数。对系统的安装调试过程所遇问题做记录,并对综合实验做最后的总结。

三、实验原理与方法

(一)PCB板元件的焊接过程: 1 、焊前准备

首先要熟悉所焊印制电路板的装配图,并按图纸配料,检查元器件型号、规格及数量是否符合图纸要求,并做好装配前元器件引线成型等准备工作。

2 、焊接顺序

元器件装焊顺序依次为:电阻器、电容器、发光二极管、晶振、集成电路、大功率管,其它元器件为先小后大。

3 、对元器件焊接要求: a.电阻器焊接

按图将电阻器准确装人规定位置。要求标记向上,字向一致。装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。焊完后将露在印制电路板表面多余引脚齐根剪去。

b.电容器焊接

将电容器按图装人规定位置,并注意有极性电容器其 “ + ” 与 “ - ” 极不能接错,电容器上的标记方向要易看可见。先装玻璃釉电容器、有机介质电容器、瓷介电容器,最后装电解电容器。

c.发光二极管的焊接

二极管焊接要注意以下几点:第一,注意阳极阴极的极性,不能装错;第二,型号标记要易看可见;第三,焊接立式二极管时,对最短引线焊接时间不能超过 2S 。

d.集成电路焊接

首先按图纸要求,检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。对于电容器、二极管、三极管露在印制电路板面上多余引脚均需齐根剪去。

33

(二)系统硬件调试过程

在硬件调试的过程中出现了好多问题。在焊完电路的时候要输入控制程序,接收板的程序很轻松的就下载到了单片机中。可是发射板的程序就是下载不下来,系统提示不能检测到硬件。因此就对整个电路进行了一遍大检查,看看什么地方是不是漏焊了结果什么也没查到。过了一会发现单片机还发热了。立即关掉电源,看是不是什么地方短路了。结果还是一样,接着又用万用表测量各个点的电压,还是没有发现什么异常。就不得不一点一点的查看电路图,再一个焊点一个焊点的比较,最后终于找到一个错误, 发现晶振没经过电容而直接接地了。马上改过来。问题果然好出现在这里,改正够就能将程序顺利的下载到单片机中了。

然后把两个电路一起接到电源上观察。发现根本就不能实现它的功能。哪个按键也不能控制一个发光二极管正常的亮灭。这也完全在意料之中。因为哪个设计也不太可能一下子就好用,都有个调试的过程。还是一样的查,先查发射电路的每一个点,每次查都有小收获,却是大发现。这次发现接收板的31管脚(EA)没有接电源并且100微法的电解电容正负极接反了,再改。再调试,结果还是一样。偶尔按一下键盘还能看见有个发光二极管会亮,可是有时按了半天都没反映,还有时按一个能看到三,四个都会亮。反正就是不能实现其功能。

这次我又先对接收板进行检查。也是一个焊点一个焊点的检查。可是还是一无所获。在老师的帮助下查看红外接收头处的波形。发现每次按下键盘之后确实有波形产生。但是只有与P1.0口相连的键盘有波形。与P1.1相连的口没有波形。发现原来该组键盘与电源相连的焊点已经脱落。立即将它焊好。这下波形出来了。但是无论怎么按键盘还是一个结果,没有进展。问题应该出现在接收的板子上了。可是接收的板子结构很简单,大部分都是重复的电路,如果有点问题也不可能一个都不起作用,然而继续检查仍然是不容置疑的。又用万用表又对没个发光二极管进行电压的测量。发现它们的电压正常,如果给它的基极,即单片机输出的点上加上理论的电压,二极管正常发光。

又重新开始对电路进行检查。再次检查接收头和晶振。无意中发现,接收板上的晶振和发射板上的晶振不一样。原来发射板上的是12MHZ的晶振,而接收板上的晶振是6MHZ的。原来是晶振拿错了。赶紧焊好它。只是发现二极管亮的次数比以前有所增加。现象依然存在问题。当再一次接到电路上,进行调试时发现竟然按键对二极管的控制作用完全失去了。一个都不听指挥了。因为发射的板子没有指示电路,所以没有什么现象。对发射板检查时发现单片机开始发热了并且已经很烫。立即关掉电源,当卸下电源线时才发现是发射板的正负极接反了。这么一个小小的电路不知检测了多少次,难道真的存在那么多的失误?又是一次的器件及焊点的大检查。依然没发现什么漏洞。可能是刚才电源接错了导致程序出了问题。抱着怀疑的态度我又把程序重新下载一下,可这回的问题竟然是发现不了硬件。可是这回它并没短路和接地。只能重新对与下载口有关的P1.5,P1.6,P1.7,RST,XTAL1,XTAL2,GND及VCC电路进行了检查,结果还是没有发现电路

34

的问题。只能怀疑是器件被我给烧坏了。首先是电容,万用表测的结果是正常。最后将晶振换了一个新的,结果依然不能发现硬件。为了重新下载一次程序,将发射板上的单片机换到了接收板上。竟然还是不能发现硬件。当换上接收板的单片机,却能发现硬件。原来是单片机被烧坏了。最后换了新的单片机,结果是现象有了一点,但很不听话,且误码率较高。开始怀疑是软件的问题。

软硬件连调也是一个非常重要的过程。因为,在开始的时候问题是多样性的。不可能一次成功。然而,面对这个由诸多部分组成的系统,又有软件又有硬件的东西,怎么才能确定问题的根源呢?这是个很关键的问题。在第一次连接完硬件并将程序下载到单片机里时,系统的现象是根本不听指挥。怎么按开关都不好用,它们依然亮着的老是亮着,不亮的还是不亮。首先要判断是否有编码从发射头发射出来,这样就能知道发射板的好坏了。将示波器的正极接到红外接收系统的接收头处,负极接地。再按下按键开关。开始的时候是示波器没有信号。因为红外发射头和接收头已经经过测试为好的器件,这样问题只能出现在发射的程序上了。首先检测的是硬件,因为对硬件的检查相对来说还是比较容易的。可以一处一处的查看就行了,在容易出错的地方在用表测一下数值就好。发现并改过了一些小问题之后,系统还是意料之中的不好用。

四、实验记录及结果

经过辛苦的调试后最终得到了预期的结果,红外发射电路和接收电路都能正常工作,在发射端用按键控制能在发射器上用示波器看到方波波形,在接收端加载一个信号的情况下用示波器能在验证端能看到变化的波形。

系统设计总结:

经过两周的辛苦设计终于让本次设计通过了题目分析,方案论证,系统硬件设计,系统软件设计,调试等一系列过程。涉及到了单片机技术,红外遥控技术,滤波整流等技术。综合了大学四年间所学的所有知识,另外包括一些使用应用系统的扩展。在整个综合实验过程中,不仅回顾了有所淡忘的知识,同时也学习了新的知识。不仅锻炼了理论分析的能力和实际动手的能力,而且提高了自己研发能力,对即将面对的工作也充满了信心。

设计的系统实现了题目所要求的对多路开关进行遥控。在电路中的发送,接收,显示等功能综合证明了该系统的成功和实用性。

35

的问题。只能怀疑是器件被我给烧坏了。首先是电容,万用表测的结果是正常。最后将晶振换了一个新的,结果依然不能发现硬件。为了重新下载一次程序,将发射板上的单片机换到了接收板上。竟然还是不能发现硬件。当换上接收板的单片机,却能发现硬件。原来是单片机被烧坏了。最后换了新的单片机,结果是现象有了一点,但很不听话,且误码率较高。开始怀疑是软件的问题。

软硬件连调也是一个非常重要的过程。因为,在开始的时候问题是多样性的。不可能一次成功。然而,面对这个由诸多部分组成的系统,又有软件又有硬件的东西,怎么才能确定问题的根源呢?这是个很关键的问题。在第一次连接完硬件并将程序下载到单片机里时,系统的现象是根本不听指挥。怎么按开关都不好用,它们依然亮着的老是亮着,不亮的还是不亮。首先要判断是否有编码从发射头发射出来,这样就能知道发射板的好坏了。将示波器的正极接到红外接收系统的接收头处,负极接地。再按下按键开关。开始的时候是示波器没有信号。因为红外发射头和接收头已经经过测试为好的器件,这样问题只能出现在发射的程序上了。首先检测的是硬件,因为对硬件的检查相对来说还是比较容易的。可以一处一处的查看就行了,在容易出错的地方在用表测一下数值就好。发现并改过了一些小问题之后,系统还是意料之中的不好用。

四、实验记录及结果

经过辛苦的调试后最终得到了预期的结果,红外发射电路和接收电路都能正常工作,在发射端用按键控制能在发射器上用示波器看到方波波形,在接收端加载一个信号的情况下用示波器能在验证端能看到变化的波形。

系统设计总结:

经过两周的辛苦设计终于让本次设计通过了题目分析,方案论证,系统硬件设计,系统软件设计,调试等一系列过程。涉及到了单片机技术,红外遥控技术,滤波整流等技术。综合了大学四年间所学的所有知识,另外包括一些使用应用系统的扩展。在整个综合实验过程中,不仅回顾了有所淡忘的知识,同时也学习了新的知识。不仅锻炼了理论分析的能力和实际动手的能力,而且提高了自己研发能力,对即将面对的工作也充满了信心。

设计的系统实现了题目所要求的对多路开关进行遥控。在电路中的发送,接收,显示等功能综合证明了该系统的成功和实用性。

35

本文来源:https://www.bwwdw.com/article/vft3.html

Top