找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 57453|回復(fù): 85
打印 上一主題 下一主題
收起左側(cè)

6課:單片機并行口結(jié)構(gòu)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1 發(fā)表于 2013-5-21 02:50 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  上兩次我們做過兩個實驗,都是讓P1.0這個管腳使燈亮,我們能設(shè)想:既然P1.0能讓燈亮,那么其它的管腳可不能呢?看一下圖1,它是8031單片機管腳的說明,在P1.0旁邊有P1.1,P1.2….P1.7,它們是否都能讓燈亮呢?除了以P1開頭的外,還有以P0,P2,P3開頭的,數(shù)一下,一共是32個管腳,前面我們以學(xué)過7個管腳,加上這32個這39個了。它們都以P字開頭,只是后面的數(shù)字不一樣,它們是否有什么聯(lián)系呢?它們能不能都讓燈亮呢?在我們的實驗板上,除了P10之外,還有P11 -> P17都與LED相連,下面讓我們來做一個實驗,程序如下:MAIN: MOV P1,#0FFH
LCALL DELAY
MOV P1,#00H
LCALL DELAY
LJMP MAIN
DELAY:MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
  將這段程序燒寫到單片機中,結(jié)果如何?通電以后我們能看到8只LED全部在閃動。因此,P10->P17是全部能點亮燈的。事實上,凡以P開頭的這32個管腳都是能點亮燈的,也就是說:這32個管腳都能作為輸出使用,如果不用來點亮LED,能用來控制繼電器,能用來控制其它的執(zhí)行機構(gòu)。
程序分析:這段程序和前面做過的程序比較,只有兩處不一樣:第一句:原來是SETB P1.0,現(xiàn)在改為MOV P1,#0FFH,第三句:原來是CLR P1.0,現(xiàn)在改為MOV P1.0,#00H。從中能看出,P1是P1.0->P1.7的全體的代表,一個P1就表示了所有的這八個管腳了。當(dāng)然用的指令也不一樣了,是用MOV指令。為什么用這條指令?看圖2,我們把P1作為一個整體,就把它當(dāng)作是一個存儲器的單元,對一個單元送進(jìn)一個數(shù)能用MOV指令。
二、第四個實驗
除了能作為輸出外,這32個管腳還能做什么呢?下面再來做一個單片機實驗,源程序如下:
MAIN: MOV P3,#0FFH
LOOP: MOV A,P3
MOV P1,A
LJMP LOOP
  先看一下這個實驗的結(jié)果:所有燈全部不亮,然后我按下一個按鈕,第(1)個燈亮了,再按下另一個按鈕,第(2)個燈亮了,松開按鈕燈就滅了。從這個實驗現(xiàn)象結(jié)合電路來分析一下程序。
  從硬件電路的連線能看出,有四個按鈕被接入到P3口的P32,P33,P34,P35。第一條指令的用途我們能猜到:使P3口全部為高電平。第二條指令是MOV A,P3,其中 MOV已經(jīng)知道,是送數(shù)的意思,這條指令的意思就是將P3口的數(shù)送到A中去,我們能把A當(dāng)成是一個中間單元(看圖3),第三句話是將A中的數(shù)又送到P1口去,第四句話是循環(huán),就是持續(xù)地重復(fù)這個過程,這我們已見過。當(dāng)我們按下第一個按鈕時,第(3)只燈亮了,所以P12口應(yīng)當(dāng)輸出是低電平,為什么P12口會輸出低電平呢?我們看一下有什么被送到了P1口,只有從P3口進(jìn)來的數(shù)送到A,又被送到了P1口,所以,肯定是P3口進(jìn)來的數(shù)使得P12位輸出電平的。P3口的P32位的按鈕被按下,使得P32位的電平為低,通過程序,又使P12口輸出低電平,所以P3口起來了一個輸入的作用。驗證:按第二、三、四個按鈕,同時按下2個、3個、4個按鈕都能得到同樣的結(jié)論,所以P3口確實起到了輸入作用,這樣,我們能看到,以P字開頭的管腳,不僅能用作輸出,還能用作輸入,其它的管腳是否能呢?是的,都能。這32個管腳就稱之為并行口,下面我們就對并行口的結(jié)構(gòu)作一個分析,看一下它是怎樣實現(xiàn)輸入和輸出的。
