运用汇编语言用51单片机连接ds18b20芯片让其把温度显示到数码管上的程序
时间: 2024-02-15 07:03:54 浏览: 41
ds18.rar_数码管 ds18
请注意,以下程序仅供参考,具体实现需要根据实际情况进行调试。
```
ORG 0H
MOV P0,#0FFH ; 将P0口设为输出口
MAIN:
CLR P1.0 ; DQ置低,开始复位序列
MOV A,#01H ; 延时1微秒
DELAY1: DJNZ A,DELAY1
SETB P1.0 ; DQ置高
MOV A,#500H ; 延时500微秒
DELAY2: DJNZ A,DELAY2
CLR P1.0 ; DQ置低,开始读温度序列
MOV A,#01H ; 延时1微秒
DELAY3: DJNZ A,DELAY3
SETB P1.0 ; DQ置高
MOV A,P1.1 ; 读取DS18B20的应答信号
CPL A ; 取反,应答信号为低电平
JNZ ERROR ; 应答信号为高电平,出错
; 应答信号为低电平,继续读温度
MOV A,#04H ; 延时4微秒
DELAY4: DJNZ A,DELAY4
MOV A,#0FFH ; 读取温度
MOV R7,A ; 将温度保存到R7
MOV A,#07H ; 温度转换为十进制数
MOV R0,A ; 将除数7保存到R0
CLR A ; 温度的个位数
DIV AB,R0 ; 除法运算
MOV P0,A ; 将个位数输出到数码管
MOV A,R7 ; 将温度重新装载到A中
MOV A,#0AH ; 温度转换为十进制数
MOV R0,A ; 将除数10保存到R0
CLR A ; 温度的十位数
DIV AB,R0 ; 除法运算
MOV P0.1,A ; 将十位数输出到数码管
MOV A,R7 ; 将温度重新装载到A中
MOV A,#064H ; 温度转换为十进制数
MOV R0,A ; 将除数100保存到R0
CLR A ; 温度的百位数
DIV AB,R0 ; 除法运算
MOV P0.2,A ; 将百位数输出到数码管
SJMP MAIN ; 循环读温度和输出温度
ERROR:
SJMP ERROR ; 出错,一直等待
END
```
以上程序实现了连接ds18b20芯片并将温度输出到数码管的功能。但是需要注意的是,具体实现需要根据实际情况进行调试,且程序可能存在错误和不足,需要自行修正和完善。
阅读全文