通用红外遥控开关的设计与应用详解

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细解析了红外遥控技术的基础知识,并深入探讨了通用红外遥控开关的工作原理、特点以及安装和使用方法。通过红外信号,用户可以远程控制电器,实现无接触操作,提升家居安全性和便利性。文中还介绍了红外遥控开关的多功能性,安全便捷的特点,并提供了安装步骤和操作指南,确保用户能够正确使用。注意点包括红外信号传输的无障碍、电池更换和频道/代码设置等。 红外遥控开关

1. 红外遥控技术基础

1.1 红外遥控技术概述

红外遥控是一种无线远程控制技术,通过发射红外光束携带控制信号,从而实现对电视、空调、音响等家用电器的远程操控。红外遥控技术被广泛应用于消费电子领域,因其成本低廉、简单易用而受到青睐。

1.2 红外遥控的工作原理

红外遥控系统主要由发射器和接收器两部分组成。发射器负责生成编码后的红外信号,通过红外LED发射出去;接收器则通过红外接收元件检测信号,并进行解码还原成控制命令,以实现对设备的控制。

1.3 红外遥控的技术优势与局限

红外遥控的主要优点包括无方向性、操作简便和成本低廉。然而,它的局限性在于传输距离有限,且必须在直线视线范围内,不能穿过障碍物,且易受到日光等强光的干扰。

这一章概括性地介绍了红外遥控技术的核心概念和运作方式,为接下来章节的深入分析和技术细节探讨奠定了基础。

2. 通用红外遥控开关组成与工作原理

2.1 红外遥控开关的核心组件

2.1.1 发射器组件解析

红外遥控开关的核心组件之一是发射器,它主要负责红外信号的编码和发射。发射器通常由红外发光二极管(LED)、驱动电路以及编码芯片构成。红外LED负责将电信号转换为红外光信号,而驱动电路则保证LED能够在合适的电流和电压下工作。

在发射器的编码芯片中,会预先存储一系列的编码协议,这些协议定义了信号编码的方式。当需要发送一个控制信号时,控制器会指令编码芯片按照特定的协议生成相应的编码序列,并通过驱动电路使红外LED以特定的频率闪烁,从而发射出去。

下面是一个简化版的发射器组件的代码示例,它描述了如何控制红外LED发送信号:

// 伪代码示例,展示红外发射器的工作原理

// 初始化红外LED的GPIO端口
void infraredLedInit() {
    pinMode(IR_LED_PIN, OUTPUT);
}

// 发送红外信号
void sendInfraredSignal(int signal) {
    // 将信号转换为二进制编码序列
    byte codeSequence[] = convertSignalToBinary(signal);
    // 通过循环使红外LED以特定的频率闪烁
    for (int i = 0; i < sizeof(codeSequence); i++) {
        digitalWrite(IR_LED_PIN, HIGH);
        delayMicroseconds(codeSequence[i]);  // 根据编码序列调整亮的时间
        digitalWrite(IR_LED_PIN, LOW);
        delayMicroseconds(1000 - codeSequence[i]); // 根据编码序列调整暗的时间
    }
}

// 主函数中使用发射器发送信号
int main() {
    infraredLedInit();
    // 假设要发送的信号为0x01
    sendInfraredSignal(0x01);
    return 0;
}

在这个代码中, infraredLedInit 函数初始化红外LED所连接的GPIO端口,而 sendInfraredSignal 函数则根据传入的信号值生成相应的编码序列,并通过调整高电平和低电平的持续时间来控制红外LED的闪烁模式。

2.1.2 接收器组件解析

接收器组件是红外遥控开关的另一核心组件,其功能是接收来自发射器的红外信号,并将其转换为可被微控制器理解的电信号。接收器主要由红外接收二极管(IR Diode)、放大电路和解码芯片组成。红外接收二极管负责接收红外光信号,并将其转换为电信号。随后,这个电信号被放大电路放大,以便解码芯片可以更准确地解读。

