資料介紹
硬件結(jié)構(gòu)
單片機(jī)的內(nèi)部結(jié)構(gòu)是由CPU、ROM、RAM等組成,現(xiàn)在介紹外部引腳。如圖1-3所示為單片機(jī)的引腳圖,這就是實(shí)驗(yàn)中要用的89C51單片機(jī)的外部引腳圖。如表1-3所示為89C51單片機(jī)引腳分配表。
圖1-3?89C51單片機(jī)的引腳圖
表1-3?89C51單片機(jī)引腳分配表
端口結(jié)構(gòu)分析
從1.3.1節(jié)的硬件結(jié)構(gòu)中可以看出,89C51單片機(jī)總共有4組端口,P0、P1、P2和P3,了解這4組端口的結(jié)構(gòu)原理對(duì)于日后的編程會(huì)有很大的幫助,由于這4組端口結(jié)構(gòu)不盡相同,下面分別介紹單片機(jī)總的4組端口。由于每組端口都是由8位組成,故在下面的講解中,只以每組端口的其中一位來解釋。
1. P0口的結(jié)構(gòu)及工作原理
P0口字節(jié)地址為80H,位地址80H~87H。P0端口8位中的一位結(jié)構(gòu)圖如圖1-4所示。
圖1-4?P0端口位結(jié)構(gòu)圖
由圖1-4可見,P0端口由鎖存器、輸入緩沖器、多路開關(guān)、一個(gè)非門、一個(gè)與門及場(chǎng)效應(yīng)管驅(qū)動(dòng)電路構(gòu)成。圖1-4中標(biāo)號(hào)為P0.X引腳的圖標(biāo),表示引腳可以是P0.0~P0.7的任何一位,即在P0口有8個(gè)與圖1-4所示相同的電路組成。下面先介紹組成P0口的每個(gè)單元部分。
(1)輸入緩沖器
在P0口中,有兩個(gè)三態(tài)的緩沖器,學(xué)過數(shù)字電路的讀者都知道三態(tài)門有3個(gè)狀態(tài),即在其輸出端可以是高電平、低電平,同時(shí)還有一種高阻狀態(tài)(或稱為禁止?fàn)顟B(tài)),圖1-4中,上面一個(gè)是讀鎖存器的緩沖器,也就是說,要讀取D鎖存器輸出端Q的數(shù)據(jù),需要使讀鎖存器中這個(gè)緩沖器的三態(tài)控制端(圖1-4中標(biāo)號(hào)為“讀鎖存器”端)有效,下面一個(gè)是讀引腳的緩沖器,要讀取P0.X引腳上的數(shù)據(jù),也要使標(biāo)號(hào)為“讀引腳”的三態(tài)緩沖器的控制端有效,引腳上的數(shù)據(jù)才會(huì)傳輸?shù)絾纹瑱C(jī)的內(nèi)部數(shù)據(jù)總線上。
(2)D鎖存器
構(gòu)成一個(gè)鎖存器,通常要用一個(gè)時(shí)序電路(時(shí)序的單元電路內(nèi)容請(qǐng)參考數(shù)字電路相關(guān)知識(shí)),一個(gè)觸發(fā)器可以保存一位二進(jìn)制數(shù)(即具有保持功能),在51單片機(jī)的32根I/O口線中,都是用一個(gè)D觸發(fā)器來構(gòu)成鎖存器的。圖1-4中的D鎖存器,D端是數(shù)據(jù)輸入端,CP是控制端(即時(shí)序控制信號(hào)輸入端),Q是輸出端,是反向輸出端。
對(duì)于D鎖存器來講,當(dāng)D輸入端有一個(gè)輸入信號(hào),如果這時(shí)控制端CP沒有信號(hào)(即時(shí)序脈沖沒有到來),這時(shí)輸入端D的數(shù)據(jù)是無法傳輸?shù)捷敵龆薗及反向輸出端的。如果時(shí)序控制端CP的時(shí)序脈沖到達(dá),這時(shí)D端輸入的數(shù)據(jù)就會(huì)傳輸?shù)絈及
端。數(shù)據(jù)傳送過來后,當(dāng)CP時(shí)序控制端的時(shí)序信號(hào)消失時(shí),輸出端還會(huì)保持著上次輸入端D的數(shù)據(jù)(即把上次的數(shù)據(jù)鎖存起來)。如果下一個(gè)時(shí)序控制脈沖信號(hào)到來,這時(shí)D端的數(shù)據(jù)才再次傳送到Q端,從而改變Q端的狀態(tài)。
(3)多路開關(guān)
在51單片機(jī)中,當(dāng)內(nèi)部的存儲(chǔ)器夠用時(shí)(即不需要外擴(kuò)展存儲(chǔ)器時(shí),這里講的存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器及程序存儲(chǔ)器),P0口可以作為通用的輸入/輸出端口(即I/O)使用,對(duì)于8031(內(nèi)部沒有ROM)的單片機(jī),或者編寫的程序超過了單片機(jī)內(nèi)部的存儲(chǔ)器容量需要外擴(kuò)存儲(chǔ)器時(shí),P0口就作為地址/數(shù)據(jù)總線使用。那么這個(gè)多路選擇開關(guān)就是用于選擇是作為普通I/O口使用還是作為地址/數(shù)據(jù)總線使用的選擇開關(guān)了。從圖1-4可知,當(dāng)多路開關(guān)與下端接通時(shí),P0口作為普通的I/O口使用;當(dāng)多路開關(guān)是與上端接通時(shí),P0口作為地址/數(shù)據(jù)總線使用。
(4)輸出驅(qū)動(dòng)
從圖1-4中可看出,P0口的輸出是由兩個(gè)MOS管組成的推拉式結(jié)構(gòu),也就是說,這兩個(gè)MOS管一次只能導(dǎo)通一個(gè),當(dāng)Vl導(dǎo)通時(shí),V2截止,當(dāng)V2導(dǎo)通時(shí),Vl截止。
上面已對(duì)P0口的各單元部件進(jìn)行了詳細(xì)的講解,下面研究一下P0口作為I/O口及地址/數(shù)據(jù)總線使用時(shí)的具體工作過程。
(1)作為I/O端口使用時(shí)的工作原理
P0口作為I/O端口使用時(shí),多路開關(guān)的控制信號(hào)為0(低電平),如圖1-4所示,多路開關(guān)的控制信號(hào)同時(shí)和與門的一個(gè)輸入端相接,與門的邏輯特點(diǎn)是“全l出1,有0出0”,那么控制信號(hào)如果是0,這時(shí)與門輸出的也是一個(gè)0(低電平),此時(shí)Vl管就截止,在多路控制開關(guān)的控制信號(hào)是0(低電平)時(shí),多路開關(guān)是與鎖存器的端相接的(即P0口作為I/O口線使用)。
P0口用作I/O口線,其由數(shù)據(jù)總線向引腳輸出(即輸出狀態(tài)Output)的工作過程:寫鎖存器信號(hào)CP有效,數(shù)據(jù)總線的信號(hào)的輸出流程為鎖存器的輸入端D→鎖存器的反向輸出端→多路開關(guān)→V2管的柵極→V2管的漏極→輸出端P0.X。前面已經(jīng)介紹過,當(dāng)多路開關(guān)的控制信號(hào)為低電平0時(shí),與門輸出為低電平,Vl管是截止的,所以作為輸出口時(shí),P0是漏極開路輸出狀態(tài),類似于OC門,當(dāng)驅(qū)動(dòng)上接電流負(fù)載時(shí),需要外接上拉電阻。如圖1-5所示就是由內(nèi)部數(shù)據(jù)總線向P0口輸出數(shù)據(jù)的流程圖。
圖1-5?P0口內(nèi)部數(shù)據(jù)總線向引腳輸出時(shí)的流程圖
P0口用作I/O口線,其由一引腳向內(nèi)部數(shù)據(jù)總線輸入(即輸入狀態(tài)Input)的工作過程,數(shù)據(jù)輸入時(shí)(讀P0口)有以下兩種情況:
第一種情況是讀引腳,即讀芯片引腳上的數(shù)據(jù)。讀引腳數(shù)時(shí),讀引腳緩沖器打開(即三態(tài)緩沖器的控制端要有效),通過內(nèi)部數(shù)據(jù)總線輸入。如圖1-6所示為P0口讀引腳時(shí)的流程圖。
圖1-6?P0口讀引腳時(shí)的流程圖
第二種情況是讀鎖存器,通過打開讀鎖存器三態(tài)緩沖器讀取鎖存器輸出端Q的狀態(tài)。如圖1-7所示為P0口讀鎖存器時(shí)的流程圖。
圖1-7?P0口讀鎖存器時(shí)的流程圖
在輸入狀態(tài)下,從鎖存器和從引腳上讀取的信號(hào)一般是一致的,但也有例外。例如,當(dāng)從內(nèi)部總線輸出低電平后,鎖存器Q=0,=l,場(chǎng)效應(yīng)管V2開通,端口線呈低電平狀態(tài),此時(shí)無論端口線上外接的信號(hào)是低電平還是高電平,從引腳讀入單片機(jī)的信號(hào)都是低電平,因而不能正確地讀入端口引腳上的信號(hào)。又如,當(dāng)從內(nèi)部總線輸出高電平后,鎖存器Q=1,=0,場(chǎng)效應(yīng)管V2截止,如果外接引腳信號(hào)為低電平,從引腳上讀入的信號(hào)就與從鎖存器讀入的信號(hào)不同。為此,8031單片機(jī)在對(duì)端口P0~P3的輸入操作有如下約定:凡屬于讀—改—寫方式的指令,從鎖存器讀入信號(hào),其他指令則從端口引腳線上讀入信號(hào)。讀—改—寫指令的特點(diǎn)是,從端口輸入(讀)信號(hào),在單片機(jī)內(nèi)加以運(yùn)算(修改)后,再輸出(寫)到該端口上。下面是幾條讀—改—寫指令的示例。
ORL?P0, A P0→AP0
INC?P1 P1 1→P1
DEC?P3 P3-1→P3
CPL?P2 P2→P2
這樣安排的原因在于讀—改—寫指令需要得到端口原輸出的狀態(tài),修改后再輸出,讀鎖存器而不是讀引腳,可以避免因外部電路的原因使原端口的狀態(tài)被讀錯(cuò)。
注意: P0端口是8031單片機(jī)的總線口,分時(shí)出現(xiàn)數(shù)據(jù)D7~D0、低8位地址A7~A0以及三態(tài),用來連接存儲(chǔ)器、外部電路與外部設(shè)備。P0端口是使用最廣泛的I/O端口。
(2)作為地址/數(shù)據(jù)復(fù)用口使用時(shí)的工作原理
在訪問外部存儲(chǔ)器時(shí),P0口作為地址/數(shù)據(jù)復(fù)用口使用,這時(shí)多路開關(guān)控制信號(hào)為l,與門解鎖,與門輸出信號(hào)電平由地址/數(shù)據(jù)線信號(hào)決定;多路開關(guān)與反相器的輸出端相連,地址信號(hào)經(jīng)地址/數(shù)據(jù)線→反相器→V2場(chǎng)效應(yīng)管柵極→V2漏極輸出。例如,控制信號(hào)為l,地址信號(hào)為0時(shí),與門輸出低電平,Vl管截止;反相器輸出高電平,V2管導(dǎo)通,輸出引腳的地址信號(hào)為低電平。如圖1-8所示為P0口作為地址線,控制信號(hào)為1,地址信號(hào)為0時(shí)的工作流程圖。
圖1-8?P0口作為地址線,控制信號(hào)為1,地址信號(hào)為0時(shí)的工作流程圖
反之,控制信號(hào)為l、地址信號(hào)為l,與門輸出為高電平,Vl管導(dǎo)通;反相器輸出低電平,V2管截止,輸出引腳的地址信號(hào)為高電平。如圖1-9所示為P0口作為地址線,控制信號(hào)為1,地址信號(hào)為1時(shí)的工作流程圖。
圖1-9?P0口作為地址線,控制信號(hào)為1,地址信號(hào)為1時(shí)的工作流程圖
可見,在輸出地址/數(shù)據(jù)信息時(shí),Vl、V2管是交替導(dǎo)通的,負(fù)載能力很強(qiáng),可以直接與外設(shè)存儲(chǔ)器相連,無須增加總線驅(qū)動(dòng)器。P0口又作為數(shù)據(jù)總線使用,在訪問外部程序存儲(chǔ)器時(shí),P0口輸出低8位地址信息后,將變?yōu)閿?shù)據(jù)總線,以便讀指令碼(輸入)。在存取指令期間,控制信號(hào)為0,Vl管截止,多路開關(guān)也跟著轉(zhuǎn)向鎖存器反相輸出端;CPU自動(dòng)將0FFH(11111111,即向D鎖存器寫入一個(gè)高電平1)寫入P0口鎖存器,使V2管截止,在讀引腳信號(hào)控制下,通過讀引腳三態(tài)門電路將指令碼讀到內(nèi)部總線。如圖1-10所示為P0口作為數(shù)據(jù)總線,取指期間工作流程圖。
圖1-10?P0口作為數(shù)據(jù)總線時(shí)取指期間工作流程圖
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于89C51單片機(jī)的8位端口檢測(cè)8獨(dú)立按鍵源程序 2次下載
- 基于89C51單片機(jī)的秒表源程序 13次下載
- 基于89C51單片機(jī)的電子琴源程序 4次下載
- 基于89C51單片機(jī)的定時(shí)器源程序 8次下載
- 基于89C51單片機(jī)的多路不同頻率方波源程序 2次下載
- 基于89C51單片機(jī)的查表顯示LED燈源程序 1次下載
- 基于89C51單片機(jī)的電機(jī)速度測(cè)試程序 2次下載
- 基于89C51單片機(jī)的24c02記憶開機(jī)次數(shù)源代碼 6次下載
- 詳解51單片機(jī)基本硬件結(jié)構(gòu)
- 89C51單片機(jī)控制的開關(guān)電源總結(jié)
- 基于89c51單片機(jī)的電機(jī)溫控速度調(diào)節(jié) 9次下載
- 89C51單片機(jī)課程設(shè)計(jì) 136次下載
- 89C51單片機(jī)的詳細(xì)資料概述
- 基于89c51單片機(jī)IO口操作的幾個(gè)歷程資料分享 16次下載
- 89C51單片機(jī)的結(jié)構(gòu)和原理 0次下載
- 基于89C51時(shí)鐘電路的設(shè)計(jì)與制作 9669次閱讀
- AT89S51單片機(jī)的詳細(xì)資料介紹 1.1w次閱讀
- AT89S51單片機(jī)各引腳的功能解析 4.6w次閱讀
- 為什么89C51單片機(jī)的P0-P3口進(jìn)行輸入時(shí)要設(shè)置為1 1.2w次閱讀
- 單片機(jī)外部結(jié)構(gòu)的引腳功能的簡(jiǎn)介和使用資料概述 9257次閱讀
- 80C51單片機(jī)與8051單片機(jī)的區(qū)別是什么 9019次閱讀
- 基于89C51和89C52單片機(jī)對(duì)數(shù)控機(jī)床的控制設(shè)計(jì) 4756次閱讀
- AT89S51單片機(jī)的看門狗功能設(shè)計(jì) 4220次閱讀
- 單片機(jī)學(xué)習(xí)心得1:89c51單片機(jī)定時(shí)器應(yīng)用! 9968次閱讀
- 89C51單片機(jī)16位數(shù)據(jù)傳送指令的執(zhí)行過程 5341次閱讀
- 80C51單片機(jī)與8051單片機(jī)的主要差別在哪里 7965次閱讀
- 基于AT89C51單片機(jī)直流電機(jī)PWM調(diào)速程序分享 1.7w次閱讀
- 如何輕松學(xué)習(xí)51單片機(jī)? 1.2w次閱讀
- 89C51單片機(jī)中斷知識(shí)要點(diǎn) 1.7w次閱讀
- 89C51單片機(jī)的步進(jìn)電動(dòng)機(jī)控制系統(tǒng)設(shè)計(jì) 1.4w次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論