(完整word)自学习万能红外遥控模块简介 - ChinaUnix博客-专业IT技术博客

自学习万能红外遥控模块软、硬件设计
红外线遥控就是利用波长为0.76~1。5μm之间的近红外线来传送控制信号的。红外遥控是目前家用电器中用得较多的遥控方式在家用电器、室内近距离(小于10米)遥控中得到了广泛的应用。茶叶电炒锅但各产生的遥控器不能相互兼容。目前市场上常见的万能遥控器只能对某几种产品进行控制,不是真正的“万能”,而且不能对新上市的产品进行控制所以,如何实现对种类繁多得红外家电设备进行控制是本系统必须解决得任务之一。
本模块用单片机对红外遥控器信号接收和转发的方法,由于只关心发射信号波形中的高低电平的宽度,不管其如何编码,所以能实现绝大部分红外设备的遥控。
自学习万能红外遥控模块整体框图如下:
RS485总线
通讯模块
键盘
单片机
红外接收
液晶rat组合
红外发射
EEPROM
本模块主要要实现的功能为:
管理键盘和液晶,用户进行红外遥控器的学习等操作;
学习各种红外设备的编码并记录保存下来;
将学到的红外设备的编码发射出去,实现对红外设备的遥控;
与系统主机进行通讯,执行主机发送过来的命令,实现远程控制。
一.硬件设计
1.红外信号的的发射
发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为940nm左右
用遥控脉冲信号调制38kHz方波,然后将已调波放大,驱动红外发光二极管,就可以得到遥发射信号.该部分原理图如下:
图中,与非门4011组成振荡电路,通过调整电阻VR3的值可调整调制频率。SEND脚连接单片机,是信号的输入端。
有些遥控器的载频可能是40kHz,只须稍微加大发射功率仍然可用38kHz载频使其接收电路动作
2.红外信号的接收和波形测量
所有红外遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。如果直接对已调波进行测量,由于单片机的指令周期是微秒(μs)级,而已调波的脉宽只有20多μs,会产生很大的误差。因此先要对已调波进行解调,对解调后的波形进行测量。本系统采用红外接收头TL0038.其内部已经包含解调电路和信号放大电路。该部分电路如下:
TL0038的OUT脚连在单片机的一个IO口。单片机通过不断查询这个脚的高低电平变化,完成信号的采集.
3.键盘输入与LCD显示
    为了给用户提供友好的界面,完成对红外遥控设备的编码学习过程,本模块采用键盘和LCD与用户进行交互。LCD可以显示文字和图形,给人以直观的感觉,更利于工作人员对系统的维护。
