[资料分享] 用单片机的摩托车防盗器原理图

gina   2010-3-3 11:00 楼主
具有语音提示和六音报警,并具有三键﹑四键选择功能。

20035301314400.jpg

回复评论 (6)

回复 楼主 gina 的帖子

接受模块用的YCJS102(见图),大概几块钱.
单片机具有解码﹑蜂鸣器驱动和实现摩托车防盗器的控制的功能用,以达到简化系统降低成本的目的,同时降低板内干扰提高性能。

此款与其它摩托车防盗器的不同之处主要是在语音方面。
 一)。音频功放:
    该电路采用双运放组成的BTL电路,因此输出不接电容而直接与喇叭相接,这样就可以克服原电路在语音开始时出现的上电噪音"啪"。同时该电路有静音控制,在静音状态下电路的工作电流的典型值65uA,方便了语音电路的静音控制,单片机一输出脚就能实现语音的控制,而不需原电路通过两只三极管来实现语音功放电源的开关控制,这样将大大的降低功放电路的噪声。
二)。语音的回放:
    该电路仍然采用IS22C012语音回放芯片。由于该电路具有自动功率下降功能,在不播放时静态电流不大于5uA,因此不需要象原电路那样进行电源开关控制,可将该芯片直接挂在5V电源上,通过两只单片机的脚来实现音段选择。这样将极大的简化设计电路。
通过上面的一)和二)的设计,不仅回避了原来的专利,同时也使电路简单化,省去了三只三极管,而电路的静态电流增加不会大于0。1mA。与原来的电路相比,只是增加了三只单片机输出脚。同时,由于增加了三只单片机脚,虽然采用单片机解码空出来了四只脚,如此一来就只剩一只脚用于遥控器的键数选择,而无法实现编码外读的功能。这是一大遗憾,这就要求我们在编码记录时不能有半点马虎。
三)。六音报警:
  按厂家要求在开锁时问候:欢迎乘坐某某摩托。闭锁问候:欢迎下次乘坐某某摩托。并有防盗、寻车、防抢、解除等警报。
点赞  2010-3-3 11:06

摩托车防盗器接收控制器

2003611413410.jpg

[ 本帖最后由 gina 于 2010-3-3 11:08 编辑 ]
点赞  2010-3-3 11:07