并行口結(jié)構(gòu)分析:
1、輸出結(jié)構(gòu)

<并行口結(jié)構(gòu)圖>
  先看P1口的一位的結(jié)構(gòu)示意圖(只畫出了輸出部份):從圖中能看出,開關(guān)的打開和合上代表了管腳輸出的高和低,如果開關(guān)合上了,則管腳輸出就是低,如果開關(guān)打開了,則輸出高電平,這個開關(guān)是由一根線來控制的,這根數(shù)據(jù)總線是出自于CPU,讓我們回想一下,數(shù)據(jù)總線是一根大家公用的線,很多的器件和它連在一起,在不一樣的時候,不一樣的器件當(dāng)然需要不一樣的信號,如某一時刻我們讓這個管腳輸出高電平,并要求保持若干時間,在這段時間里,計算機當(dāng)然在忙個不停,在與其它器件進(jìn)行聯(lián)絡(luò),這根控制線上的電平未必能保持原來的值不變,輸出就會發(fā)生變化了。怎么解決這個問題呢?我們在存儲器一節(jié)中學(xué)過,存儲器中是能存放電荷的,我們不妨也加一個小的存儲器的單元,并在它的前面加一個開關(guān),要讓這一位輸出時,就把開關(guān)打開,信號就進(jìn)入存儲器的單元,然后馬上關(guān)閉開關(guān),這樣這一位的狀態(tài)就被保存下來,直到下一次命令讓它把開關(guān)再打開為止。這樣就能使這一位的狀態(tài)與別的器件無關(guān)了,這么一個小單元,我們給它一個很形象的名字,稱之為“鎖存器”。
2、輸入結(jié)構(gòu)
  這是并行口的一位的輸出結(jié)構(gòu)示意圖,再看,除了輸出之外,還有兩根線,一根從外部管腳接入,另一根從鎖存器的輸出接出,分別標(biāo)明讀管腳和讀鎖存器。這兩根線是用于從外部接收信號的,為什么要兩根呢?原來,在51單片機中輸入有兩種方式,分別稱為‘讀管腳’和‘讀鎖存器’,第一種方式是將管腳作為輸入,那是真正地從外部管腳讀進(jìn)輸入的值,第二種方式是該管腳處于輸出狀態(tài)時,有時需要改變這一位的狀態(tài),則并不需要真正地讀管腳狀態(tài),而只是讀入鎖存器的狀態(tài),然后作某種變換后再輸出。
  請注意輸入結(jié)構(gòu)圖,如果將這一根引線作為輸入口使用,我們并不能保證在任何時刻都能得到正確的結(jié)果(為什么?)參考圖2輸入示意圖。接在外部的開關(guān)如果打開,則應(yīng)當(dāng)是輸入1,而如果閉合開關(guān),則輸入0,但是,如果單片機內(nèi)部的開關(guān)是閉合的,那么不管外部的開關(guān)是開還是閉,單片機接受到的數(shù)據(jù)都是0�?梢�,要讓這一端口作為輸入使用,要先做一個‘準(zhǔn)備工作’,就是先讓內(nèi)部的開關(guān)斷開,也就是讓端口輸出‘1’才行。正因為要先做這么一個準(zhǔn)備工作,所以我們稱之為“準(zhǔn)雙向I/O口”。
  以上是P1口的一位的結(jié)構(gòu),P1口其它各位的結(jié)構(gòu)與之相同,而其它三個口:P0、P2、P3則除入作為輸入輸出口之外還有其它用途,所以結(jié)構(gòu)要稍復(fù)雜一些,但其用于輸入、輸出的結(jié)構(gòu)是相同的�?磮D()。對我們來說,這些附加的功能不必由我們來控制,所以我們就不去關(guān)心它了。
  你如果你裝了office軟件的話 你可以打開這個ppt動態(tài)演示文件看下加深對并口的理解:http://www.torrancerestoration.com/f/51單片機并行口及其應(yīng)用.ppt
