標(biāo)題: 光敏電阻和濕度傳感器都通過(guò)ad轉(zhuǎn)換,光照可以正常顯示,濕度從大到小,什么情況? [打印本頁(yè)]

作者: 小草228    時(shí)間: 2017-7-3 22:44
標(biāo)題: 光敏電阻和濕度傳感器都通過(guò)ad轉(zhuǎn)換,光照可以正常顯示,濕度從大到小,什么情況?
// ad讀取函數(shù)////////////////////////////////////////////////////
uchar ad0832read(uchar channel)
{
        uchar i=0,value1=0,value2=0;               
                SCL=0;
                delay_1ms(2);
                DO=1;
            delay_1ms(2);
                CS=0;                //開(kāi)始
            delay_1ms(2);
                SCL=1;                //第一個(gè)上升沿       
                   delay_1ms(2);
                SCL=0;
            delay_1ms(2);
                DO=1;
        delay_1ms(2);
                SCL=1;          //第二個(gè)上升沿
                   delay_1ms(2);
                SCL=0;
                   delay_1ms(2);
                DO=channel;
                   delay_1ms(2);
                SCL=1;         //第三個(gè)上升沿
                   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;//數(shù)據(jù)讀取完成,釋放總線(xiàn)
                delay_1ms(2);
        return (value1);

}


/********************獨(dú)立按鍵程序*****************/
uchar key_can;         //按鍵值

void key()         //獨(dú)立按鍵程序
{
        static uchar key_new;
        key_can = 20;                   //按鍵值還原
        P3 |= 0xf0;
        if((P3 & 0xf0) != 0xf0)                //按鍵按下
        {
                delay_1ms(1);                     //按鍵消抖動(dòng)
                if(((P3 & 0xf0) != 0xf0) && (key_new == 1))
                {                                                //確認(rèn)是按鍵按下
                        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;                                    //開(kāi)機(jī)蜂鳴器叫一聲
        delay_1ms(1);
        P0 = P1 = P2 = P3 = 0xff;   //初始化IO口                          
        init_1602();                           //1602液晶初始化
        delay_1ms(750);       
        while(1)
        {
                key();                                        //獨(dú)立按鍵程序
                if(key_can!= 0)
                {
                        key_with();                        //按鍵按下要執(zhí)行的程序
                }
       
                 flag_250ms ++;         
                if(flag_250ms >=250)
                {               
                        flag_250ms = 0;          
                        clock_h_l();         //報(bào)警函數(shù)
                        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);          //顯示光線(xiàn)       
                        }
                }
                delay_1ms(1);
        }
}




作者: ahshmj    時(shí)間: 2017-7-4 09:41
不知道你說(shuō)的是什么。
作者: 小草228    時(shí)間: 2017-7-4 16:15
ahshmj 發(fā)表于 2017-7-4 09:41
不知道你說(shuō)的是什么。

經(jīng)過(guò)adc0832轉(zhuǎn)換后,當(dāng)濕度傳感器放在空氣中時(shí)是99%,當(dāng)放在水里時(shí)是0%?為什么  
還有就是經(jīng)過(guò)adc0832轉(zhuǎn)換后,被單片機(jī)讀取的是什么?怎么轉(zhuǎn)換為百分比?
非常感謝
作者: 我只是過(guò)于低調(diào)    時(shí)間: 2019-3-15 19:39
小草228 發(fā)表于 2017-7-4 16:15
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

這個(gè)問(wèn)題你解決沒(méi)有,我現(xiàn)在遇到的問(wèn)題就是這樣,不知道該怎樣解決
作者: 春風(fēng)十里吹    時(shí)間: 2019-3-16 07:28
都是一樣,都是將接收到的變化的信息轉(zhuǎn)換為電壓變化,然后單片機(jī)用AD檢測(cè)判斷顯示

作者: cyzMrbig    時(shí)間: 2019-5-21 14:57
樓主有實(shí)現(xiàn)光照顯示的代碼嗎...蟹蟹
作者: 幻劍心    時(shí)間: 2019-5-21 16:04
小草228 發(fā)表于 2017-7-4 16:15
**** 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽 ****

這個(gè)只能查看你用的濕度計(jì)的數(shù)據(jù)手冊(cè)才能確定。AD轉(zhuǎn)換出來(lái)的是濕度計(jì)某種變化(電壓、電流什么的)。所以是不一定電壓大就表示濕度大,有可能是放過(guò)來(lái)也不一定。如果你是執(zhí)著于要了解程序出問(wèn)題的原因,只能去查濕度計(jì)的數(shù)據(jù)手冊(cè)了。如果是要讓濕度反過(guò)來(lái)顯示,那么把得到的濕度(濕度顯示前面的)做一個(gè)1-shidu/100-shidu。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1