久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2483|回復: 0
收起左側

我的DIY ( 51單片機匯編+藍牙串口 ) 實現手機輸入密碼開鎖

[復制鏈接]
ID:858964 發表于 2020-12-22 13:17 | 顯示全部樓層 |閱讀模式
本帖最后由 Kxuan163 于 2020-12-24 20:34 編輯

【電路圖】

.
【工作原理】
BT05藍牙串口模塊連接單片機的串行口(如圖),單片機及電磁鎖安裝于室內,
主人歸家時,在門外操作安卓手機,運行手機端藍牙串口APP,
搜索到室內BT05藍牙,隨即在手機輸入開鎖密碼,以串行通信方送密碼,
室內的單片機接收串行數據并校驗密碼,若校驗無誤則由P0.1腳輸出低電平,
再經光耦4N25及反向驅動芯片MC1413使繼電器J3線包通電,觸頭K3閉合,
電磁鐵L通電開鎖。
.
【匯編語言源程序】 Kxuan163 原創
          ORG           0000H
         JMP         START
;;--------------------------------------------
         ORG   000BH      ;定時器T0中斷處理入口地址
         AJMP   T0_INT
;;--------------------------------------------
           ORG     0030H        ;; 主程序入口地址
START:   MOV     SP, #60H     ;; 設定棧頂初址
;;--------------------------------------------  
         ACALL   DSPLED        ;; LED7~LED0逐個顯示1遍
         ACALL   SET_T0
         ACALL   SET_T1
;;--------------------------------------------  
R_X:                              ;; 串行接收
         SETB    P0.1             ;; P0.1高電平,防止控制對象誤動作
         MOV     R2, #5           ;; 接收出錯允許次數
R_X_A:                            ;; 開始接收
         CLR     RI               ;; RI清零,允許接收字符
         MOV     P2, #11111110B   ;; LED指示燈亮,表示開始接收數據
         MOV     R3, #12          ;; 開鎖密碼由12個字符組成
         MOV     DPTR, #DAT_tab   ;; 數據表首址                    
RX_1chr:                          ;; 接收1個字符
         JNB     RI, $            ;; 等待1個字符幀接收完畢         
RX_check:       ;; 檢測收到的字符與數據表DAT_tab對應字符相同否?
         CLR     A
         MOVC    A,  @A+DPTR      ;; A←數據表的1個字符
         CJNE    A,  SBUF, RX_err
         DJNZ    R3, RX_next      ;; 該字符無誤,接收另一字符
OK:                                 ;; 全部字符接收檢測無誤
         CLR     P0.1             ;; P0.1低電平,驅動外設動作
         MOV     P2, #01010101B   ;;#11111101B   ;; 藍LED亮1秒         ACALL   DLY1s
         AJMP    START      
RX_next:                          ;; 接收另一字符
         INC     DPTR             ;; 數據表指針移動
         CLR     RI               ;; RI清零,允許接收字符
         SJMP    RX_1chr          ;; 接收另一字符
RX_err:                           ;; 接收字符出錯
RX_errA: DJNZ    R2, R_X_A        ;; 若出錯未夠5次,重新開始接收
         ACALL   DLY20s
         AJMP    START            ;; 若出錯達5次,延時20秒后初始化
;;--------------------------------------------
SET_T1:                   ;; 用T1產生波特率的設置
         MOV         TMOD, #20H   ;; T1定時模式.方式2(8位自動重載計數初值)
              MOV         TH1, #0FDH   ;;
         MOV         TL1, #0FDH   ;; 波特率9600
         MOV         SCON, #70H   ;; 設定串口工作方式1,8位UART,接收允許                                ANL         PCON, #00H   ;; 波特率不倍增
         SETB         TR1                ;; 啟動定時器T1        
         RET
;;--------------------------------------------
SET_T0:          ;; T0初始化,
        ;; 定時65ms的計數值 =65000μs/1μs =65000