作者(胡琴)點評:根據(jù)本文的評論來看,大家感覺開始越來越難學(xué)了,其實并行口的原理我們并不需要去深入理解,不需要把內(nèi)部的工作原理及電路都完全弄懂,我們是要用單片機不是設(shè)計單片機芯片的,所以我們只需要會用就行了,比如說 給一個 CLR P3.5 這個指令就是為了讓P3.5輸出0,這一條 MOV P3,#0FFH 就是讓整個P3口(從P3.0-P3.7)全部都輸出1.

下一課:7課:單片機的特殊功能寄存器

評分

參與人數(shù) 11黑幣 +48 收起 理由
hahaha~hacker + 6 絕世好帖!
15081898066 + 1 很給力!
389428931 + 5 很給力!
wuyanzhibei + 5 很給力!
yida1698 + 5 很給力!
1552246249ljd + 1 很給力!
路神 + 5 很給力!
chen_zhouge + 5 很給力!
god147 + 5
luoyi8912 + 5 很給力!
冰封怨恨 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂10 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:49404 發(fā)表于 2013-5-25 21:58 | 只看該作者

回帖獎勵 +2

受益匪淺
回復(fù)

使用道具 舉報

板凳
ID:51906 發(fā)表于 2013-7-16 12:29 來自觸屏版 | 只看該作者
怎么沒有C語言的啊??
回復(fù)

使用道具 舉報

地板
ID:51919 發(fā)表于 2013-7-16 17:10 | 只看該作者
謝謝,對我的幫助很大
回復(fù)

使用道具 舉報

5#
ID:51112 發(fā)表于 2013-7-24 15:47 | 只看該作者
感謝樓主,不過示意圖的標(biāo)記不是很明確,看的時候有點對不上
回復(fù)

使用道具 舉報

6#
ID:52972 發(fā)表于 2013-8-19 15:11 | 只看該作者
比較深刻的
回復(fù)

使用道具 舉報

7#
ID:53820 發(fā)表于 2013-8-31 09:29 | 只看該作者
有點費力了�。�!
回復(fù)

使用道具 舉報

8#
ID:57553 發(fā)表于 2013-12-3 16:51 | 只看該作者
初學(xué)者
回復(fù)

使用道具 舉報

9#
ID:56194 發(fā)表于 2014-2-4 19:09 | 只看該作者
非常深刻。
回復(fù)

使用道具 舉報

10#
ID:59676 發(fā)表于 2014-3-15 08:32 | 只看該作者
學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

11#
ID:60257 發(fā)表于 2014-4-2 16:43 | 只看該作者
感受頗深
回復(fù)

使用道具 舉報

12#
ID:59987 發(fā)表于 2014-4-5 14:44 | 只看該作者
講解的很好,受益匪淺
回復(fù)

使用道具 舉報

13#
ID:61183 發(fā)表于 2014-5-4 09:47 | 只看該作者
真心不錯、不錯。。。。
回復(fù)

使用道具 舉報

14#
ID:61888 發(fā)表于 2014-5-15 19:04 | 只看該作者
匯編太難了,不想學(xué)。C一句話能搞定的,匯編一大篇才能搞定。
回復(fù)

使用道具 舉報

15#
ID:63578 發(fā)表于 2014-7-4 16:13 | 只看該作者
理解了,單片機四種并行口。通俗易懂啊
回復(fù)

使用道具 舉報

16#
ID:64733 發(fā)表于 2014-8-5 08:39 | 只看該作者
電路看起來有些費勁,但正如老是所說,會用就可以。
回復(fù)

使用道具 舉報

17#
ID:65567 發(fā)表于 2014-9-24 22:48 來自觸屏版 | 只看該作者
又上了一堂深刻的課,樓主辛苦你了
回復(fù)

使用道具 舉報

18#
ID:67837 發(fā)表于 2014-12-16 21:31 | 只看該作者
謝謝樓主,學(xué)習(xí)中
回復(fù)

使用道具 舉報

19#
ID:67837 發(fā)表于 2014-12-17 10:25 | 只看該作者
受益很大
回復(fù)

