51 单片机设计的红外线遥控器电路图及工作原理 -------------------------------------------------------------------------------- 51 单片机设计的红外线遥控器电路图及工作原理 你家里是否有一个电视机遥控器或者空调机遥控器呢?你是否也想让它遥控其他的电器甚至让它遥控您的电脑呢?那好,跟我一起做这个“红外遥控解码器”。 该小制作所需要的元件很少:单片机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 位停止位、无校验位。 电路就这么简单了,现在分析具体的编程过程吧。 如图所示,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 为高时才允许计数器计数。比如: jnb p3.2,$ jb p3.2,$ clr tr0 这 3 条指令就可以测量一个高电平,接下来读取计数值 TH0,TL0 就可以分辨是起始位还是“1”或“0”。在确定码表之前,您可以使用 P0 口的 8 个发光二极管来显示编码,16 位编码分两次显示: mov p0,key data ...