欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9811|回復: 4
收起左側

如何做到51單片機的高電平輸入檢測

[復制鏈接]
ID:417605 發表于 2018-11-5 14:12 | 顯示全部樓層 |閱讀模式
本帖最后由 InazumaGDI 于 2018-11-5 14:14 編輯

如題,我在做一個由紅外人體檢測模塊SR501 (默認輸出低電平 觸發輸出高電平) 觸發的蜂鳴器  
使用的單片機為STC89C52RC    代碼如下

#include <reg52.h>
sbit  HW = P2^0;   //定義紅外傳感器針腳 P2.0

void delay(unsigned long time)                //延時
{
  unsigned long i,j;
  for(i=0;i<time;i++)
      for(j=0;j<19;j++)
          {}
}

void main()

{
        HW = 0;                 //初始化紅外針腳為低電平
    P1 = 0xff;         //初始化P1針腳為1111 1111        
    while(1)         //循環
        {
         if(HW == 1);           //當紅外探頭被觸發   默認低電平轉換為高電平
         {
           P1 = 0x00;                //P1針腳轉為 0000 0000
           delay(5000);                //延時5S
           P1 = 0xff;                 //關閉P1針腳
         }
    }
}

燒錄后發現 P1針腳一直為低電平,后來查閱資料發現51單片機的針腳為準雙向接口,檢測輸入的
時候需要輸出一個1(高電平),然后外部輸入0(低電平)才可以觸發,也就是輸入只能檢測低電平,不可以檢測高電平輸入。 請問有沒有方法從程序上實現高電平輸入檢測?
回復

使用道具 舉報

ID:94031 發表于 2018-11-5 16:38 | 顯示全部樓層
端口先輸出一個1(高電平),然后檢查端口電平,如果是1那么說明端口是輸入了高電平,否則是就是輸入了低電平。
回復

使用道具 舉報

ID:413475 發表于 2018-11-5 16:46 | 顯示全部樓層
1.STC文檔里面是有配置的,IO設成高阻輸入,應可以解決(通過軟件配置PxM0,PxM1)
2.實測STC89C52RC,IO初始化低,通過TLP521拉高是可以檢測的(未配置PxM0,PxM1)。
3.普通外設可能無較強的驅動能力,是無法把51 IO口拉高的.

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:169851 發表于 2018-11-5 17:24 | 顯示全部樓層
紅外感應模塊輸出的電壓太小,通過一個三極管放大電流就行了,可以通過普通引腳,直接去判斷引腳電位,0或1,也可以通過外部中斷來觸發,再或者就是使用ad轉換進行電位采集放大
回復

使用道具 舉報

ID:169851 發表于 2018-11-5 17:27 | 顯示全部樓層
紅外感應模塊輸出的電位低,通過一個三極管放大之后就可以通過普通引腳進行檢測電位,0或1,再或者就是通過ad轉換進行程序內放大
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表