解码芯片的任务是从接收到的信号中提取编码数据,然后将其转换为微控制器能够处理的格式。此外,解码芯片还负责滤除噪声并进行信号同步。一旦信号被正确解码,它就可以用于控制相应的设备。

以下是一个简化的接收器组件的伪代码示例:

// 伪代码示例,展示红外接收器的工作原理

// 初始化红外接收器端口
void infraredReceiverInit() {
    pinMode(IR_RECEIVER_PIN, INPUT);
}

// 读取红外信号
int readInfraredSignal() {
    int signal = 0;
    // 检测到红外信号时,读取并返回信号值
    if (isSignalDetected()) {
        signal = decodeSignalFromIR();
    }
    return signal;
}

// 主函数中使用接收器获取信号
int main() {
    infraredReceiverInit();
    // 等待并读取信号
    int receivedSignal = readInfraredSignal();
    // 处理信号
    processSignal(receivedSignal);
    return 0;
}

上述代码中, infraredReceiverInit 函数初始化红外接收器所连接的GPIO端口,而 readInfraredSignal 函数则检测是否有红外信号,并通过 decodeSignalFromIR 函数解码这些信号,最终返回解码后的信号值。

2.2 红外信号的编码与解码过程

2.2.1 红外编码技术的基本原理

红外编码技术是实现红外遥控的关键技术之一。它的基本原理是将控制信息(例如开关的开或关)转换成一系列的红外脉冲。这些脉冲按照一定的编码协议被调制在特定的频率上,然后通过红外LED发射出去。接收端则根据相同的协议解调这些脉冲,还原成原始的控制信息。

一个常见的红外编码协议是NEC协议,它使用一个引导码、地址码、反向地址码、命令码和反向命令码的结构。引导码用于同步,地址和命令码则包含了实际的控制信息。NEC协议的一个关键特征是它的信号格式易于解码,且允许较长的信号宽度,从而提供了一定的错误校验能力。

2.2.2 常用的红外解码算法

由于红外编码协议的多样性,相应的解码算法也各不相同。在通用遥控器中,常见的解码算法有NEC算法、RC5算法和RC6算法等。这些算法各有特点,但它们的共同目标都是从接收的信号中提取出有用的信息。

NEC算法使用了4.5ms的引导码后跟8.5ms的间隔,然后是32位的数据码,数据码由8位地址码和8位反向地址码、8位命令码以及8位反向命令码组成。RC5算法则使用了1.7ms的引导码后跟888μs的间隔,数据码是14位长度,包括5位设备码、1位开关状态和6位命令码。

以下是一个简化的NEC解码算法的伪代码示例:

// 伪代码示例,展示NEC红外解码算法

// 初始化变量
int receivedSignal = 0;
unsigned long signalLength = 0;
bool bitValue = false;
bool isNECCode = false;

// 检测引导码和间隔
if (isGuideCode(receivedSignal) && isGapAfterGuideCode(receivedSignal)) {
    // 读取接下来的32位数据码
    for (int i = 0; i < 32; i++) {
        if (isBit1(receivedSignal)) {
            bitValue = true;
        } else {
            bitValue = false;
        }
        // 将读取的位值添加到信号长度中
        signalLength = (signalLength << 1) | bitValue;
    }
    isNECCode = true;
}

// 判断是否是NEC格式的信号
if (isNECCode) {
    // 这里可以进一步处理信号,例如提取地址码和命令码
}

// 主函数中使用解码算法
int main() {
    // 假设已接收信号
    readInfraredSignal();
    // 解码信号
    decodeInfraredSignal();
    return 0;
}

在此伪代码中, isGuideCode 函数用来检测信号中是否存在NEC协议的引导码, isGapAfterGuideCode 函数用来检查引导码后面是否有适当的间隔。然后通过一系列逻辑判断读取信号中的数据码,并最终确定是否为NEC协议的信号。

2.3 通信协议与控制信号的标准化

2.3.1 通用红外遥控标准

为了实现不同品牌和设备间的互操作性,红外遥控领域制定了通用的红外遥控标准,其中最为广泛使用的是红外数据协会(Infrared Data Association,IRDA)制定的IrDA标准。这些标准定义了物理层、数据链路层以及应用层的协议和规范。

