红外遥控器的基本原理
• 红外线的特点人的眼睛能看到的可见光,若按波长排列,依次(从长到短)为红、橙、
黄、绿、青、蓝、紫,红光的波长范围为 0.62μm~0.7μm,比红光波长还长的光叫红外线。红外线遥控器就是利用波长 0.76μm~1.5μm之间的近红外线来传送控制信号的。
红外线的特点是不干扰其他电器设备工作,也不会影响周边环境。电路调试简单,若对发射信号进行编码,可实现多路红外遥控功能。
红外线发射和接收
人们见到的红外遥控系统分为发射和接收两部分。发射部分的发射元件为红外发光二极管,它发出的是红外线而不是可见光。
常用的红外发光二极管发出的红外线波长为 940nm 左右,外形与普通φ5mm 发光二极管相同,只是颜色不同。一般有透明、黑色和深蓝等三种。判断红外发光二极管的好坏与判断普通二极管一样的方法。单只红外发光二极管的发射功率约 100mW。红外发光二极管的发光效率需用专用仪器测定,而业余条件下,只能凭经验用拉距法进行粗略判定。
接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。然而现在不论是业余制作或正式的产品,大都采用成品的一体化接收头。红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,性能稳定、可靠。所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可
- 1 -
西安科技大学高新学院 毕业论文
靠性大大提高。
红外遥控器的协议
• 鉴于家用电器的品种多样化和用户的使用特点,生产厂家对红外遥控器进行了严格的
规范编码,这些编码各不相同,从而形成不同的编码方式,统一称为红外遥控器编码传输协议。了解这些编码协议的原理,不仅对学习和应用红外遥控器是必备的知识,同时也对学习射频(一般大于300MHz)无线遥控器的工作原理有很大的帮助。
到目前为止, 笔者从外刊收集到的红外遥控协议已多达十种, 如: RC5、 SIRCS、 SONy、 RECS80、Denon、NEC、Motorola、Japanese、SAMSWNG 和 Daewoo 等。我国家用电器的红外遥控器的生产厂家,其编码方式多数是按上述的各种协议进行编码的,而用得较多的有 NEC协议。
红外遥控器的结构特征
• 红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组 成。
遥控专用集成电路(采用 AT89S52 单片机)是发射系统的核心部分,其内部由振 荡电路、定时电路、扫描信号发生器、键输入编码器、指令译码器、用户码转换器、 数码调制电路及缓冲放大器等组成。它能产生键位扫描脉冲信号,并能译出按键的 键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由 38KHZ 的载 波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。
在红外接收器中,光电转换器件(一般是光电二极管或光电三极管,我们这里 用的是 PIN 光电二极管)将接收到的红外光指令信号转换成相应的电信号 。此时的信号非常微
- 2 -
西安科技大学高新学院 毕业论文
弱而且干扰特别大,为了实现对信号准确的检测和转换, 除了高性能的红外光电转换器件,还应合理地选择并设计性能良好的电路形式。 最常用的光电转换器件是光电二极管,当光电二极管 PN 结的光敏面受到光照射 后,PN 结的半导体材料吸收光能,并将光能转换为电能。当光电二极管上加有反向 电压时,二极管中的反向电流将随入射光照强度的变化而变化,光的辐照强度越大, 其反向电流越大。也就是说,光电二级管的反向电流随入射的光脉冲作同频率的变 化。
红外遥控器的应用
• 红外遥控器由于受遥控距离、角度等影响,使用效果不是很好, 如采用调频或调幅
发射接收编码,则可提高遥控距离,并且没有角度影响。红外遥 控发射和接收模块可以用在室内红外遥控中,它不影响周边环境、不干扰其它电器 设备。由于其无法穿透墙壁,所以不同房间的家用电器可使用通用遥控器而不会产 生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入 工作;编解码容易,可进行多路遥控。现在红外遥控在家用电器、室内近距离遥控中 得到了广泛的应用。另外模块还可以用在其他红外遥控系统中,应用前景十分广阔。
51单片机设计的红外线遥控器电路图
及工作原理
你家里是否有一个电视机遥控器或者空调机遥控器呢?你是否也想让它遥控其他的电器甚至让它遥控您的电脑呢?那好,跟我一起做这个“红外遥控解码器”。
该小制作所需要的元件很少:单片机TA89C2051一只,RS232接口电平与TTL电
- 3 -
西安科技大学高新学院 毕业论文
平转换心片MAX232CPE 一只,红外接收管一只,晶振11.0592MHz,电解电容10uF4只,10uF一只,电阻1K1个,300欧姆左右1个,瓷片电容30P2个。发光二极管8个。价钱不足20元。
电路图及原理:
主控制单元是单片机AT89C2051,中断口INT0跟红外接受管U1相连,接收红外信号的脉冲,8个发光二极管作为显示解码输出(也可以用来扩展接其他控制电路),U3是跟电脑串行口RS232相连时的电平转换心片,9、10脚分别与单片机的1、2脚相连,(1脚为串行接收,2脚为串行发送),MAX232CPE的7、8脚分别接电脑串行口的2(接收)脚、3(发送脚)。晶振采用11.0592MHz,这样才能使得通讯的波特率达到9600b/s,电脑一般默认值是9600b/s、8位数据位、1位停止位、无校验位。
电路就这么简单了,现在分析具体的编程过程吧。
如图所示,panasonic遥控器的波形是这样的(经过反复测试的结果)。
开始位是以3.6ms低电平然后是3.6ms高电平,然后数据表示形式是0.9ms低电平0.9ms高电平周期为1.8ms表示“0”, 0.9ms低电平 2.4ms高电平周期为3.3ms表示“1”,编写程序时,以大于3.4ms小于3.8ms高电平为起始位,以大于2.2ms小于2.7ms高电平表示“1”,大于0.84ms小于1.11ms高电平表示“0”。因此,我们主要用单片机测量高电平的长短来确定是“1”还是“0”即可。定时器0的工作方式设置为方式1:mov tmod,#09h,这样设置定时器0即是把GATE置1,16位计数器,最大计数值为2的16次方个机器周期,此方式由外中断INT0控制,即INT0为高时才允许计数器计数。比如:
- 4 -
西安科技大学高新学院 毕业论文
jnb p3.2,$
jb p3.2,$
clr tr0
这3条指令就可以测量一个高电平,接下来读取计数值TH0,TL0就可以分辨是起始位还是“1”或“0”。在确定码表之前,您可以使用P0口的8个发光二极管来显示编码,16位编码分两次显示:
mov p0,keydata
acall delay_1s ;//1ms延时子程序
mov p0,keydata+1
ljmp main
根据P0相继的两次显示的编码,记录每个按键的编码,形成编码表,即遥控器编码的解码完毕。码表确定之后,以后接收到遥控器的编码之后,就与码表比较,找到匹配的码项,并把该码项对应的顺序号输出到P0口,同时也把顺序号向串行口输出到电脑,电脑接收该数据后由串口软件决定如何处理。
程序不长,下面是完整的程序和注释:(先看流程图)
keydata equ 30h ;//该地址和31H地址用来存放遥控器按键编码。
- 5 -
西安科技大学高新学院 毕业论文
org 00h
main:
mov keydata,#0 ;// 清零
mov tmod ,#09h ;//设置定时0方式1,GATE=1
mov r7,#0 ;//计数器,用来计数是否满8位
mov r6,#0 ;//计数器,用来计数是否满2字节(解16位编码)
jb p3.2,$ ;//是否为低电平
again: ;//如果为低,继续往下面执行
mov tl0,#0 ;//清零TL0
mov th0,#0 ;//清零TH0
setb tr0 ;//开启定时器0
jnb p3.2,$ ;//等待高电平到来
jb p3.2,$ ;//高电平到来,此时开始计数
- 6 -
西安科技大学高新学院 毕业论文
clr tr0 ;//高电平结束,停止计数
mov a,th0 ;//读取th0 值,TL0忽略不计
clr c ;//
subb a,#12 ;//
jc again ;//th0<12则转,即小于3.4ms,你可以算一下这个时间
mov a,#14 ;//
clr c ;//
subb a,th0 ;//和14比较,如果TH0>14则大于3.8ms
jc again ;//大于3.8ms,从新再检测
nextbit: ;//起始位找到了,然后下一位
mov tl0,#0 ;//
mov th0,#0 ;//
setb tr0 ;//启动定时器
- 7 -
西安科技大学高新学院 毕业论文
jnb p3.2,$ ;//等待高电平
jb p3.2,$ ;//高电平到来,此时开始计数
clr tr0 ;//高电平结束,停止计数
mov a,th0 ;//读取计数值,TL0忽略不计
clr c ;//
subb a,#8 ;//th0和8比较
jc next ;;;;//若 <2.2ms则转,再判断是否大于0.84ms
mov a,#10 ;//再跟10比较
clr c ;//
subb a,th0 ;//
jc again ;;;;;;;//若 >2.7ms,则放弃,从新检测
mov a,keydata ;// 符合大于2.2ms 小于2.7ms,即为“1”
setb c ;//C = 1
- 8 -
西安科技大学高新学院 毕业论文
rrc a ;//把1移位进A
mov keydata,a ;//保存
inc r7 ;//计数器加1
cjne r7,#8,nextbit ;//是否满8位
inc r6 ;//计数加1
cjne r6,#2,last8 ;//是否满两字节
sjmp seach ;//不满两字节,再新采集
last8: ;//满1字节,再接下来第二字节
mov keydata+1,a ;//把第一字节编码数据保存到31h里
mov r7,#0 ;//计数器R7清零
sjmp nextbit ;//继续采集数据
next: ;//小于2.2ms时转到这里
mov a,th0 ;//读取计数值TH0
- 9 -
西安科技大学高新学院 毕业论文
swap a ;//高4位与低4位对换
mov r1,a ;//保存到R1
anl tl0,#0f0h ;//取TL0高4位,低4位忽略不计
mov a,tl0 ;//
clr c ;//
rrc a ;//
rrc a ;//
rrc a ;//
rrc a ;//
add a,r1 ;//
mov r1,a ;//
subb a,#30 ;//以上几行是把TH0的低4位和TL0的高4位合并为1字节作为计数值
jc nextbit ; //判断是否 <0.84ms,是则放弃,继续采集
- 10 -
西安科技大学高新学院 毕业论文
mov a,r1 ;//否
clr c ;//
cjne a,#64,continue ;//跟64比较
continue: ;//
jnc nextbit ; //a>64表示采样值 >1.11ms mov a,keydata ;//否则 ,符合位“0”
clr c ;//C = 0
rrc a ;//把零右移进A
mov keydata,a ;//保存
inc r7 ;//计数器加1
cjne r7,#8,nextbit ;//是否满8位
inc r6 ;//计数器加1
cjne r6,#2,last_8 ;//是第一字节已经满
- 11 -
放弃
西安科技大学高新学院 毕业论文
sjmp seach ;//
last_8: ;//如果为第二字节
mov keydata+1,a ;//则保存第一字节到31h
mov r7,#0 ;//清零R7
sjmp nextbit ;//
seach: ;//匹配按键编码
mov r0,#-2 ;//按键编码字节个数计数器
mov r1,#-1 ;//按键顺序计数器
seach1: ;//
inc r0 ;//
seach2: ;//
inc r0 ;//
inc r1 ;//
- 12 -
西安科技大学高新学院 毕业论文
cjne r1,#29,compare ;//是否R1=29
sjmp exit0 ;//
compare: ;//开始匹配
mov a,r0 ;//
mov dptr,#keycode ;//地址指针指向码表首址
movc a,@a+dptr ;//取码
cjne a,keydata,seach1 ;//比较
inc r0 ;//R0+1,再比较下一字节(每个按键编码为2字节)
mov a,r0 ;//
;mov dptr,#keycode ;//
movc a,@a+dptr ;//比较
cjne a,keydata+1,seach2 ;//是否匹配,不匹配则继续跟下一字节比较
mov p1,r1 ;//如果匹配,把按键顺序号输出到p1
- 13 -
西安科技大学高新学院 毕业论文
send: ;//
mov tmod,#20h ; //设置timer 1,mode 2
mov tl1,#0fdh ;//设置定时器初值
mov th1,#0fdh ;//
mov scon,#01010000b;//以上设置,即设置串口波特率系数为:9600,8,1,0
setb tr1 ;//启动定时器1
loop_s: ;//
mov sbuf,r1 ;//把R1(按键顺序号)输出到串口
jnb ti,$ ;//等待是否发送完毕
clr ti ;//发送完毕,清零TI
exit0: ;//
ljmp main ;//循环
keycode: ;//每两字节代表一个按键的编码
- 14 -
西安科技大学高新学院 毕业论文
db 11111000b,00000000b, 11111001b,11000000b
db 11111100b,11000000b, 11111010b,00100000b
db 11111010b,01000000b, 11111010b,10000000b
db 11111010b,10100000b, 11111010b,11100000b
db 11111011b,00000000b, 11111011b,01000000b
db 11111011b,01100000b, 11111111b,10100000b
db 10001100b,10001110b, 10001100b,10101110b
db 10001101b,11001110b, 11111100b,10000000b
db 11111100b,01000000b, 11111100b,10100000b
- 15 -
11111100b,00000000b,
11111010b,00000000b,
11111010b,01100000b,
11111010b,11000000b,
11111011b,00100000b,
11111111b,01100000b,
10001101b,11101110b,
11111000b,11100000b,
11111001b,10100000b,
西安科技大学高新学院 毕业论文
db 11111100b,01100000b
end
---------------------------------------------------------------------------------
各种遥控器编码不同,如果你采用的是其他遥控器,修改几个参数即可(当然按键的编码表肯定不同了),即计数器的值不同,不过有的遥控器有机器码(机器码每个按键都是一样的),此时可以跳过机器码的采集。最后有一点想提一下的是,刚开始不知道遥控器的编码是比较麻烦的,笔者在“双龙电子“网站下载了个声卡示波器,用他可以一目了然观看遥控器的波形,测量其脉冲宽度,有了它确实方便很多。
附 录A
单通道红外遥控发射电路
红外遥控电路原理图
- 16 -
西安科技大学高新学院 毕业论文
阅读中外文献资料摘要
李军. 检测技术及其仪表. 中国轻工业出版社
贺红娟 等. 汇编语言程序设计教程. 清华大学出版社
孙亮 杨鹏. 自动控制技术. 北京工业大学出版社
刘守义 钟苏. 数字电子技术. 西安电子科技大学出版社
周雪. 模拟电子技术. 西安电子科技大学出版社
杨宏丽 王静霞. 单片机基础教程. 人民邮电出版社
林伸茂. 8051单片机彻底研究经验篇.人民邮电出版社
刘文涛. MCS-51单片机培训教程.电子工业出版社
- 17 -
[1] [2] [3] [4] [5] [6] [7] [8] 西安科技大学高新学院 毕业论文
总结与展望
回顾历时几个月的从理论准备,到实践准备,到最后的撰写论文、定稿,此时,我思绪万千,收益颇丰,既有对已有知识和技能的巩固,又有对新知识的理解和掌握,同时也提高了我的动脑和动手能力,使我了解了设计的步骤,获得了设计过程中的一些经验。主要有以下几点:
在这次毕业设计中,我采用理论和实际毕业设计中遇到的相结合的方法,将过去所学的知识应用到设计当中,很好的解决了毕业设计中遇到的各种问题。这对我来说不仅是对所学知识的理解、巩固和加深,而且增强了应运所学知识解决实际问题的能力。
此次毕业设计中,我了解了许多以前从未接触过的知识,开阔了视野,增长了见识,为以后的工作打下了坚实的基础。
这次毕业设计,端正了我的学习态度,使我更深刻的认识到团结协作和虚心求教的重要性,这是完成一份工作所必需的,也是做好一份工作的前提。
致谢
随着毕业论文的完成,我的大学生活即将结束。借此机会,我要对在大学期间帮助过的人表示深深的感谢。
首先感谢我的指导老师,在他的悉心指导下我顺利完成了我的论文设计。他的治学严谨、要求严格的作风,对我的求学态度和目标产生了深远的影响,在此期间,老师在学术上的孜孜不倦的指导使我受益匪浅。而且,老师在这次毕业论文的资料收集和论文写作上
- 18 -
西安科技大学高新学院 毕业论文
给了我相当大的帮助,所以我再次向老师表示深深的感谢。
同时,我还要感谢和我一起努力的同学,是他们给了我很多宝贵的资料,使我能够顺利的了解到最新信息,对我的论文完成有很大的帮助。除此之外,我还要感谢各位任课老师对我在校期间的悉心教导,请在这里接受我诚挚的谢意!
最后,感谢母校对我的培养,祝愿我的母校明天更加辉煌!
- 19 -
因篇幅问题不能全部显示,请点此查看更多更全内容