标题:
光敏电阻和湿度传感器都通过ad转换,光照可以正常显示,湿度从大到小,什么情况?
[打印本页]
作者:
小草228
时间:
2017-7-3 22:44
标题:
光敏电阻和湿度传感器都通过ad转换,光照可以正常显示,湿度从大到小,什么情况?
// ad读取函数////////////////////////////////////////////////////
uchar ad0832read(uchar channel)
{
uchar i=0,value1=0,value2=0;
SCL=0;
delay_1ms(2);
DO=1;
delay_1ms(2);
CS=0; //开始
delay_1ms(2);
SCL=1; //第一个上升沿
delay_1ms(2);
SCL=0;
delay_1ms(2);
DO=1;
delay_1ms(2);
SCL=1; //第二个上升沿
delay_1ms(2);
SCL=0;
delay_1ms(2);
DO=channel;
delay_1ms(2);
SCL=1; //第三个上升沿
delay_1ms(2);
SCL=0;
delay_1ms(2);
DO=1;
delay_1ms(2);
for(i=0;i<8;i++) //从高位到低位
{
SCL=1;
delay_1ms(2);
SCL=0;
delay_1ms(2);
if(DO)
{
value1|=0x80>>i;
delay_1ms(2);
}
}
for(i=0;i<8;i++) //从低位到 高位
{
if(DO)
{
value2|=0x80<<i;
delay_1ms(2);
}
SCL=1;
delay_1ms(2);
SCL=0;
delay_1ms(2);
}
CS=1;
SCL=1;
delay_1ms(1);
DO=1;//数据读取完成,释放总线
delay_1ms(2);
return (value1);
}
/********************独立按键程序*****************/
uchar key_can; //按键值
void key() //独立按键程序
{
static uchar key_new;
key_can = 20; //按键值还原
P3 |= 0xf0;
if((P3 & 0xf0) != 0xf0) //按键按下
{
delay_1ms(1); //按键消抖动
if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
{ //确认是按键按下
key_new = 0;
switch(P3 & 0xf0)
{
case 0xe0: key_can = 4; break; //得到k1键值
case 0xd0: key_can = 3; break; //得到k2键值
case 0xb0: key_can = 2; break; //得到k3键值
case 0x70: key_can = 1; break; //得到k4键值
}
}
}
else
key_new = 1;
}
void main()
{
beep = 0; //开机蜂鸣器叫一声
delay_1ms(1);
P0 = P1 = P2 = P3 = 0xff; //初始化IO口
init_1602(); //1602液晶初始化
delay_1ms(750);
while(1)
{
key(); //独立按键程序
if(key_can!= 0)
{
key_with(); //按键按下要执行的程序
}
flag_250ms ++;
if(flag_250ms >=250)
{
flag_250ms = 0;
clock_h_l(); //报警函数
temperature =read_temp(); //读取温度值
delay_1ms(2);
if(menu_1 == 0)
{
guangxian = ad0832read(1);
guangxian = guangxian * 99 / 255;
shidu = ad0832read(0); //读出湿度
shidu=shidu * 99 / 255;
write_sfm2(1,8,shidu); //显示湿度
write_sfm2(2,4,temperature); //显示温度
write_sfm2(2,11,guangxian); //显示光线
}
}
delay_1ms(1);
}
}
作者:
ahshmj
时间:
2017-7-4 09:41
不知道你说的是什么。
作者:
小草228
时间:
2017-7-4 16:15
ahshmj 发表于 2017-7-4 09:41
不知道你说的是什么。
经过adc0832转换后,当湿度传感器放在空气中时是99%,当放在水里时是0%?为什么
还有就是经过adc0832转换后,被单片机读取的是什么?怎么转换为百分比?
非常感谢
作者:
我只是过于低调
时间:
2019-3-15 19:39
小草228 发表于 2017-7-4 16:15
**** 作者被禁止或删除 内容自动屏蔽 ****
这个问题你解决没有,我现在遇到的问题就是这样,不知道该怎样解决
作者:
春风十里吹
时间:
2019-3-16 07:28
都是一样,都是将接收到的变化的信息转换为电压变化,然后单片机用AD检测判断显示
作者:
cyzMrbig
时间:
2019-5-21 14:57
楼主有实现光照显示的代码吗...蟹蟹
作者:
幻剑心
时间:
2019-5-21 16:04
小草228 发表于 2017-7-4 16:15
**** 作者被禁止或删除 内容自动屏蔽 ****
这个只能查看你用的湿度计的数据手册才能确定。AD转换出来的是湿度计某种变化(电压、电流什么的)。所以是不一定电压大就表示湿度大,有可能是放过来也不一定。如果你是执着于要了解程序出问题的原因,只能去查湿度计的数据手册了。如果是要让湿度反过来显示,那么把得到的湿度(湿度显示前面的)做一个1-shidu/100-shidu。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1