IrDA标准规定了红外光的调制频率、数据传输速率、编码方式以及通信的帧结构等。它支持多种速率,如9600bps到4Mbps的速率,以适应不同的应用场景和需求。IrDA标准具有良好的兼容性,并且被广泛集成在许多消费电子和计算机设备中。

此外,还有一种被广泛采用的标准是国际电工委员会制定的IEC 60335-1标准,它规定了家用和类似用途电器的安全要求。对于红外遥控开关,必须符合IEC标准所规定的安全要求,以确保在任何条件下都是安全可靠的。

2.3.2 信号同步与帧结构分析

信号同步是确保红外通信成功的关键步骤之一。在红外通信中,信号同步主要是通过检测引导码和间隔码来实现的。引导码是一个长的高电平信号,用来通知接收器接下来将要传输数据。间隔码则用来分隔不同数据包之间的通信。

一个红外通信的帧结构通常包含引导码、地址码、命令码等部分。例如,在NEC协议中,一个红外通信帧首先有一个9ms的引导码,然后是一个4.5ms的间隔,接着是32位的数据码,其中包括8位地址码和它的反码,以及8位命令码和它的反码。数据码之间的同步是通过这些特定的时间间隔来实现的。

flowchart TD
    A[引导码] -->|9ms| B[间隔]
    B -->|4.5ms| C[地址码]
    C -->|8位| D[地址反码]
    D -->|8位| E[命令码]
    E -->|8位| F[命令反码]

通过上面的Mermaid流程图,我们可以清晰地看到NEC协议中的信号同步和帧结构。首先,接收器检测到一个9毫秒的引导码,然后是一个4.5毫秒的间隔,表明接下来是数据码。数据码由地址码和命令码组成,每一部分都是8位,并且都有其反码进行同步。

经过上述的章节介绍,第二章已经详细解析了红外遥控开关的组成和工作原理。下一章节将继续探讨红外遥控开关的特性,包括长距离控制、多功能兼容性和安全便捷性的实现。

3. 红外遥控开关特性:长距离控制、多功能兼容、安全便捷

3.1 长距离控制技术的实现

随着技术的进步,红外遥控开关的控制距离已经从最初的设计目标扩展到了数十米,甚至在特定环境下可以达到上百米。这一长距离控制特性的实现,主要依赖于发射功率与接收灵敏度的优化,以及对信号衰减与抗干扰能力的提升。

3.1.1 发射功率与接收灵敏度的优化

发射功率是决定红外遥控距离的直接因素。增强发射器的发射功率可以有效地提升遥控距离。但是,功率的增加必须在符合国际无线电干扰标准的前提下进行,避免对其他设备造成干扰。同时,接收器的灵敏度也需要得到提升,以确保在较弱的信号强度下仍能正确解析信号。

// 伪代码示例:调整发射器功率和接收器灵敏度
void adjustPowerAndSensitivity() {
    // 发射器功率调整
    setTransmitterPowerLevel(HIGH);
    // 接收器灵敏度调整
    setReceiverSensitivity(HIGH);
}

代码中 setTransmitterPowerLevel setReceiverSensitivity 分别用于设置发射器功率和接收器灵敏度。在实际应用中,这些参数需要根据具体的硬件规格和应用场景进行调整。

3.1.2 信号衰减与抗干扰能力的提升

在长距离传输中,红外信号会遇到不同程度的衰减以及可能的环境干扰,比如日光、灯光等。为了克服这些问题,现代红外遥控器采用了多种技术和算法,包括信号放大、滤波处理、和编码纠错机制。

// 伪代码示例:信号放大和滤波处理
void signalAmplificationAndFiltering() {
    // 信号放大
    amplifiedSignal = amplify(InfraredSignal);
    // 信号滤波处理
    filteredSignal = filterNoise(amplifiedSignal);
}

