標(biāo)題:
單片機(jī)匯編語(yǔ)言超聲波測(cè)距報(bào)警程序和Proteus仿真
[打印本頁(yè)]
作者:
李花生51
時(shí)間:
2025-6-23 21:32
標(biāo)題:
單片機(jī)匯編語(yǔ)言超聲波測(cè)距報(bào)警程序和Proteus仿真
匯編程序編寫(xiě),分享給各位
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei圖片_20250623213624.png
(201.45 KB, 下載次數(shù): 0)
下載附件
2025-6-23 21:32 上傳
單片機(jī)源程序如下:
RS BIT P1.0 ;LCD1602引腳定義
RW BIT P1.1
EN BIT P1.2
ECHO BIT P3.6 ;回波信號(hào)端
NUM EQU 40H ;定時(shí)器用
H EQU 41H ;距離高8位
L EQU 42H ;距離低8位
ORG 0000H
LJMP MAIN
ORG 000BH ;定時(shí)器0入口
LJMP TIME0
ORG 0030H
MAIN:
MOV SP,#60H
MOV R0,#40H
MOV A,#0
MOV NUM,#0
MOV H,#0
MOV L,#0
MOV H,#1
MOV L,#0
LCALL LCD1602_INIT ;1602初始化
LCALL DELAY2
MOV A,#80H
LCALL WRITE_1602COM
MOV DPTR,#CODE_PRINT
LCALL PRINT
MOV TMOD,#11H ;初始化定時(shí)器
MOV TH0,#0;
MOV TL0,#0;
SETB EA
SETB ET0
;主循環(huán)
LOOP:
SETB TR1
LOOP1:
JB ECHO,LOOP2
SJMP LOOP1
LOOP2:
SETB TR0
LOOP3:
JNB ECHO,LOOP4
SJMP LOOP3
LOOP4:
CLR TR0
LCALL COUNT
LCALL DISPLAY ;顯示距離
SJMP LOOP6
LOOP5:
CLR TR0
MOV TH0,#0;
MOV TL0,#0;
LOOP6:
SJMP LOOP
COUNT: ;計(jì)算距離 cm=us/58
MOV R1,TH0
MOV R0,TL0
MOV L,#0
MOV H,#0
MOV TH0,#0
MOV TL0,#0
DIS1:
CLR C ;循環(huán)被除數(shù)減去除數(shù)的次數(shù)就是這個(gè)商
MOV A, R0
SUBB A, #3AH
MOV R0, A
MOV A, R1
SUBB A, #0
MOV R1, A
JC DIS2
INC L
MOV A,L
CJNE A,#0,DIS1
INC H
SJMP DIS1
DIS2:
RET
DISPLAY: ;顯示距離
MOV R6,H
MOV R7,L
LCALL HB2 ;2字節(jié)16進(jìn)制數(shù)轉(zhuǎn)換為3字節(jié)壓縮BCD碼
MOV A,#089H
MOV B,R4
LCALL DIS_1BIT
MOV A,R5
LCALL DIS_2BIT
CJNE R4,#3,DIS0
CLR P3.7
RET
DIS0:
SETB P3.7
RET
;LCD1602初始化函數(shù)
LCD1602_INIT:
MOV A,#38H
LCALL WRITE_1602COM
MOV A,#0CH
LCALL WRITE_1602COM
MOV A,#06H
LCALL WRITE_1602COM
MOV A,#01H
LCALL WRITE_1602COM
RET
WRITE_1602COM: ;寫(xiě)命令
CLR RS
CLR RW
MOV P0,A
LCALL DELAY1
SETB EN
LCALL DELAY1
CLR EN
RET
WRITE_1602DAT: ;寫(xiě)數(shù)據(jù)
SETB RS
CLR RW
MOV P0,A
LCALL DELAY1
SETB EN
LCALL DELAY1
CLR EN
RET
;1602顯示字符串函數(shù)
PRINT:
MOV R0,#0
PRINT1:
MOV A,R0
MOVC A,@A+DPTR
CJNE A,#0,PRINT0
RET
PRINT0:
LCALL WRITE_1602DAT
INC R0
SJMP PRINT1
;1602顯示2位整數(shù)
DIS_2BIT:
MOV B,#16
DIV AB
ADD A,#30H
LCALL WRITE_1602DAT
MOV A,B
ADD A,#30H
LCALL WRITE_1602DAT
RET
;1602顯示1位整數(shù)
DIS_1BIT: ;A是地址 B放數(shù)據(jù)
LCALL WRITE_1602COM
MOV A,B
ADD A,#30H
LCALL WRITE_1602DAT
RET
DELAY1: ;延時(shí)1
MOV 30H,#20
DJNZ 30H,$
RET
DELAY2: ;延時(shí)2
MOV 30H,#50
DELAY20:
MOV 31H,#50
DJNZ 31H,$
DJNZ 30H,DELAY20
RET
;定時(shí)器0中斷函數(shù)
TIME0:
RETI
HB2:
CLR A ;BCD碼初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù)
HB3:
MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2
ADDC A,R5
DA A ;十進(jìn)制調(diào)整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;雙字節(jié)十六進(jìn)制數(shù)的萬(wàn)位數(shù)不超過(guò)6,不用調(diào)整
DJNZ R2,HB3 ;處理完16bit
RET
CODE_PRINT:
DB "DISTANCE cm",0
END
復(fù)制代碼
仿真程序下載:
01.7z
(52.24 KB, 下載次數(shù): 0)
2025-6-23 21:59 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1