1387

帖子

0

资源

裸片初长成(中级)

HT6221 遥控器芯片简介

  一HT6221 遥控器芯片简介

1. 特征

*

工作电压: 1.8V~3.5V

* Dout

输出38KHz

*

最小发射字:

一个字

*

一个455KHz

的陶瓷或晶体

* 16

位地址码

* 8

位数据码

* ppm

代码方式

*

最大活动键HT6221: 32



HT6222: 64



2. 应用

*

电视和录像录音机控制器

*

夜盗警报系统

*

烟火警报系统

*

车门控制器

*

汽车警报系统

*

安全系统

*

其它遥控系统

3. 概述

HT6221/HT6222

能编码16

位地址码和8

位数据码, HT6221/HT6222

包含32

键(K1 K32)

和64

键(K1 K64)

4.

引脚图

-20 DIP/SOP

HT6221

HT6222

-24 DIP/SOP

7 DOUT

输出

串行数据输出引脚, 38KHz

发射频率

8 VDD

输入1.8V 3.5V

9 DT

输入

最重要数据位(DT)

代码设置

10 X2

输出455KHz

振荡器输出

11 X1

输入455KHz

振荡器输入

12 VSS

输入



13 LED

输出

发射输出

14 21 C8 C1

输入/

输出

键盘列控制

22 AIN

输入

低8

位地址码输入

23 24 R1 R2

输入

键盘行控制,

高电平有效

7. 内部连接应用电路

二代码的特征

1 HT6221 键码的形成

当一个键按下超过36ms

振荡器使芯片激活

如果这个键按下且延迟大约108ms,

这108ms

发射代码由一个起始码9ms ,

一个结果码4.5ms ,

低8

位地址码

9ms~18ms ,

高8

位地址码9ms~18ms ,8

位数据码9ms~18ms

和这8

位数

据的反码9ms~18ms

组成

如果键按下超过108ms

仍未松开

接下来发射的

代码

连发代码

将仅由起始码9ms

和结束码2.5ms

组成

2

代码格式

以接收代码为准

接收代码与发射代码反向

位定义

单发代码格式

连发代码格式



代码宽度算法16

位地址码的最短宽度1.12 16=18ms

16

位地址码的最长宽度2.24ms 16=36ms

易知8

位数据代码及其8

位反代码的宽度和不变1.12ms+2.24ms 8=27ms

32

位代码的宽度为18ms+27ms ~(36ms+27ms)

三解码方法及软件说明

0

0.56ms

data period(1.12ms)

1

0.56ms

data period(2.24ms)

2.5ms

9ms

32 (4.5ms~63ms)

(A0~A15+D0~D7+D0~D7)

4.5ms

9ms

解码的关键是如何识别0

和1

从位的定义我们可以发现0 1

均以0.56ms

的低电平开始

不同的是高电平的宽度不同0

为0.56ms, 1

为1.68ms,

所以

必须根据高电平的宽度区别0

和1

如果从0.56ms

低电平过后

开始延时

0.56ms

以后

若读到的电平为低

说明该位为0

反之则为1

为了可靠起



延时必须比0.56ms

长些

但又不能超过1.12ms,

否则如果该位为0

读到的

已是下一位的高电平

因此取1.12ms+0.56ms /2=0.84ms

最为可靠

一般取0.84ms

左右均可

2

根据码的格式

应该等待9ms

的起始码和4.5ms

的结果码完成后才能读码

3

从上述两点

我们可得到解码程序的流程图

这样接收到的仅仅是普通的代码

要得到标准的键值

还必须进行代码识别和代码

转换

下面是从代码接收到获得标准值的子程

KREM

与接收头相连的I/O



1AH,1BH,1CH,1DH

存放代码的4

个连续单元

YAO_KONG: CLR EA

JNB KREM,REMOT1

SJMP REM_BAK

平时KREM

为高电平

所以当KREM=1



表示无键按下

应立即返回

REMOT1: JNB KREM,$

等待9ms

的起始码发送完

MOV R2,#32 32

表示代码共32



也可以送24

这样

KREM=0

Y

9ms

6ms,

N

Y 6ms

0.9ms

( ),

32

N

接收到的24

位码将不包括数据代码的

反代码

;-----------------------------------------

代码接收

BYTE1: MOV R3,#250

BYTE2: MUL AB

延时约6ms

可以稍长或稍短

但不能

小于4.5ms

也不能太长

太长连击时

将影响程序运行速度

JNB KREM,BYTE3;

DJNZ R3,BYTE2 ;

由于结果码为4.5ms,

如果小于4.5ms

结果码未发送完