在这段代码中,首先对收到的红外信号进行了放大处理,以弥补远距离传输中的信号衰减。接着通过滤波函数对信号进行噪声滤除,以增强信号的可靠性。

3.2 多功能兼容性的设计

随着消费电子市场的日益丰富,人们对于红外遥控的设备兼容性提出了更高的要求。如何让一个遥控器能够控制不同品牌的电视机、空调、音响等设备,成为了红外遥控技术发展中的一个重要课题。

3.2.1 设备兼容性与代码的通用性

为了实现设备的兼容性,红外遥控器的代码设计需要具有极高的通用性。这意味着需要一套标准的代码库,能够识别和模拟多种设备的控制信号。

// 伪代码示例:通用设备控制代码
void controlDevice(Device device, Command command) {
    // 根据设备类型选择对应协议处理
    switch(device.type) {
        case TV:
            handleTV(device, command);
            break;
        case AIR_CONDITIONER:
            handleAirConditioner(device, command);
            break;
        // 更多设备类型...
    }
}

这段代码展示了一个遥控器如何根据不同的设备类型执行特定的控制命令。 handleTV handleAirConditioner 是根据对应设备定义的函数,每个函数内部将实现不同的控制协议解析和发送。

3.2.2 不同品牌和型号的红外遥控编码库

为了能够控制不同品牌和型号的设备,现代红外遥控器会内嵌一个包含各种设备红外编码的库。这些编码数据通常是通过设备手册、网络搜集或逆向工程得到的。

| 设备类型 | 品牌 | 型号 | 红外编码 | |-----------|------------|-------------|-----------| | 电视机 | Samsung | UE48H6400 | 0x04B1... | | 空调 | LG | Art Cool | 0x04F1... | | ... | ... | ... | ... |

这个表格展示了部分红外编码库中的一小部分内容。通过这样的编码库,遥控器能够根据用户输入(例如品牌和型号)来选择合适的红外编码进行发送。

3.3 安全便捷性的保障措施

遥控器作为家用电器的常见配件,其安全性与便捷性成为了用户选择产品时的重要考量因素。因此,红外遥控器在设计时必须考虑到加密和安全协议,以及用户界面的友好设计。

3.3.1 红外遥控的加密与安全协议

安全性首先体现在信号传输过程中。传统的红外遥控信号相对开放,容易被拦截和复制。现代红外遥控器加入了加密技术,如滚动码技术,每次按键产生的编码都不相同,确保了每次传输的唯一性和安全性。

// 伪代码示例:滚动码加密处理
void rollCodeEncryption() {
    // 产生滚动码
    currentRollingCode = generateRollingCode();
    // 加密信号
    encryptedSignal = encrypt(currentRollingCode);
    // 发送信号
    transmit(encryptedSignal);
}

在这段代码中, generateRollingCode 函数用于产生一个随机的滚动码,然后通过 encrypt 函数进行加密,最后通过 transmit 函数发送出去。通过这样的方式,红外遥控信号的安全性得到了提升。

3.3.2 用户界面的友好设计

除了加密与安全协议,用户界面的友好性也是提升用户体验的关键。一个好的遥控器界面应当直观、易用,用户可以轻松找到并操作各种功能。

为了达到这个目的,设计师通常会从以下几个方面考虑:

  • 简洁明了的布局 :确保用户第一眼就能找到最常用的功能按钮。
  • 图标与文字的结合 :图标直观表达功能,文字辅助解释,使用户更容易理解。
  • 反馈机制 :操作后的即时反馈,如按键音、屏幕上的操作提示等。

通过上述措施,红外遥控器不仅在技术上实现长距离控制和多功能兼容,同时在用户交互上也提供了安全保障和友好的操作体验。

4. 安装与使用方法

4.1 安装前的准备工作

在进行任何安装之前,充分的准备工作是成功完成安装的关键。这包括对硬件设备的准备、连接,以及确保软件环境适合我们的安装需求。

4.1.1 硬件连接与检查

