![]() |
發(fā)布時(shí)間: 2024-5-8 23:07
正文摘要:P3.7端口檢測(cè)有5V輸入,P3.6端口指示燈亮,能否實(shí)現(xiàn)?如果實(shí)現(xiàn)不了那種芯片可以?請(qǐng)大神們指教一下,謝謝! |
總覺得51單片機(jī)比較過時(shí)了,當(dāng)時(shí)我做 我老師跟我說現(xiàn)在還是用STM32單片機(jī)比較合適,功能什么的也更多 |
mtt661 發(fā)表于 2024-5-12 19:05 那個(gè)24V被擋住了,看不清楚 修正為以下電路 ![]() |
AT89C51是準(zhǔn)雙向口輸出,不能設(shè)置整高阻輸入,所以你不按鍵也是高電平。 換STC8系列的吧,IO設(shè)置為高阻即可實(shí)現(xiàn)。 |
當(dāng)然可以實(shí)現(xiàn) |
原理沒問題,電壓相差較大建議隔離。尤其是24V不知道是哪里來的,電壓波動(dòng)大或R9懸空容易出問題。 |
樓主這個(gè)圖R11上面是24V,用38k和10K電阻分壓后得到5V,所以這個(gè)接法沒有錯(cuò)啊。 |
不建議這樣做,24V直接接過來,運(yùn)氣不好的話可能干掉其他電路,建議用光耦隔離,電路大把可百度。 |
SW3到P3.7加一個(gè)反相器,程序上P3.7改為低電平檢測(cè)。 |
你這個(gè)不能用 P37 要用P0,因?yàn)槟阋獧z測(cè)的是 +24v |
C:\Users\Administrator\Desktop\1.PNG p3-7腳 始終是處于高電平狀態(tài),電壓拉不下來 |
大林飛 發(fā)表于 2024-5-9 13:55 人家都說了是高電平來的時(shí)候燈亮,你這好像不對(duì)吧 這樣: P3_6 =!P3_7; 也不對(duì),也許樓主的燈不是正極接VCC的而是負(fù)極接GND的 |
#include<reg52.h>//頭文件 #include <intrins.h> sbit P3_6=P3^6; sbit P3_7=P3^7; void main (void) { P3_7=1; P3_6=1;//默認(rèn)燈不亮 while(1) { if(P3_7==0) { P3_6=0;//亮燈 } } } |
不是啊,你的哪里按下去是啥,不是短路了嗎你實(shí)物焊起來,我學(xué)識(shí)不夠能解釋下嗎 |
正確的 ![]() |
可以這樣接![]() P37=1; 由于8051引腳輸出高的能力很弱(~250uA) P37會(huì)被1k電阻拉低到0.25V, 被當(dāng)作低電平 |
chang_an 發(fā)表于 2024-5-9 01:43 不懂不要隨便亂教 8051的引腳結(jié)構(gòu)輸出0是對(duì)地短路的 不可能從外部拉高 |
rayin 發(fā)表于 2024-5-9 07:44 樓主說的5V信號(hào)可能只有高電平驅(qū)動(dòng)能力,沒有下拉驅(qū)動(dòng)能力,所以有必要提供一個(gè)主動(dòng)下拉。實(shí)際上大多數(shù)信號(hào)例如開關(guān)我們都習(xí)慣接到低電平。例如接近開關(guān)多數(shù)NPN開路輸出,當(dāng)然也有PNP開路輸出的,那不是就需要主動(dòng)下拉嗎?當(dāng)然PNP還得注意輸出電壓,不要超過5V。所以我們還是建議使用NPN的。 |
這是51單片機(jī)最基本的操作了: 首先設(shè)置P3.7端口為準(zhǔn)雙向:P3.7=1. 就能夠讀P3.7的高低電平了, 程序判斷P3.7 為高或低, 再來P3.6=0, 就可以讓P3.6接的LED燈發(fā)光了. |
設(shè)為標(biāo)準(zhǔn)IO,然后加一個(gè)比如1K的下拉電阻,等著接收你的高電平就行了,當(dāng)然這個(gè)高電平要有一定的驅(qū)動(dòng)能力 |
sbit P36=P3^6; sbit P37=P3^7; P36=!P37; |
原理可以參考按鍵輸入,程序里面先給3_7置低,當(dāng)他被5V拉高時(shí)執(zhí)行P3_6亮燈 sbitP3_6=P3^6; sbitP3_7=P3^7 P3_7=0;//首先拉低 P3_6=1;//默認(rèn)燈不亮 while(1) { if(P3_7==1) { P3_6=0;//亮燈 } } |
原理可以參考按鍵輸入,程序里面先給3_7置低,當(dāng)他被5V拉高時(shí)執(zhí)行P3_6亮燈 sbitP3_6=P3^6; sbitP3_7=P3^7 P3_7=0;//首先拉低 P3_6=1;//默認(rèn)燈不亮 while(1) { if(P3_7==1) { P3_6=0;//亮燈 } } |
sbit P36=P3^6; P36=!(P3&0x80); |
Powered by 單片機(jī)教程網(wǎng)