HT48CA0发射HT6221码的应用范例
红外脉冲编码IC的键值和用户码测试和分析
红外脉冲编码IC的键值和用户码测试和分析版权归作者所有,不得抄袭,转载请注明作者和出处,否则追究法律责任!作者:李海林2010.6月在网络上查找了一下红外脉冲编码IC的键值和用户码是怎样定义的,没找到一个清楚明了的资料,少许英文资料又不太看得懂,中文资料更少。
总之没找到一看就懂的资料。
我决定自己找一个红外脉冲编码IC,测试和分析它的键值和用户码。
找了一个DVD最常用的红外脉冲编码IC PT2222。
引脚定义图,图1:应用原电路图,图2:自己修改了的电路图,图3:下图是我用测码软件测得的64个遥控键值(注:实际应用电路没虚线内电路,测试的用户码是00 FF),图4:将IC的9脚接地,测试用户码仍然是00 FF,不过按键码值变了,按键值是在9脚接高电平测试时的16进制数值加16进制数80。
比如:00+80变成80,51+80变成D1,1B+80变成9B。
HT2222的9脚设置不同键值比较,图5:测试发现改变K1-K16的闭合状态(见图3),可以得到不同的用户码,但是遥控器按键值只有9脚状态有关,跟K1-K16没关系,由K1-K16组合的状态很多,大家可以计算一下看有多少。
下面测试的是部分状态,表1:测得的用户码闭合的开关(其它的都断开)全部断开00FFK1 01FEK2 02FDK3 04FBK4 08F7K14 K6 K16 K8 A0FF………………………. ………………..……………………….. …………………下面说说我经过分析,计算,测试核对的用户码计算方法(开关闭合为1,断开为0)。
大家先看看这几个资料:图6图7用户码对应演示图8-1用户码对应演示接图8-1,图8-2:由K1-K16的开闭状态,推算用户码,计算结果同测码软件测得值:(1)测码软件测得用户码00 FF=0000 0000 1111 1111bit0-bit7 bit7-bit0K1-K8: 0000 0000----------0000 00000 000FFK9*-K16*: 0000 0000K9-K16: 1111 1111----------1111 1111F Fbit0-bit7 bit7-bit0K1-K8: 1000 0000----------0000 00010 101FE K9*-K16*: 0000 0000K9-K16: 0111 1111----------1111 1110F E(3)测码软件测得用户码20 7F=0010 0000 0111 1111bit0-bit7 bit7-bit0K1-K8: 0000 0100----------0010 00002 0207F K9*-K16*: 0000 0101K9-K16: 1111 1110----------0111 11117 F(4)测码软件测得用户码A0 FF=1010 0000 1111 1111bit0-bit7 bit7-bit0K1-K8: 0000 0101----------1010 0000A 0A0FF K9*-K16*: 0000 0101K9-K16: 1111 1111----------1111 1111F Fbit0-bit7 bit7-bit0K1-K8: 0000 0001----------1000 00008 0807F K9*-K16*: 0000 0000K9-K16: 1111 1110----------0111 11117 F ………………………………………. ………………………………………..************************************************************************** 用户码转换表,表2:左边右边B it 0 Bit1Bit2Bit3Bit4Bit5Bit6Bit7BitBit1Bit2Bit3Bit4Bit5Bit6Bit7将bit0-bit7改变为bit7-bit0 这时是8bit二进制转换为16进制就是遥控器用户码前一个16进制数将bit0-bit7改变为bit7-bit0这时是8bit二进制转换为16进制就是遥控器用户码的后一个16进制数用户码B it 7 Bit6Bit5Bit4Bit3Bit2Bit1BitBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 00FF0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 01FE0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 1 207F1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 1 A0FF1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 807F2010-6-13。
红外线遥控器(nec编码方式)
Main()程序:
I/O初始化
RAM初始化 Timer初始化
PCL 選擇
4.
延時程 序
睡眠程 序
鍵盤掃 描程序
其他程 序
5.
FAE Service Department designed
HT48R09E4學習型遙控器軟件流程
鍵盤掃描程序:
1.
鍵盤掃描程序有以下步驟:
查看PA(為行掃描IO口)的狀態 PA=FFH,無鍵按下。 則初始化相關變量后返回main PA!=FFH,有鍵按下, 則進行列掃描,并查表取值
Ext.
Int.
HT48RA0-2 HT48CA0-2
HT48RA0-3 HT48CA0-3
2.0V ~ 3.6V
400kHz ~ 4MHz 1Kx14 4MHz 32x8
15 -16 ---v v -1 20SSOP
HT48RA0-1 HT48CA0-1
2.0V ~ 3.6V 2.0V ~ 5.5V 2.0V ~ 5.5V 2.0V ~ 5.5V
38kHz Carrier v v
Package
HT6221 HT6222
Encoder Encoder
1.8V~3.5V 1.8V~3.5V
20SOP 24SOP
HT6230
HT6240002
Encoder
Encoder
2.4V~5.2V
2.2V~3.6V
5
8
6
8
96
32
v
v
28SOP
20/24SOP
FAE Service Department designed
NEC碼分析
2. 编码采用脉冲位置调制方式(PPM),利用脉冲之间的时间间隔 来区分“0”和“1”。
遥控开关设计要求
遥控开关设计要求
1、PCB尺寸按照外壳来匹配,样品为最标准尺寸
2、发射器使用HT48R01T3芯片,附件原理图为标准图档。
频率为315Mhz,使用CR2032
电池;发射器编码组成为“24位地址码+8位数据码”,编码可自定义,但要考虑编码的安全性和解码的高效性。
发射器每只按键的数据码要不一样,按键每按一次发射20次完整编码,连续按键1分钟将停止发射。
发射器不按键时IC需要进入睡眠模式,以省电。
发射器在新上电的1分钟内,将发射学习码,接收器可以学习此发射器的地址码和按键组码,并保存,以后此接收器将只能被这只发射器的这组按键控制;发射器的地址码将具有唯一性。
3、接收器使用阻容降压方式,电源电压为120V,芯片使用HT68F03C,接收器在新上电的
1分钟内接收到学习码,则将会保存这组编码,以后每次接收到编码都将与保存的编码作比较,符合再输出ON/OFF动作。
使用提供的标准315MHz接收模块。
4、要求学生根据以上要求,先学习芯片资料,再设计原理图,再根据外壳要求设计PCB图,
设计的图纸以样品作为评判依据,都OK后把PCB发过来去打样!
5、PCB完成后,展开程序设计和调试,遥控距离要在空旷30米以上,不能有误动作!。
stm单片机红外编码程序
stm单片机红外编码程序上回书说到,ht6621,可以通过hs0038进行解码,但由于只可以通过遥控器进行控制,觉得不爽,而且项目中,也不允许用遥控器,所以就决定弄个单片机来做个编码。
上回书说了,pt6221可以进行编码,于是百度,去找数据手册,就有了日志里的编码方式,然后,用示波器打了一下波形,看了一下,真是和手册上说的一样,于是傻了吧唧,的按照手册上说的时序,写了一个只是电平变化的程序。
写完后,把红外二极管,接到管脚上一试,结果接收木有反映,但按下红外遥控器就有反映,拿手机照相机看,也都有光。
于是我陷入了纠结。
开始是以为红外二极管的波长不对,于是跑到了鞍山西道,分别找了4家,买了各式各样不同的红外二极管。
本以为会好了,但回来一试,还是一样。
于是我一狠心,把红外遥控器拆掉,把外面塑料皮拆掉的时候还挺心疼,拿万用表打红外的波形,看到了结果以后,我忽然间想起了数据手册里的一句话,信号被调制在37.92khz 于是忽然明白。
hs0038需要在发光管发射38khz频率的时候,才会变成低电平。
否则一直会是高电平。
于是将单片机的高低电平改为了38k频率的方波,再一试,这回hs0038上面有了反映由于使用的单片机是stm8的,可以通过定时器来产生38k方波,这样的话,就方便多了,如果要是在程序中实现38k,肯定需要延时的调试。
时序方便控制不容易。
由于使用了定时器来产生38k方波,那么直接配置就好了。
控制的时候,通过开启和关闭定时器即可。
这样的话,就可以驱动高低电平一样的方便了。
所以大家在使用的时候一定要注意。
不要简单的以为红外接收,都是和光敏三极管类似,那么你在调试的时候,就比较麻烦了。
以下是初始化配置函数,和红外发射函数,使用的单片机为stm8s103,没有使用外部晶振,若用其他的单片机或晶振,在发送函数中的软件延时,还要通过示波器来调试。
还有一个问题,就是关于编译器的优化,这东西在时序要求很高的时候,尽量采用一些方式,把优化关掉,否则,软件延时很可能会有误差,从而造成通讯的问题。
TT6221-1 TT6222-1 红外线遥控发射器
Page 1 of 2 技資編號 通 泰 積 體 電 路 股 份 有 限 公 司
TONTEK DESIGN TECHNOLOGY LTD 版本 : 1.0 日期:2010/4/27
TT6221-1 TT6222-1 紅外線遙控發射器
一般描述 :
TT6221-1 和TT6222-1是高性能紅外線遙控發射器( CMOS IC ),它是特別在紅外線的遙控應用上所設計的 。
傳輸碼由 “ leader pulse",“ 16位客戶碼 " 和 "16位數據碼 " 所組成。
TT6221-1和TT6222-1 透過外部二極體和電阻器之變化 , 可改變傳送不同客戶碼。
特色 :
υ 高性能 CMOS 技術
υ 低功耗 (VDD = 2.0 ~3.3 V)
υ TT6221-1︰32個功能鍵和3個雙重鍵 , 並共有 64+ 6 編碼(使用D7 設定) υ TT6222-1︰64個功能鍵和3個雙重鍵 , 並共有 128+ 6 編碼(使用D7 設定) υ 陶器的諧振器(Ceramic resonator) 頻率 455 KHz υ DOUT 輸出載波 38 Khz
υ 客戶碼可被選擇 (使用外部二極體和電阻器)
方框圖 :
Keyboard Matrix & Gate Circuit
Data ROM &Registers
Oscillator Divider Binary Detector
Timing Generate Counter control Sync.circuit
Data select & Buffer
X1
X2
R1R8
C1
C8AIN DOUT LED
VDD VSS
D7。
红外线遥控NEC编码(IR-NEC)详解及HOLTEK解码芯片介绍
Key No. 32 64 96 32
38kHz Carrier v v v v
Package
HT6221 HT6222 HT6230 HT6240002
Encoder Encoder Encoder Encoder
1.8V~3.5V 1.8V~3.5V 2.4V~5.2V 2.2V~3.6V
20SOP 24SOP 28SOP 20/24SOP
24Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
HT48RA5 HT48CA5
40Kx16
224x8
23
1
1
1
2
--
v
v
8
28SOP/SSOP(209mil)
Note: Part numbers including "C" are mask version devices while "R" are OTP devices.
公
FAE Service Department designed
司
机
END
密
HT48RA0-3 HT48CA0-3
2.0V ~ 3.6V
1Kx14 4MHz
32x8 16
机
---
HT48RA0-2 HT48CA0-2
400kHz ~ 4MHz
15
密
Ext. Int. ---
v
v
--
1
20SSOP
HT48RA0-1 HT48CA0-1
2.0V ~ 3.6V 2.0V ~ 5.5V 2.0V ~ 5.5V 2.0V ~ 5.5V
hT6221编码原理
一、 解码调制原理
根据HT6221的编码调制原理,可以很准确地分析出每一个按键按下后所发出的红外码。
下面分析一下解码原理。
图8 红外解调码 如上图8所示,为HS1838的接受到的红外码。
在没有信号输入时,HS1838输出高电平,有信号输入时,接收到红外码时首先输出9ms 的低电平,再输出4.5ms 的引导码,接着输出数据。
数据0是0.56ms 的低电平和0.56ms 的高电平,数据1是0.56ms 的低电平和1.12ms 的高电平。
可见0和1的区别在于高电平持续时间的长短不同,根据这个区别我们就可以见别出0和1了。
但是在解码之前需要判断引导码,如果引导码不正确就不解码,所谓判断引导码,就是看看是否有9ms 的低电平和4.5ms 的高电平。
解码的流程图如下。
0.56ms 9ms 4.5ms 0.56ms 0.56ms
1.12ms
图9 解码流程图
红外码的组成32位组成是:前16位是用户码(在这里没什么用),然后是8位数据码(操作码)和8位数据码的反码,这里只要把8位数据码读出来就可以了,其余的可以不用。
HT6221遥控中文资料
1 解 码的关键是如何识别 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 左右均可
˝
JNB
KREM,$ ;等待高电平 保证读每一位的起点一致
˝
;-----------------------------------------------
MOV DJNZ
R3,#150 R3,$
;延时 0.9ms 延时范围为 0.56ms~1.12ms
;----------------------------------------
易知 8 位数据代码及其 8 位反代码的宽度和不变 1.12ms+2.24ms 32 位代码的宽度为 18ms+27ms ~(36ms+27ms)
8=27ms
三 解码方法及软件说明
3
广州周立功单片机发展有限公司 Tel
Edited by Foxit Reader Copyright(C) by Foxit Corporation,2005-2010 For Evaluation Only.
;
1
实战训练提高篇-IR-RECEIVE
紅外綫接收程序目標: 通過此範例的學習,要求學生掌握了解紅外接收管之性能HT6221電視搖控器的解碼方法了解HT6221校驗之方法一.範例講解1. 程式設計說明.1.1 紅外接收管之特性說明在前一章節介紹過,紅外綫在發射時需進行38khz載波調制,但在接收時,紅外接收管可以將38khz載波信號解碼為一个高電平信號,所以我們在解碼時,不再需要理會38khz載波信號之問題。
直接解出HT6221邏輯編碼即可。
1.2解碼說明第一步:通常情況下,紅外接收口上拉在高電平,當接收到38KHZ信號時,則紅外接收管將38khz解為低電平,所以根据HT6221的發碼協議我們首先收到的是9ms的低電平信號,其實在此段我們只要解出4ms到8ms的一段低電平即可。
第二步:當檢測到4ms到8ms的一段低電平后,則等待信號輸入口由低變高,在信號變高后,開始判斷高電平之寬度,若高電平寬度在3ms到4.5ms之間,則說明其后緊跟著的是地址和數据碼。
若高電平寬度小于3ms,則說明其后緊跟著的是重復碼。
第三步:若根据高電平寬度,判斷出接著來的是地址和數据碼,那麽現在來接收地址和數据碼,此處共32位,根据發碼中‘0’或‘1’的編碼協議,若高低電平寬度相同,則該位數据為‘0’,若解碼后的低電平寬度大于高電平寬度,則該位數据為‘1’。
注意:接收到的第一个位是16位地址碼的低8位的BIT0,依次為BIT1直到BIT15,接收完地址碼以后,接著接收數据碼的BIT0,直到BIT7,數据碼接收完后,是數据碼的反碼,也是從BIT0到BIT7。
當32BIT數据接收完后,則可設置Rx_Ok_Fg標志,並保存接收到的地址碼到ADDR_BUFL, ADDR_BUFH,DATA_BUF,DATA_COMP_BUF中。
第四步:第四步實際上是跟第三步並列的一步,若根据高電平寬度,判斷出接著來的是重復碼,若為重復碼,再檢測一个0.56ms的低電平,當檢測到該低電平后則說明接收到一个重復碼,設置Rx_RepeatOk_Fg標志。
HT6221发码的接收
HT6221發碼的接收 文件編碼:HA0040T簡介HT6221的應用電路圖1HT6221是Holtek公司生産的多功能編碼晶片,採用PPM(Pulse Position Modulation)進行編碼,1.12ms爲0,2.24ms爲1,如下圖。
每發送一個碼,HT6221會先送出一個9ms的頭碼和4.5ms的間隙,然後依次送出16位的位址碼(18ms~36ms)、8位元資料碼(9ms~18ms)和8位元資料反碼,如下圖。
本文主要介紹用HT48R30A-1來進行解碼的程式。
HT6221通過紅外線發射管發出信號,紅外線接收管接到HT48R30A-1的外部中斷輸入腳。
File name:6221receiver.asm作者:Kelven說明:程式開始時,先清除RAM區,然後打開主中斷、外部中斷及定時計數器中斷。
通過計算中斷之間的時間間隔來解碼,當接收到有效碼後,會放置在旗標位元。
在主程序中判斷旗標位元是否放置位元來判斷有效碼的接收。
配置選項系統時鐘爲4000kHz。
程式範例include ht48r30a-1.inc;--------------------------------------------------------------- ;Filename:6221RECEIVER.asm;Function:DECODER HT6221;Microprocessor:HT48R30A-1;Crystal:4MHz;--------------------------------------------------------------- data .section ′data′card_no0 equ [060h] ;card_no1 equ [061h]card_no2 equ [062h]card_no3 equ [063h] ;記錄最終的資料temp equ [07eh]cint db? ;記錄收資料bit個數的變數2count db??count_buf dbint_acc db ? ;中斷保護變數right_tou dbity_bit dbit;-----------------------------------------code .section at 0000 ′code′00horgstartjmp04h ;中斷入口位址orgdo_waitjmporg08hdo_tmr ;有time中斷發生jmp20horgstart:pgc ;中斷口設爲輸入狀態setinitcallmov a, 81h ;fsys/4 1Mamovtmrc,56a,mova ;200µs中斷一次tmr,mov6a,movaintc,movtmrc.4set;------------------------------------------------------sleep:intc.0sety_bit ;判斷是否有外部中斷發生?snzsleep ;沒有外部中斷發生則繼續等待jmpdecode_1 ;解碼callright_tou ;解碼不正確,返回重來snzstartjmpcintmova,32 ;準備收資料的bit個數suba,c ;判斷資料是否已收完snzsleepjmptmrc ;收碼完畢clrintcclrcard_no2cplaa,card_no3 ;校驗所收碼是否正確xorzsnzerror1jmpstart ;正確jmperror1:start ;錯誤jmp;----------------------------------------------------------------3do_wait:tmrc.4clrintc.0clra ;進入中斷保護,push acc的值暫存movint_acc,counta,movamovcount_buf,countclry_bitsetover_int:56mova,atmr,movmov a, int_acc ;pop acc的值tmrc.4setintc.0setreti;---------------------------------------------------------------- do_tmr:countincreti;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~decode_1 procintc.0clry_bitclrright_tousnzjudge_toumajmpcount_bufmova,4a,subcsnzjmperror ;data值小於200µs×4=0.8ms判斷錯誤a,count_bufmov13a,subsz cerror ;data值大於200µs×13=2.6ms判斷錯誤jmpcount_buf ;data值大於200µs*8=1.6ms;c=1,data=1 a,movsub a, 8 ;data值小於200µs*8=1.6ms;c=0,data=0 card_no3rrccard_no2rrccard_no1rrccard_no0rrccint ;記錄收到的BIT位元數increterror:countclrright_touclrretjudge_touma:right_tou ;頭碼判斷13.50msclrcount_bufa,mov45 sub a, 70 ;200*70=14mssz cret ;頭碼大於14ms 判斷錯誤mov a, count_bufsub a, 63 ;63*200=12.6mssnz cret ;頭碼小於12.6ms 判斷錯誤set right_touretdecode_1 endp;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Function: init;Purpose: clear ram value;Parameter:;Return:;Modified: acc, status;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ init procclr intc ;清除中斷mov a, 20hmov mp0, amov a, 5fhmov temp, aram_clr: ;清除RAMclr r0inc mp0sdz tempjmp ram_clrretinit endp。
HT48 MCU 输入 输出口的使用
mov a,00h mov pbC,a
;设PB.0,PB.1为输出模式 ;请查表最后一列,可见,
HT48 MCU 输入/输出口的使用
CLR PB.0 mov a,0DAh
;此段代码同时使用了两个蜂鸣器端口 ;该指令可用于关闭蜂鸣器 ;通过TIMER的初值设定音频
mov tmr,a
mov a,90h
;设定pa.7为输出 ;输出低电平 ;(1);先执行读-改-写指令,引脚pa.7的电平未改变 ;输入状态,pa.7浮空,由于上拉电阻,pa.7的电平改变为H ;输出锁存器的值没有改变,保持为0 ;将输出锁存器的数据输出到引脚,pa.7的电平变回为L
set pac.7
;现在,先定义为输入模式
HT48 MCU 输入/输出口的使用
;不用的引脚设为输出模式
CLR PAC.3
..
CLR PAC.1 ;PA.1=O/P
CLR PA.1 ;PA.1 O/P LOW ..
;紧跟
2.解释: 请按照程序注解单步执行,注意观察引脚的变化。
(1)表明当某个位引脚已被设为输出模式时,其他的位引脚的读-改-写指令将不会影响该引脚 的值。(2)表明当某个位引脚被设为输入模式时,其他的位引脚的读-改-写指令将影响该引脚的 值。
当一个引脚为输入模式时,如执行读-改-写指令,将可能影响输出锁存器,这时,如果程序改
变引脚为输出模式,则原来设想的输出值可能被改变。所以,推荐设置输出值应当紧跟在输出模式
的设置后,而且,所有不用的引脚先通过控制寄存器设为输出,即,给pac赋“0”,以防止读入引 脚悬空的高电平值如下:
..
CLR PAC.2
start: clr pac
;PA为输出
HT48 MCU 输入/输出口的使用
HT6221发码的接收
HT6221发码的接收HT6221发码的接收文件编码:HA0040s简介:HT6221的应用电路图如下:HT6221是Holtek公司生产的多功能编码芯片,采用PPM (Pulse Position Modulation)进行编码,1.12ms 为0,2.24ms为1,如下图:每发送一个码,HT6221会先送出一个9ms的头码和4.5ms的间隙,然后依次送出16位的地址码(18ms~36ms)、8位数据码(9ms~18ms)和8位数据反码,如下图:本文主要介绍用HT48R30A-1来进行解码的程序。
HT6221通过红外发射管发出信号,红外接收管接到HT48R30A-1的外部中断输入脚。
;File name:6221receiver.asm;作者: KELVEN;说明: 程序开始时,先清除RAM区,然后打开主中断、外部中断及定时计数器中断。
通;过计算中断之间的时间间隔来解码,当接收到有效码后,会置标志位。
在主程序中判;断标志位是否置位来判断有效码的接收。
掩膜选择系统时钟为4000kHz。
include ht48r30a-1.inc; ***********************************************; * Filename : 6221RECEIVER.asm *; * Function : DECODER HT6221 *; * Microprocessor : HT48R30A-1 *; * Crystal : 4MHz *; ***********************************************data .section 'data'card_no0 equ [060h] ;card_no1 equ [061h]card_no2 equ [062h]card_no3 equ [063h] ;记录最终的数据temp equ [07eh]cint db ? ;记录收数据bit个数的变量count db ?count_buf db ?int_acc db ? ;中断保护变量right_tou dbity_bit dbit;-----------------------------------------code .section a t 0000 'code'org 00hjmp startorg 04h ;中断入口地址jmp do_waiorg 08hjmp do_tmr ;有time中断发生org 20hstart:set pgc ;中断口设为输入状态call initmov a, 81h ;fsys/4 1Mmov tmrc, amov a, 56mov tmr, a ;200μs中断一次mov a, 6mov intc, aset tmrc.4;------------------------------------------------------ sleep: set intc.0snz y_bit ;判断是否有外部中断发生?jmp sleep ;没有外部中断发生则继续等待 call decode_1 ;解码snz right_tou ;解码不正确,返回重来jmp startmov a, cintsub a, 32 ;准备收数据的bit个数snz c ;判断数据是否已收完jmp sleepclr tmrc ;收码完毕clr intccpla card_no2xor a, card_no3 ;校验所收码是否正确snz zjmp error1jmp start ;正确error1:jmp start ;错误;---------------------------------do_wai :clr tmrc.4clr intc.0mov int_acc, a ;入中断保护,push acc值暂存mov a, countmov count_buf, aclr countset y_bitover_int:mov a, 56mov tmr, amov a, int_acc ;pop acc值set tmrc.4set intc.0reti;----------------------do_tmr:inc countreti;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~decode_1 procclr intc.0clr y_bitsnz right_toujmp judge_toumamov a, count_bufsub a, 4snz cjmp error ;data值小于200μs*4=800μs判断错误mov a, count_bufsub a, 13sz cjmp error ;data值大于200μs*13=2.6ms判断错误mov a, count_buf ;data值大于200μs*8=1.6mssub a, 8 ;c=1, data=1;data值小于200μs*8=1.6ms c=0, data=0 rrc card_no3rrc card_no2rrc card_no1rrc card_no0inc cint ;记录收到的BIT位数retclr countclr right_touretjudge_touma:clr right_tou ;头码判断13.50msmov a, count_bufsub a, 70 ;200*70=14mssz cret ;头码大于14ms判断错误mov a, count_bufsub a, 63 ;63*200=12.6mssnz cret ;头码小于12.6ms判断错误 set right_touretdecode_1 endp;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ ;Function : init;Purpose : clear ram value;Parameter:;Return :;Modified : acc, status;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ init procclr intc ;清中断mov a, 20hmov mp0, amov a, 5fhmov temp, aram_clr: ;清RAMinc mp0 sdz temp jmp ram_clr retinit endp。
HTPXI4714 48 路隔离数字 I O 说明书
HTPXI471448路隔离数字I/O 用户手册安全须知 安装、使用前请阅读用户手册;必须将PXI机箱电源安全接地;请在额定电压条件下使用;清洁与维护前请断电;请专业人员操作和维修。
HTPXI4714 48路隔离数字I/O 用户手册- i -目 录1 概述............................................................................................................................1 1.1 功能特点.................................................................................................................1 1.2 具体参数;.............................................................................................................1 1.3 主要用途.................................................................................................................2 1.4 产品尺寸.................................................................................................................2 1.5 接口框图.................................................................................................................2 1.6 前面板接口定义.....................................................................................................2 1.7 环境适应性.............................................................................................................4 2 安装............................................................................................................................4 2.1 硬件安装.................................................................................................................4 2.2 软件安装.................................................................................................................5 2.3 板卡测试面板.........................................................................................................6 2.4 测试软件界面说明.................................................................................................8 2.5 驱动程序使用说明.................................................................................................9 3 使用注意事项............................................................................................................9 4 LabWindow/CVI 例程.............................................................................................10 5 运输及贮存..............................................................................................................12 5.1 运输.......................................................................................................................12 5.2 贮存.. (13)HTPXI4714 48路隔离数字I/O 用户手册- ii -前 言关于此手册:本用户手册描述了HTPXI4714 48路隔离数字I/O 的特点,包含配置, 操作,使用等信息。
长城48芯片拆防盗盒写启动全过程
长城48芯片拆防盗盒写启动全过程长城48芯片拆防盗盒写启动全过程在长城汽车德尔福防盗系统中大多车型的钥匙是普通48芯片,比如风骏系列,哈弗系列等。
匹配钥匙时,需要原厂密码,一般车辆过户转手时,密码函就会丢失,去厂家查询也很麻烦。
我们可以拆下防盗盒用数据3读数据,VVDI2写启动。
具体匹配步骤如下:以长城哈弗柴油H3车型为例。
第一步:拆下防盗盒,在方向盘正下面,管柱上面。
第二步:打开防盗盒拆下六角IC93C66。
第三步:根据IC针脚定义,用数码3适配器接线焊好第四步:打开数码3,选择专用编程器,读取93C66数据,保存BIN格式。
第五步:打开VVDI2,写启动芯片。
第六步:把VVDI2生成的新数据,用数码3反写到IC里面。
第七步:把IC焊好,防盗盒装车,插入新钥匙直接启动。
遥控手工匹配。
经过以上步骤后,钥匙匹配完成即可着车。
但是今天碰到这款车,写完芯片装车后,防盗灯故障依旧,还是闪烁,无法启动。
打开仪表观察指示灯如下图:发现发动机故障码指示灯不亮,问车主,他是不是动车身其他线路了,车主说从超市买了电池,自己安装后,就无法启动了,找了修理厂修理两天没有修好,修理厂怀疑防盗问题,就找到我们去看看。
我们拆开钥匙一看芯片丢了,车主说在超市换的电池,好几天了,肯定找不到了而且家里也没有备用钥匙,这样我们只能拆防盗盒写启动了,按常理说,写完芯片,能直接着车。
此车不着火,肯定是车上有问题。
我们用检测仪,对车辆读取故障码检测,发动机控制单元进不去,防盗里面有个故障是缺失发动机电脑请求信号,再加上之前观察仪表发动机自检故障灯不亮,就确定是发动机电脑不工作。
发动机电脑工作需要电源和打铁,我们拔下发动机插头检测没有12V,有打铁。
经过检查保险,发现发动机电脑主继电器保险烧坏,保险位置下图:换上新保险后,打开钥匙仪表各种灯正常显示,能正常启动车辆。
总计经验:1、遥控钥匙换电池,尽量不要自己更换,需要找专业锁匠店,汽修店,美容店等等,找专业的师傅进行更换,避免出现以上问题。
HT48RA0-2 密码锁系统
密码锁规格文件编码:HA0096S简介通过扫描按键来获得数据,比对后相应发出使能或禁能开门信号。
使用说明按键• 一个密码设置键:红色开关• 三个功能键:″#″、″*″、″0″• 十个数字键键:″1″、″2″、″3″、″4″、″5″、″6″、″7″、″8″、″9″芯片规格使用微控制器母体:HT48RA0-2、HT24LC02额定电源:DC 6V(4节1.5V电池)工作电压VDD: DC 6 V olts(系统要求)DC 3.3 V olts(芯片规格)工作频率OSC: Crystal 1MHz功能描述1. 出厂的统一密码为个人码″12345678″,管理码″88888888″。
2. 上电时密码锁红绿灯由点点亮到熄灭,表示可以开始输入密码。
3. 操作键板上″#″键为激活键,按″#″键可开启线路板进入工作状态。
4. 操作键板上″*″键在数据输入状态时为淸除键,用于输入错误数字的淸除,每按一次″*″淸除一位数字,如长按2秒,红绿灯前后分别亮一下,表示淸除所有数字。
5. 每按一次数字键绿灯闪一下,表示数字已输入。
6. 任何键按下25秒左右,无后续操作,计算机板自动进入睡眠状态。
7. 一旦进入睡眠状态则所有的操作终止,未完成动作视为无效操作。
须按下″#″唤醒重新进入功能操作。
8. 当红灯点亮时,表示电压不足状态,需更换电池。
1• 个人密码的设置与更改步骤:1. 先按下设置按钮(红色开关),然后输入管理码,红绿灯交替闪亮,表示进入个人密码设置或更改状态。
2. 任意输入8位数字键后,绿灯点亮1秒,表示个人密码已设置或更改。
如果已设置了密码,则再进行密码设置将只是对原有密码的更改。
3. 红绿灯同时闪一下,表示个人密码修改成功。
• 管理码的设置与更改步骤:1. 先按下设置按钮(红色开关),按″0″键一次,再输入原管理码,红绿灯交替闪亮,进入管理码设置或更改状态。
2. 任意输入8位数字键后,绿灯点亮1秒,表示个管理码已设置或更改。
海明校验码例题
海明校验码例题
(原创版)
目录
1.海明码的定义和作用
2.海明码的校验原理
3.海明码的例题解析
4.海明码的应用场景
正文
1.海明码的定义和作用
海明码是一种数据传输时用来检测和纠正错误的编码方式,由美国数学家海明在 1950 年提出。
海明码的主要作用是在数据传输过程中保证数据的完整性和正确性,即使在出现一定数量的传输错误时,也能够通过编码技术检测到并进行纠正。
2.海明码的校验原理
海明码的校验原理基于奇偶校验和比特反转原理。
在传输数据时,首先对数据进行编码,将数据看作是 0 和 1 的比特流,然后在比特流中插入校验位,使得编码后的比特流中 1 的个数为偶数。
在接收端,通过比较接收到的比特流中 1 的个数是否为偶数,来判断数据是否传输正确。
如果发现传输错误,通过比特反转原理,可以找到错误的位置并进行纠正。
3.海明码的例题解析
假设我们要传输 7 位数据,为了保证数据的正确性,我们需要添加 3 位校验位,使得总共有 10 位,即 10 个比特。
编码过程如下:- 首先将 7 位数据看作是 7 个比特,即 00110101。
- 在比特流中插入 3 个校验位,使得总共有 10 个比特,即
00110101000。
- 在接收端,通过比较接收到的比特流中 1 的个数是否为偶数,来判断数据是否传输正确。
如果发现传输错误,通过比特反转原理,可以找到错误的位置并进行纠正。
4.海明码的应用场景
海明码广泛应用于数据传输和存储领域,尤其在网络通信、数据存储和卫星通信等领域有着重要的应用。