單片機(jī)原理及應(yīng)用(C51版)教案第7章 單片機(jī)并行擴(kuò)展技術(shù)-16比9_第1頁(yè)
單片機(jī)原理及應(yīng)用(C51版)教案第7章 單片機(jī)并行擴(kuò)展技術(shù)-16比9_第2頁(yè)
單片機(jī)原理及應(yīng)用(C51版)教案第7章 單片機(jī)并行擴(kuò)展技術(shù)-16比9_第3頁(yè)
單片機(jī)原理及應(yīng)用(C51版)教案第7章 單片機(jī)并行擴(kuò)展技術(shù)-16比9_第4頁(yè)
單片機(jī)原理及應(yīng)用(C51版)教案第7章 單片機(jī)并行擴(kuò)展技術(shù)-16比9_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章

單片機(jī)并行擴(kuò)展技術(shù)主要講述編址方法,以及ROM、RAM、I/O擴(kuò)展的硬件電路,并在鍵盤(pán)和顯示的內(nèi)容上給出實(shí)際編程案例。單片機(jī)的最小系統(tǒng)7.1總線擴(kuò)展及編址方法7.2存儲(chǔ)器的擴(kuò)展7.3并行I/O的擴(kuò)展7.4第7章

單片機(jī)并行擴(kuò)展技術(shù)7.1單片機(jī)的最小系統(tǒng)最小應(yīng)用系統(tǒng):維持單片機(jī)運(yùn)行的最簡(jiǎn)單配置的系統(tǒng)。7.1.180C51/89C51最小應(yīng)用系統(tǒng)7.1.28031最小應(yīng)用系統(tǒng)7.2總線擴(kuò)展及編址方法7.2.1單片機(jī)的外總線結(jié)構(gòu)1.地址總線寬度為16位,尋址范圍216=64KB高8位地址由P2口提供,低8位地址由P0口提供P0口為數(shù)據(jù)/地址分時(shí)復(fù)用,ALE的下降沿將P0口輸出的地址鎖存入鎖存器中。2.數(shù)據(jù)總線由P0口提供,其寬度為8位。3.控制總線EA:內(nèi)部和外部程序存儲(chǔ)器的選擇控制信號(hào),電平高低由用戶決定;EA=0:只訪問(wèn)外部程序存儲(chǔ)器;EA=1:地址低于1000H時(shí),訪問(wèn)內(nèi)部ROM,否則,訪問(wèn)外部ROM。ALE:地址鎖存允許信號(hào);PSEN:外部程序存儲(chǔ)器讀信號(hào),訪問(wèn)外部程序存儲(chǔ)器時(shí)自動(dòng)產(chǎn)生。WR:外部數(shù)據(jù)存儲(chǔ)器寫(xiě)信號(hào),執(zhí)行MOVX指令時(shí)自動(dòng)產(chǎn)生。RD:外部數(shù)據(jù)存儲(chǔ)器讀信號(hào),執(zhí)行MOVX指令時(shí)自動(dòng)產(chǎn)生。7.2.1單片機(jī)的外總線結(jié)構(gòu)

片外可擴(kuò)展的程序存儲(chǔ)器最大容量為64KB,范圍0000H~FFFFH。片外可擴(kuò)展的數(shù)據(jù)存儲(chǔ)器最大容量為64KB,范圍0000H~FFFFH。為了配置外圍設(shè)備而需要擴(kuò)展的I/O口與片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址,不再另外提供地址線。

