單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用_第1頁
單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用_第2頁
單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用_第3頁
單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用_第4頁
單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

會計學(xué)1單片機的外圍模塊及其應(yīng)用并行口及其應(yīng)用并行I/O口

MCS-51共有4個8位的I/O口(P0、P1、P2、P3),以實現(xiàn)數(shù)據(jù)的并行輸入/輸出。定時/計數(shù)器

8051共有兩個16位的定時/計數(shù)器,以實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對計算機進(jìn)行控制。串行口

MCS-51單片機有一個全雙工的串行口,以實現(xiàn)單片機和其它設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。第1頁/共59頁5.1并行口及其應(yīng)用51單片機有4個I/O端口,每個端口都是8位準(zhǔn)雙向口,共占32根引腳。每個端口都包括一個鎖存器(即專用寄存器P0~P3)、一個輸出驅(qū)動器和輸入緩沖器。通常把4個端口籠統(tǒng)地表示為P0~P3。第2頁/共59頁I/O口引腳(1)P0口(P0.0~P0.7):作為普通I/O口使用,須外接上拉電阻;作為與外部傳送數(shù)據(jù)的8位數(shù)據(jù)總線(D0~D7);作為擴展外部存儲器時的低8位地址總線(A0~A7)。(2)P1口(P1.0~P1.7):作為普通I/O口使用,無須外接上拉電阻(80C52的P1.0和P1.1還具有特殊功能見表2-1)。第3頁/共59頁(3)P2口(P2.0~P2.7):作為普通I/O口使用,無須外接上拉電阻。作為擴展外部存儲器時的高8位地址總線(A8~A15)。(4)P3口(P3.0~P3.7):作為普通I/O口使用,無須外接上拉電阻;每個引腳都具有第二功能。第4頁/共59頁51系列單片機的并行口,按其特性可分為以下類型:單一的準(zhǔn)雙向口;多種功能復(fù)用的準(zhǔn)雙向口;可作為地址總線輸出口的準(zhǔn)雙向口;可作為地址/數(shù)據(jù)總線口的三態(tài)雙向口。第5頁/共59頁鎖存器QQD讀鎖存器寫鎖存器內(nèi)部總線讀引腳內(nèi)部上拉電阻TVCC(a)單一功能準(zhǔn)雙向口第6頁/共59頁.鎖存器QQD讀鎖存器寫鎖存器內(nèi)部總線讀引腳TVCC第二輸入功能第二輸出功能內(nèi)部上拉電阻(b)多功能準(zhǔn)雙向口第7頁/共59頁鎖存器QQD讀鎖存器寫鎖存器內(nèi)部總線讀引腳TVCC地址控制內(nèi)部上拉電阻MUX(c)可作為地址總線口的準(zhǔn)雙向口P2第8頁/共59頁鎖存器QQD讀鎖存器寫鎖存器內(nèi)部總線讀引腳T1T2VCCMUX地址/數(shù)據(jù)控制(d)可作為地址/數(shù)據(jù)總線口的三態(tài)雙向口P0第9頁/共59頁讀鎖存器和讀引腳指令當(dāng)把P0~P3口作為輸入引腳使用時,以I/O口作為源操作數(shù)的數(shù)據(jù)傳送指令、算術(shù)/邏輯運算指令及位測試轉(zhuǎn)移指令等均屬讀引腳指令。所有的“讀—改—寫”指令均讀I/O口鎖存器。第10頁/共59頁5.1.1P1口結(jié)構(gòu)組成:它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成----準(zhǔn)雙向口。功能:作為通用I/O使用。第11頁/共59頁圖2?5aP1口的口線邏輯電路圖結(jié)構(gòu)組成:它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成----準(zhǔn)雙向口。第12頁/共59頁圖2?5aP1口的口線邏輯電路圖P1口作輸出口時,內(nèi)部數(shù)據(jù)經(jīng)過鎖存器送到P1.0---P1.7上。由于內(nèi)部有上拉電阻,所以P1口作輸出口使用時,不用外接上拉電阻。第13頁/共59頁圖2?5aP1口的口線邏輯電路圖P1口作輸入口時,P1.0—P1.7上的信號經(jīng)過緩沖器送到內(nèi)部數(shù)據(jù)總線上。在讀引腳之前,要先將鎖存器置1,否則總是讀到0。CPU對I/O口的讀操作有2種:讀引腳和讀鎖存器。第14頁/共59頁5.1.2P3口功能:它除了可作為通用I/O端口外,還具有第二功能。第15頁/共59頁圖2?5dP3口的口線邏輯電路圖1.作為通用I/O口作為通用I/O口使用時,與P2口類似。此時第二輸出功能控制信號為1。第16頁/共59頁圖2?5dP3口的口線邏輯電路圖2.P3口第二功能此時CPU自動向鎖存器寫1,引腳部分輸入(第二輸出功能控制信號為1),部分輸出(從第二輸出功能輸出信號)。第17頁/共59頁P3第二功能各引腳功能定義:P3.0:RXD串行口輸入P3.1:TXD串行口輸出P3.2:INT0外部中斷0輸入P3.3:INT1外部中斷1輸入P3.4:T0定時器0外部輸入P3.5:T1定時器1外部輸入P3.6:WR外部寫控制P3.7:RD外部讀控制第18頁/共59頁5.1.3P2口功能:作為通用I/O使用和高8位地址線。第19頁/共59頁圖2?5cP2口的口線邏輯電路圖CPU發(fā)出控制電平“0”,使多路開關(guān)MUX倒向鎖存器輸出Q端,構(gòu)成一個準(zhǔn)雙向口。其功能與P1相同。1.P2口作為普通I/O口第20頁/共59頁圖2?5cP2口的口線邏輯電路圖CPU發(fā)出控制電平“1”,使多路開關(guān)MUX倒內(nèi)部地址線。此時,P2輸出高8位地址。