红外遥控开关的硬件连接通常非常简单。以下是需要遵循的基本步骤:

  1. 首先,断开电源以确保安全。
  2. 将红外遥控开关的电源线连接到控制设备的电源源。
  3. 使用附带的接线图来确保信号线正确连接到控制设备的相应端口。
  4. 最后,仔细检查所有的连接点,确保连接稳固,没有短路的风险。

完成连接后,可以通过以下步骤来测试硬件连接:

  • 重新开启电源,确保红外遥控开关可以正常供电。
  • 检查所有的指示灯或显示器是否工作正常,指示灯颜色变化可能表明设备当前的工作状态。

4.1.2 软件环境的配置

在硬件安装完成后,接下来是软件环境的配置。这通常包括安装必要的驱动程序以及运行配置软件。

  • 在PC上安装红外遥控软件。这通常包括运行安装向导,按照提示完成软件的安装。
  • 打开软件,选择适当的串口或USB接口,确保软件能够与红外遥控开关通信。
  • 配置软件的用户界面,以便适合我们的使用习惯。这可能包括调整显示参数或设置快捷键等。
  • 运行软件中的测试程序,测试软件和硬件之间的通信是否正常。

以下是一个简单的代码块示例,展示如何通过Python脚本验证串口连接:

import serial

# 配置串口参数
ser = serial.Serial('COM3', 9600, timeout=1)
if ser.isOpen():
    print("串口已打开")
else:
    print("串口打开失败")

# 发送一个简单的测试命令
ser.write(b'123456')  # 假设'123456'是某个控制命令

# 关闭串口连接
ser.close()

在执行以上脚本后,我们需要确认设备是否收到了命令并且按照预期执行了相应的动作。这一过程可以通过观察设备的响应来完成。如果设备有反馈,可以通过返回的数据进一步调试。

4.2 通用红外遥控开关的操作流程

4.2.1 设备对码与学习过程

红外遥控开关的一个关键功能是对码和学习。这个过程允许遥控开关学习并记住其他遥控器发出的信号。

  • 首先,确保需要学习的遥控器在有效范围内,并准备对准红外遥控开关的接收端。
  • 根据遥控开关的用户手册,进入学习模式。这通常涉及到长按一个特定的按钮,直到指示灯开始闪烁。
  • 对准待学习的遥控器并按下要学习的按钮。
  • 如果操作成功,遥控开关会存储该信号,并在指示灯再次闪烁后退出学习模式。

4.2.2 功能测试与实际操作

功能测试的目的是确保遥控开关可以正常控制目标设备。以下是基本的操作步骤:

  • 进行简单的功能测试,如开/关电源。
  • 使用遥控器发送信号,观察目标设备是否按照预期动作。
  • 如果支持多种设备,重复以上步骤测试其他设备的控制功能。

通过下图,我们可以形象地展示红外遥控开关学习过程的流程图:

graph LR
A[开始学习模式] --> B[对准其他遥控器]
B --> C[按下按钮]
C --> D{信号接收成功?}
D -->|是| E[存储信号]
D -->|否| F[退出学习模式并重新尝试]
E --> G[退出学习模式]

4.3 常见问题的诊断与解决

在使用红外遥控开关时,可能会遇到各种问题。正确诊断和解决问题是保持系统稳定运行的重要一步。

4.3.1 遥控距离不足的排查

遥控距离不足是一个常见的问题,排查和解决步骤如下:

  • 检查遥控器和红外遥控开关之间的障碍物,确保没有阻挡信号的物品。
  • 检查红外发射器的发射功率,如果需要可以更换发射器。
  • 确保遥控器电池电量充足,电池电量不足会导致信号强度下降。

4.3.2 功能异常与故障排除

如果红外遥控开关不能按照预期工作,可以按照以下步骤进行故障排除:

  • 确认遥控开关和被控制设备之间的连接是否正确。
  • 检查遥控开关是否处于正确的操作模式。
  • 查看红外遥控开关的指示灯,它可能显示故障类型或错误代码。
  • 重新进行设备对码和学习过程,以排除学习错误。

在处理故障的过程中,需要记录所有的观察结果和尝试的解决措施。这样的记录不仅有助于问题的快速解决,还能在需要技术支持时提供重要信息。

