1. 51單片機關於P1口的實驗
如果實物按圖這樣接,51早就燒了。P1.5接電源,proteus里可能是算為高電平,即寫1了。你可以串一隻10K上拉電阻,這樣才真正相當於寫1
2. 如何檢測單片機P1.0的電壓
我感覺你的最終目的是在電源掉電前要計算機要執行一套保護現場或者其他的動作。那麼用這種方法就太慢了,計算機可能沒時間進行處理。
推薦你個電路,MAX813L,你可以使用它的第4腳的功能。將7805輸入端的電壓經2個電阻分壓後輸入4腳,保證正常情況下4腳稍高於1.25V。
當電源掉電時,15V濾波電容上的電壓逐漸下降,當4腳低於1.25V,MAX813L的5腳輸出低電平,接入單片機進行判斷和採取措施。
由於15V濾波電容比較大,可以保證程序有足夠的時間來進行掉電處理。
如果你只是判斷有無15V,而且單片機電源與15V無關,那麼只要把15V用一個二極體整流,然後加2個電阻分壓,再加個電容稍微濾波就OK了。反應速度取決於電容和分壓電阻大小。
3. 典型51單片機的P0,P1,P2,P3口都有哪些功能
P0口第一個功能是數據介面,第二個功能是地址低八位,P2口第二個功能是地址高八位。另外除了P0口沒有內部上拉電阻外,其他三個都有內部上拉電阻。P1就沒多少功能,就是個准雙向I/O口。最重要的就是P3口了,他除了是個准雙向I/O口外,第二功能很重要:P3.0
(RXD)串列數據接收端;P3.1
(TXD)串列數據發送端;P3.2
(INT0)外部中斷0輸入;P3.3
(INT1)外部中斷1輸入;P3.4(T0)Timer0
計數器輸入:P3.5(T1)Timer1計數器輸入;P3.6(WR)寫外部存儲器的脈沖輸出:P3.7(RD)讀外部存儲器的脈沖輸出。
(3)單片機p1口怎麼檢測擴展閱讀:
在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據採集與控制系統能夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。
由此可見,單片機憑借著強大的數據處理技術和計算功能可以在智能電子設備中充分應用。簡單地說,單片機就是一塊晶元,這塊晶元組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到晶元中,實現對數據的高速化處理。
4. 怎樣知道單片機的矩陣鍵盤每個按鍵的地址
1、比如是一個4行×4列的矩陣鍵盤。
2、將4行和4列共8根線分別接到單片機的I/O口,比如接P1口,行接低4位(P1.0~P1.3),列接高4位(P1.4~P1.7)。
3、單片機先將行置第電平0,列置高電平1.
4、在鍵盤掃描程序中,判斷是否有任意按鍵按下:if((P1&0xf0)!=0xf0),表示有按鍵按下,延時消抖後,再次判斷,如果(P1&0xf0)!=0xf0,則表示有按鍵按下。
5、然後開始逐行掃描:
P1=0xfe; //第一行置為低電平「0」(P1.0輸出低電平「0」)
if(P14==0) keyval=1; //如果檢測到接P1.4引腳的列線為低電平「0」,可判斷是S1鍵被按下
if(P15==0) keyval=2; //如果檢測到接P1.5引腳的列線為低電平「0」 ,可判斷是S2鍵被按下
if(P16==0) keyval=3; //如果檢測到接P1.6引腳的列線為低電平「0」,可判斷是S3鍵被按下
if(P17==0) keyval=4; //如果檢測到接P1.7引腳的列線為低電平「0」,可判斷是S4鍵被按下
P1=0xfd; //第二行置為低電平「0」(P1.1輸出低電平「0」)
if(P14==0) keyval=5; //如果檢測到接P1.4引腳的列線為低電平「0」,可判斷是S5鍵被按下
if(P15==0) keyval=6; //如果檢測到接P1.5引腳的列線為低電平「0」,可判斷是S6鍵被按下
if(P16==0) keyval=7; //如果檢測到接P1.6引腳的列線為低電平「0」,可判斷是S7鍵被按下
if(P17==0) keyval=8; //如果檢測到接P1.7引腳的列線為低電平「0」,可判斷是S8鍵被按下
P1=0xfb; //第三行置為低電平「0」(P1.2輸出低電平「0」)
if(P14==0) keyval=9; //如果檢測到接P1.4引腳的列線為低電平「0」,可判斷是S9鍵被按下
if(P15==0) keyval=10; //如果檢測到接P1.5引腳的列線為低電平「0」,可判斷是S10鍵被按下
if(P16==0) keyval=11; //如果檢測到接P1.6引腳的列線為低電平「0」,可判斷是S11鍵被按下
if(P17==0) keyval=12; //如果檢測到接P1.7引腳的列線為低電平「0」,可判斷是S12鍵被按下
P1=0xf7; //第四行置為低電平「0」(P1.3輸出低電平「0」)
if(P14==0) keyval=13; //如果檢測到接P1.4引腳的列線為低電平「0」,可判斷是S13鍵被按下
if(P15==0) keyval=14; //如果檢測到接P1.5引腳的列線為低電平「0」,可判斷是S14鍵被按下
if(P16==0) keyval=15; //如果檢測到接P1.6引腳的列線為低電平「0」,可判斷是S15鍵被按下
if(P17==0) keyval=16; //如果檢測到接P1.7引腳的列線為低電平「0」,可判斷是S16鍵被按下
依次類推,得到4×4=16個按鍵的鍵值。就知道哪個按鍵被按下。