基于单片机的智能学习型红外空调遥控器

时间:2015-06-24来源:网络

  3系统软件设计与实现

  系统程序主要分为三个部分:学习模式,发送模式以及通信模式。当第一次进入系统时,初始化设置设备地址,然后设置通信的波特率,提供1200、9600以及19200三种选择。系统主程序即在三个模式间切换,默认进入通信模式,可以通过模式切换按键改变模式,也可以通过上位机直接更改。出于系统的稳定性需要,在程序中加入了软件看门狗,防止程序"跑飞".

  3.1学习功能设计

  3.1.1学习模式

  红外遥控器的码型多样,编码一般包括:帧头、系统码、操作码、同步码、帧间隔码、帧尾,且同步码与帧间隔码出现的位置不固定,因此码型格式灵活多变,很难区分各种码型的编码含义;各个红外遥控的编码长度不尽相同,发送方式也多种多样,最常用的有三种:完整帧只发送一次、完整帧重复发送两次、先发送一个完整帧,后重复发送帧头和一个脉冲。面对如此多样化的编码方式,如果区分每种编码的含义进行学习,学习的复杂度将会很高,并且通用性也会受到影响。所以,为了避开各色码型的干扰,系统在学习时并不关心码型数据的实际意义,只记录脉冲的时间宽度。系统主要针对载波频率为38KHz(周期为26us)的红外遥控器,利用变量IR_time记录接收到的脉冲宽度。学习程序流程如图4所示。

  

 

  图4学习程序流程图。

  3.1.2压缩存储

  由于不考虑具体的码型数据意义,只记录脉冲的宽度,系统的学习功能通用性得到了提高,但这种方式学习到的数据量很大,对存储的要求就变得很高。

  尽管系统针对存储的大容量需求设计了单独的存储模块,但考虑到应在不增加硬件开销的情况下保证足够的存储容量,以及满足未来扩展的需要,在进行数据存储时,采取了数据压缩技术。

  从学习到的电平数据可以发现,无论数据是1还是0,都有相同时长的电平出现,这符合游程编码的特点。游程编码是一种简单的非破坏性资料压缩法,其好处是加压缩和解压缩都非常快,其方法是计算连续出现的资料长度压缩之。比如:一张二值图像的数据为:

  WWWWWWWWBWWWWBBBWWWWWWWBWWWWW

  使用游程编码压缩可得:8W1B4W3B7W1B 5W.

  可见,压缩效率极高,且可避免复杂的编码和解码运算。所以,在存储时,系统对学习到的数据进行游程编码压缩[7,8].例如,学习到的一组空调遥控器的数据为[157 153 23 53…23 53 23 180 156 152 23 53…53 23],如图5所示,对重复的电平数据采用游程编码压缩后,原本需要199字节的空调遥控码,只需要106个字节即可存储,压缩率达53.27%.因此,在存储时针对学习到的数据特点采取游程编码压缩,可以有效节约存储空间。

  

 

  图5一组典型的空调数据帧。

1 2

关键词: Atmega16 PWM

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版