接收模块用的YCJS102(见图),大概几块钱. 单片机具有解码﹑蜂鸣器驱动和实现摩托车防盗器的控制的功能用,以达到简化系统降低成本的目的,同时降低板内干扰提高性能。
此款与其它摩托车防盗器的不同之处主要是在语音方面。 一)。音频功放: 该电路采用双运放组成的BTL电路,因此输出不接电容而直接与喇叭相接,这样就可以克服原电路在语音开始时出现的上电噪音"啪"。同时该电路有静音控制,在静音状态下电路的工作电流的典型值65uA,方便了语音电路的静音控制,单片机一输出脚就能实现语音的控制,而不需原电路通过两只三极管来实现语音功放电源的开关控制,这样将大大的降低功放电路的噪声。 二)。语音的回放: 该电路仍然采用IS22C012语音回放芯片。由于该电路具有自动功率下降功能,在不播放时静态电流不大于5uA,因此不需要象原电路那样进行电源开关控制,可将该芯片直接挂在5V电源上,通过两只单片机的脚来实现音段选择。这样将极大的简化设计电路。 通过上面的一)和二)的设计,不仅回避了原来的专利,同时也使电路简单化,省去了三只三极管,而电路的静态电流增加不会大于0。1mA。与原来的电路相比,只是增加了三只单片机输出脚。同时,由于增加了三只单片机脚,虽然采用单片机解码空出来了四只脚,如此一来就只剩一只脚用于遥控器的键数选择,而无法实现编码外读的功能。这是一大遗憾,这就要求我们在编码记录时不能有半点马虎。 三)。六音报警: 按厂家要求在开锁时问候:欢迎乘坐某某摩托。闭锁问候:欢迎下次乘坐某某摩托。并有防盗、寻车、防抢、解除等警报。
单片机解码模块原代码
R3 EQU 0X03 PORT5 EQU 0X05 PORT6 EQU 0X06 R3 EQU 0X03
KEY_STATUS EQU 0X10 ;低半字节为按键标志,高半字节为控制标志 SIGNAL_LOW EQU 0X11 ;信号电平低计数器 SIGNAL_HIGH EQU 0X12 ;信号电平高计数器 DATA_RECORDER EQU 0X13 ;接收码数据字节 CODE_RECORDER2 EQU 0X14 ;接收码地址高字节 CODE_RECORDER1 EQU 0X15 ;接收码地址低字节 CODE_TOTAL EQU 0X16 ;接收数据位计数器 KEY_COUNTER EQU 0X17 ;两次按键检测计数器 /**********************KEY_STATUS标志位定义***********************************/ AUTORUN_KEY EQU 0 ;遥控键标志 LOCK_KEY EQU 1 ;防盗键标志 SEARCH_KEY EQU 2 ;寻车键标志 OPEN_KEY EQU 3 ;解除键标志 PRESS_FLAG EQU 4 ;有键按下标志 CHECK_FLAG EQU 5 ;校验标志 /***********************CONSTANT DEFINE*************************************/ CODE_ADDRESS1 EQU 0B10001100 ;遥控器地址码,更改常数即可实现其他遥控器收码 CODE_ADDRESS2 EQU 0B00101100 AUTORUN_VALUE EQU 0B00000011 ;遥控器相应键值,改变相应数值即可更改其功能 LOCK_VALUE EQU 0B00001100 SEARCH_VALUE EQU 0B00110000 OPEN_VALUE EQU 0B11000000 /**********************当PORT6.2口电平为高时调用该程序收码******************/ ;PORT6.2为信号输入口
collect_2262: mov a,@0xf0 And KEY_STATUS,a clr code_total clr signal_high collect1: inc signal_high MOV A,SIGNAL_HIGH SUB A,@30 JBS R3,0 RET clr signal_low call delay20us jbs port6,2 jmp collect_low jmp collect1 collect_low: mov a,signal_high ;信号高电平宽度<80US时滤除 sub a,@4 jbc r3,0 ret mov a,@20 ;信号高电平宽度在80—400US时为采集为0 sub a,signal_high ;信号高电平宽度在400US以上时为采集为1 rrc data_recorder rrc code_recorder2 rrc code_recorder1 inc code_total clr signal_high mov a,@24 xor a,code_total jbc r3,2 jmp collect_end input_low: inc signal_low mov a,signal_low ;信号低电平宽度大于800US时滤除 sub a,@40 jbs r3,0 ret call delay20us jbs port6,2;3 jmp input_low jmp collect1 collect_end: mov a,code_recorder1 ;校验低字节地址 xor a,@code_address1 jbs r3,2 ret mov a,code_recorder2 ;校验高字节地址 xor a,@code_address2 jbs r3,2 ret jbs KEY_STATUS,check_flag ;是否是第一串收码? jmp storage_data bc KEY_STATUS,check_flag mov a,com_data_rec xor a,data_recorder jbs r3,2 jmp storage_data mov a,data_recorder xor a,@autorun_value ;是启动键? jbs r3,2 jmp key1 bs KEY_STATUS,autorun_key ;置启动键标志 bs KEY_STATUS,press_flag ;置有键按下标志 clr key_counter ;清除按键间隔计数器 ret key1: mov a,data_recorder xor a,@open_value ;是解除键? jbs r3,2 jmp key2 bs KEY_STATUS,open_key bs KEY_STATUS,press_flag clr key_counter ret key2: mov a,data_recorder and a,@0x0c ;同时有两个键按下时不为0X30 xor a,@lock_value ;是防盗键? jbs r3,2 jmp key3 bs KEY_STATUS,lock_key bs KEY_STATUS,press_flag clr key_counter key3: mov a,data_recorder and a,@0x30 xor a,@search_value ;是寻车键? jbs r3,2 ret bs KEY_STATUS,search_key bs KEY_STATUS,press_flag clr key_counter ret storage_data: ;第一次收码存储数据字节 bs KEY_STATUS,check_flag mov a,data_recorder mov com_data_rec,a ret
delay20us: wdtc mov a,@3;9 mov delay1,a delay20us_1: nop djz delay1 jmp delay20us_1 ret 遥控板用的是PT2262,hs2260原理应是一样,但应看一下它是如何编码的,再相应修改。 地址码可修改,但请注意,为了方便生产或遥控器的更换,该地址必须要能读出。因此,还需设计一专门的地址读出器,以方便生产时对遥控器进行编码。
检测振动模块
;数据寄存器定义 NUMBER0 EQU 0X1D ;振动宽度计数器 GRADEDATA EQU EQU0X1E;当前灵敏度 COM_DATA_REC EQU 0X1F;上一次数据寄存器 ;PSW位定义 TCINTBIT EQU 0;中断计数标志位,约为750ms(TCC Rate=1:256) VibraBIT EQU 1;是否达到当前灵敏度宽度,即是否有振动 CHECK_Vibra: CELLECTION_VIB: CLR NUMBER ;检测振动前先把计数器清0 CLR TCC CLR NUMBER0 BC PSW,TCINTBIT CELLECTION_L: ;采集数据子程序 MOV A,@89 ;730ms SUB A,NUMBER JBC R3,0 BS PSW,TCINTBIT JBC PSW,TCINTBIT JMP CELLECTION_CN4 ;是否超时 JBS PORT5,SEN JMP CELLECTION_L CELLECTION: JBS PORT5,SEN JMP CELLECTION_END MOV A,@53 ;DELAY 60us CALL DELAY0 INC NUMBER0 JMP CELLECTION CELLECTION_END: MOV A,GRADEDATA ;比较振动灵敏度 SUB A,NUMBER0 JBS R3,0 JMP CLRNUMBER0 CLR NUMBER0 BS PSW,VibraBIT ;置检测到振动标志 ret CELLECTION_CN4: CLR NUMBER0 BC PSW,TCINTBIT BC PSW,VibraBIT RET CLRNUMBER0: CLR NUMBER0 JMP CELLECTION_L 注:警报音频率为1.8K到3.5K之间,具体请查资料
OSCILLATION:R/C =晶振 CLOCK = 2 Frequency =4MHZ ;=================================================================*/ Fre_COUNT EQU 0X37 ;'声音频率变化计数器,从1.8~3.55KHZ Fre_Repeat EQU 0x38 ;'同一频率的重复次数 SOUND_TEMP EQU 0X39 ;'Replace program variable value and debug is more than easy. S_Loop EQU 67 ;'MAX-MIN S_MAX EQU 138 S_MIN EQU 71 S_Repeat EQU 4 ;开始0.2秒发音 SOUND200ms: SOUND_LH: ;1.8~3.55 MOV A,@S_Loop ;66=134-68 MOV Fre_COUNT,A SOUND_LH_LP: MOV A,@S_Repeat ; MOV Fre_Repeat,A MOV A,Fre_COUNT ADD A,@S_MIN ; repeat0_lp BS PORT6,BUZ CALL SOUNDDELAY0 BC PORT6,BUZ CALL SOUNDDELAY0 DJZ Fre_Repeat JMP repeat0_lp DJZ Fre_COUNT JMP SOUND_LH_LP SOUND_HL: ;3.55~1.8 MOV A,@S_Loop ;66=134-68 MOV Fre_COUNT,A SOUND_HL_LP: MOV A,@S_Repeat ; MOV Fre_Repeat,A MOV A,Fre_COUNT SUB A,@S_MAX ; repeat1_lp BS PORT6,BUZ CALL SOUNDDELAY0 BC PORT6,BUZ CALL SOUNDDELAY0 DJZ Fre_Repeat JMP repeat1_lp DJZ Fre_COUNT JMP SOUND_HL_LP SOUND_END: ; RET ;********************************************************** Sound2s: ;2S内短鸣两声 WARNING1: CALL Sound200ms CALL Delay800ms CALL Sound200ms CALL Delay800ms RET Delay800ms: CLR TIME1 ;'get ready for 0.8 second delay. Sound_delay MOV A,@196 ;'delay 0.8 second SUB A,TIME1 JBS R3,0 JMP Sound_delay RET ;************************************************ Sound15s: ;连续报警15S WARNING2: MOV A,@73 MOV SOUND_TEMP,A Sound1s_lp CALL Sound200ms JBC PORT6,SDT ;'SDT上电立即中断报警 RET DJZ SOUND_TEMP JMP Sound1s_lp RET ;============================ SOUNDDELAY1 EQU 0X3A sounddelay: mov a,@18 ; sounddelay0 mov sounddelay1,a ;=(A*9)+3 wdtc sounddelayus_1: nop nop nop nop nop nop djz sounddelay1 jmp sounddelayus_1 ret
|