7.2.2單片機(jī)的擴(kuò)展能力7.2.3地址譯碼方法CPU發(fā)出的地址信號(hào)必須實(shí)現(xiàn)兩種選擇:首先對(duì)存儲(chǔ)器芯片的選擇,使相關(guān)芯片的片選端CS為有效,這稱(chēng)為片選。然后在選中的芯片內(nèi)部再選擇某一存儲(chǔ)單元,這稱(chēng)為字選。連接方法:存儲(chǔ)器芯片的地址線和單片機(jī)的地址總線中的若干條低位地址線對(duì)應(yīng)相連,其余的地址線(通常是P2口的高位地址)通過(guò)地址譯碼來(lái)產(chǎn)生外部存儲(chǔ)器芯片的片選信號(hào)。1.線選法:將多余的高位地址線中單獨(dú)的一根直接接到存儲(chǔ)器芯片使能端上。7.2.3地址譯碼方法地址P2.7A15P2.6A14P2.5A13P2.4A12P2.3A11P2.2A10P2.1A9P2.0A8P0.7A7P0.6A6P0.5A5P0.4A4P0.3A3P0.2A2P0.1A1P0.0A02764(1)××110001010101010101010101010101首址末址2764(2)××001101010101010101010101010101首址末址6264(1)11110001010101010101010101010101首址末址6264(2)11001101010101010101010101010101首址末址8255001111××××××××××××××××××××××0101首址末址編址方法對(duì)存儲(chǔ)空間的使用是斷續(xù)的,不能充分有效地利用存儲(chǔ)空間,且擴(kuò)充存儲(chǔ)容量受限。7.2.3地址譯碼方法2.譯碼法:使用譯碼器對(duì)系統(tǒng)的高位地址進(jìn)行譯碼,譯碼輸出作為存儲(chǔ)芯片的片選信號(hào)。(1)全譯碼法——地址譯碼器使用了全部高位地址線,地址與存儲(chǔ)單元一一對(duì)應(yīng)。(2)部分譯碼法——地址譯碼器僅對(duì)余下高位地址線的一部分進(jìn)行譯碼,地址重疊。圖7-4全譯碼法應(yīng)用實(shí)例7.2.3地址譯碼方法圖7-4所示是全譯碼法的一個(gè)簡(jiǎn)單應(yīng)用實(shí)例,圖中各芯片的地址范圍如下:2764(1):0000000000000000B~0001111111111111B,0000H~1FFFH。2764(2):0010000000000000B~0011111111111111B,2000H~3FFFH。6264(1):0000000000000000B~0001111111111111B,0000H~1FFFH。6264(2):0010000000000000B~0011111111111111B,2000H~3FFFH。8255:010×××××××××××00B~010×××××××××××11B,

即:

4000H~4003H,

……,

5FFCH~5FFFH等。

7.2.3地址譯碼方法7.3存儲(chǔ)器的擴(kuò)展7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展1.EPROM芯片簡(jiǎn)介-紫外線擦除可編程只讀存儲(chǔ)器A0~Ai:地址線(不同容量芯片的地址線數(shù)目不同);O0~O7:8位輸出數(shù)據(jù)線;CE:片選端;OE:輸出允許;Vpp:編程電壓;PGM:編程脈沖輸入。7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展2.EPROM基本擴(kuò)展法7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展【例7-1】用兩片2764EPROM芯片為803l單片機(jī)擴(kuò)展16KB的程序存儲(chǔ)器,試畫(huà)出線路連接圖。將2片2764芯片低8位地址線A0~A7都通過(guò)地址鎖存器與8031的P0口的P0.0~P0.7相連,高5位地址線A8~A12直接和P2口的P2.0~P2.4相連(片內(nèi)尋址)。2片2764的數(shù)據(jù)線D0~D7都直接接到P0口,作為數(shù)據(jù)總線。PSEN與2片2764的OE端直連剩余高地址線通過(guò)線選法或譯碼產(chǎn)生2片2764的片選信號(hào)連接方法:

7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展兩個(gè)芯片的地址范圍如下:①2764(1):××00000000000000B~××01111111111111B②2764(2):××10000000000000B~××11111111111111B部分譯碼方式和線選法一樣同樣浪費(fèi)地址空間,出現(xiàn)地址重疊的情況。7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展3.片外ROM操作時(shí)序片外ROM讀(產(chǎn)生PSEN信號(hào))片內(nèi)片外ROM選擇,用EA。片外ROM最大容量64K。讀外部ROM時(shí)序。7.3.1EPROM程序存儲(chǔ)器的擴(kuò)展1.RAM芯片簡(jiǎn)介A0~A12:13位地址線;D0~D7:8位輸出/輸入數(shù)據(jù)線;CE1,CE2:片選端;OE:輸出允許;WE:寫(xiě)允許信號(hào);Vcc、Vss:+5V電源和接地端。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展2.外部數(shù)據(jù)存儲(chǔ)器的擴(kuò)展方法7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展【例7-2】用三片6264芯片為89C51單片機(jī)擴(kuò)展24KB的外部數(shù)據(jù)存儲(chǔ)器,分別采用線選法、部分譯碼法和全譯碼法來(lái)實(shí)現(xiàn),并給出各芯片的地址范圍,譯碼芯片不限。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展連接方法:

將3片6264芯片低8位地址線A0~A7都通過(guò)地址鎖存器與89C51的P0口的P0.0~P0.7相連,高5位地址線A8~A12直接和P2口的P2.0~P2.4相連(片內(nèi)尋址)。3片6264的數(shù)據(jù)線D0~D7都直接接到P0口,作為數(shù)據(jù)總線。RD與3片6264的OE端相連,WR與3片6264的WE端相連剩余高地址線通過(guò)線選法或譯碼產(chǎn)生3片6264的片選信號(hào)線選法:P2.5=0、P2.6=1和P2.7=1時(shí),選中第一個(gè)RAM,地址范圍為:0C000H~0DFFFHP2.5=1、P2.6=0和P2.7=1時(shí),選中第二個(gè)RAM,地址范圍為:0A000H~0BFFFHP2.5=1、P2.6=1和P2.7=0時(shí),選中第三個(gè)RAM。地址范圍為:06000H~07FFFH顯然,用線選法會(huì)使存儲(chǔ)空間不連續(xù),同時(shí)不能充分有效地利用存儲(chǔ)空間,擴(kuò)充存儲(chǔ)容量受限。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展部分譯碼法:用P2.6~P2.7與2-4譯碼器直連,我們用其中的三個(gè)輸出信號(hào)(假設(shè)為Y0、Y1、Y2)與三片存儲(chǔ)器的/CE端相連,則:第一個(gè)RAM的地址范圍為:0000H~1FFFH和2000H~3FFFH第二個(gè)RAM的地址范圍為:4000H~5FFFH和6000H~7FFFH第三個(gè)RAM的地址范圍為:8000H~9FFFH和A000H~BFFFH每個(gè)芯片占用了16K的地址空間,而每個(gè)芯片實(shí)際的容量是8K,原因是地址線P2.5沒(méi)有參與譯碼,這種部分譯碼方式也存在地址空間浪費(fèi)的情況。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展譯碼器換成74LS138,則A13(P2.5)也參與了譯碼,這種全譯碼(所有剩余高地址線都參與譯碼)方式不存在地址空間浪費(fèi)。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展6264(1):0000000000000000B~0001111111111111B,0000H~1FFFH。6264(2):0010000000000000B~0011111111111111B,2000H~3FFFH。6264(3):0100000000000000B~0101111111111111B,4000H~5FFFH。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展3.讀操作時(shí)序【例】若(DPTR)=2030H,片外RAM單元2030H內(nèi)容為55H,指令MOVXA,@DPTR(該指令代碼為E0H)所在片外ROM的地址為2314H。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展4.寫(xiě)操作時(shí)序【例】若(DPTR)=1040H,(A)=88H,指令MOVX@DPTR,A(該指令代碼為F0H)所在片外ROM的地址為2218H。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展思考題:請(qǐng)擴(kuò)展1片8KB的RAM和1片8KB的EPROM,并分別寫(xiě)出2個(gè)芯片的地址空間。7.3.3數(shù)據(jù)存儲(chǔ)器及其擴(kuò)展7.4并行I/O口的擴(kuò)展MCS-51系列單片機(jī)的外部RAM和I/O口是統(tǒng)一編址的,單片機(jī)可以像訪問(wèn)外部RAM存儲(chǔ)器那樣訪問(wèn)外部接口芯片。7.4.1簡(jiǎn)單I/O擴(kuò)展【例7-3】如圖所示,編寫(xiě)一段程序,功能是按下任意鍵,使對(duì)應(yīng)的LED發(fā)光。7.4.1簡(jiǎn)單I/O口擴(kuò)展分析:74LS244是8路緩沖線驅(qū)動(dòng)器(三態(tài)輸出),G1、G2為低電平時(shí),信息輸入到P0口的數(shù)據(jù)總線上,G1、G2為高電平時(shí),呈現(xiàn)高阻狀態(tài)。74LS273是8D觸發(fā)器,CP下降沿將P0口輸出的數(shù)據(jù)鎖存到輸出端。#include <reg51.h> //51系列單片機(jī)頭文件#include <absacc.h> //定義地址需要的頭文件#define ucharunsignedchar //宏定義#define addr_ICXBYTE[0x0feff] //定義外部芯片的地址void main() //主函數(shù){uchar temp; //定義一個(gè)臨時(shí)變量while(1){temp=addr_IC;addr_IC=temp;}}參考程序:7.4.2LED數(shù)碼管顯示接口1.LED數(shù)碼管顯示器的結(jié)構(gòu)共陽(yáng)極:8個(gè)發(fā)光二極管的陽(yáng)極全部連接在一起組成公共端,8個(gè)發(fā)光二極管的陰極則單獨(dú)引出。共陰極:8個(gè)發(fā)光二極管的陰極全部連接在一起組成公共端,8個(gè)發(fā)光二極管的陽(yáng)極則單獨(dú)引出。2.LED數(shù)碼管的驅(qū)動(dòng)方法(1)靜態(tài)顯示法當(dāng)顯示器顯示某一個(gè)字符時(shí),相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。占用硬件多,一般用于顯示器位數(shù)較小的場(chǎng)合。7.4.2LED顯示接口【例7-4】試將字符數(shù)組tempchar中的兩個(gè)單BCD碼通過(guò)74LS164并行輸出并顯示到兩位LED數(shù)碼管,如圖所示。假設(shè)LED數(shù)碼管是共陽(yáng)的。7.4.2LED顯示接口#include <reg51.h> //51系列單片機(jī)頭文件#define ucharunsignedchar //宏定義#define uintunsignedint //宏定義sbit MR=P1^0; uchar codeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9對(duì)應(yīng)的字形碼uchar tempchar[]={0x06,0x08};void main() //主函數(shù){uinti;SCON=0x00; //串行口方式0初始化MR=1; //選通74LS164for(i=0;i<2;i++){SBUF=seg[tempchar[i]];while(!TI);TI=0;}while(1);}參考程序:7.4.2LED顯示接口(2)動(dòng)態(tài)顯示法一位一位地輪流點(diǎn)亮各位顯示器,對(duì)于每一位顯示器來(lái)說(shuō),每隔一段時(shí)間點(diǎn)亮一次,調(diào)整電流和顯示時(shí)間間隔,可實(shí)現(xiàn)亮度較高較穩(wěn)定的顯示。7.4.2LED顯示接口【例7-5】下圖為用單片機(jī)P2口和P1口構(gòu)成的動(dòng)態(tài)顯示的電路,共有6個(gè)共陽(yáng)極LED數(shù)碼顯示器,P2口為字段口,輸出字形碼,P2.0~P2.7分別與“a、b、c、d、e、f、g、dp”對(duì)應(yīng)相連,P1口為字位口,輸出位碼。編寫(xiě)程序,使下圖的動(dòng)態(tài)掃描顯示電路從左到右顯示l、2、3、4、5、6共六個(gè)字符,設(shè)晶振頻率12MHz。7.4.2LED顯示接口在第一時(shí)刻從P2口輸出1的字形碼,從P1口輸出00100000B,使最左邊的LED點(diǎn)亮;延時(shí)一段時(shí)間后,從P2口輸出2的字形碼,從P1口輸出00010000B,使左邊第二個(gè)LED點(diǎn)亮;依次循環(huán)......最后從P2口輸出6的字形碼,從P1口輸出0000001B,使最右邊的LED點(diǎn)亮。再回過(guò)頭從左邊第一個(gè)開(kāi)始。分析#include <reg51.h> #include <intrins.h> #define ucharunsignedchar #define uintunsignedint uchar codeseg[]={0x0f9,0x0a4,0x0b0,0x99,0x92,0x82};

