久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
基于18B20溫度檢測(cè)程序精確0.25度
[打印本頁(yè)]
作者:
daniu
時(shí)間:
2014-12-27 16:22
標(biāo)題:
基于18B20溫度檢測(cè)程序精確0.25度
;=================================================================================
;Filename:DS18B20.asm ;
;Program function: temperature testing ;
; version: v1.0 ;
; date: 2009-9-03 11;49 ;
; Author: 蘭建文 ;
; Company: YUANDIAN ;
;=================================================================================
;MCU type:AT89S52 ;
;FOSC: ERC,HF,XT,LF,TMR0 Mode ;
;WDTEN: DISABLE ;
;PROTECT:YES ;
;LVDTEN:ENABLE LVD=1.8V ;
;OSCD: 12 oscillator periods ;
;PMCD: No_Power saving ;
;SET freq:12MHz ;
;Fosc=XT 1MHz(2T)=0.50us ;
;Time:T=(65536-M)*Pre*Tm/Osc ;
;Tm:Oscillater periods=12,Pre(TCC=1:x) ;
;PAPH: Disable ;
;PBPH: Enable ;
;VDD: extv=5V ;
;CHECKSUM: CONFIG: ,CONFIG1: ;
;ROM size: RAM size: ;
;=================================================================================
; Register Definitions
;-----------Define system register---------------------------
;=================================================================================
;單片機(jī)內(nèi)存分配申明!
;=================================================================================
TEMPER_L EQU 29H;用于保存讀出溫度的低8位
TEMPER_H EQU 28H;用于保存讀出溫度的高8位
FLAG1 EQU 22H.0H;是否檢測(cè)到DS18B20標(biāo)志位
a_bit EQU 20H;數(shù)碼管個(gè)位數(shù)存放內(nèi)存位置
b_bit EQU 21H;數(shù)碼管十位數(shù)存放內(nèi)存位置
c_bit EQU 23H;數(shù)碼管小數(shù)點(diǎn)個(gè)分位
d_bit EQU 24H;數(shù)碼管小數(shù)點(diǎn)十分位
ORG 0000H
JMP MAIN
ORG 0030H
MAIN:
LCALL GET_TEMPER;調(diào)用讀溫度子程序
;=================================================================================
;進(jìn)行溫度顯示
;顯示范圍00到99度,顯示精度為1度
;因?yàn)?2位轉(zhuǎn)化時(shí)每一位的精度為0.0625度,我們不要求顯示小數(shù)所以可以拋棄29H的低4位
;將28H中的低4位移入29H中的高4位,這樣獲得一個(gè)新字節(jié),這個(gè)字節(jié)就是實(shí)際測(cè)量獲得的溫度
;=================================================================================
MOV 27H,29H
MOV A,29H
MOV C,28H.0;將28H中的最低位移入C
RRC A
MOV C,28H.1
RRC A
MOV C,28H.2
RRC A
MOV C,28H.3
RRC A
MOV 29H,A
MOV A,27H
RR A
RR A
ANL A,#03H
CJNE A,#3,LAN1
MOV 27H,#75
AJMP XIANSHI
LAN1: CJNE A,#2,LAN2
MOV 27H,#50
AJMP XIANSHI
LAN2: CJNE A,#1,LAN3
MOV 27H,#25
AJMP XIANSHI
LAN3: CJNE A,#0,MAIN
MOV 27H,#00
XIANSHI:LCALL DISPLAY;調(diào)用數(shù)碼管顯示子程序
AJMP MAIN
;=================================================================================
; 這是DS18B20復(fù)位初始化子程序
;=================================================================================
INIT_1820:
SETB P3.5
NOP
CLR P3.5
;主機(jī)發(fā)出延時(shí)537微秒的復(fù)位低脈沖
MOV R1,#3
TSR1:
MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB P3.5;然后拉高數(shù)據(jù)線
NOP
NOP
NOP
MOV R0,#25H
TSR2:
JNB P3.5,TSR3;等待DS18B20回應(yīng)
DJNZ R0,TSR2
LJMP TSR4 ; 延時(shí)
TSR3:
SETB FLAG1 ; 置標(biāo)志位,表示DS1820存在
LJMP TSR5
TSR4:
CLR FLAG1 ; 清標(biāo)志位,表示DS1820不存在
LJMP TSR7
TSR5:
MOV R0,#117
TSR6:
DJNZ R0,TSR6 ; 時(shí)序要求延時(shí)一段時(shí)間
TSR7:
SETB P3.5
RET
;=================================================================================
; 讀出轉(zhuǎn)換后的溫度值
;=================================================================================
GET_TEMPER:
SETB P3.5
LCALL INIT_1820;先復(fù)位DS18B20
JNB FLAG1,OUT ; 判斷DS1820是否存在?若DS18B20不存在則返回
MOV A,#0CCH ; 跳過(guò)ROM匹配
LCALL WRITE_1820
MOV A,#44H ; 發(fā)出溫度轉(zhuǎn)換命令
LCALL WRITE_1820;這里通過(guò)調(diào)用顯示子程序?qū)崿F(xiàn)延時(shí)一段時(shí)間,等待AD轉(zhuǎn)換結(jié)束,12位的話750微秒
LCALL DISPLAY
LCALL INIT_1820;準(zhǔn)備讀溫度前先復(fù)位
MOV A,#0CCH ; 跳過(guò)ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ; 發(fā)出讀溫度命令
LCALL WRITE_1820
LCALL READ_18200; 將讀出的溫度數(shù)據(jù)保存到35H/36H
OUT:
RET
;=================================================================================
;寫(xiě)DS18B20的子程序(有具體的時(shí)序要求)
;=================================================================================
WRITE_1820:
MOV R2,#8;一共8位數(shù)據(jù)
CLR C
WR1:
CLR P3.5
MOV R3,#6
DJNZ R3,$
RRC A
MOV P3.5,C
MOV R3,#23
DJNZ R3,$
SETB P3.5
NOP
DJNZ R2,WR1
SETB P3.5
RET
;=================================================================================
; 讀DS18B20的程序,從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù)
;=================================================================================
READ_18200:
MOV R4,#2 ; 將溫度高位和低位從DS18B20中讀出
MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:
MOV R2,#8;數(shù)據(jù)一共有8位
RE01:
CLR C
SETB P3.5
NOP
NOP
CLR P3.5
NOP
NOP
NOP
SETB P3.5
MOV R3,#9
RE10:
DJNZ R3,RE10
MOV C,P3.5
MOV R3,#23
RE20:
DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
;=================================================================================
;顯示子程序
;=================================================================================
DISPLAY:
MOV A,29H;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制
MOV B,#10 ;10進(jìn)制/10=10進(jìn)制
DIV AB
MOV b_bit,A ;十位在a
MOV a_bit,B ;個(gè)位在b
MOV A,27H
MOV B,#10
DIV AB
MOV c_bit,A
MOV d_bit,B
MOV R0,#4
Dpl1:
MOV R1,#250 ;顯示1000次
DPLOP:
MOV DPTR,#TAB1 ;指定查表啟始地址
MOV A,a_bit ;取個(gè)位數(shù)
MOVC A,@A+DPTR ;查個(gè)位數(shù)的7段代碼
MOV P0,A ;送出個(gè)位的7段代碼
CLR P2.2 ;開(kāi)個(gè)位顯示
ACALL D1MS ;顯示1ms
SETB P2.2
MOV A,b_bit ;取十位數(shù)
MOV DPTR,#TAB
MOVC A,@A+DPTR ;查十位數(shù)的7段代碼
MOV P0,A ;送出十位的7段代碼
CLR P2.3 ;開(kāi)十位顯示
ACALL D1MS ;顯示1ms
SETB P2.3
MOV DPTR,#TAB
MOV A,c_bit
MOVC A,@A+DPTR
MOV P0,A
CLR P2.1
ACALL D1MS
SETB P2.1
MOV A,d_bit
MOVC A,@A+DPTR
MOV P0,A
CLR P2.0
ACALL D1MS
SETB P2.0
DJNZ R1,DPLOP ;250次沒(méi)完循環(huán)
DJNZ R0,Dpl1 ;4個(gè)250次沒(méi)完循環(huán)
RET
;=================================================================================
;1MS延時(shí)(按12MHZ算)
;=================================================================================
D1MS:
MOV R7,#80
DJNZ R7,$
RET
;=================================================================================
;實(shí)驗(yàn)板上的7段數(shù)碼管0~9數(shù)字的共陽(yáng)顯示代碼
;=================================================================================
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
TAB1:
DB 080H,079H,024H,030H,19H,12H,02H,078H,00H,10H
END
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲小说图片
|
本道综合精品
|
国产日韩欧美激情
|
二区中文字幕
|
午夜影院视频
|
久久大
|
欧美高清视频在线观看
|
激情a
|
91一区二区
|
一级黄色片在线看
|
一级黄色毛片子
|
欧美成人激情视频
|
2022国产精品
|
欧美激情视频一区二区三区免费
|
巨大荫蒂视频欧美另类大
|
日本激情视频在线播放
|
欧美不卡
|
成人不卡
|
久久精品国产精品青草
|
99国产精品99久久久久久粉嫩
|
中文字幕一区二区三区四区
|
av天天干
|
欧美日韩手机在线观看
|
91偷拍精品一区二区三区
|
99精品视频在线观看
|
国产精品久久久久久久久免费樱桃
|
在线永久看片免费的视频
|
欧美精品v
|
国产精品久久久久久久岛一牛影视
|
综合天天久久
|
国产精品夜间视频香蕉
|
国产精品一区二区三区久久久
|
午夜精品影院
|
欧美一区二区三区在线观看视频
|
日本在线综合
|
日韩精品中文字幕一区二区三区
|
国产一区二区免费电影
|
亚洲不卡一
|
伊人伊成久久人综合网站
|
一区二区三区四区视频
|
h免费观看
|