窗户自动开启,电机正反转,升降控制,折叠控制都可以用上。
汇编写的!!单片机源程序如下:
; 输入端口 输出端口 ; 2.4 对码输出(确认对码) ; 2.0 LED输出 ; 3.2 手动折叠 ; 2.3 蜂鸣器输出 ; 3.3 手动打开 ; 2.1 继电器折叠 ; 3.4 座位传感器 ; 2.2 继电器打开 ; 3.5 备用(轮椅车程序用) ; 3.6 备用 ; 1.0 推杆过载 ; 1.1 推杆确认 ; 1.2 对码按键 ; 1.7 遥控按键折叠 ; 1.6 遥控按键打开 ORG 00H L1 : MOV 61H , #0 MOV 60H , #0 MOV 65H , #50 ;========================================================================================== MOV P3 , #0FFH MOV P1 , #0FFH W : MOV R7 , #2 ;程序入口 W1 : ACALL DKQ DJNZ R7 , W1 CLR P2.3 ACALL K21 SETB P2.3 ;========================================================================对码入口 LOOP : ACALL FM JNB P1.2 , LOOP1 JMP B2 LOOP1 : MOV 66H , #15 LOOP2 : CLR P2.0 CLR P2.4 ACALL FM SETB P2.0 ACALL FM DJNZ 66H , LOOP2 SETB P2.0 SETB P2.4 JMP LOOP4 ;========================================================================对码入口 LOOP3 : ACALL FM CLR P2.3 JB P1.7 , LOOP3 JB P1.6 , LOOP3 SETB P2.3 ACALL FM JMP B2 LOOP4 : MOV 67H , #40 LOOP5 : ACALL FM JB P1.7 , LOOP3 JB P1.6 , LOOP3 DJNZ 67H , LOOP5 JMP B2 ;=======================================================待机操作 B2 : CLR P2.0 ACALL FM JNB P3.2 , ZHANG1 ;到折叠程序 JNB P3.3 , ZHANG2 ;到打开程序 JB P1.7 , ZHANG1 ;到折叠程序 JB P1.6 , ZHANG2 ;到打开程序 JNB P1.2 , LOOP ;对码学习 JMP B2 ;停止返回 ;=======================================================折叠按键防抖和干扰 ZHANG1 : MOV R4 , #255 ;防抖时间设置 Z10 : MOV R5 , #255 Z12 : MOV R6 , #3 DJNZ R6 , $ DJNZ R5 , Z12 DJNZ R4 , Z10 JNB P3.2 , Z11 ;比较按键是否按下 ,按下跳转 JB P1.7 , Z11 ;比较按键是否按下 ,按下跳转 JMP B2 ;停止返回 ;=======================================================折叠部分 Z11 : JMP C1 ;跳转折叠主程序 JMP B2 ;=======================================================打开按键防抖和干扰 ZHANG2 : MOV R4 , #255 ;防抖时间设置 Z20 : MOV R5 , #255 Z22 : MOV R6 , #3 DJNZ R6 , $ DJNZ R5 , Z22 DJNZ R4 , Z20 JNB P3.3 , Z21 ;比较按键是否按下 ,按下跳转 JB P1.6 , Z21 ;比较按键是否按下 ,按下跳转 JMP B2 ;=======================================================打开部分 Z21 : JMP D1 JMP B2 ;跳转打开主程序 ;============================================================================================================以上是按键操作和遥控部分 ;=========================================================================================================== C1 : ACALL DAKAI11 SETB P2.0 ;蜂鸣器开始响 MOV R7 , #10 ;折叠延时设置 JNB P3.2 , C1 ;按键确认 JB P1.7 , C1 ;按键确认 C2 : JNB P3.4 , SS ;座位传感器 CLR P2.2 ;折叠马达启动 ACALL FM ACALL ZHEDIE ;折叠延时程序 JNB P1.0 , C3 ;检测马达运行 ACALL DWFZ ;行程到位反转 JMP C4 ;跳到报警子程序 SS : JMP E3 JMP B2 C3 : DJNZ R7 , C2 ;折叠延时 ACALL ZDFZ ;折叠完成反转 JMP B2 ;停止返回 C4 : MOV 61H , #3 ;折叠到位 (三声) ACALL DKQ ;蜂鸣器报警 ACALL BJ2 ;蜂鸣器报警 DJNZ 65H , C5 JMP L1 C5 : CLR P2.0 ACALL FM JNB P3.2 , C4 JNB P3.3 , ZHANG2 JB P1.7 , C4 JB P1.6 , ZHANG2 JMP C5 ;------------------------------------------------------------------------------------------------------------- D1 : ACALL DAKAI11 SETB P2.0 ;蜂鸣器开始响 MOV R7 , #10 ;打开延时设置 JNB P3.3 , D1 JB P1.6 , D1 D2 : CLR P2.1 ;打开马达启动 ACALL FM ACALL DAKAI ;打开延时程序 JNB P1.0 , D3 ACALL DKFZ JMP D4 JMP B2 D3 : DJNZ R7 , D2 ACALL DKFZ JMP B2 ;停止返回 D4 : MOV 61H , #3 ;打开到位 (三声) ACALL DKQ ACALL BJ2 DJNZ 65H , D5 JMP L1 D5 : CLR P2.0 ACALL FM JNB P3.2 , D6 JNB P3.3 , D4 JB P1.7 , D6 JB P1.6 , D4 JMP D5 D6 : JMP ZHANG1 ;============================================================================================================以上是马达的驱动部分 ;=========================================================================================================== ZDGZ : SETB P2.2 ;=!!!!折叠过载保护 SETB P2.3 ACALL DWFZ GZ : MOV 61H , #4 ;=!!!!报警设置和子程序 (四声) ACALL DKQ ACALL BJ2 GZ2 : ACALL FM JNB P3.2 , GZ JNB P3.3 , H2 JB P1.7 , GZ JB P1.6 , H2 JMP GZ2 H2 : JMP ZHANG2 JMP B2 DKGZ : SETB P2.1 ;=!!!!打开过载保护 SETB P2.3 ACALL DKFZ GZ3 : MOV 61H , #4 ;=!!!!报警设置和子程序 (四声) ACALL DKQ ACALL BJ2 GZ4 : ACALL FM JNB P3.2 , H1 JNB P3.3 , GZ3 JB P1.7 , H1 JB P1.6 , GZ3 JMP GZ4 H1 : JMP ZHANG1 JMP B2 ;============================================================================================================以上是过流保护部分 ;=========================================================================================================== ;=======================================================折叠延时 ZHEDIE : CLR P2.3 ;改成SETB,取消蜂鸣器 ACALL ZD SETB P2.3 ACALL ZD RET ZD : MOV R0 , #255 ZD1 : MOV R1 , #255 ZD2 : MOV R2 , #15 DJNZ R2 , $ DJNZ R1 , ZD2 JNB P3.2 , E1 JNB P3.3 , E1 JB P1.7 , E1 JB P1.6 , E1 JNB P3.4 , E3 ;座位传感器 JNB P1.1 , ZDGZ ;检测电流 DJNZ R0 , ZD1 RET ;=======================================================打开延时 DAKAI : CLR P2.3 ;改成SETB,取消蜂鸣器 ACALL DK SETB P2.3 ACALL DK RET DK : MOV R0 , #255 DK1 : MOV R1 , #255 DK2 : MOV R2 , #15 DJNZ R2 , $ DJNZ R1 , DK2 JNB P3.2 , E2 JNB P3.3 , E2 JB P1.7 , E2 JB P1.6 , E2 JNB P1.1 , DKGZ ;检测电流 DJNZ R0 , DK1 RET ;=========================================================================================================以上是马达运行延时程序 ;=========================================================================================================== DAKAI11 : CLR P2.3 ACALL DKQ SETB P2.3 ACALL DKQ RET DKQ : MOV R0 , #255 DKQ1 : MOV R1 , #255 DKQ2 : MOV R2 , #15 DJNZ R2 , $ DJNZ R1 , DKQ2 DJNZ R0 , DKQ1 RET ;============================================================================================================以上是允许开始的空程序 ;=========================================================================================================== ;============ 折叠暂停程序 E1 : SETB P2.2 SETB P2.3 JNB P3.2 , E1 JNB P3.3 , E1 JB P1.7 , E1 JB P1.6 , E1 MOV 61H , #1 ;=!!!!报警设置和子程序 (一声) ACALL ZDFZ ACALL DKQ ACALL BJ2 JMP B2 ;============ 打开暂停程序 E2 : SETB P2.1 SETB P2.3 JNB P3.2 , E2 JNB P3.3 , E2 JB P1.7 , E2 JB P1.6 , E2 MOV 61H , #1 ;=!!!!报警设置和子程序 ACALL DKFZ ACALL DKQ ACALL BJ2 JMP B2 ;============================================================================================================以上是暂停处理部分 ;=========================================================================================================== ;============ 座位传感器 E3 : SETB P2.2 ;=!!!!座位传感器保护 SETB P2.3 ;ACALL ZDFZ E31 : MOV 61H , #2 ;=!!!!报警设置和子程序 (二声) ACALL DKQ ACALL BJ2 E32 : MOV R7 , #15 E34 : ACALL FM JNB P3.2 , E31 JNB P3.3 , E33 JB P1.7 , E31 JB P1.6 , E33 DJNZ R7 , E34 E33 : JMP ZHANG2 JMP B2 ;============================================================================================================以上是座位传感器部分 ;=========================================================================================================== ;============ 折叠反转 ZDFZ : SETB P2.2 ACALL K01 CLR P2.1 ACALL K11 SETB P2.1 RET ;============ 打开反转 DKFZ : SETB P2.1 ACALL K01 CLR P2.2 ACALL K11 SETB P2.2 RET ;============ 打开反转 DWFZ : SETB P2.2 ACALL K01 CLR P2.1 ACALL K21 SETB P2.1 RET ;=======================================================蜂鸣器程序 FMQ : MOV R3 , 60H FMQ1 : CLR P3.3 CLR P2.0 ACALL FM SETB P3.3 SETB P2.0 ACALL FM DJNZ 60H , FMQ1 RET FM : MOV R0 , #255 FM1 : MOV R1 , #255 FM2 : MOV R2 , #5 DJNZ R2 , $ DJNZ R1 , FM2 DJNZ R0 , FM1 RET ;=======================================================暂停反转延时设置 K1 : MOV R0 , #255 K2 : MOV R1 , #255 K3 : MOV R2 , #5 DJNZ R2 , $ DJNZ R1 , K3 DJNZ R0 , K2 RET K11 : MOV R0 , #255 K12 : MOV R1 , #255 K13 : MOV R2 , #5 ;=========折叠反转延时设置 DJNZ R2 , $ DJNZ R1 , K13 DJNZ R0 , K12 RET K21 : MOV R0 , #255 K22 : MOV R1 , #255 K23 : MOV R2 , #15 ;=========打开反转延时设置3022,3041---10 3051----35 (????????????????) DJNZ R2 , $ DJNZ R1 , K23 DJNZ R0 , K22 RET ;===========================================================================================================蜂鸣器的报警设置 ;=========================================================================================================== ;=======================================================蜂鸣器报警处理程序 BJ : MOV R3 , #6 BJ1 : CLR P3.3 ACALL G1 SETB P3.3 ACALL G1 DJNZ R3 , BJ1 RET G1 : MOV R0 , #200 G11 : MOV R1 , #180 G12 : MOV R2 , #2 ;==蜂鸣器短声 DJNZ R2 , $ DJNZ R1 , G12 DJNZ R0 , G11 RET BJ2 : ;==61H放置报警参数 BJ21 : CLR P2.3 CLR P2.0 ACALL G2 SETB P2.3 SETB P2.0 ACALL G2 DJNZ 61H , BJ21 RET G2 : MOV R0 , #255 G21 : MOV R1 , #255 G22 : MOV R2 , #4 ;==蜂鸣器长声 DJNZ R2 , $ DJNZ R1 , G22 DJNZ R0 , G21 RET K01 : MOV R0 , #255 K02 : MOV R1 , #255 K03 : MOV R2 , #25 DJNZ R2 , $ DJNZ R1 , K03 DJNZ R0 , K02 RET END
复制代码