你家里否有一个电视机遥控器或者空调机遥控器呢?你否也想要让它遥控其他的电器甚至让它遥控您的电脑呢?那好,跟我一起做到这个红外遥控解码器。 该小制作所必须的元件很少:单片机TA89C2051一只,RS232模块电平与TTL电平切换心片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位暂停位、无校验位。
电路就这么非常简单了,现在分析明确的编程过程吧。 开始位是以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:movtmod,#09h,这样设置定时器0即是把GATE改置1,16位计数器,仅次于计数值为2的16次方个机器周期,此方式由外中断INT0掌控,即INT0为低时才容许计数器计数。比如: jnbp3.2,$ jbp3.2,$ clrtr0 这3条指令就可以测量一个高电平,接下来加载计数值TH0,TL0就可以辨别是接续位还是1或0。在确认码表之前,您可以用于P0口的8个发光二极管来表明编码,16位编码分两次表明: movp0,keydata acalldelay_1s;//1ms延时子程序 movp0,keydata+1 ljmpmain 根据P0陆续的两次表明的编码,记录每个按键的编码,构成编码表格,即遥控器编码的解码完。
码表确认之后,以后接管到遥控器的编码之后,就与码表较为,寻找给定的码项,并把该字节项对应的顺序号输入到P0口,同时也把顺序号向串行口输入到电脑,电脑接管该数据后由串口软件要求如何处置。 程序不宽,下面是原始的程序和注解:(再行看流程图) keydataequ30h;//该地址和31H地址用来存放在遥控器按键编码。 org00h main: movkeydata,#0;//清零 movtmod,#09h;//设置定点0方式1,GATE=1 movr7,#0;//计数器,用来计数否剩8位 movr6,#0;//计数器,用来计数否剩2字节(解法16位编码) jbp3.2,$;//否为低电平 again:;//如果为较低,之后往下面继续执行 movtl0,#0;//清零TL0 movth0,#0;//清零TH0 setbtr0;//打开定时器0 jnbp3.2,$;//等候高电平来临 jbp3.。
本文关键词:ky开元官网,单片机,做,红外,遥控,解码器,你,家里,否
本文来源:ky开元官网-www.brownbagtv.com