这个实验是学院的开放实验,2个小时写完了代码,使用STM32控制器,特此记录一下,比较水,有需要的朋友可以参考一下,想要代码请加入群。欢迎加入QQ群:681976114,点击这里加群

文章来源地址:https://blog.oliverxu.cn

最终的作品:

摘 要

随着社会的发展、 科技的进步以及人们生活水平的逐步提高, 各种方便于生活的遥控系统开始进入了人们的生活。 传统的遥控器采用专用的遥控编码及解码集成电路, 这种方法虽然制作简单、 容易,但由于功能键数及功能受到特定的限制,只实用于某一专用电器产品的应用, 应用范围受到限制。 而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随便设定等优点。

本设计主要应用了STM32F103单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外光的优点。遥控操作的不同,遥控发射器通过对红外光发射频率的控制来区别不同的操作。 遥控接收器通过对红外光接收频率的识别,判断出控制操作,来完成整个红外遥控发射、接收过程。

第一章 系统设计要求与方案论述

1.1  设计要求

1、 利用单片机实现红外编解码程序设计。

2、 驱动红外发射实现红发发射和接收。

3、 采用主从应当的方式进行数据校验。通过显示屏显示发射的数值和接收的数值。

1.2  方案论述

目前市场上一般采用的遥控编码及解码集成电路。此方案具有制作简单、容易等特点,但由于功能键数及功能受到特定的限制,只适合用某一专用电器产品的应用 ,应用范围受到限制。而采用单片机进行遥控系统的应用设计,具有编程灵活多样、 操作码个数可随意设定等优点。本单片机遥控应用系统采用红外线发射频率的不同,来识别不同的遥控功能。当我们按下某一个按键的时候,由单片机识别出该按键后,由 CPU 向接有红外发射管的端口发射一定频率的脉冲,该脉冲与 38KHz 左右的载波脉冲进行调制,然后将已调制的脉冲进行缓冲放大,激励红外发光二极管将电能转化为光能,使得红外发光二极管发射出一定频率的红外线,当接收控制系统接收到该红外光后,由单片机内定时 /计数器得到该红外光的频率,然后将该频率送往 CPU,由 CPU 对该信号进行反编码,识别出控制信号,从而对控制电路实施控制功能。完成整个遥控功能

第二章 系统总体设计

2.1 单片机红外遥控发射器设计原理

单片机红外遥控发射器主要有单片机、 行列式键盘、红外管发射电路以及单片机的一些电源、 复位、震荡子电路组成。当遥控器的某一按键被按下以后,产生外部中断,查询键盘按下的是哪一个按键,当确认按键后,控制软件启动定时器作为发射时间控制器, TIME0 作为红外线发射频率控制器, TIME0 定时溢出时中断程序使红外管接口电平反转一次, 写入定时器的初值不同, 在输出端口就得到不同的发射频率。 发射器的原理图如下所示:

2.2 单片机红外遥控接收器设计原理

单片机红外遥控接收器主要有单片机、红外遥控接收电路、状态指示电路、

控制电路以及单片机的一些外围电路组成。利用单片机中的 T0 作为红外脉冲计数器, T1 作为计数时间控制器。当电路中红外接收管接收到第一个红外脉冲时,外部中断 1 被触发,启动计数器 T0和定时器 T1。定时溢出,中断程序关闭计数器 T0,读入计数值并进行判断,确定操作对象(遥控按键)对其进行反转操作,控制电路对所控制的负载进行开或关。还可对接收电路实行上锁功能,对制电路上锁后,遥控器不能对控制电路实施遥控功能。其设计原理方框图如下 :

第三章 系统详细设计

3.1  矩阵键盘模块

通过扫描4×4键盘,将对应的数值在数码管上显示出来。GPIOF9,GPIOF6-4F分别连接列读,GPIOF3-GPIOF0分别连接行扫,GPIOA7-0分别接MSP430开发板上的P1.0-7,GPIOB0接P6.1,GPIOB1接P6.2。硬件中P3.0至P3.3。

