找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7304|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機紅外線發(fā)射和接收問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:17963 發(fā)表于 2009-11-14 19:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好小弟現(xiàn)在做一個紅外線探測是否有物體通過的東東,現(xiàn)在對紅外線發(fā)射這塊產(chǎn)生問題,請大家?guī)兔o看看。


以上是原理圖,通過p3.3使用PWM控制紅外線發(fā)射,CON4的1、2腳接紅外線LED,3腳接一體化接收管的輸出腳并于INT0連接,4腳接接收管的地,接收管的電源單獨提供一5V。
程序是這樣的:用T0定時為80us中斷一次用于產(chǎn)生一個PWM波,通過P3.7腳輸出一個可調(diào)的0-5V的電壓,并且定時取反T1的ET1中斷標志位,用于調(diào)制38K的載波;T1定時為13us中斷一次,中斷后使P3.3取反一次,產(chǎn)生38K的載波;INT0中斷用于接收計數(shù)中斷方式為邊沿觸法。
我的問題是:根據(jù)資料顯示調(diào)制波可在幾百微秒內(nèi)實現(xiàn),但我測試結(jié)果是T0中斷計時到24ms時取反一次ET1才能在INT0就得到連續(xù)的計數(shù),如果小于24ms了先是計幾十個或幾百個數(shù)然后就停止了,我用搖控試過,一直點一個鍵,完全可以連續(xù)計數(shù)。我想可以能是發(fā)射電路或程序的問題了,請大家?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口,直接使用原單片機管腳復(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);
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:17963 發(fā)表于 2009-11-22 09:33 | 只看該作者
小弟先謝過了,我的郵箱是:anbgn@126.com,能否通過QQ與您聯(lián)系呀
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表