找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)管腳作為輸入端要如何設(shè)置,求教大神!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:257778 發(fā)表于 2018-8-1 15:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
51單片機(jī)管腳作為輸入端,是怎么設(shè)置的呢?我在網(wǎng)上看到很多說要先把管腳置1,因為單片機(jī)剛接觸的,所以不懂置1是什么意思,是在里面用程序置1呢,還是用電源接管腳置1呢。空埥谈髀反笊窠饣!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:310519 發(fā)表于 2018-8-2 00:14 | 只看該作者
IO一般上電都是高電平,只要你程序里沒有拉低過,做輸入直接讀就行了。

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:257778 發(fā)表于 2018-8-2 08:15 | 只看該作者
diy1997 發(fā)表于 2018-8-2 00:14
IO一般上電都是高電平,只要你程序里沒有拉低過,做輸入直接讀就行了。

我用的是STC12C5A60S2的芯片,用if程序讀管腳的時候不怎么穩(wěn)定的,有時候沒有硬件拉低也會讀到低電平,這是為什么呢,是不是沒設(shè)置呢,我在網(wǎng)上看說做輸入的話要先寫1,再讀取,所有想請教一下前輩您!
回復(fù)

使用道具 舉報

地板
ID:381985 發(fā)表于 2018-8-2 09:13 | 只看該作者
置1就是把對應(yīng)管腳的電平拉高,置0則相反,電平拉低
你用萬用表測可以顯示置1的管腳電壓一般為3.7V以上,置0的管腳則沒電壓

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:381985 發(fā)表于 2018-8-3 14:26 | 只看該作者
‘無良’ 發(fā)表于 2018-8-2 08:15
我用的是STC12C5A60S2的芯片,用if程序讀管腳的時候不怎么穩(wěn)定的,有時候沒有硬件拉低也會讀到低電平,這 ...

你這可能是沒做初始化操作,可以先把有用到的管腳電平都初始化拉高

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:382550 發(fā)表于 2018-8-3 16:11 | 只看該作者
置1就是把對應(yīng)管腳的電平拉高,置0則相反就是電平拉低。

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:111634 發(fā)表于 2018-8-3 21:06 | 只看該作者
本帖最后由 zl2168 于 2018-8-3 22:08 編輯

51單片機(jī)I/O口用作輸入時,均須先寫入“1”,這是由51單片機(jī)內(nèi)部I/O口硬件電路決定的,51單片機(jī)復(fù)位時I/O口全置“1”,已作好了輸入的準(zhǔn)備,但若此后運行中因程序指令改變了I/O口的輸入態(tài),再次讀輸入數(shù)據(jù)時將出錯。

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

8#
ID:382710 發(fā)表于 2018-8-3 21:35 | 只看該作者
做輸入時,先接上拉,然后程序里面定義為1,讀取時直接讀是否為0

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

9#
ID:257778 發(fā)表于 2018-8-4 16:02 | 只看該作者
skdbdk 發(fā)表于 2018-8-3 21:35
做輸入時,先接上拉,然后程序里面定義為1,讀取時直接讀是否為0

謝謝!!
回復(fù)

使用道具 舉報

10#
ID:257778 發(fā)表于 2018-8-4 16:06 | 只看該作者
zl2168 發(fā)表于 2018-8-3 21:06
51單片機(jī)I/O口用作輸入時,均須先寫入“1”,這是由51單片機(jī)內(nèi)部I/O口硬件電路決定的,51單片機(jī)復(fù)位時I/O口 ...

程序指令改變了I/O口的輸入態(tài),那初始化I/O口算不算呢?比如初始化P0=0xff?如果是這樣那會不會影響到單片機(jī)讀取I/O口指令呢?
回復(fù)

使用道具 舉報

11#
ID:257778 發(fā)表于 2018-8-4 16:33 | 只看該作者
shuqing2008 發(fā)表于 2018-8-3 14:26
你這可能是沒做初始化操作,可以先把有用到的管腳電平都初始化拉高

前輩,還想跟你請教一下,stc12c5a60s2的C語言程序和89C51的有什么不一樣嗎,比如頭文件這些的?
回復(fù)

使用道具 舉報

12#
ID:382969 發(fā)表于 2018-8-4 21:11 | 只看該作者
在程序的開始部分設(shè)置管腳(初始化管腳)。例如 DDRB =0xFB;     //PB0.1.3.4.5.6.7輸出,PB2輸入。因為管腳具有輸入和輸出功能,只能在程序里設(shè)定管腳具體使用哪種功能

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

13#
ID:111634 發(fā)表于 2018-8-5 07:03 | 只看該作者
‘無良’ 發(fā)表于 2018-8-4 16:06
程序指令改變了I/O口的輸入態(tài),那初始化I/O口算不算呢?比如初始化P0=0xff?如果是這樣那會不會影響到單 ...

51單片機(jī)復(fù)位時I/O口全置“1”,是由51單片機(jī)內(nèi)部I/O口硬件電路決定的,你的所謂初始化I/O口,當(dāng)然算嘍。不過,P0=0xff,仍然是置“1”,該指令是多余的。再不過,老編程人員仍然在輸入前來一句置“1”,這是保險或習(xí)慣,因為在大型應(yīng)用系統(tǒng)中也許以前曾經(jīng)改變過。

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 很給力!

查看全部評分

回復(fù)

使用道具 舉報

14#
ID:155507 發(fā)表于 2018-8-5 08:07 | 只看該作者
‘無良’ 發(fā)表于 2018-8-4 16:33
前輩,還想跟你請教一下,stc12c5a60s2的C語言程序和89C51的有什么不一樣嗎,比如頭文件這些的?

兩個單片機(jī)所屬公司不一樣,
首先51比12更簡單,12的頭文件里就包含了51頭文件。
在同樣晶振的情況下,stc12c5a60s2速度是普通51的8~12倍
對于AT89c51,1個機(jī)器周期=12個震蕩周期,對于STC12C5A60S2,1個機(jī)器周期=1個震蕩周期
回復(fù)

使用道具 舉報

15#
ID:257778 發(fā)表于 2018-8-7 08:44 | 只看該作者
angmall 發(fā)表于 2018-8-5 08:07
兩個單片機(jī)所屬公司不一樣,
首先51比12更簡單,12的頭文件里就包含了51頭文件。
在同樣晶振的情況下, ...

那個芯片的穩(wěn)定性更好呢!51的程序直接燒錄到12芯片里還需要修改什么東西嗎?
回復(fù)

使用道具 舉報

16#
ID:257778 發(fā)表于 2018-8-7 08:52 | 只看該作者
skdbdk 發(fā)表于 2018-8-3 21:35
做輸入時,先接上拉,然后程序里面定義為1,讀取時直接讀是否為0

我用的是P0管腳做輸入口,接了10K的上拉電阻,用if語句檢測管腳的輸入狀態(tài),但是有時候即使P0管腳用萬能表檢測電壓5V左右它仍然執(zhí)行if 里面的程序,很不穩(wěn)定!這是為什么呢?
回復(fù)

使用道具 舉報

17#
ID:383743 發(fā)表于 2018-8-7 11:45 | 只看該作者
具體是什么芯片,首先查看芯片手冊和手冊提供的范例,這樣上手快點。

評分

參與人數(shù) 1黑幣 +5 收起 理由
‘無良’ + 5 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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