|
一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
指令判断
使键值判断变得拖沓冗长
使用前
述方法则清楚明了
简单易行
对于不同的遥控器
本程序只要改变代码转换表即可
对再开发大有益处
|
|