本程序将键盘扫描模块和显示的模块都做了相应的封装,使得程序的各个模块相互独立。

键盘扫描模块采用定时器中断的方式,不需要在主函数中进行延时处理,这样使得单片机运行的效率得到提升。

3.2  发射管驱动模块

原理图如下:

NEC 码的位定义:一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms(560us脉冲+1680us 低电平),一个逻辑 0 的传输需要 1.125ms(560us 脉冲+560us 低电平)。

通过程序编码,将按下的按键的键值通过调制发送出去。

3.3  接收管驱动模块

NEC 码的位定义:一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms(560us脉冲+1680us 低电平),一个逻辑 0 的传输需要 1.125ms(560us 脉冲+560us 低电平)。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,接收头端收到的信号为:逻辑 1 应该是 560us 低+1680us 高,逻辑 0 应该是 560us 低+560us 高。NEC 遥控指令的数据格式为:同步头、地址码、地址反码、控制码、控制反码。同步码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制码、控制反码均是8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(用于校验)。

当按下按键“1”按下时,从红外接收头端收到的波形如图所示

其地址码为 0,控制码为 168。可以看到在 100ms 之后,我们还收到了几个脉冲,这是 NEC 码规定的连发码(由 9ms 低电平+2.5m 高电平+0.56ms 低电平+97.94ms 高电平组成),如果在一帧数据发送完毕之后,按键仍然没有放开,则发射重复码,即连发码,可以通过统计连发码的次数来标记按键按下的长短/次数。利用输入捕获来测量高电平的脉宽,来解码红外遥控信号。

与MCU 的连接原理图如所示:

3.4  显示模块

显示模块采用的是OLED显示屏,OLED, 即有机发光二极管 (Organic Light-Emitting Diode),又称为有机电激光显示 (OrganicElectroluminesence Display, OELD) 。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

原理图如下:

4 线串口模式使用的信号线有如下几条:

CS:OLED 片选信号。

RST(RES):硬复位 OLED。

DC:命令/数据标志(0,读写命令;1,读写数据) 。

SCLK:串行时钟线。在 4 线串行模式下,D0 信号线作为串行时钟线 SCLK。

SDIN:串行数据线。在 4 线串行模式下,D1 信号线作为串行数据线 SDIN。

模块的 D2 需要悬空,其他引脚可以接到 GND。在 4 线串行模式下,只能往模块写数据而不能读数据。

在 4 线 SPI 模式下,每个数据长度均为 8 位,在 SCLK 的上升沿,数据从 SDIN 移入到SSD1306,并且是高位在前的。DC 线还是用作命令/数据的标志线。在 4 线 SPI 模式下,写操作的时序如图所示:

SSD1306 的典型初始化框图如图:

 

第四章 系统测试结果与分析

4.1 仿真波形

生成占空比为33%的脉冲

红外接收头接收到的信号

红外发射器发出的波形

4.2  结果分析

经过示波器的观察,可以发现整套系统完全满足了设计要求。

第五章 设计总结

5.1  设计存在问题及改进建议

程序方面:程序的矩阵模块采用了中断采样的方法,效果比较好,但是写的有点冗杂。

焊接:焊接工艺需要完善。

改进建议:精简程序,完善焊接。

5.2  收获与体会

这次课外实验对于我来说非常重要,充分的练习了单片机c语言的编程规则,也对一些基本的数理逻辑问题和事理逻辑问题有了更深入的体会。我以为之前做了很多的练习,现在做起来应该很容易,在整个过程中并没有遇到许多问题,整个过程我特别喜欢,因为我自己通过各种方法的尝试解决了很多问题。