键盘为键盘是人机交互界面的输入部分,是有30个按键组成的开关矩阵5×6.
DGM12232B为点阵式液晶,其与单片机的接口电路如图3.2。                   
4.红外编码的存储
为了保证系统意外断电后数据不丢失,本系统采用EEPROM将各种编码数据存放起来。AT24C16是2K byte容量的EEPROM,只需要两跟线(时钟线和数据线)和单片机连接。该部分如下图.
5.RS485通讯
该模块完成与主机的连接,接收来自主机的命令并执行,实现远程控制。采用MAX491全双工485转换芯片,与单片机的串行口相连。
二.www.3x6c软件设计恶劣捕捉
1.红外设备脉冲流分析
红外信号的接收,接收和发射是自学习万能遥控器模块的难点和核心内心。
要了解一个未知的遥控器,首先要分析其脉冲流,从而了解其脉冲波形特征(以何种方式携带“0”、“1"信息),进而了解其编码规律。脉冲流的分析应从分析脉冲的高、低电平宽度入手。如果没有红外遥控信号到来,接收器的输出端口PO保持高电平;当接收到红外遥控信号时,接收器件信号转换成脉冲序列加到MCU的输入引脚。用软件测试引脚的逻辑电平,同时启动TC计时器,测量该引脚分别为逻辑“0”和逻辑“1”情况下的时间值,存储起来,然后打印、分析。得出如下规律:
除引导脉冲(一个低电平和一个高电平)和结束脉冲(最后结尾的脉冲几个低电平和高电平)外的脉冲是数据编码脉冲,数据“位”信息由高电平脉宽决定:窄脉宽表示“0”、宽脉宽表示“1”
经过对相同按键脉冲进行多次采样发现,相同按键脉冲序列的对应位置脉宽时间值是在一个小范围内波动的(不是一个确定值),因此,对模式的识别不能采取精确比较法。对此,本系统采取模糊的办法进行了抽象处理
①引导脉冲的低电平和高电平宽度的时间值比较大,用字节记录低电平和高电平的时间长度.
对数据脉冲流按bit进行存储。数据脉冲流的低电平脉宽相同,只记录一次.高电平脉宽是判断数据流每位是“0”还是“1"的依据。也只记录一次宽脉冲和窄脉冲的时间长度。其他用0或1来记录是宽脉冲还是窄脉冲.这种记录方法大大压缩了数据量。
实践证明,上述判据是有效可行的。这样处理不仅使解码软件的设计简单化,而且大大提高了解码的速度。
2.软件设计
为易于调试,便于扩展,增加可读性,软件设计采用模块化的方法。主要分成:红外接收和发射模块,485通讯模块,EEPROM模块,键盘模块,LCD模块.各模块都具有很强的通用性,非常便于程序的维护,扩展和移植。各模块功能和主要函数简介如下:
A.键盘模块
该模块向外提供kb_scan()函数,完成4方面的功能:①判别键盘上有无闭合键;②去除键的机械抖动;③判别闭合键的键号;④使CPU对键的一次闭合仅作一次处理。
      其流程图如下:
开始
N
有键闭合否?
Y
烫印膜
延时6ms
N
有键闭合否?
Y
获取键号
闭合键释放否?
N
电脑保护套
Y
返回按下的键号
                        图3。8 键盘扫描流程图
B. LCD显示模块
        主要是在LCD显示数字,汉字和图形的子函数。该模块对外主要提供如下功能:
void LCD_init();
功能:对LCD进行初始化,对LCD操作前需要调用此函数
参数:null
返回值:null
void LCD_set_state(bit sw);
功能:开关LCD
参数:sw-为0时关掉LCD,为1时打开
返回值:null
uchar LCD_disp_char(uchar * dataAddr,uchar fontWdth,uchar page,uchar startCol);
功能:在LCD上显示字符,包括汉字,数字,英文,图形,占用2页
参数:dataAddr-要显示的字符的地址,一般放在单片机的程序存储器里。
    FontWdth-字符的宽度,一般情况下,汉字为16,数字和英文字母为8
Page-字符显示的起始页地址,0-3
StartCol-字符显示的起始列地址,0-121
                返回值:null
void LCD_clear_all();
功能:清除LCD屏幕的所有字符
参数:null
返回值:null
void LCD_clear_char8(uchar page,uchar startCol);
功能:只清除LCD屏幕上一个8宽度的字符,用于不需要清除整个屏幕时,比如只清除屏幕上的一个数字
参数:page-要清除字符的起始页地址,0-3
      startCol-要清除字符的起始列地址,0-121
返回值:null
C. 红外发射和接收模块
void IR_init(uchar * IR_buf)
功能:红外模块进行初始化
参数:IR_buf-红外编
返回值:null
void IR_Scan_parameter(uchar * buf)
功能:开始学习红外设备前,对红外设备的参数进行扫描
参数:IR_buf-红外编码数据缓冲区
返回值:null
void IR_Study(uchar * IR_buf)
功能:学习红外设备的按键编码
参数:IR_buf-红外编码数据缓冲区
返回值:null
void IR_Send(uchar * buf)
功能:发送红外编码数据
参数:IR_buf-红外编码数据缓冲区
返回值:null
      D.EEPROM模块
void write_byte(unsigned int addr,unsigned char dat)
功能:向EEPROM里面写入数据
参数:addr-要写入的地址
      addr-要写入的数据
    返回值:null
unsigned char read_random(unsigned int addr)
功能:从EEPROM里面读数据
参数:addr-要读出的数据的地址
返回值:null
E.485通讯模块
void COMM_init()
功能:485通讯,初始化
参数:null
    返回值:null
void COMM_send_frame (unsigned char * buf)
功能:485通讯,发送一帧数据
参数:buf—485通讯一帧数据的缓冲区
    返回值:null
bit COMM_validate(uchar *buf)
功能:验证485通讯中一帧数据的有效性

本文发布于:2024-09-22 13:41:54,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/213478.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:脉冲   进行   模块   信号   遥控   接收   设备   单片机
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议