突然發(fā)現(xiàn)上個(gè)月買(mǎi)的單片機(jī)盒子里有個(gè)光敏電阻,這個(gè)沒(méi)玩過(guò),所以趕緊試試。光敏電阻器的阻值隨入射光線(可見(jiàn)光)的強(qiáng)弱變化而變化,在黑暗條件下,它的阻值(暗阻)可達(dá)1~10M歐,在強(qiáng)光條件(100LX)下,它阻值(亮阻)僅有幾百至數(shù)千歐姆。
下面看一下電路圖:(我們把光敏電阻接入AIN0通道的J2插針處)
如何操作AD還是按照前篇文章的三步走戰(zhàn)略,但是光敏電阻組值變動(dòng)范圍太大,很難嚴(yán)格的說(shuō)出量程范圍,我們只需要大體估計(jì)個(gè)就行,反正有比例關(guān)系。
我們知道當(dāng)沒(méi)有光照射的時(shí)候,光敏電阻阻值最大,AD將獲得最大值(全1),我們索性規(guī)定當(dāng)沒(méi)有光照射的時(shí)候,輸入的電壓就是5V,這樣對(duì)應(yīng)的系數(shù)就有了,255 / 5 = 51 。(有些朋友可能會(huì)亂,哪里來(lái)這么多的規(guī)定!?要明白我要要檢測(cè)AD轉(zhuǎn)換的數(shù)字值,8位AD最大只能顯示255,所以你模擬量再怎么變,AD最大到255就不動(dòng)了,也許AD達(dá)到255的時(shí)候,我們估計(jì)的電阻值距離實(shí)際電阻值相差甚遠(yuǎn),不過(guò)沒(méi)關(guān)系,大體的比例關(guān)系有了),確定了系數(shù)就好了(51),沒(méi)有光照情況下,將輸出5.0V,其他的值就類推就OK了。
那怎么用呢,在程序中,我們可以檢測(cè)測(cè)量到的值,當(dāng)>4.5可粗略認(rèn)為沒(méi)有光照,當(dāng)>3.0V且<4.5V代表有弱光照射,當(dāng)<3.0V可代表有強(qiáng)光照射,進(jìn)而我們可以進(jìn)行其他的控制。我這里做實(shí)驗(yàn)只是簡(jiǎn)單的用LCD顯示一下:
(上圖為光敏電阻有弱光照)
(上圖為光敏電阻有稍強(qiáng)光照)
代碼非常簡(jiǎn)單:
#include "1602.h" #include "iic.h" #includeuchar temp,AIN0,TempData[2]; int main() { INIT_1602(); IIC_INIT(); while(1) { temp = read_byte(0x91,0x40); AIN0 = read_byte(0x91,0x40); TempData[0] = AIN0 / 51; TempData[1]=(((uchar)(((float)AIN0 / 51) * 10)) % 10); write_byte_lcd(0,7,0x30 + TempData[0]); write_byte_lcd(0,8,'.'); write_byte_lcd(0,9,0x30 + TempData[1]); } }
工程文件:
-
電路圖
+關(guān)注
關(guān)注
10349文章
10721瀏覽量
531304 -
光敏電阻
+關(guān)注
關(guān)注
4文章
293瀏覽量
49032
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論