DS18B20讀取溫度并顯示-匯編程序
*
程序效果:通過DS18B20讀取溫度值,顯示對應(yīng)的溫度值
程序重在理解時序,及延時時間
*/
DS18DQ EQU P1.3 //P1.3與DS18DQ等同,便于理解
SPEAKER EQU P2.0 //驅(qū)動蜂鳴器
TEMPH EQU 29H //保存讀出溫度的低8位
TEMPL EQU 28H //保存讀出溫度的高8位
DS18FLAG EQU 40H //設(shè)置標(biāo)志
ORG 0000H
LJMP START
ORG 0030H
START: MOV 30H,#00 //設(shè)置初始值
MOV 31H,#00
MOV 32H,#00
START1: LCALL DS18_GF //設(shè)置DS18B20的工作方式
LCALL CONVERT_TEMPERATURE //輸出轉(zhuǎn)換溫度命令
LCALL DELAY750MS //延時750ms
LCALL GET_TEMPERATURE //獲?溫度數(shù)據(jù)
LCALL CAL_TEMPERATURE //計算溫度數(shù)值
LCALL DISPLAY //調(diào)用顯示,防止掉顯
LJMP START1 //無限循環(huán)
//初始化子程序
DS18_START:
PUSH 07H //保存R7的值,防止改變R7的數(shù)值
SETB DS18DQ //將數(shù)據(jù)線拉高
NOP //延時1us
CLR DS18DQ //將數(shù)據(jù)線拉低
MOV R7,#0 //延時大約512us
DJNZ R7,$
SETB DS18DQ //將數(shù)據(jù)線拉高
MOV R7,#40
DS18_START1: //延時大約160us
JNB DS18DQ,DS18_START2 //檢查DS18B20是否工作正常
DJNZ R7,DS18_START1
SETB DS18FLAG //工作不正常
CLR SPEAKER //驅(qū)動蜂鳴器,報警
DS18_START2:
CLR DS18FLAG
MOV R7,#100 //延時月200us
DJNZ R7,$
POP 07H //恢復(fù)R7的值
RET
//設(shè)置DS18B20工作方式
DS18_GF:CLR DS18FLAG //清除標(biāo)志
LCALL DS18_START //調(diào)用初始化子程序
MOV A,#0CCH //跳躍ROM指令
LCALL DS18_SEND //
MOV A,#4EH //向RAM寫數(shù)據(jù)
LCALL DS18_SEND
MOV A,#75
LCALL DS18_SEND
MOV A,#0
LCALL DS18_SEND
MOV A,#7FH //設(shè)置工作方式
LCALL DS18_SEND
CLR DS18DQ //釋放總線
LCALL DELAY500US //延時500us
LOOP: LCALL CONVERT_TEMPERATURE //調(diào)用轉(zhuǎn)子程序
MOV R5,#80
LOOP1: LCALL DISPLAY //調(diào)用顯示防止掉顯,同時等待轉(zhuǎn)換完成
DJNZ R5,LOOP1
LCALL GET_TEMPERATURE //獲?轉(zhuǎn)換值
LCALL CAL_TEMPERATURE //計算溫度值
LJMP LOOP
RET
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論