"); //-->
具有语音提示和六音报警,并具有三键﹑四键选择功能。
原理图:(说明:如果看不清楚,可以点击图片单独打开或另存)
接受模块用的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
检测振动模块原代码:
;数据寄存器定义
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
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。