/*
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
回复的人多的,感兴趣的话,过两天我烧写程序发上来
|