基于C8051F的学习型红外遥控器的设计

2022-09-12

1前言

红外遥控器在日常生活中的应用非常广泛的非接触式的控制器设备。工作时受外部环境的影响小,不影响周边的环境,不干扰其他电器设备的工作。因此是一种应用普遍的设备。

这里实验要求实现可以接收所有红外遥控器的信号,并且实时再生学习到的红外信号。采用的C8051F系列芯片特有PCA和内部FLASH使得系统的实现具有四个显著的特点,这在后面有具体的分析介绍。因此硬件除了C8051F系列芯片外,还有红外信号接收头和红外信号发送器。

2遥控器发射与接收原理

本实验可以划分成两大模块。一是学习红外遥控器信号;二是再生红外信号。

接收部分的系统结构如图1所示。

红外接头对接收到的信号进行放大、检波、整形,将调制在38KHz上的载波的红外脉冲信号解调,并反相后输入到芯片的管脚。单片机从管脚上接收到电平的变化引起中断,从两个电平变化的间隔来得出脉冲宽度。之后进行解码,如果两次接收匹配正确的话,表明学习成功,将红外信号存入单片机内部的FLASH,完成信号的学习。

发送部分的系统结构图如图2所示。单片机接收到从PC机发送过来的再生红外信号的命令和要发送的信号的序号。单片机查询FLASH,从FLASH中取出编码,设置PCA为频率输出模式,调制出38kHz的载频,通过一体化的红外发送器发送出去,从而实现红外信号的再生。

3系统的实现

一般的实现手段为:通过集成的红外接收头测得红外脉冲宽度,接着解码,再将学习成功后的信息存储在E2PROM,再生信号时是从E2PROM中取出,由外接的晶振电路产生红外信号所需要的载频。[1]

可见,通常的手法需要增加存储电路和晶振电路,这些外围电路不仅增加成本,而且增加功耗,不利于系统的稳定。

本实验主要针对以上两点进行改进。8051F系列芯片内部带有10KB的FLASH程序存储器,可以实现IAP功能,即在系统运行的时候可以修改FLASH程序存储器的数据。另外,该芯片系列除具有4个定时器外,还有PCA,它其中的五种模式中的频率输出模式(Frequency Output Mode)方便用户编程得出各种载频。

总之:器件的选用方便了该实验的实现,也使得实验具有四个显著的特点。

本实验具有四大特色,涉及到红外信号的接收方法、数据的存储表示和存储空间的矛盾、存储介质的选择和实时学习的矛盾、载频的产生和功耗矛盾这四个方面。这几个矛盾,在实验中很好得到解决。下面具体分析这四个问题,并给出解决的方法。

红外信号的接收手段类似,同样是根据脉冲的上下跳沿中断来测量脉冲的宽度。稍有不用的是大部分实验采用的是定时器外部中断,占用了有限的定时器资源。该实验采用的是PCA的捕捉模式(Capture Mode)来测量红外脉冲的宽度。

虽然只是实现的手法不同,但是应用更为灵活。因为外部中断只能在P0的8个管脚上实现,而PCA却可以在20个管脚上实现,节省了定时器资源,拓展应用的范围。

红外接收中的另一个难点是要学习任意的红外遥控装置。因为在所有的遥控信号中包含起始信号、结束信号,厂家信息等等内容。这里要面对所有的红外遥控器,因此认为这些也是实验中要学习存储的内容。信息量增加引起存储可见有限的矛盾,这就是数据压缩的问题。

由上讨论得知无法通过删除一些厂商的信息来精简数据量。要存储所有的脉冲宽度,这无疑是很大的数据量,也没有人会这么存储。实验中用1表示高电平,0表示低电平,用0 1序列来描述红外脉冲。那么,多长才是一个1,多长才是一个0呢?有实验根据已知的高低电平的占宽比来解出01[2],但是假设这个占宽比改变了呢,是否解出来的01序列仍是正确的?答案未知。所以本实验不建立在已知的信息上。

实验接收红外信号,从原始的脉冲宽度中,比较得出最小的脉冲宽度,因为该脉冲宽度一定可以被其他的脉冲宽度值整除,也就是说它是最小的基数。所以实验用N位0/1代表N倍最小脉冲宽度,保存由此组成的0 1序列。如图3所示,根据高低脉冲编码成0 1序列。

除了保存红外信号的01序列,还应该保存最小脉冲宽度,脉冲的长度等。采用的数据结构如图4所示:

图LENGTHn表示01序列的字节长度,SIGNALn表示信号的内容

本实验的另一个特点即使用了芯片内部的FLASH存储器,替代传统的E2PROM。好处不仅是省略了外围电路的设计,而且可以在线编程,将刚学习到的红外信号再生出来。

图5为FLASH读写的原理图。FLASH空间是程序存储器,该芯片的指令系统没有写ROM的指令。FLASH的在线编程能力是依靠特殊的电路来实现的。该电路就像一个开关,根据接收到的命令执行不同的操作。写FLASH时,有一定的写顺序,将ROM空间映射为外扩的RAM空间,使用MOVX指令进行写操作。读FLASH时,为读程序代码空间,使用MOVC指令。[3,4]FLASH存储器很大程度上方便了实验的实现。

红外信号的再生传统法是在外接一晶振和外围电路产生38kHz的载频,系统功耗增加发热量也增加。C8051F系列芯片的PCA具有频率输出模式,可以由用户编程获得所需要的各种频率的载频,无需外接电路,可靠方便简单,又低功耗,提高系统的稳定性。

本实验采用的芯片具有内部非易失存储器FLASH方便大数据的存储,特有的PC A捕捉方式和频率输出模式方便红外信号的接收和再生,以上特性使得设备简单稳定。

摘要:本文介绍了一种万能红外遥控器的设计原理。利用C8051F系列单片机特有的可编程计数阵列(Programmable Counter Array-PCA)的捕捉模式实现对红外遥控器的接收,PCA的频率输出模式来再生学习到的红外信号,该系列的单片机提供FLASH用来存储学习到的信号,因此具有实时学习所以红外遥控器的能力。该实验已经成功的学习各种红外遥控器的信号。

关键词:C8051F,PCA,单片机,学习型红外遥控器

参考文献

[1] 李晋,王玲.学习型遥控器设计.电子测量技术,2006,2.29(1)

[2] 戴培山等.基于keil c51的红外遥控器解码涉及.自动化与仪器仪表,2003(6).

[3] 潘琢金译.C8051F320/1混合信号ISP FLASH微控制器数据手册.Revl.1, 2004.

[4] 陈连坤.嵌入式系统的设计与开发.北京:清华大学出版社.北京交通大学出版社, 2005,7.

上一篇:设计阶段工程造价的控制下一篇:网络病毒防治技术在计算机管理中的应用分析