標(biāo)題:
單片機(jī)紅外線發(fā)射和接收問題
[打印本頁(yè)]
作者:
mateo
時(shí)間:
2009-11-14 19:15
標(biāo)題:
單片機(jī)紅外線發(fā)射和接收問題
大家好小弟現(xiàn)在做一個(gè)紅外線探測(cè)是否有物體通過(guò)的東東,現(xiàn)在對(duì)紅外線發(fā)射這塊產(chǎn)生問題,請(qǐng)大家?guī)兔o看看。
以上是原理圖,通過(guò)p3.3使用PWM控制紅外線發(fā)射,CON4的1、2腳接紅外線LED,3腳接一體化接收管的輸出腳并于INT0連接,4腳接接收管的地,接收管的電源單獨(dú)提供一5V。
程序是這樣的:用T0定時(shí)為80us中斷一次用于產(chǎn)生一個(gè)PWM波,通過(guò)P3.7腳輸出一個(gè)可調(diào)的0-5V的電壓,并且定時(shí)取反T1的ET1中斷標(biāo)志位,用于調(diào)制38K的載波;T1定時(shí)為13us中斷一次,中斷后使P3.3取反一次,產(chǎn)生38K的載波;INT0中斷用于接收計(jì)數(shù)中斷方式為邊沿觸法。
我的問題是:根據(jù)資料顯示調(diào)制波可在幾百微秒內(nèi)實(shí)現(xiàn),但我測(cè)試結(jié)果是T0中斷計(jì)時(shí)到24ms時(shí)取反一次ET1才能在INT0就得到連續(xù)的計(jì)數(shù),如果小于24ms了先是計(jì)幾十個(gè)或幾百個(gè)數(shù)然后就停止了,我用搖控試過(guò),一直點(diǎn)一個(gè)鍵,完全可以連續(xù)計(jì)數(shù)。我想可以能是發(fā)射電路或程序的問題了,請(qǐng)大家?guī)兔纯茨抢镉袉栴},怎么處理。小弟在此謝過(guò)了。急盼回復(fù)。
下面是小弟的程序:
void PWM_38K_T1() interrupt 3 using 1 //T1中斷函數(shù)產(chǎn)生38K載波
{
RF=~RF; //sbit RF="P3"^3
}
void PWM_Vol_T0() interrupt 1 using 0 //T0中斷用于產(chǎn)生PWM電壓和38K載波調(diào)制
{
//PWM電壓產(chǎn)生-----------------------------------------------------------
if(++zkb_count>500) zkb_count=0 ;
if(zkb_count<vol_value) RD=1; //RD為P3.7口,直接使用原單片機(jī)管腳復(fù)用定義名稱
else RD=0;
//-----------------------------------------------------------------------
//外紅調(diào)制波生產(chǎn)--------------------------------------------------------
//24ms停止T1一次,產(chǎn)生用于紅外接收器接收的調(diào)制波
if(++test_t1>300)
{
ET1=~ET1;
test_t1=0;
}
}
void ext_init () interrupt 0 using 3 //INT0中斷函數(shù)
{
++HW_INT0_count;
}
然后在主函數(shù)里初始化以后就顯示HW_INT0_count
main()
{
初始化;
while(1)
{
display(HW_INT0_count);
}
}
作者:
mateo
時(shí)間:
2009-11-22 09:33
小弟先謝過(guò)了,我的郵箱是:
anbgn@126.com
,能否通過(guò)QQ與您聯(lián)系呀
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1