读得的码值将出错

˝

BYTE3: JNB KREM,$ ;

等待高电平

保证读每一位的起点一致

˝

;-----------------------------------------------

MOV R3,#150

DJNZ R3,$ ;

延时0.9ms

延时范围为0.56ms~1.12ms

;----------------------------------------

MOV C,KREM

MOV R3,#4

MOV R0,#1DH

BYTE4: MOV A,@R0

RLC A

MOV @R0,A

DEC R0

DJNZ R3,BYTE4

DJNZ R2,BYTE1

;

至此32

位代码已全部接收完成

并存放在1AH~1DH



依次为低8

位地址码

高8

位地址码8

位数据码

8

位数据的反代码

;----------------------------------------------------

˝ ;

代码识别

MOV A,1AH

XRL A,#03 ;3

为地址低8

位的值

对于不同的遥控器

有不同的地址值

JNZ REM_BAK

MOV A,1BH

XRL A,#0FCH ;FCH

为地址高8

位的值

JNZ REM_BAK

MOV A,1CH

CPL A

XRL A,1DH

如果地址码不对或接收到的数据码两单元

不反向均当错码

本程序当无键按下处理



JNZ REM_BAK

;--------------------------------------------

代码转换

MOV R2,#21 21

为遥控器面板按键数

MOV DPTR,#TAB_REMOT

LOOKUP_1: MOV A,R2

MOVC A,@A+DPTR

XRL A,1CH

JZ REM_BAK0

DJNZ R2,LOOPUP_1

REM_BAK0: MOV A,R2 R2

中的值即为标准的键值

SJMP END_YK

REM_BAK: CLR A

END_YK: SETB EA

RET

;=====================================================================

代码转换表

表中的值为面板上相应键的代码

对于不同的遥控器

表中的值应做相应的改变

TAB_REMOT:

DB 00H

; VCD DVD AUX TUNER ST/M TSV-4 6

DB 0C0H, 0D0H, 0E8H, 0F0H, 0E0H, 0C8H

; UP DOWN FM/AM MEMORY A/B 11

DB 00H, 20H, 48H, 68H, 58H

; 1 2 3 4 5 6 17

DB 0D8H, 0F8H, 40H, 60H, 50H, 70H

; AUTO VOL+ VOL- MUTE 21

DB 28H , 10H , 30H , 78H

;=================================================================

说明:

此程序可在需要的地方任意调用LCALL YA0_KONG

返回后

累加器中的值即为

标准的键值

如果A=0

则不予处理

可能原因有

无键按下

错码或非本机所用的遥

控器的操作

程序中的延时均以4MHz

的晶振为准

若用不同的晶振

只需改变相

应值

符合注释中的延时时间即可

4

从上述解码过程我们不难发现

对于连发代码

解码得的值1AH~1DH

全为0FFH

所以软件如果需要处理连击

我们只须在代码识别前判断1AH~1DH

是否全为

0FFH

是则有连击现象

这样建一个连击标志

再返回

软件根据这个标志



合上一次读得的键值便可进行相应的连击操作

直到按键松开

连击标志才被清



具体操作如下

在代码识别前插入

MOV A,1AH

ANL A,1BH

ANL A,1CH

ANL A,1DH

XRL A,#0FFH

JNZ DAN_JI

SETB FLAG_LIANJI ;

建连击标志

SJMP END_YK

DAN_JI: NOP

另外子程的最后几条指令改成

REM_BAK0: MOV A,R2

SJMP END_YK0

REM_BAK: CLRA

END_YK0: CLR FLAG_LIANJI ;

清连击标志

END_YK: SETB EA

RET

 

四应用实例

读者也许会问

只要解得遥控器的代码就可以了

转换成1~n

标准值有什么优点呢

看了后面的简单实例

不难发现它有如下好处

在应用系统中

带遥控器的仪器

一般都带按键

而且二者功能相同

转换成标

准值后

遥控按键散转表格可以与键盘散转表格复用

这样能节省一定的空间

HT622 1/2

最大可支持32

或64

个按键

一般系统只使用其中的一部分

这样可

能会使遥控器按键的代码毫无规律

为了处理这样的代码

软件人员要么想方设

法通过复杂的算法找出那些代码不是规律的规律

要么干脆不管那么多

排列一

大堆CJNE A #DATA NEXT

指令判断

使键值判断变得拖沓冗长

使用前

述方法则清楚明了

简单易行

对于不同的遥控器

本程序只要改变代码转换表即可

对再开发大有益处

回复
您需要登录后才可以回帖 登录 | 注册

关闭
站长推荐上一条 1/6 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表