单片机解码模块原代码

  1. R3        EQU    0X03
  2.             PORT5        EQU    0X05
  3.             PORT6        EQU    0X06
  4.             R3        EQU    0X03

  5.             KEY_STATUS    EQU    0X10    ;低半字节为按键标志,高半字节为控制标志
  6.             SIGNAL_LOW    EQU    0X11    ;信号电平低计数器
  7.             SIGNAL_HIGH    EQU    0X12    ;信号电平高计数器
  8.             DATA_RECORDER    EQU    0X13    ;接收码数据字节
  9.             CODE_RECORDER2    EQU    0X14    ;接收码地址高字节
  10.             CODE_RECORDER1    EQU    0X15    ;接收码地址低字节
  11.             CODE_TOTAL    EQU    0X16    ;接收数据位计数器
  12.             KEY_COUNTER    EQU    0X17    ;两次按键检测计数器
  13. /**********************KEY_STATUS标志位定义***********************************/
  14.             AUTORUN_KEY    EQU    0    ;遥控键标志
  15.             LOCK_KEY    EQU    1    ;防盗键标志
  16.             SEARCH_KEY    EQU    2    ;寻车键标志
  17.             OPEN_KEY    EQU    3    ;解除键标志
  18.             PRESS_FLAG    EQU    4    ;有键按下标志
  19.             CHECK_FLAG    EQU    5    ;校验标志
  20. /***********************CONSTANT DEFINE*************************************/
  21.             CODE_ADDRESS1    EQU    0B10001100    ;遥控器地址码,更改常数即可实现其他遥控器收码
  22.             CODE_ADDRESS2    EQU    0B00101100        
  23.             AUTORUN_VALUE    EQU    0B00000011    ;遥控器相应键值,改变相应数值即可更改其功能
  24.             LOCK_VALUE    EQU    0B00001100
  25.             SEARCH_VALUE    EQU    0B00110000
  26.             OPEN_VALUE    EQU    0B11000000
  27. /**********************当PORT6.2口电平为高时调用该程序收码******************/
  28. ;PORT6.2为信号输入口

  29. collect_2262:
  30.             mov    a,@0xf0
  31.             And     KEY_STATUS,a
  32.             clr    code_total
  33.             clr    signal_high
  34. collect1:
  35.             inc    signal_high
  36.             MOV    A,SIGNAL_HIGH
  37.             SUB    A,@30
  38.             JBS    R3,0
  39.             RET
  40.             clr    signal_low
  41.             call    delay20us
  42.             jbs    port6,2
  43.             jmp    collect_low
  44.             jmp    collect1
  45. collect_low:   
  46.             mov    a,signal_high    ;信号高电平宽度<80US时滤除
  47.             sub    a,@4
  48.             jbc    r3,0
  49.             ret
  50.             mov    a,@20        ;信号高电平宽度在80—400US时为采集为0
  51.             sub    a,signal_high    ;信号高电平宽度在400US以上时为采集为1
  52.             rrc    data_recorder
  53.             rrc    code_recorder2
  54.             rrc    code_recorder1
  55.             inc    code_total
  56.             clr    signal_high
  57.             mov    a,@24
  58.             xor    a,code_total
  59.             jbc    r3,2
  60.             jmp    collect_end
  61. input_low:
  62.             inc    signal_low
  63.             mov    a,signal_low    ;信号低电平宽度大于800US时滤除
  64.             sub    a,@40
  65.             jbs    r3,0
  66.             ret
  67.             call    delay20us
  68.             jbs    port6,2;3
  69.             jmp    input_low   
  70.             jmp    collect1
  71. collect_end:   
  72.             mov    a,code_recorder1    ;校验低字节地址
  73.             xor    a,@code_address1
  74.             jbs    r3,2
  75.             ret
  76.             mov    a,code_recorder2    ;校验高字节地址
  77.             xor    a,@code_address2
  78.             jbs    r3,2
  79.             ret
  80.             jbs    KEY_STATUS,check_flag    ;是否是第一串收码?
  81.             jmp    storage_data
  82.             bc    KEY_STATUS,check_flag  
  83.             mov    a,com_data_rec
  84.             xor    a,data_recorder
  85.             jbs    r3,2
  86.             jmp    storage_data
  87.             mov    a,data_recorder
  88.             xor    a,@autorun_value        ;是启动键?
  89.             jbs    r3,2
  90.             jmp    key1
  91.             bs    KEY_STATUS,autorun_key    ;置启动键标志
  92.             bs    KEY_STATUS,press_flag    ;置有键按下标志
  93.             clr    key_counter        ;清除按键间隔计数器
  94.             ret            
  95. key1:
  96.             mov    a,data_recorder
  97.             xor    a,@open_value        ;是解除键?
  98.             jbs    r3,2
  99.             jmp    key2
  100.             bs    KEY_STATUS,open_key   
  101.             bs    KEY_STATUS,press_flag
  102.             clr    key_counter   
  103.             ret
  104. key2:
  105.             mov    a,data_recorder
  106.             and    a,@0x0c            ;同时有两个键按下时不为0X30
  107.             xor    a,@lock_value        ;是防盗键?
  108.             jbs    r3,2            
  109.             jmp    key3
  110.             bs    KEY_STATUS,lock_key
  111.             bs    KEY_STATUS,press_flag
  112.             clr    key_counter
  113. key3:
  114.             mov    a,data_recorder
  115.             and    a,@0x30
  116.             xor    a,@search_value    ;是寻车键?
  117.             jbs    r3,2
  118.             ret   
  119.             bs    KEY_STATUS,search_key   
  120.             bs    KEY_STATUS,press_flag
  121.             clr    key_counter            
  122.             ret
  123. storage_data:                        ;第一次收码存储数据字节
  124.             bs    KEY_STATUS,check_flag
  125.             mov    a,data_recorder
  126.             mov    com_data_rec,a
  127.             ret

  128. delay20us:
  129.             wdtc
  130.             mov    a,@3;9
  131.             mov    delay1,a
  132. delay20us_1:        
  133.             nop
  134.             djz    delay1
  135.             jmp    delay20us_1
  136.             ret
点赞  2010-3-3 11:09

检测振动模块

  1.     ;数据寄存器定义
  2.         NUMBER0        EQU    0X1D    ;振动宽度计数器
  3.         GRADEDATA    EQU    EQU0X1E;当前灵敏度
  4.         COM_DATA_REC    EQU    0X1F;上一次数据寄存器
  5.         
  6.         ;PSW位定义
  7.         TCINTBIT    EQU    0;中断计数标志位,约为750ms(TCC Rate=1:256)
  8.         VibraBIT    EQU    1;是否达到当前灵敏度宽度,即是否有振动
  9.         
  10. CHECK_Vibra:
  11. CELLECTION_VIB:
  12.         CLR    NUMBER            ;检测振动前先把计数器清0
  13.         CLR    TCC
  14.         CLR    NUMBER0
  15.         BC    PSW,TCINTBIT
  16. CELLECTION_L:        ;采集数据子程序
  17.         MOV    A,@89            ;730ms
  18.         SUB    A,NUMBER
  19.         JBC    R3,0
  20.         BS    PSW,TCINTBIT
  21.         JBC    PSW,TCINTBIT            
  22.         JMP    CELLECTION_CN4            ;是否超时               
  23.         JBS    PORT5,SEN
  24.         JMP    CELLECTION_L
  25. CELLECTION:
  26.         JBS    PORT5,SEN
  27.         JMP    CELLECTION_END
  28.         MOV    A,@53            ;DELAY 60us
  29.         CALL    DELAY0
  30.         INC    NUMBER0
  31.         JMP    CELLECTION
  32. CELLECTION_END:
  33.         MOV    A,GRADEDATA            ;比较振动灵敏度
  34.         SUB    A,NUMBER0
  35.         JBS    R3,0
  36.         JMP    CLRNUMBER0
  37.         CLR    NUMBER0
  38.         BS    PSW,VibraBIT        ;置检测到振动标志
  39.         ret
  40.         
  41. CELLECTION_CN4:        
  42.         CLR    NUMBER0        
  43.         BC    PSW,TCINTBIT
  44.         BC    PSW,VibraBIT
  45.         RET
  46. CLRNUMBER0:
  47.         CLR    NUMBER0
  48.         JMP    CELLECTION_L
