- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
基于SHT11温湿度芯片的c语言程序,51单片机程序精选
基于SHT11温湿度芯片的c语言程序,51单片机程序
#includereg52.h //测湿度
#includeintrins.h
#includemath.h
#define uchar unsigned char
#define uint unsigned int
sbit dat=P2^0;
sbit sck=P2^1;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit rw=P3^6;
uchar code table[]=W:00.00;
uchar code table1[]= S:00.00;
uchar num;
uchar error=0;
/**************************
延时函数
***************************/
void delayms(uint count)
{
uint i,j;
for(i=0;icount;i++)
for(j=0;j110;j++);
}
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
/*****************************
液晶部分
*******************************/
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void disply_T(float temperature)
{
float temp;
int t_qian,t_bai,t_shi,t_ge;
temp=temperature*100;
t_qian=(int)temp/1000;
t_bai=(int)temp%1000/100;
t_shi=(int)temp%100/10;
t_ge=(int)temp%10;
write_com(0x80+0x02);
write_data(0x30+t_qian);
delay(10);
write_com(0x80+0x03);
write_data(0x30+t_bai);
delay(10);
write_com(0x80+0x05);
write_data(0x30+t_shi);
delay(10);
write_com(0x80+0x06);
write_data(0x30+t_ge);
delay(10);
}
void disply_H(float temperature)
{
float temp;
int t_qian,t_bai,t_shi,t_ge;
temp=temperature*100;
t_qian=(int)temp/1000;
t_bai=(int)temp%1000/100;
t_shi=(int)temp%100/10;
t_ge=(int)temp%10;
write_com(0x80+0x0a);
write_data(0x30+t_qian);
delay(10);
write_com(0x80+0x0b);
write_data(0x30+t_bai);
delay(10);
write_com(0x80+0x0d);
write_data(0x30+t_shi);
delay(10);
write_com(0x80+0x0e);
write_data(0x30+t_ge);
delay(10);
}
/****************************
SHT11
******************************/
void start() //启动时序
{
sck=1;
_nop_();
dat=0;
_nop_();
sck=0;
_nop_();
_nop_();
_nop_();
sck=1;
_nop_();
dat=1;
_nop_();
sck=0;
}
uchar w_byte(uchar val) //写命令
{
uchar i;
for(i=0x80;i0;i=i/2)
{
if(ival)
dat=1;
else
文档评论(0)