;; 方式1,16位計數器,計數值 =65536-65000 =536 =218H
         MOV   TMOD, #01H    ;; T0定時模式.方式1(16位計數器)
         MOV   TH0,  #02H    ;; 裝入計數初值高字節
         MOV   TL0,  #18H    ;; 裝入計數初值低字節
         SETB  TR0           ;; 啟動T0
         SETB  ET0           ;; 允許T0中斷
         SETB  EA            ;; MPU開中斷
         RET
;;-------------------------------------------  
T0_INT:     ;; T0定時中斷處理程序,每隔65ms喂狗一次  
         CLR   P0.3          ;;  FeedDog 喂片外狗
         MOV   TH0,  #02H    ;; 重裝計數初值高字節
         MOV   TL0,  #18H    ;; 重裝計數初值低字節
         RETI
;;--------------------------------------------
DLY250:    ;; 延時250ms
DLY250A:   MOV  R5,#2           
DLY250B:   MOV  R6,#250
DLY250C:   MOV  R7,#250
           DJNZ R7,$
           DJNZ R6,DLY250C
           DJNZ R5,DLY250B
           RET
;; 1個機器周期 =12/(11.0592MHz) ≈1.085μs
;; 每條DJNZ Rn,rel指令耗費2個機器周期≈2μs
;; 2x250x250x2μs≈250 000μs =250ms
;;----------------------------------------------
DLY1s:      ;; 延時1秒        
DLY1sA:     MOV  R5,#8         
DLY1sB:     MOV  R6,#250           
DLY1sC:     MOV  R7,#250
            DJNZ R7,$
            DJNZ R6,DLY1sC
            DJNZ R5,DLY1sB
            RET
;; 8x250x250x2μs=1 000 000μs =1ms
;;--------------------------------------------
DLY20s:    ;; 延時20秒
DLY20sA:    MOV  R4,#4
DLY20sB:    MOV  R5,#40
DLY20sC:    MOV  R6,#250
DLY20sD:    MOV  R7,#250
            DJNZ R7,$
            DJNZ R6,DLY20sD
            DJNZ R5,DLY20sC
            DJNZ R4,DLY20sB
            RET
;;4x40x250x250x2μs =20 000 000μs =20s,
;;--------------------------------------------
DSPLED:   ;;LED7~LED0逐個顯示1遍然
LEDLP1:    MOV  A,  #01111111B
LEDLP2:    MOV  P2, A          ;; LED7亮
           CALL DLY250         ;; 延時250ms
           CJNE A, #11111110B, DSP_next
           SJMP END_LED
DSP_next:  RR   A              ;; 右移1位
           SJMP LEDLP2         ;; 另一個LED亮
END_LED:   RET      
;;--------------------------------------------
DAT_tab:  ;;12個字符的ASCII碼,例如 38H,39H,73H,35H,32H...
               ;;對應手機端輸入的密碼:     8     9     s       5       2 ...
;;----------------------------------------------
           END                ;; 主程序結束




(89s52+藍牙串口)手機用密碼開鎖電路.jpg

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品99久久久久久久久 | 国产日韩一区二区三免费高清 | 国产亚洲一区二区精品 | 国产成人小视频 | 噜久寡妇噜噜久久寡妇 | 精品日韩一区二区 | 一区二区av | 午夜播放器在线观看 | av入口 | 在线观看日韩 | 午夜免费视频 | 在线一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 天天草天天干天天 | 日韩看片 | 国产综合久久久久久鬼色 | 亚洲精品成人网 | 国产精品色一区二区三区 | 欧美日韩国产一区二区三区 | 久久综合入口 | 玖玖久久 | 国产 欧美 日韩 一区 | 99re在线视频| 久久久久久久久久久一区二区 | 日韩成人在线免费观看 | www.久久久.com | 99成人精品 | 国产九九精品 | 免费在线观看一区二区三区 | 精品一区二区三区不卡 | 毛片久久久 | 一区二区三区中文 | 国内精品视频在线 | 国产欧美精品一区二区 | 欧美一区二区免费视频 | 国产免费一区二区 | av片免费 | 综合中文字幕 | 国产在线观看一区二区三区 | 亚洲视频一 | 色偷偷人人澡人人爽人人模 |