点赞  2010-3-3 11:10

警报发声模块

  1. 注:警报音频率为1.8K到3.5K之间,具体请查资料


  2. OSCILLATION:R/C =晶振    CLOCK    =    2
  3. Frequency     =4MHZ
  4. ;=================================================================*/
  5.             Fre_COUNT    EQU    0X37    ;'声音频率变化计数器,从1.8~3.55KHZ
  6.             Fre_Repeat    EQU    0x38    ;'同一频率的重复次数
  7.             SOUND_TEMP    EQU    0X39   
  8.             ;'Replace program variable value and debug is more than easy.
  9.             S_Loop        EQU    67    ;'MAX-MIN
  10.             S_MAX        EQU    138
  11.             S_MIN        EQU    71
  12.             S_Repeat    EQU    4
  13.             
  14. ;开始0.2秒发音
  15. SOUND200ms:
  16. SOUND_LH:        ;1.8~3.55        
  17.             MOV    A,@S_Loop        ;66=134-68
  18.             MOV    Fre_COUNT,A
  19. SOUND_LH_LP:
  20.             MOV    A,@S_Repeat        ;
  21.             MOV    Fre_Repeat,A
  22.             MOV    A,Fre_COUNT
  23.             ADD    A,@S_MIN        ;
  24. repeat0_lp        BS    PORT6,BUZ
  25.             CALL    SOUNDDELAY0
  26.             BC    PORT6,BUZ
  27.             CALL    SOUNDDELAY0
  28.             DJZ    Fre_Repeat
  29.             JMP    repeat0_lp
  30.             DJZ    Fre_COUNT
  31.             JMP    SOUND_LH_LP
  32. SOUND_HL:        ;3.55~1.8   
  33.             MOV    A,@S_Loop        ;66=134-68
  34.             MOV    Fre_COUNT,A
  35. SOUND_HL_LP:
  36.             MOV    A,@S_Repeat        ;
  37.             MOV    Fre_Repeat,A
  38.             MOV    A,Fre_COUNT
  39.             SUB    A,@S_MAX        ;
  40. repeat1_lp        BS    PORT6,BUZ
  41.             CALL    SOUNDDELAY0
  42.             BC    PORT6,BUZ
  43.             CALL    SOUNDDELAY0
  44.             DJZ    Fre_Repeat
  45.             JMP    repeat1_lp
  46.             DJZ    Fre_COUNT
  47.             JMP    SOUND_HL_LP
  48. SOUND_END:                        ;
  49.             RET
  50.             
  51. ;**********************************************************
  52. Sound2s:        ;2S内短鸣两声
  53. WARNING1:
  54.             CALL    Sound200ms
  55.             CALL    Delay800ms
  56.             CALL    Sound200ms
  57.             CALL    Delay800ms
  58.             RET
  59. Delay800ms:
  60.             CLR    TIME1            ;'get ready for 0.8 second delay.
  61. Sound_delay        MOV    A,@196            ;'delay 0.8 second
  62.             SUB    A,TIME1
  63.             JBS    R3,0
  64.             JMP    Sound_delay
  65.             RET
  66. ;************************************************
  67. Sound15s:        ;连续报警15S
  68. WARNING2:
  69.             MOV    A,@73
  70.             MOV    SOUND_TEMP,A
  71. Sound1s_lp        CALL    Sound200ms
  72.             JBC    PORT6,SDT        ;'SDT上电立即中断报警
  73.             RET
  74.             DJZ    SOUND_TEMP
  75.             JMP    Sound1s_lp
  76.             RET
  77. ;============================
  78.         SOUNDDELAY1    EQU    0X3A
  79.         
  80. sounddelay:
  81.             mov    a,@18        ;
  82. sounddelay0        mov    sounddelay1,a    ;=(A*9)+3
  83.             wdtc
  84. sounddelayus_1:        
  85.             nop
  86.             nop
  87.             nop
  88.             nop
  89.             nop
  90.             nop
  91.             djz    sounddelay1
  92.             jmp    sounddelayus_1
  93.             ret
点赞  2010-3-3 11:10
还不错
点赞  2010-3-3 11:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复