voiddelaynms(uintn){ uinti,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}參考程序1:7.4.2LED顯示接口void main() //主函數(shù){uinti;ucharlen,bitOffset;while(1){len=0x06; //程序循環(huán)計(jì)數(shù)器,

6個(gè)字符一循環(huán)bitOffset=0x20; //位碼,首先令

P1.5=1,然后依次移位for(i=0;i<len;i++){P2=seg[i];P1=bitOffset;bitOffset=_cror_(bitOffset,1);//右環(huán)移一次delaynms(10);}}}#include <reg51.h> #include <intrins.h> #define ucharunsignedchar #define uintunsignedint uchar codeseg[]={0x0f9,0x0a4,0x0b0,0x99,0x92,0x82};ucharlen,bitOffset;uinti;void main() {TMOD=0x01;TL0=0x3c; //定時(shí)2.5ms的初值TH0=0xf6; ET0=1;EA=1;TR0=1;i=0; //字偏移len=0x06; //程序循環(huán)計(jì)數(shù)器,6個(gè)字符一循環(huán)bitOffset=0x20; //位碼,首先令P1.5=1,然后依次移位while(1);}參考程序2(采用定時(shí)器中斷方法):7.4.2LED顯示接口void timer0()interrupt1 {P2=seg[i];i++;P1=bitOffset;bitOffset=_cror_(bitOffset,1);if(i>=6){i=0; len=0x06; bitOffset=0x20; }TL0=0x3c;TH0=0xf6; }7.4.3鍵盤(pán)接口1.非編碼鍵盤(pán)的設(shè)計(jì)必須解決以下問(wèn)題:(1)判定是否有鍵按下。(2)若有鍵按下,判定是哪個(gè)鍵按下,確定被按鍵的“鍵值”。(3)除抖動(dòng)。(4)準(zhǔn)確得出按鍵值(或鍵號(hào)),以滿足跳轉(zhuǎn)指令要求。(5)同一按鍵長(zhǎng)時(shí)間持續(xù)按下。(6)處理同時(shí)按鍵。2.單片機(jī)對(duì)非編碼鍵盤(pán)的控制方式(1)程序查詢方式

CPU時(shí)刻處于鍵盤(pán)檢測(cè)狀態(tài),不能干別的事情,效率低下,很少用。

(2)定時(shí)掃描方式在定時(shí)中斷中,調(diào)用鍵盤(pán)掃描子程序,查詢按鍵狀態(tài),此方法常用。(3)中斷掃描方式當(dāng)鍵盤(pán)有鍵閉合時(shí)產(chǎn)生中斷請(qǐng)求,CPU響應(yīng)中斷,執(zhí)行服務(wù)程序,判斷鍵號(hào),做相應(yīng)處理,效率最高。7.4.3鍵盤(pán)接口3.獨(dú)立式按鍵接口電路軟件結(jié)構(gòu)簡(jiǎn)單,適用于應(yīng)用系統(tǒng)中的鍵較少的場(chǎng)合?!纠?-6】根據(jù)右圖所示的獨(dú)立式按鍵電路,編寫(xiě)查詢方式的按鍵掃描函數(shù)keyScan,Kn(n=1~4)閉合時(shí),返回n,否則返回0。7.4.3鍵盤(pán)接口//按鍵掃描函數(shù),返回掃描鍵值#include <reg51.h> #define ucharunsignedchar

#define uintunsignedint #definekeyPortP3voiddelaynms(uintn){ uinti,j;for(i=0;i<n;i++)

for(j=0;j<125;j++);}參考程序:7.4.3鍵盤(pán)接口ucharkeyScan(){ucharkeyval;if((keyPort&0xf0)!=0xf0){delaynms(10);if((keyPort&0xf0)!=0xf0){keyval=keyPort&0xf0;while((keyPort&0xf0)!=0xf0);switch(keyval){case0xe0:return1;break;case0xd0:return2;break;case0xb0:return3;break;case0x70:return4;break;default:return0;break;}}}return0;}4.矩陣式鍵盤(pán)鍵盤(pán)掃描程序應(yīng)包括以下內(nèi)容:檢測(cè)當(dāng)前是否有鍵按下;有鍵閉合時(shí),消除抖動(dòng);依次給每一條行線送出0信號(hào),其余各行線均為1,并相繼檢測(cè)每一次掃描時(shí)所對(duì)應(yīng)的列狀態(tài)。若各列全為1,表示為0的

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論