摘要: 红外线遥控是目前使用最广泛的一种通信和遥控手段,电视机遥控器是红外遥控系统中的典型代表。
由于各厂家经常使用专用的遥控芯片,不同的遥控器之间互不兼容,因此给我们的生活带来一些不便。
我的设计是使用常用的芯片AT89C52代替专用的遥控芯片制作一个遥控器,实现遥控器之间的通用化.该设计具有编程灵活多样,操作码个数可随意设定等优点,并且可以达到“一器多用”。
关键词:遥控器,单片机,键盘矩阵,编码1. 引言在现在社会及家庭的各种家用电器产品和娱乐设施中,一般都采用红外线遥控技术。
红外遥控器电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作,而且红外遥控编解码容易,还可以进行多路遥控。
目前红外线遥控技术已经在电视机中得到了广泛的应用。
电视机遥控器使用的是专用集成发射芯片来实现遥控器的发射,如东芝TC9012,飞利浦SAA3010T等。
这些芯片价格贵,且互相之间采用的遥控格式互不兼容,所以各机型遥控器通常只能针对各自的遥控对象而无法通用。
本设计利用低成本的MCS-51系列来实现遥控器的模拟发射,并实现遥控器的通用化。
2. 功能要求通用红外遥控系统由发射和接收两大部分组成,发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调电路和解码电路。
遥控信号发射装置通过将某个按键所对应的控制指令调制在38KHz范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。
遥控接收头通过对遥控信号的放大、检波、整形、解调出遥控编码脉冲。
图1红外遥控系统总体框图本设计采用MCS-51系列单片机A T89C52代替专用遥控发射芯片,通过软件模拟实现了电视机遥控编码的发射,具有编程灵活多样,操作码个数可随意设定等优点,并且可以达到“一器多用”。
3. 遥控器发射设计原理目前市场上一般设备系统采用专用的遥控编码芯片,制作比较简单容易,但由于功能键数及功能受到特定的限制,只适合用于某一专用电器产品的应用,应用范围受到限制。
而采用单片机进行遥控系统的应用设计,具有编程灵活多样,操作码个数可随意设定等优点。
图2 遥控发射器总体结构图4. 遥控发射器硬件电路及其组成4.1遥控发射器硬件电路图遥控发射器电路主要由下面几部分组成:A T89C52单片机,低功率损耗电路,红外线发射电路以及由P0口和P2口搭成8×8按键矩阵。
当无键按下时,单片机处于低功耗空闲状态。
当有键按下时,产生的外中断请求信号(低电平有效)经八输入与非门和非门后送至P3.2端,使CPU进入中断处理,同时点亮按键指示灯。
系统产生的遥控编码信号通过P3.5端发出,经放大后驱动发射管发射出去。
硬件电路总图如下图所示:2图3 遥控器硬件电路总图4.2 AT89C52单片机AT89C52是美国ATMEL公司生产的低电压高性能CMOS 8位单片机,片内含8k的可反复擦写的只读存储器和256bytes的随机存取数据存储器,器件采用ATMEL公司的高密度非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置8位中央处理器(CPU)和Flash存储单元。
功能强大的AT89C52单片机适合于各种各样的控制应用场合。
·与MCS-51产品指令和引脚完全兼容·8K字节可编程闪烁存储器;寿命:1000写/擦循环;数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·256*8位内部RAM·32个可编程I/O口线·3个16位定时器/计数器·8个中断源·可编程串行通道·低功耗的闲置和掉电模式·可编程串行UART通道4.3 键盘电路4.3.1键输入原理在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。
当所设置的功能键或数字键按下时,应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,总有一个接口电路与CPU相连。
CPU可以采用查询或中断方式了解有无按键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。
4.3.2按键结构与特点遥控器键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有——定时间的触点机械抖动,然后其触点才稳定下来。
抖动时间的长短与开关的机械特性有关,一般为5—10ms。
在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。
为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。
这一点可从硬件、软件西方面予以考虑。
在键数较少时,可采用硬件去抖,而当模数较多时,采用软件去抖。
在电视机的遥控器中,我们主要采用软件控制来消除键盘的抖动。
具体所采取的措施是:在检测到有按键按下时,执行一个10ms左右的延时程序后,再确认该键电平是否仍保持闭合状态电乎,若仍保持闭合状态电乎,则确认该键处于闭合状态。
同样,在检测到该键释放后,也应采用相同的步骤进行确认,从4而可消除抖动的影响。
4.3.3按键编码一组按键或键盘都要通过I/O口线查询技键的开关状态。
根据键盘结构的不同,采用不同的编码。
无论有无编码,以及采用什么编码、最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。
4. 4低功率损耗电路AT89C52的CPU有两种节电工作方式即空闲节电模式和掉电模式。
4.4.1空闲节电模式在空闲工作模式状态,CPU自身处于睡眠状态而所有的外设仍保持激活状态,这种方式由软件产生。
此时将片内RAM和所有特殊功能寄存器的内容冻结。
空闲模式可有任何允许的中断请求和硬件复位终止。
由硬件复位终止空闲状态只需要两个机器周期有效复位信号,在此状态下,片内硬件禁止访问内部RAM,但可以访问端口引脚,当复位终止空闲方式时,为避免可能对端口和外部存储器产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
4.4.2掉电模式在掉电模式下,震荡器停止工作。
进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结,去除掉电模式的唯一办法是硬件复位。
复位后将重新定义全部特殊功能寄存器,但不改变RAM中的内容。
在VCC恢复到正常工作电平前,复位无效,且保持一定的时间以使振荡器重启动并稳定工作。
在这里遥控器采用空闲节电方式。
当系统进入空闲工作方式,内部时钟电路不向CPU提供,而只供给中断`串行口和定时器部分。
遥控器退出低功耗空闲方式电路由T060与非门来实现。
当有键按下时,单片机退出空闲状态,进入键盘和红外发射程序,结束后又进入低功耗空闲方式待机。
使用过程中单片机基本上都处于空闲工作方式,功耗相当低,从而为电池电源提供保障。
4.5红外线发射管和指示灯红外发光二极管能发出波长为940nm的红外光,其结构、工艺、原理与一般的发光二极管相同,只是所采用的半导体材料不同,具有体积小、寿命长、耐振动、响应速度快、耗电小等优点。
在这里遥控编码信息由A T89C52单片机的定时器1调制成38kHz红外载波信号,由P3.5输出,经过三极管9013放大,由红外发射管发射。
按键的操作指示灯使用一个LED发光二级管即可。
5. 系统软件的设计软件的设计,需要准确无误的实现遥控器的控制功能,希望能够使系统具有高的可靠性能、快的反应速度、以及较低的系统功率损耗。
控制功能主要包括:系统的初始化程序、键盘扫描程序、红外线的编码程序以及发射程序等。
5.1系统软件的总体流程图图4 系统的总程序流程图首先初始化程序,判断是否有键按下。
当有键按下时,产生的外中断请求信号(低电平有效)经八输入与非门和非门后送至P3.2端,使CPU进入中断处理,同时点亮按键指示灯。
系统产生的遥控编码信号通过P3.5端发出,经放大后驱动发射管发射出去判断了是哪一只键按下以及处于机芯的哪种状态以后,程序就严格按照相应的遥控编码方式来进行遥控码的发射,直到结束。
5.2初始化程序和主程序流程图初始化程序部分主要使系统进入复位初始化的状态值,选择工作寄存区,设置堆栈SP,设置中断优先级IP,开外部中断0。
6图5 初始化程序流程图图6 主程序流程图5.3 键盘扫描程序5.3.1键盘的工作方式在单片机应用系统中,键盘扫描是系统工作内容之一。
CPU对键盘的响应取决于键盘的工作方式,键盘的工作方式应根据实际应用系统中CPU的工作状况而定,其选取的原则是既要保证CPU能及时响应按键操作,又不要过多占用CPU的工作时间。
通常,键盘的工作方式有三种,即编程扫描、定时扫描和中断扫描。
采用前两种键盘扫描方式时,无论是否按键,CPU都要定时扫描键盘.而遥控器在工作时,并非经常需要键盘输入,因此,CPU经常处于空扫描状态。
而且对于电视机的遥控器,当有按键按下时,需要做出立即的反应。
同时为了提高CPU工作效率,可采用中断扫描工作方式。
其工作过程如下;当无键按下时,CPU处理自己的工作,当有键按下时,产生中断请求,CPU转去执行键盘扫描子程序,并识别键号。
图7 4*4 键盘矩阵电路其工作原理用上面的4*4 键盘矩阵来进行说明。
图7是一种简易键盘接口电路,该键盘是由89C52门口的高、低字节构成的4×4键盘。
键盘的列线与门口的高4位相连,键盘的行线与门口的低4位相连,因此,P1.4—P1.7是键输出线,P1.0~P1.3是扫描输入线。
图中的4输入与门用于产生按键中断,其输入端与各列线相连,再通过上拉电阻接至+5v电源,输出端接至8051的外部中断输入端口。
具体工作如下:当键盘无键按下时,与门各输入端均为高电平,保持输出端为高电平;当有键按下时,其端口端为低电平,向CPU申请中断,若CPU开放外部中断,则会响应中断请求,转去执行键盘扫描子程序。
5.3.2矩阵键盘具体按键的确定要确定具体是键盘的哪一个按键按下,使用线性反转法。
第一步:将行线编程为输入线,列线编程为输出线,并使输出线为全0电平,则行线中电平由高到低变化所在的行为按键所在的行。
第二步:同第一步完全相反,将行线编程为输出线,列线编程为输入线,并使输出线为全0电平,则8列线中电平由高到低变化所在的列为按键所在的列矩阵形式由扫描线和数据线构成。
两组线分别接AT89C52的两个输端口。
控制器通过软件把扫描线写成0,接受线写成1。
按下一键即将响应的扫描线和接收线接通,于是接受线被拉成低电平。