2.P2口作為地址總線第21頁/共59頁5.1.4P0口結(jié)構(gòu)組成:它由一個輸出鎖存器,兩個三態(tài)輸入緩沖器,一個多路轉(zhuǎn)換開關(guān)MUX,和輸出驅(qū)動電路組成。功能:既可以作為通用I/O用,也可以作為地址/數(shù)據(jù)線用。第22頁/共59頁圖2?5bP0口的口線邏輯電路圖結(jié)構(gòu)組成:它由一個輸出鎖存器,兩個三態(tài)輸入緩沖器,一個多路轉(zhuǎn)換開關(guān)MUX,和輸出驅(qū)動電路組成。第23頁/共59頁圖2?5bP0口的口線邏輯電路圖P0口作為通用I/O使用時,CPU發(fā)出控制電平“0”封鎖“與”門,將輸出上拉場效應(yīng)管T1截止,多路開關(guān)MUX接通鎖存器Q反端的輸出通路。1.P0口作普通I/O使用第24頁/共59頁圖2?5bP0口的口線邏輯電路圖P0口作為輸出口使用時,

來自CPU的寫脈沖加在D觸發(fā)器的CP端,數(shù)據(jù)寫入鎖存器,并向端口引腳輸出。P0口作輸出口使用時,必須外接上拉電阻。

1.P0口作普通I/O使用第25頁/共59頁圖2?5bP0口的口線邏輯電路圖P0口作輸入口時,P0.0—P0.7上的信號經(jīng)過緩沖器送到內(nèi)部數(shù)據(jù)總線上。在讀引腳之前,要先將鎖存器置1,否則總是讀到0。CPU對I/O口的讀操作有2種:讀引腳和讀鎖存器。1.P0口作普通I/O使用第26頁/共59頁圖2?5bP0口的口線邏輯電路圖在系統(tǒng)擴展時,P0端口作為地址/數(shù)據(jù)總線使用時,分為:

輸出地址/輸出數(shù)據(jù)、輸出地址/輸入數(shù)據(jù)2.P0作為地址/數(shù)據(jù)總線第27頁/共59頁圖2?5bP0口的口線邏輯電路圖P0引腳輸出地址/輸出數(shù)據(jù):CPU發(fā)出控制電平“1”,打開“與”門,又使多路開關(guān)MUX把CPU的地址/數(shù)據(jù)總線與T2柵極反相接通,輸出地址或數(shù)據(jù)。2.P0作為地址/數(shù)據(jù)總線第28頁/共59頁圖2?5bP0口的口線邏輯電路圖P0引腳輸出地址/輸入數(shù)據(jù):輸入信號是從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。此時,CPU自動使MUX向下,并向P0口寫“1”,“讀引腳”控制信號有效,下面的緩沖器打開,外部數(shù)據(jù)讀入內(nèi)部總線。2.P0作為地址/數(shù)據(jù)總線第29頁/共59頁5.1.5并行口的應(yīng)用——晶閘管的接口和編程晶閘管接口硬件電路有過零檢測電路和加熱控制電路組成;通過控制導(dǎo)通角來控制加熱功率。第30頁/共59頁晶閘管接口電路圖(a)晶閘管加熱電路(b)輸出波形(c)過零電路第31頁/共59頁程序設(shè)計查詢P3.2上負(fù)跳變的方法確定交流電進(jìn)入正半周;通過延時決定導(dǎo)通角的方法實現(xiàn)對電熱絲功率的控制;延時時間到,P1.0輸出一正脈沖,可控硅導(dǎo)通,電阻絲開始加熱。第32頁/共59頁

例5:查訊方式控制晶閘管導(dǎo)通角程序

#include"reg52.h"#defineucharunsignedchar#defineuintunsignedintsbit P1_0=P1^0;sbit P3_2=P3^2; void poiiu(uintx,uinty){

uinta; P1_0=0; while(1) { for(;P3_2==1;); 第33頁/共59頁 for(a=x;a>0;a--); P1_0=1; for(a=y;a>0;a--); P1_0=0; for(;P3_2==0;); }} 第34頁/共59頁voidmain(){ for(;;) { uinta,b; a=200; b=10;

poiiu(a,b); } }第35頁/共59頁5.1.6并行口的應(yīng)用——撥碼盤的接口和編程一、BCD撥碼盤的構(gòu)造撥碼盤的結(jié)構(gòu)和型號有多種,常用的為BCD撥碼盤。BCD撥碼盤具有0~0十個位置,可以通過齒輪型圓盤撥到所需的位置,每個位置都有相應(yīng)的數(shù)字指示,一個撥碼盤可以輸入1位十進(jìn)制,如果要輸入4位十進(jìn)制數(shù)據(jù),需4個BCD撥碼盤。第36頁/共59頁?表示插入控制線A與數(shù)據(jù)線不通;*表示輸入控制線A與數(shù)據(jù)線接通。第37頁/共59頁

二、BCD碼撥碼盤的接口方法

圖5-6二位BCD碼的接口圖5-74位BCD碼的接口第38頁/共59頁

例5.6掃描法讀4個BCD碼撥碼盤程序

#include"reg52.h" #defineucharunsignedchar #defineuintunsignedint uintinbcd() { uintx=0; uchar a,b,i; for(i=0,b=0x7f;i<4;i++) { P1=b; a=P1; a&=0xf;第39頁/共59頁 x=x*10+a; b>>=1; b|=0x80; } returnx; } voidmain() { for(;;) { uinty; y=inbcd(); } }第40頁/共59頁5.1.7并行口的應(yīng)用——4X4鍵盤的接口和編程一、鍵盤工作原理

