标题: 关于TEMT6000的输出为什么大多数是0跟255? [打印本页]

作者: 一站到底    时间: 2020-5-15 23:07
标题: 关于TEMT6000的输出为什么大多数是0跟255?
大佬们,请问一下TEMT6000在经过ADC转换在lcd显示屏上显示出来的数值为什么大多数是0跟255?是需要特定的转换公式吗?

作者: TTQ001    时间: 2020-5-16 07:48
它的照度应在10至1000 lux范围内呈线性,输出应在一个已知值(例如10k欧姆)的电阻上进行测量。 如果将模拟亮度转换为数字值的代码正确,则显示的值应为0到255之间的任何数字,与亮度相对应,除非将传感器置于完全黑暗的环境中或环境光超过1000 lux。
作者: 一站到底    时间: 2020-5-16 10:24
TTQ001 发表于 2020-5-16 07:48
它的照度应在10至1000 lux范围内呈线性,输出应在一个已知值(例如10k欧姆)的电阻上进行测量。 如果将模拟 ...

你好,它的输出值有在一个10K的电阻上进行测量,然后置于的环境也是正常的室内环境。将模拟亮度转换为数字值的是用ADC0832转换的,代码如下,能帮忙看一下吗?
uchar Adc0832()     //AD转换,返回结果
{
   uchar u=0;
   uchar dat=0;
   ADCLK=0;
   delayms(1);
   ADCS=0;//拉低CS端
   delayms(1);
   ADDI=1;
   delayms(1);
   ADCLK=1;//拉高CLK端
   delayms(1);
   ADCLK=0;//形成下降沿1
   delayms(1);
   ADCLK=1;//拉高CLK端
   ADDI=1;
   delayms(1);
   ADCLK=0;//形成下降沿2
   delayms(1);
   ADCLK=1;//拉高CLK端
   ADDI=1;
   delayms(1);
   ADCLK=0;//形成下降沿3
   delayms(1);
   ADDI=1;//控制命令结束
   delayms(1);
   dat=0;
   for(u=0;u<8;u++)
   {       
     ADCLK=1;
     delayms(1);
     ADCLK=0;//形成一次时钟脉冲
     delayms(1);
         dat|=ADDO;//收数据
         if(u<7)
     dat<<=1;
   }  
   for(u=0;u<8;u++)
   {   
     ADCLK=1;
     delayms(1);
     ADCLK=0;//形成一次时钟脉冲
     delayms(1);
   }
   ADCS=1;//拉低CS端
   ADCLK=0;//拉低CLK端
   ADDO=1;//拉高数据端,回到初始状态
   return dat;            //return 数据       
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1