dht11温度传感器显示屏不亮需检查电源控制线是否正确。
根据dht11温度传感器资料,先给两块模块接上电源,注意,模块需要的电源是33V,还是5V。开发板上有33V和5Ⅴ插针。无线模块接开发板的UART,用串口与开发板通信。DHT11传感器DATA脚接开发板的任一IO脚。
DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度数字温湿度传感器。
你说的第二脚是数据传输引脚吧?空闲时输出会由上拉电阻拉高,也就是你说的VCC。度数没显示有很多原因,主机给DHT11的相应信号、主机对DHT11的输出信号接收与分析,看看你的程序是不是对了。有示波器的话可以看看数据线的波形。若程序没问题,换个DHT11试试,一般DHT11都不会有问题。
一般不会是传感器问题的 ,问题就是1程序卡死了,2 读取不对转换代码不对,把程序发过来看看
这是我编写的你看看正常显示前两位为温度然后湿度然后效验和
/ 本程序适用于DHT11温湿度传感器由于DHT11使用拉高总线的不同时常来代替0和1 0 28US 1 70us 同时数据送入1602a显示 /
#include<reg52h>
#include<intrinsh>
#include<mathh>
#define Data P0//数据端口
sbit RS = P2^4;//Pin4
sbit RW = P2^5;//Pin5
sbit E = P2^6; //Pin6
sbit dat=P1^2;
unsigned int shidu_h=0,shidu_l=0,wendu_h=0,wendu_l=0,i,xiaoyan=0;//定义湿度温度变量
unsigned char codetab[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//定义1602a显示0-9
unsigned inta[16]={0} ;
voiddelayus(unsigned char i) //延时2us
{
while(--i);
}
voiddelayms(unsigned char j) //延时1ms
{
while(--j)
{
delayus(125);
delayus(125);
delayus(125);
delayus(125);
}
}
//
/ 写入命令函数 1602 /
//
voidWriteCommand(unsigned int c)
{
delayms(10);// *** 作前短暂延时,保证信号稳定代替状态监测
E=0;
RS=0;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
}
//
/ 写入数据函数 /
//
voidWriteData(unsigned char c)
{
delayms(10);;// *** 作前短暂延时,保证信号稳定
E=0;
RS=1;
RW=0;
_nop_();
E=1;
Data=c;
E=0;
RS=0;
}
//
/ 写入字节函数 /
//
voidShowChar(unsigned char pos,unsigned int c)
{
unsigned char p;
if (pos>=0x10)
p=pos+0xb0; //是第二行则命令代码高4位为0xc p低两位表示位置显示代码只用DDRAM前16位
else
p=pos+0x80; //是第一行则命令代码高4位为0x8 p低两位表示位置显示代码只用DDRAM前16位
WriteCommand (p);//写命令写入数据指针确定行中哪一位显示
WriteData (c); //写数据
}
//
/ 写入字符串函数 /
//
void ShowString(unsigned char line,unsigned int ptr)
{
unsigned char l,i;//l表示行中某一位显示
l=line<<4; //L为0x01时左移四位为了与b0H相加变为0xc
for (i=0;i<16;i++)
ShowChar (l++,(ptr+i));//循环显示16个字符
}
//
/ 初始化函数 /
//
void InitLcd()
{
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x38); //display mode
WriteCommand(0x06); //显示光标移动位置
WriteCommand(0x0c); //显示开及光标设置
WriteCommand(0x01); //显示清屏
}
void main(void)
{
InitLcd(); //初始化LCD
delayms(30);
while(1)
{
dat=0;
delayms(18);//延时18ms拉低主线
dat=1;//主机拉高总线
/delayus(20);/
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
while(!dat);//判断从机是否相应完毕相应完毕会拉高总线
while(dat);//等待从机拉高总线准备开始传送数据
while(!dat);//判断是否开始1bit 开始会拉高总线
for(i=0;i<8;i++)
{
shidu_h<<=1;//右移1位
delayus(14); //延时30us判断是否为1
if(dat)
{
shidu_h++;
}
while(dat);//为一则等待从机拉低总线为零直接跳出
while(!dat);//判断是否开始1bit 开始会拉高总线
}
for(i=0;i<8;i++)
{
delayus(14);
shidu_l<<=1;
if(dat)
{
shidu_l++;
}
while(dat);
while(!dat);
}
for(i=0;i<8;i++)
{
delayus(14);
wendu_h<<=1;
if(dat)
{
wendu_h++;
}
while(dat);
while(!dat);
}
for(i=0;i<8;i++)
{
delayus(14);
wendu_l<<=1;
if(dat)
{
wendu_l++;
}
while(dat);
while(!dat);
}
for(i=0;i<8;i++)
{
delayus(14);
xiaoyan<<=1;
if(dat)
{
xiaoyan++;
}
while(dat);
while(!dat);
}
{
a[0]=tab[(wendu_h)/10];
a[1]=tab[(wendu_h)%10];
a[2]=tab[(shidu_h)/10];
a[3]=tab[(shidu_h)%10];
a[4]=tab[xiaoyan/10];
a[5]=tab[xiaoyan%10];
ShowString(0,a);
}
delayms(100);
shidu_h=0;
wendu_h=0;
shidu_l=0;
wendu_l=0;
xiaoyan=0;
}
}
这就不好说了!要看你自己的环境啊~!我在郑州时的室内湿度大约时60%-80%之间啊 ~! 不知道你哪里的环境怎么样?大于80%如果气候潮湿的话应该没错的啊!应该找个标准的仪器先测下再对照DHT11看看!
以上就是关于dht11温度传感器显示屏不亮怎么回事全部的内容,包括:dht11温度传感器显示屏不亮怎么回事、温湿度传感器DHT11无法输出数值、基于89C51的温湿度计(传感器DHT11),LCD1602什么显示也没有,有哪几种可能问题求赐教等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)