lcd1602c显示温度语言编程,单片机+lcd1602显示温度汇编语言程序-精确到0.0625度

;这是关于单个DS18B20的测温程序,数据脚为P3.3,晶振是11.059MHZ

;温度传感器18B20采用器件默认的12位转化,最大转化时间要750毫秒

;用1602液晶屏显示,显示温度从00到99度,精确到0.0625度

;内存分配声明

TEMPER_L EQU 29H;用于保存读出温度的低字节

TEMPER_H EQU 28H;用于保存读出温度的高字节

T_DF EQU 27H ;FORMAT后的小数部分(decimal fraction),半字节的温度小数(存在低四位)

T_INTEGER EQU 26H ;FORMAT后的整数部分(integer),将两字节的温度整合成1字节

FLAG1 BIT 50H;位地址50H是字节2AH的最低位,用作是否检测到DS18B20的标志位

A_BIT EQU 20h ;液晶十位数存放内存位置

B_BIT EQU 21h ;液晶个位数存放内存位置

C_BIT EQU 22H ;个位小数

D_BIT EQU 23H ;十位小数

E_BIT EQU 24H ;百位小数

F_BIT EQU 25H ;千位小数

RS BIT P2.0 ;这3位是液晶屏的控制信号,连接方式由具体硬件而定

RW BIT P2.1

E  BIT P2.2

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:

LCALL   INIT_RS232

CLR P1.3

LCALL T_CONVERSION;调用读温度子程序

LCALL T_FORMAT;将读出的2字节温度格式化

LCALL DISPLAY;调用液晶显示子程序

LCALL D1S;延时1秒后再测

LJMP MAIN

;--------------DS18B20的温度转换子程序,具体时序请参考资料-------------------

T_CONVERSION:        LCALL INIT_1820;先复位DS18B20

JB FLAG1,T_C0

RET ; 判断DS1820是否存在  若DS18B20不存在则返回

T_C0:                MOV A,#0CCH ; 跳过ROM匹配

LCALL WRITE_1820

MOV A,#44H ; 发出温度转换命令

LCALL WRITE_1820

LCALL D1S   ;这里等待AD

你可能感兴趣的:(lcd1602c显示温度语言编程,单片机+lcd1602显示温度汇编语言程序-精确到0.0625度)