如何编写程序让红外遥控器在stm32的lcd显示键值

如何编写程序让红外遥控器在stm32的lcd显示键值,第1张

用sprintf函数啊,把数字“打印”到一个数组里,然后用LCD-showstring来显示就可以了。
char buf[30];
sprintf(buf,"Frequency=%dHz",Frequency);

可以打开手机摄像头对着红外遥控器的发射头照射,然后按下遥控器就能看到。因为摄像头里的感光元件对于红外线敏感,能够产生影像,在手机显示屏应能看到遥控器发出白色的光,若没有则遥控器有问题,应维修或更换,从而可判断故障在遥控器还是在接收设备。

红外线(Infrared)是波长介于微波与可见光之间的电磁波,波长在760纳米(nm)至1毫米(mm)之间,比红光长的非可见光。高于绝对零度(-27315℃)的物质都可以产生红外线。我们把红光之外的辐射叫做红外线(紫光之外是紫外线),肉眼不可见。

所以通常情况下我们在使用电视红外遥控器里按下的瞬间只看到发射头有一个红色的点在闪烁,而看不到整个光束。

红外遥控器使用方法:把下面用螺丝刀拧开,装上三节7号电池,然后把盖子盖上。将红外线接收器的线连在电池箱上面,将马达的线连在红外线接收器的端口接处,然后将红外线接收器的频道调到红外线遥控器相同的频道上,然后将电池箱的开关打开,然后就可以遥控了。

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。发射机一般由指令键(或 *** 作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。

我们的遥控器是一个带有编码功能的信号发生器当按下某一个按键后,电路首先是识别此按键的键码然后通过一系列运算,算出他的发射编码最后以二进制数的方式通过遥控器头部的红外线发射管发出一般是38KHZ的频率加上这个编码载波;
与此同时电视的那一端(当然家用的VCD,空调等也是一样的)有一个红外线接收元件,接受到遥控器发过来的那一组编码信号后把他传给内部的一块CPU(单片机)然后在通过解码,来确认发的这组数据的功能,从而实现对电视的控制

手机使用红外技术,通过智能遥控 APP 与家电连接,仅需一部手机,即可方便遥控各类家电(如空调、机顶盒、DVD、电视、相机、投影仪、网络盒子)。
如果您使用的是华为手机,以华为Mate 30手机为例:
一、添加和使用遥控器
1、进入实用工具 > 智能遥控 > 添加 ,选择遥控器类型(电视、空调、机顶盒、相机、网络盒子、DVD、投影仪)和品牌。
2、将手机顶部的红外线发射孔对准家电,根据提示添加要遥控的家电并保存。
3、添加成功后,点击开机图标,即可使用。
二、开启或关闭遥控器按键音
进入智能遥控>四点图标>设置,关闭或开启按键声音和振动提示。

红外线遥控器解码程序
2007-02-07 18:52 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。现在工业设备中,也已经广泛在使用。。。。。

1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制 *** 作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
2 遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明,现以3310组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0565ms、间隔056ms、周期为1125ms的组合表示二进制的“0”;以脉宽为0565ms、间隔1685ms、周期为225ms的组合表示二进制的“1”
上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,
3310产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的 *** 作码和8位的 *** 作反码用于核对数据是否接收准确。
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个45ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以056ms的低电平开始,不同的是高电平的宽度不同,“0”为056ms,“1”为168ms,所以必须根据高电平的宽度区别“0”和“1”。如果从056ms低电平过后,开始延时,056ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比056ms长些,但又不能超过112ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(112ms+056ms)/2=084ms最为可靠,一般取084ms左右即可。
根据红外编码的格式,程序应该等待9ms的起始码和45ms的结果码完成后才能读码。

接收器及解码
LT0038是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。

下面是一个对51ISP编程实验开发板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
ORG 0000H
AJMP MAIN;转入主程序
ORG 0003H ;外部中断P32脚INT0入口地址
AJMP INT ;转入外部中断服务子程序(解码程序)
;以下为主程序进行CPU中断方式设置
MAIN:SETB EA ;打开CPU总中断请求
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
SETB EX0 ;打开INT0中断请求
;以下对单片机的所有引脚进行初始化,全部设置成高电平
MOV P2,#11111111B
AJMP $
;以下为进入P32脚外部中断子程序,也就是解码程序
INT: CLR EA ;暂时关闭CPU的所有中断请求
MOV R6,#10
SB: ACALL YS1;调用882微秒延时子程序
JB P32,EXIT;延时882微秒后判断P32脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB P32, $ ;等待高电平避开9毫秒低电平引导脉冲
ACALL YS2 ;延时474毫秒避开45毫秒的结果码
MOV R7,#26;忽略前26位系统识别码
JJJJA:JNB P32,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P32;将P32引脚此时的电平状态0或1存入C中
JNC UUUA;如果为0就跳转到UUUA
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUUA: DJNZ R7,JJJJA
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#2;接收从1AH到1BH的2个内存,用于存放 *** 作码和 *** 作反码
PP: MOV R3,#8;每组数据为8位
JJJJ: JNB P32,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P32;将P32引脚此时的电平状态0或1存入C中
JNC UUU;如果为0就跳转到UUU
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUU: MOV A,@R1;将R1中地址的给A
RRC A;将C中的值0或1移入A中的最低位
MOV @R1,A;将A中的数暂时存放在R1数值的内存中
DJNZ R3,JJJJ;接收满8位换一个内存
INC R1;对R1中的值加1,换下一个RAM
DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
MOV A,1AH
CPL A;对1AH取反后和1BH比较
CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!
CLR P20;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL YS2
LCALL YS2
LCALL YS2
SETB P20;蜂鸣器停止(使用时可以将J2的YINYUE脚用跳线接J4 的XS1脚才可以使用蜂鸣器)可以看原理图
EXIT: SETB EA ;允许中断
RETI ;退出解码子程序
YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2;延时程序3,精确延时1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
以上程序紧供参考。

0A 01
11 12 13 14
15 16 17 18
19 10 1A 1B
0E 02 03 1C
06 04 05 0C
0D 08 09 1D
00 1F 1E 0B
07 0F
这是按照红外遥控器按键的实际位置给出的32个按键的键值(16进制)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13374677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-24
下一篇 2023-07-24

发表评论

登录后才能评论

评论列表(0条)

保存