graph TD
A[开始故障排除] --> B[检查连接]
B --> C[检查操作模式]
C --> D[查看指示灯状态]
D --> E[重新对码学习]
E --> F{问题解决?}
F -->|是| G[完成故障排除]
F -->|否| H[记录观察结果]
H --> I[寻求技术支持]

在这一章节中,我们详细介绍了红外遥控开关的安装与使用方法,包括安装前的准备工作、通用操作流程以及常见的故障排除技巧。通过细致的步骤和逻辑分析,用户可以更加自信地操作和维护他们的红外遥控系统。

5. 注意事项

5.1 安全使用提示

红外遥控技术虽然方便,但在使用过程中也存在一些安全性的考虑。用户应当注意以下方面:

5.1.1 电气安全标准与实践

在连接红外遥控开关与电源或电器时,必须遵循当地的安全标准和制造商的指导。例如,许多国家和地区的电气安装都需要遵守一定的安全法规,并且需要合格的技术人员来完成。对于红外遥控开关,更要注意不应在潮湿或易燃易爆的环境中使用,以避免安全隐患。

例如,以下是进行电气连接时需要考虑的一些要点:
- 确保所有电气连接都由具有相应资质的电工来完成。
- 在进行电气作业之前,确保电源已经断开。
- 使用适当的线缆和连接器,以保证足够的电气负载能力。
- 遵循设备的电气接线图和制造商提供的指南。

5.1.2 使用环境对红外遥控的影响

红外遥控设备的使用环境对其性能有显著影响。例如,温度、湿度、直接阳光、灰尘和烟雾等因素都可能影响红外信号的传输。

为了减少环境因素的影响,应该考虑以下措施:
- 避免将红外遥控设备置于直射阳光下。
- 保持红外发射器和接收器的清洁,避免灰尘和污物的堆积。
- 尽量减少或避免在高温或潮湿的环境中使用红外遥控设备。

5.2 维护与保养

为了保持红外遥控开关的长期有效性和可靠性,进行定期的维护和保养是必要的。

5.2.1 定期检查与清洁

定期对红外遥控开关进行检查和清洁是维持其良好工作状态的基础。

维护建议:
- 每隔几个月检查一次红外遥控开关,特别是其外部壳体、按键和指示灯。
- 使用微纤维布和温和的清洁剂清洁表面,避免使用化学溶剂。
- 检查电池电量并及时更换电池,确保遥控器有稳定的电源。

5.2.2 常见故障的预防措施

了解和预防红外遥控开关可能出现的常见故障,可以帮助用户减少不必要的麻烦。

预防措施包括:
- 避免将遥控器暴露在过热或过冷的环境下。
- 防止遥控器受到摔打或挤压,保持其结构的完整性。
- 避免长期暴露于高湿度环境中,以防电路板上发生腐蚀。

5.3 升级与扩展

随着技术的发展,红外遥控开关可能会提供新的功能,或者需要对现有功能进行升级。

5.3.1 软件固件的更新流程

许多现代的红外遥控设备都支持软件固件的更新,可以增加新的功能或者改善性能。

更新固件的步骤通常包括:
- 访问设备制造商的官方网站,下载最新的固件更新包。
- 根据制造商提供的指导文件进行固件更新。
- 确保在更新过程中设备电源稳定,并且不要中断更新过程。

5.3.2 扩展功能的实现方法

用户可能会出于个人需要或技术发展,希望扩展红外遥控设备的功能。

实现扩展功能的方法有:
- 购买兼容的红外设备配件,如不同类型的红外发射器。
- 利用支持的第三方软件来增加新的控制协议。
- 编写自定义代码或脚本来实现特定的功能。

通过上述维护和升级措施,红外遥控开关的使用体验可以得到进一步的提升,保持其长期的稳定性和功能性。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文详细解析了红外遥控技术的基础知识,并深入探讨了通用红外遥控开关的工作原理、特点以及安装和使用方法。通过红外信号,用户可以远程控制电器,实现无接触操作,提升家居安全性和便利性。文中还介绍了红外遥控开关的多功能性,安全便捷的特点,并提供了安装步骤和操作指南,确保用户能够正确使用。注意点包括红外信号传输的无障碍、电池更换和频道/代码设置等。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