使用道具 舉報

20#
ID:70525 發(fā)表于 2014-12-18 20:00 | 只看該作者
初學(xué)者
回復(fù)

使用道具 舉報

21#
ID:70939 發(fā)表于 2014-12-26 00:22 來自觸屏版 | 只看該作者
學(xué)習(xí)中
回復(fù)

使用道具 舉報

22#
ID:75710 發(fā)表于 2015-3-31 10:50 | 只看該作者
對呀,從這一章開始有點比較難懂了,繼續(xù)努力,F(xiàn)IGHT
回復(fù)

使用道具 舉報

23#
ID:75791 發(fā)表于 2015-4-2 11:34 | 只看該作者
學(xué)習(xí)了,感謝分享!
回復(fù)

使用道具 舉報

24#
ID:77578 發(fā)表于 2015-5-4 20:15 來自觸屏版 | 只看該作者
以前一直自學(xué)用c來編程,總是聽說匯編語言的效率高。果然是的
回復(fù)

使用道具 舉報

25#
ID:79565 發(fā)表于 2015-5-10 21:16 | 只看該作者
非常謝謝
回復(fù)

使用道具 舉報

26#
ID:80339 發(fā)表于 2015-5-18 11:46 | 只看該作者
看了,感覺很不錯!
回復(fù)

使用道具 舉報

27#
ID:80493 發(fā)表于 2015-5-19 14:58 | 只看該作者
怎么前后聯(lián)系不起來呢,是不是少了一些
回復(fù)

使用道具 舉報

28#
ID:78273 發(fā)表于 2015-5-28 00:18 | 只看該作者
感覺很不錯!
回復(fù)

使用道具 舉報

29#
ID:82498 發(fā)表于 2015-6-9 13:57 | 只看該作者
受益匪淺
回復(fù)

使用道具 舉報

30#
ID:60611 發(fā)表于 2015-6-11 21:44 | 只看該作者
看著挺不錯的
回復(fù)

使用道具 舉報

31#
ID:83550 發(fā)表于 2015-6-21 17:28 | 只看該作者
P1是P1.0->P1.7的全體的代表,一個P1就表示了所有的這八個管腳了
回復(fù)

使用道具 舉報

32#
ID:87812 發(fā)表于 2015-8-7 13:56 | 只看該作者
強悍的開始從這里起步!
回復(fù)

使用道具 舉報

33#
ID:89508 發(fā)表于 2015-9-6 19:56 | 只看該作者
越來越難了,
回復(fù)

使用道具 舉報

34#
ID:99746 發(fā)表于 2015-12-21 03:47 來自觸屏版 | 只看該作者
謝謝樓主,還在深刻理解中。給個小建議:圖中字和線都用深色紅、黑、棕、深藍(lán)標(biāo)注,避開黃、粉紅、淺藍(lán)等淺色。淺色標(biāo)注在白底色上看不清。
回復(fù)

使用道具 舉報

35#
ID:84495 發(fā)表于 2015-12-21 09:13 | 只看該作者
研究的真細(xì)致,看到各種門就頭疼
回復(fù)

使用道具 舉報

36#
ID:103419 發(fā)表于 2016-1-19 13:40 來自觸屏版 | 只看該作者
開始變難了
回復(fù)

使用道具 舉報

37#
ID:117525 發(fā)表于 2016-4-29 14:42 | 只看該作者

 受益匪淺 謝謝樓主
回復(fù)

使用道具 舉報

38#
ID:123251 發(fā)表于 2016-5-26 10:57 來自觸屏版 | 只看該作者
堅持到底
回復(fù)

使用道具 舉報

39#
ID:127563 發(fā)表于 2016-6-22 10:06 | 只看該作者
初學(xué)者,看現(xiàn)在有點難理解
回復(fù)

使用道具 舉報

40#
ID:140074 發(fā)表于 2016-9-24 19:30 | 只看該作者
請問樓主,“先看P1口的一位的結(jié)構(gòu)示意圖(只畫出了輸出部份):從圖中能看出,開關(guān)的打開和合上。。。”對應(yīng)的圖在哪里能看到?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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