利用单片机进行红外线编、解遥控_第1页
利用单片机进行红外线编、解遥控_第2页
利用单片机进行红外线编、解遥控_第3页
利用单片机进行红外线编、解遥控_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用单片机进行红外线编、解码遥控目前,彩电和VCD已走进千家万户,而其所带的红外线遥控器给这些家电的操作带来了极大的方便。对于单片机爱好者来说,若能知道家电遥控器的原理并将其运用到单片机制作中,将是一件非常美妙的事情,比如家里常有几个遥控器,操作起来还是有点烦,能不能用单片机将这些遥控器合并起来甚至拿遥控器来做单片机系统的无线键盘答案是肯定的。为了实现以上目的,本文将首先介绍目前家电遥控器常用的编码方式,然后介绍怎样用单片机来实现红外线编解码遥控。本文只介绍彩电、VCD遥控器常用的编码方式,而空调的遥控器由于带有温度值和时间等参数,码元非常长,本文不作介绍。笔者利用红外线读码仪检测了大量的彩电、VCD遥控器的编码,发现大概有以下两种编码格式(FORMAT)。第一种格式为1913、9012、1621格式;第二种为3010格式。其中尤以第一种格式用得最多。要识别一个遥控器的格式很简单,只要把遥控器拆开,看它所用的集成块型号就知道,比如UPD1621、SAA3010,其格式就是1621、3010格式。下面分别具体介绍这两种编码格式。第一种格式以1621为例,当按下遥控器上的某个按键时,遥控器将发射出一帧数据,帧数据的编码格式由三部分组成引导码(LEADCODE)、客户码CUSTOMCODE和数据码(DATACODE),见图1。对于一个遥控器来说,每个按键所发射的帧数据的客户码总是一样的,有区别的只是数据码。其中9012和1913、1621格式的唯一区别就是引导码的高电平宽度不一样,9012格式为45MS,1913和1621格式为9MS。帧结构中的客户码和数据码各有两个字节,第一个字节和第二个字节互为按位取反,其中客户码的高4位与低4位又互为按位取反,如帧结构0FF0AA55。0码和1码的结构见图2,0码由056MS高电平和0565MS低电平组合而成、1码由056MS高电平和169MS低电平组合而成。码元的高电平信号采用38KHZ矩形波(载波)调制发射,载波占空比(DUTY)为1/3,低电平无信号发射。第二种格式3010与第一种格式截然不同,它是以信号脉冲的上升沿和下降沿来分别表示1码和0码的。其帧格式见图3,每一帧由起始位STARTBIT、扩展位ENLARGEDBIT、翻转位TOGGLEBIT、系统位SYSTEMBIT和数据位DATABIT组成。其位码结构见图4。码元高电平也是采用38KHZ载波调制发射。前面我们了解了遥控器的编码格式,那么我们用单片机来进行编解码就是一个怎样来写程序的问题,而硬件非常简单。我们以1621格式为例看看怎样用单片机来模拟它以及程序调式的一些技巧。单片机使用AT89C2051,晶振为12MHZ,电路如图6A。我们仅使用了单片机的一个I/O口,且不必加任何驱动电路。当要发射信号比如0码,事实上P30口上的电平状态如图5所示,码元的高电平时就是载波信号,码元的低电平时P30口为高电平,不发射信号。38KHZ载波的周期为263微秒,由于单片机最多只能精确到1微秒,经笔者实践,载波周期取27微秒时发射信号最稳定,发射距离大于8米。编程时关键是如何准确地在P30口上产生38KHZ载波。对于用C51编的程序,由于不知道其汇编代码,很难精确地取得周期为微秒级的信号,即使是用定时器,进出中断程序以及重装计数初值都要耗费一定的时间,也难精确到微秒。笔者采用循环延时的方法来产生载波,用断点法来调式。通常使用的KEILC编译器都有程序调式功能,调式程序时启动定时器0,并设为方式1,不必开放中断,在产生载波的循环子程序里设置一个断点,当程序第一次运行到断点时,记下计数器的值,接着继续运行程序,再只次运行到断点时又记下计数器的值,两值相减就是载波周期了,反复改变延时时间直至载波周期为27微秒。当我们没有测量仪器时,这种方法不失为测量信号周期和时间的一种好方法。当然,码元的宽度亦可采用这种方法调式。以下是笔者编是例程,在KEILC编译器623版上编译通过。INCLUDE/晶振为12MHZSBITLEDP30SBITKEYP37/帧数据放数组DATA里UNSIGNEDCHARDATA40X00,0XFF,0X1F,0XE0VOIDTRANSMITINTC1,INTC2/发射子程序/MAINUNSIGNEDCHARI,JWHILE1WHILEKEY/没键按下,等待TRANSMIT340,565/发射引导码FORI0IJ/1码ELSETRANSMIT19,70/0码TRANSMIT19,17WHILEKEY/等待释放按键/VOIDTRANSMITINTC1,INTC2/C1为高电平宽度UNSIGNEDCHARI/C2为低电平宽度DOLED1/产生38KHZ载波FORI8I0I/延时18USLED0WHILEC1LED1WHILEC2利用单片机对红外线信号进行解码也很简单,电路如图6B,一体化红外线接收头内部集成有解调、信号放大和整形等电路,要注意的是在没有红外线信号时,其输出端为高电平,有信号时为低电平,故其输出信号电平正好与发射端相反。因而接收头输出的码元信号电平有区别的是高电平宽度不一样,0码高电平宽度为0565MS,1码为169MS。本例程就是测量高电平宽度来识别码元的,程序取帧数据的最后一个字节就可以识别不同的按键,客户码和数据码的第一字节舍弃掉,最后将数据输出到P1口。程序如下INCLUDE/晶振为12MHZSBITRECP31UNSIGNEDCHARI,CHUNSIGNEDINTTMAINTMOD0X01TR01WHILE1WHILEREC/等待接收信号TTH0400ELSE/非0、1码,重新解码CH0I0IFI32P1CHWHILERECTL00/重新计时TH00对利用单片机进行红外遥控感兴趣的读者,可以对以上程序进行扩展,实现自己想要的功能。如果是单片机对单片机进行遥控时,读者还可以自己定义数据格式。需要注意的是,红外线的载波周期一定要精确到微秒,否则发射距离极近且容易误码,而码元电平的宽度可允许大到80微秒的误差。通过单片机的这个应用实例,我想只要掌握单片机的一些编程技巧,以及在制作过程中多加思考,往往可以用最简单的硬件实现复杂的功能,这也是许多单片机初学者需要做到的。图在下一页图11621格式帧可格式056MS1125MS0码056MS225MS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论