/*
DS18B20數字溫度計89C51(晶振12M),(-55.0℃---125.0℃)遙控調整溫度范圍。利用18B20內部E2PRAM存儲溫度。上下限溫度設定成功(-50℃---110℃)
回差電壓特性輸出控制(如:TH=30,TL=20)低溫+調整不會超過高溫,反之,高溫-調整不會小于低溫
只有返回正常顯示時候才存儲到18B20中E2PROM
功能如下:
1、-55.0℃---125.0℃顯示
2、遙控任意設定上下限溫度區間(-50℃---110℃)
3、9位精度----12位精度遙控任意切換
2019.12.30完成功能。
*/
;18B20精度和輸入端修改
DQ BIT P3.6 ;18b20輸入腳
;顯示端口定義
WEI_1 BIT P2.0 ;顯示右數第一位
WEI_2 BIT P2.1 ;2
WEI_3 BIT P2.2 ;3
WEI_4 BIT P2.3 ;4
OUT EQU P0
;遙控碼與輸出端口修改
IR_YK1 EQU 0CCH;遙控用戶碼1(改遙控器按鍵)
IR_YK2 EQU 1DH ;遙控用戶碼2
IR_YK3 EQU 04H ;遙控功能碼
IR_YK4 EQU 05H ;遙控加
IR_YK5 EQU 06H ;遙控減
JK_LENG BIT P2.6 ;繼電器輸出制冷恒溫
JK_RE BIT P2.7 ;繼電器輸出加熱恒溫
;以上定義可修改端口,以下定義不可修改以免影響程序
FLAG BIT 38H ;DS18B20存在標志(位定義)
FUHAO BIT 39H ;負溫度標志(位定義)
IRIN BIT P3.2 ;紅外線輸入腳
A_BIT EQU 34H ;放百位
B_BIT EQU 35H ;放十位
C_BIT EQU 36H ;放個位
D_BIT EQU 37H ;個位小數
WENDU_TH EQU 32H ;上限溫度按鍵調整位置
WENDU_TL EQU 33H ;下限溫度按鍵調整位置
JINGDU EQU 25H ;配置精度位1FH(9位)3FH(10位)5FH(11位)7FH(12位)
ORG 00H
AJMP MAIN
ORG 03H ;外部中斷P3.2(遙控調整上下限和精度)
AJMP INT_0
ORG 40H
;======================主程序==========================
MAIN: ;
MOV DPTR,#TAB
SETB EA ;打開CPU總中斷請求
SETB IT0 ;設定INT0的觸發方式為脈沖負邊沿觸發
SETB EX0
MOV A,#0
MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV R4,#0
AAAA:
MOV A,R4
JNZ AAAA_0 ;R4=0正常轉換溫度,R4不為0只掃描按鍵和顯示程序
ACALL RE_TEMP ;讀取溫度值子程序
ACALL TURN ;數據轉化子程序
ACALL SHUCHU ;比較輸出控制程序
MOV R7,#150 ;降低讀取溫度頻率,防止觸發溫度跳變
AAAA_0:
ACALL DISPLAY ;顯示程序
ACALL KEY_0 ;溫度調整程序
DJNZ R7,AAAA_0
JMP AAAA
回復的人多的,感興趣的話,過兩天我燒寫程序發上來
|