学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望

如方案设计所述,制作万能学习型红外遥控器,该遥控器至少具有红外编码学习和还原功能,采用触屏和按键两种方式操作,彩色液晶屏显示,能够替代SAA3010遥控器使用。

5.1  基本原理

5.1.1  触屏校准

触屏操作处于绝对坐标系统(与当前位置坐标相关)。操作触摸屏时,触点坐标通过AD采样得到,同一点触摸多次采样数据会有偏差,这是触摸屏经常出现的问题:漂移。

对于触屏漂移最有效的办法是:系统启动后,进入应用程序前,执行校准程序,LCD中的点坐标是以像素为单位,触屏中读出的是点的物理坐标,由触屏坐标系到LCD坐标系的转化公式如下:

Xt = Kx × Xl + Ax

Yt = Ky × Yl + Ay

变量说明如表5.1所示:

表5.1  变量列表

变量 说明
Xt 触摸采样获得的横坐标
Kx: X方向比例因子
Xl: LCD的横坐标
Ax: X方向偏移量
Yt: 触摸采样获得的纵坐标
Ky: Y方向比例因子
Yl: LCD的纵坐标
Ay: Y方向偏移量

触屏校准的过程就是使用待定系数法确定XY方向的比例因子和偏移量,实验过程如下:

1、在LCD屏上显示四个定点,这四个定点的像素坐标分别为:
0(1,1)、1(1,176)、2(220,1)、3(220,176)。如图5.1所示:

图5.1 触屏测试点选取示意图

2、触屏得到定点的触屏坐标,如表5.2所示:

表5.2  触屏测试数据列表

0   1   2   3  
x y x y x y x y
218 3590 3829 3573 422 524 3794 501
242 3500 3837 3580 422 525 3816 520
255 3569 3865 3576 422 600 3730 513
241 3560 3848 3574 419 523 3731 517
270 3552 3844 3592 364 524 3757 499
249 3534 3840 3602 424 524 3741 520
235 3558 3813 3613 368 539 3731 516
228 3560 3844 3592 398 523 3770 510
215 3585 3820 3601 422 470 3782 503
211 3573 3810 3594 421 524 3786 509
280 3582 3830 3601 417 522 3765 516
243 3538 3837 3589 394 519 3784 509

3、采用待定系数法确定触屏参数,本文利用matlab参数估计lsqcurvefit函数求得校正参数如表5.3所示,同时更新默认参数,达到校准目的:

表5.3  触屏校正参数

Kx 20.17045 Ax 250
Ky 13.90909 Ay 516

5.1.2  彩屏显示

计算机表示颜色使用二进制。16位色的发色总数是65536色;24位色被称为真彩色,发色数是1677万多色。32位色是1677万多色,增加了256阶颜色的灰度,各种RGB格式如表5.4所示:

表5.4  各种RGB格式对照[8]

RGB565 使用16位(一个字)表示一个像素,这16位中的5位用于R,

6位用于G,5位用于B。

高字节 低字节
R R R R R G G G G G G B B B B B
RGB555 使用16位(一个字)的RGB格式,RGB分量都用5位表示

(剩下的1位不用)。

高字节 低字节

X R R R R G G G G G B B B B B (X表示不用,可以忽略)

RGB24 使用24位来表示一个像素,RGB分量都用8位表示,

取值范围为0-255。

通常可以使用RGBTRIPLE数据结构来操作一个像素,

它的定义为:

typedef struct tagRGBTRIPLE {

BYTE rgbtBlue; // 蓝色分量

BYTE rgbtGreen; // 绿色分量

BYTE rgbtRed; // 红色分量

} RGBTRIPLE;

RGB32 使用32位来表示一个像素,RGB分量各用去8位,

剩下的8位用作Alpha通道或者不用。

通常可以使用RGBQUAD数据结构来操作一个像素,

它的定义为:

typedef struct tagRGBQUAD {

BYTE rgbBlue; // 蓝色分量

BYTE rgbGreen; // 绿色分量

BYTE rgbRed; // 红色分量

BYTE rgbReserved; // 保留字节

} RGBQUAD。

本设计选用液晶屏为2.0inch 176×220 65K色TFT LCD带触摸屏[9],该彩色液晶屏由国内知名的LCM模组提供商信利(Truly)提供。

采用创易电子提供的彩色图像转换软件Image2LCD_29得到图片logo的16位RGB格式数据如表5.5所示:

表5.5  R5G6B5数据

图片:logo 数据:R5G6B5

高八位在前:低八位在后,

XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0X9F,0XE7,0X9F,0XE7,0X9F,0XE7,0X9F,0XEF,0XBF,0XEF,0XBF,0XEF,0XBF,0XEF,0XBF,0XEF,0XBF,0XF7,0XDF,0XF7,0XDF,0XEF,0XDF,0XEF,0XDF,0XEF,0XBF,0XEF,0XBF,0XEF,0XDF,0XE7,0X9F,0XE7,0X9F,0XE7,0X9F,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XE7,0XBF,0XEF,0XBF,0XEF,0X9F,0XEF,0X9F,0XEF,0X9F,0XEF,0XBF,0XEF,0X9F,0XEF,0X9F,0XEF,0XBF,…….