STM32红外遥控实验(发射器和接收器)相关推荐

  1. 【正点原子STM32连载】 第三十八章 红外遥控实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  2. stm32解码红外遥控实验

    stm32解码红外遥控 红外遥控的简介 有关编程的解释 使用hal库进行红外遥控实验 红外遥控的简介 红外解码目前广泛使用的NEC Protocol的PWM(脉冲宽度调制)和Philips RC-5 ...

  3. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车红外遥控实验

    在下载到开发板之前要选择好板和端口,具体参见: ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 -- Arduino相关设置 注意 红外遥控程序注意将IRremote 复制到ARDuino安装 ...

  4. 51单片机学习:红外遥控实验

    实验名称:红外遥控实验 接线说明:     实验现象:下载程序后,数码管上显示数码管上显示红外解码遥控器键值 注意事项:红外接收头凸起处要与PCB板接口凸起丝印处对应                  ...

  5. 嵌入式 STM32 红外遥控

    目录 红外遥控 NEC码的位定义 硬件设计 软件设计 源码程序 红外遥控 红外遥控是一种无线.非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,容易实现等显著的特点,被诸多电子设备特别是 ...

  6. 【ESP32】8.红外遥控实验(红外遥控解码库)

    上一篇: [ESP32]7.按键实验(中断) 前言: 先放电路连接图: 红外接收头的IC是一种受光元件,其内部是将发光二极管和集成IC组合封装而成,其IC设计主要以类比式控制,一般主要接收38KHz频 ...

  7. android红外遥控器按键键值,红外遥控实验键值设置

    while(1) { key=Remote_Scan(); if(key) { LCD_ShowNum(86,130,key,3,16);                //显示键值 LCD_Show ...

  8. 基于stm32f103红外遥控美的空调

    一.红外nec协议 红外遥控的编码目前广泛使用的是:NEC Protocol的PWM(脉冲宽度调制)和Philips RC-5 Protocol的PPM(脉冲位置调制),而美的空调大多采用nec协议的 ...

  9. STM32之红外遥控信号自学习实现

    文章目录 一.序言 二.硬件实现原理 三.软件实现自学习 一.序言 很早前就想实现这个红外遥控自学习的这个实验,用于来自己控制房子里如空调等红外遥控设备的自动化,NEC的标准到具体的产品上可能就被厂家 ...

最新文章

  1. 学习前端工程师手册--学习记录
  2. Solr实战(二):索引操作
  3. spring boot基础教程之文件上传下载
  4. zbar扫描无法近距离扫码_生意好时最怕收银出故障,这几个扫码枪的常见问题你一定要知道...
  5. 鸿蒙系统下载 绿色,PGWARE PcMedik
  6. c#与access建立连接用作登录_SQLServer成功与服务器建立连接,但在登录中发生错误
  7. UVALive 6181
  8. java检测按键,java-me – 如何以LWUIT形式检测按键事件?
  9. Mac下如何将 GBK 编码的文档转成 UTF-8 编码的?
  10. 软件设计师-8.算法分析与设计
  11. 解决ColorPix拾色器提取颜色错误
  12. 量化投资学习——股指期货研究(八)
  13. bypass-wts-waf
  14. mac(苹果)电脑终端使用技巧
  15. ajax请求有多少种写法,Ajax 请求的三种写法
  16. android开发笔记之联系人百家姓功能的实现
  17. 十一酸睾酮(TU)行业调研报告 - 市场现状分析与发展前景预测
  18. 最小费用最大流(详解+模板)
  19. java-php-python-ssm旅游产品网络销售系统计算机毕业设计
  20. TensorRT网络推理c++实现

热门文章

  1. 网页版别踩白块(JavaScript)
  2. aix oracle备份命令,Aix/Linux下自动备份oracle数据库
  3. 单例模式应用场景及实现(By C++)
  4. java nio 与io_Java NIO 与IO区别
  5. c语言单片机与plc通讯,用c51实现单片机和plc之间通讯实例
  6. ArcGIS图层颜色模板导入\导出的方法
  7. opensips安装及配置
  8. spring源码阅读--aop实现原理分析
  9. matlab中动力学方程,Matlab求动力学的微分方程组拟合
  10. 【回答问题】ChatGPT上线了!如何使用控制算法或动力学模型控制PreScan搭建的仿真环境及相关车辆的运动状态?