#include<reg52.h>
#include<intrins.h> //为了使用这个头文件中的_nop_()延时函数 sbit sda=P2^2; //DS18B20的数据总线
sbit hc573_sg_le=P2^6; //对用于锁存段数据的573锁存LE端进行定义 sbit hc573_bit_le=P2^7; //对用于锁存位选通数据的573锁存LE端进行定义
sbit lcd_rs=P1^0; //数据/命令选择端,高电平执行数据操作,低电平执行命令操作 sbit lcd_rw=P1^1; //读/写控制端高电平时读,低电平写 sbit lcd_en=P2^5; //读写控制使能信号,它为高脉冲信号才可执行读写操作 sbit sta7=P0^7; //1602忙信号检测位,为1则忙,需等待,为0表示空闲
unsigned char code lcd_line1[]={"Temperature:"}; //定义第一行液晶显示的格式字符数组 unsigned char code lcd_line2[]={" ."}; //定义第二行液晶显示的格式字符数组 void lcd_busy_check(void) //1602忙信号检测,忙则等待 { P0=0xff; do { lcd_rs=0; //读状态操作,为0 lcd_rw=1; //读操作为1 lcd_en=0;
}
lcd_en=1;
//读状态,需为高电平
while (sta7==1); //如果为1则忙,等待...直到为0 lcd_en=0; }
void lcd_write_cmd(unsigned char cmd) //液晶写命令函数 {
lcd_busy_check(); //每次操作之前都要进行忙信号检测 lcd_rs=0; //执行命令操作,为0 lcd_rw=0; //写操作,为0 P0=cmd; //送指令到液晶数据端口P0,准备执行命令 _nop_(); //这是一个延时函数,可延时一个机器周期,它在“intrins.h”中 lcd_en=1; //高电平,指令送入液晶控制器 _nop_(); //保持一会儿,使指令可靠地送入液晶控制器 lcd_en=0; //低电平,执行命令 }
void lcd_write_data(unsigned char dat) //液晶写数据函数 { lcd_busy_check(); //每次操作之前都要进行忙信号检测