总共77440字节,将这些数据送至LCD模块数据线,配合控制总线,就可以显示图片。

5.2  万能学习型遥控器实现

由于本设计选用触屏仅支持BMP格式的16位真彩图片,一张176*220图片将会占用75.765K字节程序存储器,而STC89C52RC单片机用于程序存储的容量仅为8K字节,虽然可以采取外部扩展存储区的方式加载图片,但会造成较大的浪费,加大了系统设计的复杂度和成本,为此本文尝试设计一种适合本系统的图片压缩方式。

5.2.1  16位RGB图片压缩

如本章基本原理所述,每个像素对应一个16位双字节(R5G6B5),原有BMP数据是一个176*220数组,像素行列位置对应于元素在数组的行列位置,为此考率将相邻的相同颜色的像素合并:定义格式为:RGB+重复个数(小于256),实验过程如下:

选取五张BMP格式彩图,如表5.6所示:

表5.6  测试图片列表

     
   
       

2、按照本文设计的压缩方式压缩,得到的压缩数据如表5.7所示:

表5.7  压缩数据列表

序号 部分数据列举(前18个数)
1 11077    1    4769     1    4544      1

21189    1    21254    1    19236    1

23397    1    21317    1    15171    1

2 10533    1    10565    2    10532    1

8452     1    8419     1    6371     2

8419      1   10532    1    10565    2

3 55069    1    50876    1    52957    2

50877    5    50876    7    50844    1

50876    1    50844    1    50876    2

4 59327    32   59295    1    61375    2

61407    3    63455    1    63487    1

61407    2    61375    2    61407    1

5 65535    255  65535    255  65535    255

65535    255  65535    255  65535    255

65535    255  65535    70   65534    2

3、压缩效果对比,如表5.8所示:

表5.8  压缩效果对比

序号 1 2 3 4 5
原有大小 72.6KB 72.6KB 72.6KB 72.6KB 72.6KB
压缩后大小 104.5KB 101.1KB 74.6KB 79.5KB 36.0KB

由于本压缩方式保留了原有图像的全部信息,所以仅有序号为5的图片压缩效果比较理想,为此可以采取一定的策略,设计更为复杂的压缩方式,简要表述如下:由于图片176*220个像素,假设各个像素颜色各不相同,仍然能空余26816种颜色,可以把这些空余颜色对应的RGB字符定义为命令字(注意命令字是根据不同图片动态分配的),赋予不同的意义,这里仅提供一种压缩格式定义,格式如下:

压缩方式字 区位标志字 复制命令字 区起始命令字 区结束命令字 ……….. 数据 ……….

5.2.2  遥控仿真面板制作

通过图片压缩部分的实验发现,采用51系列8位的单片机控制彩色图像显示显然存在数据量大的问题,为此本文将遥控器的外观模拟部分通过PC机实现,结合matlab GUI编程,制作了遥控器仿真面板,主要用于显示遥控器的相关信息。下面按照两种方式操作面板:

1、控制码变化对照,按照RC-5协议编码要求,每按键一次,控制位就会反转,以开关键为例,连续两次按下,测试结果如表5.9所示:

表5.9  控制码变化对照表

按键:开关键 按键:开关键
   

2、指令码对照,本仿真面板设计了两种状态显示方法:数字和图形,按照RC-5协议要求,按键与编码格式中的指令码一一对应,以按键1、2为例,测试如表5.10所示:

表5.10  指令码变化对照表

按键:1 按键:2
   

由于SAA3010遥控器最主要的编码特点为:同一按键连按两次或者不同按键相继按下,编码格式的控制码(第2位)会反转;不同按键相继按下,编码格式的指令码(最后6位)会改变,故同一按键多次按下和不同按键相继按下会出现如表5.9、表5.10所示的情况。

5.2.3  红外编码还原实现:

本设计的红外学习硬件部分在第3章红外接收解码已经实现,红外编码硬件部分在第4章红外编码发射部分已经实现,触屏显示部分就是单片机控制触屏数据线和控制线,硬件部分比较简单(对应IO口相连),主要在于程序实现,软件流程如图5.2、图5.3所示:

图5.2 主程序流程示意图

图5.3 物理按键操作流程示意图

1、虚拟按键操作与物理按键基本相同,却别仅在于判断按键类型时,物理按键通过单片机引脚判断,而虚拟按键需要判断通过触摸点坐标所在区域来判断。

2、触屏可视区仅有2.2inch,单片机的片程序存储器仅有8K,故系统仅设计上下左右四个方向键和一个确认键,通过设定全局变量来记录当前发射键的信息。

5.3  系统性能检测

在系统性能检测之前,先给出万能学习型红外遥控器实物图,如图5.4所示:

图5.4 万能学习型红外遥控器

1、红外发射;2、LED检测;3、5V稳压电源;4、触摸屏;5、AT89C2051;6、STC89C52RC;7、功能键。