根据设计内容要求可知: 1)用STAR ES598PCI单板开发机设计一个应用接口芯片作为八个七段LED数码管的段选位选。接口可以使用8255A或8279(本实验用了8255A)。 2)编写程序实现将红外装置发送的编码代表的动作(左移LEFT和右移RIGHT)显示再七段数码管上,并实现LEFT的左循环移动,RIGHT的右循环移动。 3)用按键控制接口控制所要进行的操作,用一个按键控制左移用另一个按键控制右移,按住按键不放则为左循环或右循环。 2.解决问题方法及思路 1)硬件部分 (1)由于8251A和红外之间的数据传输涉及到要协调一致,所以本实验另外还要选用8253A作为频率发生器,输出一定的方波到8251A。 (2)本次设计要求通过按键来进行操作,本来想用小键盘使得程序更加高级一些,但考虑到所需功能不多,只需两个按键即可,所以采用了按键控制接口。 (3)输出设备选用的是LED七段数码管。本实验只是要将LED上的内容左移右移,左循环和右循环,LED即可满足要求。 (4)8255A的可编程并行接口,本实验通过8255A将按键的信息送入,并且使用8255A对LED进行段选和位选,而且8255A具有传输速度快效率高等优点,此既可以节约芯片的使用,还具有较好的性能,因此选用。 (5)由于红外装置接收和发送的都是串行数据,所以本实验选用8251A作为CPU和红外装置之间数据的串并转换,8251A将CPU的并行数据转换为串行数据送至红外,将红外的串行数据转换为并行数据送至CPU。 至此,我们可以确定本次课程设计要用到的部件有:2个按键作为遥控器按钮,LED作为显示,8253用作频率发生器,8255用来作为输入输出接口,8251A用来传送数据。 2)软件部分 (1)对8253进行初始化。8253作为频率发生器,选用计数器0,控制字为35H,工作在方式2,并且将计数初值设为26,因为2000000/26=16*4800。这样发送和接受数据的时钟频率就是数据传输频率即波特率的16倍,这样可以提高收发数据的正确性,再将输出频率送至8251的RXC和TXC,一定程度上保证了数据传输的正确性。 (2)对8255进行初始化。PC口作为输入口,本实验中只用了PC0和PC7按键控制接口相连,接收按键要控制的相关状态。开始时,通过置为/复位控制字,将1和8按键置为1,即置为控制字是01H和0FH,之所以设为1因为按键按下时是0信号,松开时1信号,程序运行时,检查C口读入的按键,若为1按键,即为左移,若为8按键,则为右移。PA口PB口均作为输出口,其中PA口作为位选,用来选择发光的LED管,在控制时,我们是将要亮的管子位置数为0,其它位置为1,PB口作为段选,用来控制输出的值。 (3)对8251A进行初始化。8251A作为本实验中最重要的芯片,就是起了传送并转换数据的作用,8251A将CPU的并行数据转换为串行数据送至红外,将红外的串行数据转换为并行数据送至CPU。将8251A的方式控制字设为5EH, ;波特率系数为16,8个数据位,1个停止位,奇校验,命令控制字设为17H,允许接受和发送数据,清错误标志。程序运行后,检查状态寄存器,若为01H,则是允许发送,则将左移或右移信息码发送至红外,否则持续读状态寄存器。接收时,读状态寄存器,若为02H,则是接收准备好,则从红外接收数据。 (4)CPU在发送数据时,先比较C口读入的数据,若是1按键,则将左移信息码40H写至8251A,若是8按键,则将右移信息码41H写至8251A;在接收数据时,若收到的是左移信息码,则左移1位位选,写入8255A,使LED上的数据左移一位,若收到的是右移信息码,则右移1位位选,写入8255A,使LED上的数据右移一位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值