微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 多媒体投影机遥控器的STC12C5410单片机仿真

多媒体投影机遥控器的STC12C5410单片机仿真

时间:01-07 来源:互联网 点击:

当前,投影机已是高校多媒体教室的常规设备,但是由于使用频繁,人员又杂,投影机遥控器损坏及遗失的情况时有发生。因为学校用的投影机均为进口产品,遥控器很难配到,并且能买到的话价格也是异常昂贵。利用单片机仿真遥控器的功能,制作成本很低的投影机遥控器具有实用推广价值。

制作投影机遥控器的关键是先要读出原投影机遥控器(同型号)的所有按键的控制码数据,然后做成按键控制码表格,当仿真时在按键操作下单片机将不同的控制码数据发射出去,达到遥控投影机的目的。

1 读遥控器按键码方法

1.1读遥控器按键码硬件电路


如图1为单片机读投影机遥控键码的控制电路。单片机使用宏晶公司的STC12C5410,P1.6口灯用作读码状态的指示,灯亮代表读码状态。P1.7口灯用于指示遥控发射操作,闪烁时代表遥控码发射中,在读码状态下,当P1.6口灯灭而P1.7口灯亮时代表码已读入。第(1)脚为单片机的复位脚,采用简单的RC上电复位电路,(6)脚为外中断输入口,用于读码功能的转换控制,当按一下(6)脚口的开关时,系统进入中断读码状态。(8)脚用于红外线接收头的输出信号读入。(11)脚作为遥控器的红外线信号输出口,用于输出40KHz载波编码。(12)脚接遥控测试开关。(4)、(5)脚外接12M晶振。

图1 单片机读遥控键码电路原理图

当按一下“学习”开关时,P1.6口的读码灯亮,表示进入读码状态,此时将需要仿真的遥控器某按键对着红外接收头按一下,当P1.6口的灯灭而 P1.7口的指示灯亮时,读码成功。从计算机超级终端串口中可获得键码的数据。为了测试读得的码是否正确,可按一下发射测试开关,看是否能正确实现投影机的功能操作。按以上方法将原投影机遥控器的所有按键码读入计算机备用。图2和图3分别是红外线接收头输出端口及发射遥控码时的单片机输出口波形图。

图2 红外线接收头输出口波形图

图3 遥控发射测试时P3.7输出口波形图

1.2 读遥控器按键码软件设计

图4是读遥控器按键码控制软件的主程序流程。图5是中断读入键码数据的程序流程图。

图4主程序流程图

图5中断读键码程序流程图


中断读键码程序在编程设计中非常重要。它要完成遥控码起始位的识别及脉宽计数、遥控码编码位的宽度计数、结束位的认别等功能。通过大量的不同种类的遥控码波形实验分析,遥控码的帧间歇位宽度均在10 ms以上,起始位码宽度在100μs—20ms之间,编码位在100μs—5ms之间,为确保对所有遥控器读码的成功,采用以下设计方法:

(1)寻提起始位方法:用16位DPTR计数器对高电平进行宽度计数,计数采样周期为21μs,当高电平结束时,如高8位计数器为非零,则说明高电平宽度超过5.35ms(255×21μs),紧接来的低电平码就是起始位,否则重新开始。

(2)读起始位方法:采用16位DPTR对低电平进行宽度计数(最大可读宽度为1.376s),当高电平跳变时结束计数,并将DPTR的高8位、低8分别存入R4,R5寄存器。

(3)读遥控编码的方法:采用DPTR低8位计数器对码(高电平或低电平)进行宽度计数,电平跳变时结束计数,并将值存入规定的地址,在高电平码计数时,如DPTR高8位计数器为非零(宽度大于5.35ms),则判定为结束帧间隔位,在相应存储单元写入OOH作为结束标志。

2 投影机仿真遥控器的设计

2.1仿真遥控器硬件电路的设计


图6是投影机仿真遥控器的电路原理图。采用4*8的行列式按键开关,可有32个操作按键。遥控器从P3.7口输出40K的红外线调制信号。


图6 投影机仿真遥控器电路原理图

2.2 仿真遥控器软件的设计

仿真遥控器中通过主程序的循环查键执行相应的键码发射功能,键码表是写在ROM中的,因此完成编程后是不能再改的。程序包括以下主要模块:

(1)初始化程序。P1及P3端口置位,设置计数器计数模式、控制字等。

(2)键盘扫描程序。完成32个按键的扫键工作,并翻译成相应的32个键号,使能执行相应的键功能。

(3)按键功能程序。利用定时器定时中断功能,实现40KHz载波的产生;利用ROM表上各按键相应的起始位控制数据、高电平控制数据、低电平控制数据控制载波的发送时间及间隔时间。遥控码调制发射的算法如下:

①[发起始位调制波]

取ROM表中起始位数据;

开40KHZ方波定时器;

起始位数据减1,不为零,延时21μs后重复执行本句;

为零执行下句;

②[发高电平间隔位]

关40KHZ方波定时器;

取ROM表中高电平数据;如数据为0,延时10ms后结束算法;不为零执行下句;

数据减1,不为零,延时21μs后重复执行本句;

为零执行下句;

③[发低电平调制波]

取ROM表中低电平数据;

开40KHZ方波定时器;

低电平数据减1,不为零,延时21μ

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top