利用本章触屏校验得到的参数作为默认值,采用了两种方法来进行验证:

1、规定五个按键所在区域为有效区,有效区以外的操作均被忽略,按键按下时显示按下状态,弹起时显示弹起状态。

2、虚拟双数码管,如图5.3所示,方向键被按下时更新双数码管状态,需要注意的是,方向键采取循环方式改变双数码管状态,例如左键表示左数码管当前数值减一操作,假若当前值为1,则循环减一操作得到9。

图5.5 彩屏面板设计

经过反复测试,按键区域中心操作有效,按键边界操作灵敏度在5个像素以内,完全满足实用性。

红外发射接收在前述章节已经检验过,这里配合触屏操作再次校验,除红外发射精度略待提高以外,其他性能良好。

学习型红外遥控器设计(5) 万能学习型红外遥控器实现相关推荐

  1. 学习型红外遥控器设计(6) 总结展望

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 6.1  总结 本设计完成的万能学习型红外 ...

  2. 学习型红外遥控器设计(2) 红外遥控学习方案设计

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 2.1  设计目标及要求 本文设计的万能学 ...

  3. 展示型app用什么型号服务器,APP版式设计教程:信息展示型UI界面设计的四种类型...

    作为一名专业的APP设计师,版式设计也是我们日常设计当中的一项基本功. 那你到底对版式设计有多深的理解呢? 你现在可以摸着旁边妹子的手说,什么是版式设计ma ? 版式设计又分为哪几种呢? 这个时候妹子 ...

  4. 学习型红外遥控器设计(1) 绪论

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 1.1  选题的目的意义 上世纪八十年代初 ...

  5. 学习型红外遥控器设计(0) 摘要

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 摘    要 随着家用电器种类的增加和无线 ...

  6. 学习型红外遥控器设计(4) 红外遥控编码还原

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 如方案设计所述,制作红外编码发射装置,该装 ...

  7. 学习型红外遥控器设计(3) 红外遥控解码学习

    学习型红外遥控器设计(0) 摘要   (1) 绪论  (2) 方案设计   (3) 遥控解码   (4) 编码还原  (5) 硬件实现   (6) 总结展望 如方案设计所述,制作红外接收解码装置,该装 ...

  8. 电系魔法师成长之路—仪器仪表学习(二)设计T型和Π型衰减器

    电系魔法师成长之路-仪器仪表学习(二)设计T型和Π型衰减器 一.用途 ​ 衰减器是一种提供衰减的电子元器件, 广泛地应用于电子设备中,它的主要用途是:(1)调整电路中信号的大小:(2)在比较法测量电路 ...

  9. c# 设计原则需要学习吗_向最好的学习:产品设计原则

    c# 设计原则需要学习吗 重点 (Top highlight) In my job as Design Team Lead at SimpleSite, I've recently been part ...

最新文章

  1. 我常用的那些linux命令
  2. pytorch | transpose、permute、view、contiguous、is_contiguous、reshape
  3. 计算机图形学二维变换知识点,计算机图形学 二维变换及二维.ppt
  4. 基于使用AspectJ实现AOP,注解AOP开发(基于xml文件、基于注解)
  5. DCX读书报告Bring structure to the web有感
  6. 何时才使用https访问项目
  7. no segments* file found in org.apache.lucene.store.SimpleFSDirectory
  8. 多线程调用同一个对象的方法_这一次,让我们完全掌握Java多线程(2/10)
  9. 通俗易懂的进程与线程解释
  10. 2021新款外卖返利系统源码,美团/饿了么返利三级分销源码外卖返利源码下载
  11. 最简单DIY基于ESP8266的国产WS2812智能彩灯④(在网页用按钮点亮)
  12. 红外倒车雷达原理图_超声波倒车雷达电路图及原理分析
  13. Python | 阿尔法程序的控制结构
  14. SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
  15. 推荐使用rpx替代upx的公告
  16. 文本文件后缀修改为 .html
  17. win10 游戏全屏闪退桌面解决方法
  18. 用数万元购买个人网站域名是否值得?
  19. gt-p7500 Android 4,三星GT-P7500 线刷固件包可救砖 刷机教程
  20. 20年前iPod改变了世界,20年后它变成了怀旧机器

热门文章

  1. Python的ABC模块
  2. android 游戏sdk 浮标,华为游戏浮标不显示或显示异常
  3. 出现org.apache.http.NoHttpResponseException
  4. h5---新增的结构性元素(header、footer、nav、article、section、aside、time、progress和meter元素进度条)
  5. 关于在python的tkinter界面中镶嵌mayplotlib动态图
  6. 哔哩哔哩投稿工具暂时无法连接到服务器,哔哩哔哩投稿工具
  7. 合理用药功能在医院信息系统(HIS)中的应用
  8. Unity学习过程中的问题解答汇总(一)
  9. 二氧化硫脲的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 磁同步电机(pmsm,无位置传感器控制(扩张状态观测器,超螺旋滑模,扩展卡尔曼滤波) 脉振高频注入(有方波和正弦两种)仿真模型。