用于按鍵數(shù)目較多的場合,由行線和列線組成,按鍵位于行、列的交叉點上。 按鍵數(shù)目較多的場合,矩陣鍵盤與直接編碼輸入鍵盤相比,要節(jié)省很多的I/O口線。第41頁/共59頁行線X0~X3接P1.4~平P1.7;列線Y0~Y3接P1.0~P1.3。圖5-94X4鍵盤結(jié)構(gòu)和接口方法第42頁/共59頁二、鍵盤狀態(tài)的判斷

無鍵按下,該行線為高電平,當(dāng)有鍵按下時,行線電平由列線的電平來決定。 由于行、列線為多鍵共用,各按鍵彼此將相互發(fā)生影響,必須將行、列線信號配合起來并作適當(dāng)?shù)奶幚恚拍艽_定閉合鍵的位置。第43頁/共59頁三、閉合鍵建號的識別

1.逐行掃描法 識別鍵盤有無鍵被按下的方法,分兩步進(jìn)行: 第1步:識別鍵盤有無鍵按下; 把所有列線置0,檢查各行線電平是否有變化,如有變化,說明有鍵按下,如無變化,則無鍵按下。 第2步:如有鍵被按下,識別出具體的按鍵。 上述方法稱為掃描法,即先把某一列置低電平,其余各列為高電平,檢查各行線電平的變化,如果某行線電平為低,可確定此行列交叉點處的按鍵被按下。第44頁/共59頁

2.行翻轉(zhuǎn)法

第1步:列線輸出為全低電平,則行線中電平由高變低的所在行為按鍵所在行。 第2步:行線輸出為全低電平,則列線中電平由高變低所在列為按鍵所在列。 結(jié)合上述兩步,可確定按鍵所在行和列。第45頁/共59頁把上兩步得到的輸入數(shù)據(jù)拼成一個字節(jié)數(shù)據(jù)作為鍵值,則鍵值和鍵號的對應(yīng)關(guān)系如下表所示:表5-3鍵值表第46頁/共59頁四、鍵抖動及處理

在理想狀態(tài)下,按鍵引腳電壓變化如圖5-9(a)所示。 實際上,在按鍵被按下或釋放的瞬間,由于機械觸點存在彈跳現(xiàn)象,實際按鍵電壓波形如圖5-9(b)所示,即機械按鍵在按下和釋放瞬間存在抖動現(xiàn)象。 抖動時間的長短與按鍵的機械特性有關(guān),一般在5~10ms之間,而按鍵穩(wěn)定閉合期的長短與按鍵時間有關(guān),從數(shù)百毫秒到數(shù)秒不等。第47頁/共59頁圖5-9鍵按下和釋放時行線電壓波形

(a)理想狀態(tài)下按鍵電壓波形; (b)實際按鍵電壓波形第48頁/共59頁如何消除按鍵的抖動 常用軟件來消除按鍵抖動。 基本思想:檢測到有鍵按下,延遲10~20ms(因為機械按鍵由按下到穩(wěn)定閉合的時間為5~10ms)再去判別按鍵是否處于按下狀態(tài),并確定是哪一個按鍵被按下。第49頁/共59頁

例5.7行翻轉(zhuǎn)法鍵輸入程序設(shè)計

#include"reg52.h" #include“stdio.h” #defineucharunsignedchar #defineuintunsignedint ucharcodek_tab[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7, 0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77}; ucharidataD_BUF[16];

ucharnkey_s0(uchary) { uchari,b;第50頁/共59頁

for(i=0;i<16;i++) { b=k_tab[i]; if(b==y) returni; } } ucharnkey() { uchara,b; P2=0xf0; a=P2; b=a; P2=0xf;第51頁/共59頁 a=P2; a|=b; b=nkey_s0(a); returnb; } bitkeys() { uchara; P2=0xf0; a=P2; if(a==0xf0) return1; else return0; }第52頁/共59頁

ucharkeyi() { uchara; uintx; for(;;) { if((keys())==0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論