DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 760|回复: 0
打印 上一主题 下一主题

[家电] 用单片机制作通用型电视遥控器

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:24:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ???摘要:本文介绍了一种用MCS-51系列单片机AT89C52代替专用遥控芯片的设计方案,通过软件模拟实现了电视机遥控编码的发射,并且达到“一器多用”。  关键词:全码;简码;引导码;系统码;数据码
????引言
????上世纪八十年代初,日本率先在电视产品中使用了红外遥控技术,目前已经在电视机上得到了广泛应用。电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝TC9012,飞利浦SAA3010T等。这些芯片价格较贵,且相互之间采用的遥控编码格式互不兼容,所以各机型的遥控器通常只能针对各自的遥控对象而无法通用。本文在试验验证的基础上,介绍了如何利用低成本的MCS-51系列单片机来实现遥控码的模拟发射,并实现遥控器的通用化。
????遥控发射技术的基本原理
????通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在32"56KHz范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。
  
????不同公司的遥控芯片,采用的遥控码格式也不一样。在此介绍较普遍的两种,一种是NEC标准,一种是PHILIPS?标准。


图1?NEC标准下的主码表示
????NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。简码重复延时108ms,每两个引导脉冲上升沿之间的间隔都是108ms。一个完整的全码如图1所示。?其中,引导码高电平4.5ms,低电平4.5ms;系统码8位,数据码8位,共32位;数据0用“高电平0.5625ms+低电平0.5625ms”表示,数据1用“高电平0.5625ms+低电平1.6875ms”表示,如图2所示:一个简码=引导码+系统码位0的反码+结束位(0.5625ms)高电平。


图2?NEC标准下,数据0和1的表示
????各部分码的作用:引导码用来通知接收器其后为遥控数据。系统码用来区分是哪一机型的数据,接收端依此来判断后续的数据是否为须执行的指令。数据码用来区分是哪一个键被按下,接收端根据数据码做出应该执行什么动作的判断。简码是在持续按键时发送的码。它告知接收端,某键是在被连续地按着。
????遥控数据传输系统的关键是数据传输的可靠性。为了提高编码的可靠性,NEC标准规定系统码、数据码后分别接着传送一个同样的码或者反码,供误码校验用。
????PHILIPS标准:载波频率为38KHZ;没有简码,点按键时,控制码在1和0之间切换,若持续按键,则控制码不变。一个全码=起始码‘11’+控制码+系统码+数据码,如图3所示。


图3?PHILIPS标准下的全码表示
????数据0用“低电平1.778ms+高电平1.778ms”表示;数据1用“高电平1.778ms+低电平1.778ms”表示。?连续码重复延时114ms。

????硬件原理图
????图4为硬件原理图,电路主要由三大部分组成:AT89C52及其外围电路部分;8×8键矩阵部分;及直流电源部分。

图4?硬件原理图图4?硬件原理图
图4?硬件原理图
????AT89C52单片机及其外围电路组成的控制和遥控码产生部分:主要有外中断信号处理、12M时钟、CPU复位、I/O口上拉电路、红外遥控发射、按键指示等。由P0口和P2口搭成按键矩阵,当有键按下时,产生的外中断请求信号(低电平有效)经八输入与非门和非门后送至P32端,使CPU进入中断处理,同时点亮按键指示灯。系统产生的遥控编码信号通过P14端发出,经放大后驱动发射管发射出去。拨码开关DIP的作用是进行不同机芯状态的切换。比如当DIP设置为“1000”时,系统处于长虹CH-10机芯状态;为“1001”时,则处于CN-12机芯状态。R13、C11和按键KEY组成单片机复位电路。
????8×8键矩阵部分:由64只键盘开关排列而成,可以根据需要,选择合适的按键数。?8*8键是不增加扩展器件的情况下最多的按键数。
????整个系统的工作电源为直流+5V。由电源模块IC31?(PS0500DS)、整流桥HBA、HBK等组成。
????程序实现
????NEC编码程序用MCS-51系列单片机汇编语言编写而成,PHILIPS编码可以此类推。
????NEC、TOSHIBA、SAMSONG公司的编码格式有其共通之处:遥控全码都由“引导码+系统码+系统码(或系统码取反)+数据码+数据码取反”组成;数据“0”和“1”的定义相同;不同的只是引导码高低电平的持续时间不同,系统码位数有长有短,第一个简码和全码最后一位之间的延时不同,简码的引导脉冲不同等;所以可以把相同的部分做成通用子程序,包括产生数据“0”和“1”的子程序“ONE”和“ZERO”,9ms、4.5ms、2.25ms、22ms、45ms等时间控制子程序。
????8×8的键矩阵处理,采用外中断的方式,有键按下时,就向CPU发出中断请求,然后按照“先列后排”一个个扫描,从而找出被按下的键,当然这里面还包括了去抖动、多键同时按时只处理一键的处理部分。
????机芯的不同状态由单片机P3口的P3.5、P3.4、P3.1、P3.0四位的输入数值来区分判断,比如“0000”表示工作于东芝TC90××系列状态,“0001”则表示要求工作于NEC公司的PD61××系列状态。
????判断了是哪一只键按下以及处于机芯的哪种状态以后,程序就严格按照相应的遥控编码方式来进行遥控码的发射,也就是说将一定时段、一定数值的电平脉冲调制在38KHz载波上,逐一发射出去。流程图如图5所示。


图5?程序流程图
????部分程序段:
????这里给出的是产生NEC遥控码的主要部分,而像键扫描等较常见的程序段就不再提供.
????主程序初始化部分:
ORG?100H
main:?mov?psw,#0?;
mov?sp,#30h?;设置堆栈
mov?tmod,#02h?;方式2定时
mov?th0,#0f3h?;38KHZ方波时间数
mov?p2,#0?;
mov?p0,#0ffh?
setb?ex0?;允许外中断0
SETB?pt0?;外中断0(有键按下)优先
clr?it0?;电平触发方式
clr?mdl?;设有无按键的标志
setb?p3.2?;
setb?p3.4?
setb?p3.5
setb?p3.1
setb?p3.0?;置P3.0~P3.5为输入状态
clr?c?;清进位标志位
clr?p1.4?;清遥控输出端
clr?a?;清累加器A
mov?KEYHAO,#0H?;?清按键号存储器
xrl?a,#11000000b?;0000(p3.5?p3.4?p3.1?p3.0)
jz?TV1
mov?a,r7
xrl?a,#11000001b?;0001
jz?TV2
mov?a,r7
xrl?a,#11000010b?;0010
jz?VCD
mov?a,r7
……
SET?ETO?
SET?EA?;开中断
pp:jnb?mdl,pp?;循环等待按键
clr?mdl?;
CLR?KEYHAO
sjmp?pp……
‘0’子程序和‘1’子程序部分:ZERO:?CLR?A
SETB?TR0?;启动定时器0#
CJNZ?A,#39,$?;0.5625ms高电平
CLR?TR0?;停定时器0#
ACALL?DE05625?;沿时0.5625ms
CLR?A
RET
ONE:?CLR?A
SETB?TR0?;启动定时器0#
CJNE?A,#39,$?;0.5625ms高电平
CLR?TR0?;停定时器0#
ACALL?DE16875?;沿时1.6875ms
RET
????结语
????本文介绍了AT89C52单片机代替专用遥控芯片设计通用型电视遥控器,该方案具有结构简单、成本低等优点,用本文介绍的方法进行单片机遥控信号模拟,可以作出一款自己家的通用遥控器。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-5 08:25 , 耗时 0.085506 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表