- 2
- 0
- 约6.96千字
- 约 6页
- 2017-08-30 发布于安徽
- 举报
/*************************************************************
内容:显示格式 第一行显示temperature 第二行显示 温度 XX.XX C
可以显示负温度
液晶显示显示同时通过串口发送到电脑端显示
使用配套的上位机测温软件 晶振使用11.0592M 当然也可以是12M
里面还用了定时器2定时
作为单片机初学者参考 不用积分 有些地方可能注释的不够专业望各位见谅
说实在话 如果自学单片机的话真的很难 大家要有耐心哦
希望大家给个好评把
*************************************************************/
#include reg52.h
#include stdio.h
#define Lcd_Data P0 //宏定义 P0
sbit RS = P2 ^ 1; //寄存器选择输入端
sbit RW = P1 ^ 5; //lcd读写信号端
sbit E = P1 ^ 6; //lcd命令使能端
sbit Busy = P0 ^ 7; //读忙标志端
sbit DQ = P3 ^ 7; //ds18b20数据输入输出端
unsigned char ldelay=0; //时间溢出标志
unsigned char t=0; //定时器2定时变量
/*************************************
延时函数
*************************************/
void Delay(unsigned int time) //大约延时2×time+5us
{
while( time-- );
}/*************************************
LCD1602读忙函数
*************************************/
void Read_Busy(void) // 寄存器选择输入端选择为指令输入,lcd读写信号端为读,命令使能端从1到0下降沿时判忙
{
do
{
Lcd_Data = 0xff; //初始化P0
RS = 0; //选择指令寄存器
RW = 1; //当RS为0时,RW为1时,读忙
E = 0; //使能为0
Delay(10);
E = 1; //使能为1
}
while(Busy);
}
/*************************************
LCD1602写指令函数
*************************************/
void write_command(unsigned char lcdcommand) // 寄存器选择输入端选择为指令输入,lcd读写信号端为写,命令使能端从0到1 上升沿是写入指令并判忙
{
Lcd_Data = lcdcommand;
RS = 0;
RW = 0;
E = 0;
Read_Busy();
E = 1;
}
/*************************************
LCD1602写数据函数
*************************************/
void write_data(unsigned char lcddata) // 寄存器选择输入端选择为数据输入,lcd读写信号端为写,命令使能端从0到1 上升沿是写入数据,并判忙
{
Lcd_Data = lcddata;
RS = 1;
RW = 0;
E = 0;
Read_Busy();
E = 1;
}
/*************************************
LCD1602初始化函数
*************************************/
void Init_LCD(void)
{
P2=0x3f;
Delay(400);
write_command(0x01); //清屏
write_c
原创力文档

文档评论(0)