单片机源程序如下:
#include // 头文件包含
#include
#define uchar unsigned char // 以后unsigned char就可以用uchar代替
#define uint unsigned int // 以后unsigned int 就可以用uint 代替
sbit Buzzer_P = P1^0; // 蜂鸣器
sbit DHT11_P = P1^1; // 温湿度传感器DHT11数据接入
sbit LcdRs_P = P2^7; // 1602液晶的RS管脚
sbit LcdRw_P = P2^6; // 1602液晶的RW管脚
sbit LcdEn_P = P2^5; // 1602液晶的EN管脚
uchar temp; // 保存温度
uchar humi; // 保存湿度
/*********************************************************/
// 毫秒级的延时函数,time是要延时的毫秒数
void DelayMs(uint time)
{
uint i,j;
for(i=0;i for(j=0;j<112;j++);}/*********************************************************/// 1602液晶写命令函数,cmd就是要写入的命令/*********************************************************/void LcdWriteCmd(uchar cmd){ LcdRs_P = 0; LcdRw_P = 0; LcdEn_P = 0; P0=cmd; DelayMs(2); LcdEn_P = 1; DelayMs(2); LcdEn_P = 0; }/*********************************************************/// 1602液晶写数据函数,dat就是要写入的数据/*********************************************************/void LcdWriteData(uchar dat){ LcdRs_P = 1; LcdRw_P = 0; LcdEn_P = 0; P0=dat; DelayMs(2); LcdEn_P = 1; DelayMs(2); LcdEn_P = 0;}/*********************************************************/// 1602液晶初始化函数/*********************************************************/void LcdInit(){ LcdWriteCmd(0x38); // 16*2显示,5*7点阵,8位数据口 LcdWriteCmd(0x0C); // 开显示,不显示光标 LcdWriteCmd(0x06); // 地址加1,当写入数据后光标右移 LcdWriteCmd(0x01); // 清屏}/*********************************************************/// 液晶光标定位函数/*********************************************************/void LcdGotoXY(uchar line,uchar column){ // 第一行 if(line==0) LcdWriteCmd(0x80+column); // 第二行 if(line==1) LcdWriteCmd(0x80+0x40+column);}/*********************************************************/// 液晶输出字符串函数/*********************************************************/void LcdPrintStr(uchar *str){ while(*str!='
for(j=0;j<112;j++);
}
// 1602液晶写命令函数,cmd就是要写入的命令
void LcdWriteCmd(uchar cmd)
LcdRs_P = 0;
LcdRw_P = 0;
LcdEn_P = 0;
P0=cmd;
DelayMs(2);
LcdEn_P = 1;
// 1602液晶写数据函数,dat就是要写入的数据
void LcdWriteData(uchar dat)
LcdRs_P = 1;
P0=dat;
// 1602液晶初始化函数
void LcdInit()
LcdWriteCmd(0x38); // 16*2显示,5*7点阵,8位数据口
LcdWriteCmd(0x0C); // 开显示,不显示光标
LcdWriteCmd(0x06); // 地址加1,当写入数据后光标右移
LcdWriteCmd(0x01); // 清屏
// 液晶光标定位函数
void LcdGotoXY(uchar line,uchar column)
// 第一行
if(line==0)
LcdWriteCmd(0x80+column);
// 第二行
if(line==1)
LcdWriteCmd(0x80+0x40+column);
// 液晶输出字符串函数
void LcdPrintStr(uchar *str)
while(*str!='
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』