




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第七章并行接口與串行接口7.1并行接口與串行接口概述7.2簡單的并行接口電路7.3可編程并行接口芯片8255A7.4并行接口應(yīng)用思維7.5串行通信的基本概念7.6異步串行通信接口標(biāo)準(zhǔn)7.1并行接口與串行接口概述
1.并行與串行接口MPUI/O接口I/O外設(shè)并串或并
微型計(jì)算機(jī)與I/O設(shè)備的接口按照數(shù)據(jù)傳送方式的不同,可分為并行接口和串行接口兩種。BUSY/READYMPU譯碼器與邏輯控制串行端口并行設(shè)備串行設(shè)備DBABCB并行端口DB(8根)STROBE地?cái)?shù)據(jù)輸出數(shù)據(jù)輸入地7.1并行接口與串行接口概述主要差別:串行接口需要實(shí)行并行和串行之間的相互轉(zhuǎn)化,而并行接口則無需實(shí)現(xiàn)這種變化。2.并行與串行接口在結(jié)構(gòu)、功能上的異同
簡單的不可編程并行接口電路主要由數(shù)據(jù)鎖存器和/或三態(tài)門構(gòu)成。7.2簡單的不可編程并行接口7.2.1三態(tài)門接口7.2.2鎖存器接口7.2.3帶三態(tài)緩沖輸出的鎖存器接口7.2.1三態(tài)門接口以74LS244為例,其內(nèi)部結(jié)構(gòu)、外部引腳與真值表如下:使能G*數(shù)據(jù)輸入A數(shù)據(jù)輸出Y00101×01高阻態(tài)三態(tài)門具有“通斷”控制能力,可用作各種接口電路中的單向或雙向總線緩沖器/驅(qū)動(dòng)器。
G1G21111A12Y11A22Y21A32Y31A42Y4GND1Y12A11Y22A21Y32A31Y42A4VCC用74LS244構(gòu)成的輸入接口1Y11Y21Y31Y42Y12Y22Y32Y41A11A21A31A42A12A22A32A4譯碼電路IORAEN
K0K1A9~A0+5VD0D1
D2D3D4D5D6D7………K7G1G2
200H
74LS244
7.2.1三態(tài)門接口7.2.2鎖存器接口以8D觸發(fā)器74LS273為例,其外部引腳圖與真值表如下:74LS273SQ0D0D1Q1Q2D2D3Q3GNDVCCQ7D7D6Q6Q5D5D4Q4CP1510201511SCPDiQi011↑↑01001數(shù)據(jù)鎖存器具有數(shù)據(jù)保持功能,所以常用作輸出接口。用74LS273構(gòu)成的繼電器控制接口譯碼電路IOWAENA9~A0CP200H
Q0Q1Q2D0D7D0D7~~74LS273
7.2.2鎖存器接口7.2.3帶三態(tài)緩沖輸出的鎖存器接口DCP11QiQDiCPOE數(shù)據(jù)鎖存器無“通斷”控制能力,所以不能作為輸入接口;而三態(tài)門沒有數(shù)據(jù)“保持”功能,也不能用作輸出接口。只有帶三態(tài)緩沖輸出的鎖存器既可用作輸出接口,又可用作輸入接口。
以74LS374為例,其單個(gè)鎖存器的內(nèi)部結(jié)構(gòu)如下:74LS374用作輸入和輸出接口的連接D0D1D7CP外設(shè)數(shù)據(jù)外設(shè)選通信號(hào)Q0Q7D0D7~~~A0A9OE地址譯碼AENIOR……a)輸入接口74LS374
b)輸出接口Q0Q1Q7D0D7D0D7~~~A0A9OE地址譯碼AENIOW……CP74LS374
7.2.3帶三態(tài)緩沖輸出的鎖存器接口
如圖是利用三態(tài)門和鎖存器(D觸發(fā)器)分別構(gòu)成輸出接口和輸入接口,希望利用輸出口控制發(fā)光二極管D的亮滅;利用輸入接口輸入開關(guān)K的狀態(tài)。試指出圖中的錯(cuò)誤并說明錯(cuò)在哪里?!纠?.1】簡單并行接口電路分析+5V≥1K≥1≥1Q0LE100KΩ10KΩDD0A7A6A5A4A3A2A1A0D0IOWIOR7.2簡單的不可編程并行接口7.3可編程并行接口芯片82557.3.1內(nèi)部結(jié)構(gòu)與外部引腳7.3.2內(nèi)部端口尋址與讀/寫控制7.3.3控制字格式7.3.4三種工作方式數(shù)據(jù)總線緩沖器讀寫控制邏輯A口(8位)C口(高4位)C口(低4位)B口(8位)A組控制部件B組控制部件D0~D7雙向數(shù)據(jù)總線RDWRA1A0RESETCSI/OPA7-PA0I/OPC7-PC4I/OPC3-PC0I/OPB7-PB08255內(nèi)部結(jié)構(gòu)8位內(nèi)總線7.3.1內(nèi)部結(jié)構(gòu)與引腳功能與外設(shè)接口部分與MPU接口部分內(nèi)部控制部分由三大部分組成控制部件分為A組和B組,用于控制8255的工作方式、輸入/輸出狀態(tài)和對(duì)C口的按位置位/復(fù)位操作。
與存儲(chǔ)器和其他可編程接口芯片大同小異。有三種可編程的工作方式。
A口、B口只能用作數(shù)據(jù)I/O口;
C口則因工作方式不同,有時(shí)是I/O數(shù)據(jù)端口線,有時(shí)是A口、B口數(shù)據(jù)傳送的應(yīng)答控制線。7.3.2內(nèi)部端口尋址與讀/寫控制
00100
數(shù)據(jù)總線
A口
01100
數(shù)據(jù)總線
B口
10100
數(shù)據(jù)總線
C口
11100
數(shù)據(jù)總線控制寄存器
00010
A口數(shù)據(jù)總線
01010
B口數(shù)據(jù)總線
10010
C口數(shù)據(jù)總線
××××1端口輸出為”高阻”
11010非法
××110端口輸出為”高阻”
A1A0RD
WR
CS
操作輸入輸出禁止
8255內(nèi)部共有A口、B口、C口和控制口4個(gè)端口寄存器,對(duì)他們的尋址和讀/寫操作是由CS*、A1、A0和RD*、WR*幾個(gè)信號(hào)來控制的。7.3.3控制字格式8255有兩種控制字:
工作方式控制字C口按位置位/復(fù)位控制字7.3.3控制字格式1.工作方式控制字B組控制C口低4位0輸出1輸入B口I/O選擇0輸出1輸入方式選擇0方式01方式1A組控制C口高4位0輸出1輸入A口I/O選擇0輸出1輸入方式選擇00方式001方式11方式21D6D5D4D3D2D1D0D7D6D5D4D3D2D1D02.C口按位置位/復(fù)位控制字C口的按位置位/復(fù)位操作一次只能使C口的1位置“1”或置“0”。如果要在某位上輸出一個(gè)開關(guān)量信號(hào),對(duì)該位的置“1”置“0”操作必須成對(duì)使用。C口按位置位/復(fù)位控制字不是送到C口地址,而是送到控制寄存器地址。說明:0C口的位選擇位D3D2D100001001201030114100510161107111置位復(fù)位0復(fù)位1置位7.3.3控制字格式7.3.4三種工作方式地址總線數(shù)據(jù)總線控制總線方式0RDWRD7~D0CSA0A1B口C口A口I/OI/OI/OI/OPB7~PB0PC3~0PC7~4PA7~PA0基本I/O方式方式2B口C口C口A口I/OPB7~PB0A口控制應(yīng)答式雙向I/O方式I/O雙向B組A組方式1B口C口C口A口I/OPB7~PB0PA7~PA0控制應(yīng)答式I/O方式控制I/OPA7~PA01.方式0:基本I/O方式7.3.4三種工作方式方式0主要用于無條件I/O傳送,這時(shí)輸出有鎖存功能,而輸入則無鎖存功能;C口支持按位操作;方式0亦可用于應(yīng)答式工作。
A、B、C三個(gè)端口均為數(shù)據(jù)I/O口,其中A口、B口、C口高4位、C口低4位可通過編程選擇分別工作于輸入或輸出狀態(tài)。PA7~0PC7~4PC3~0PB7~0I/O數(shù)據(jù)例7.2用8255實(shí)現(xiàn)的開關(guān)輸入和顯示輸出接口。無條件輸入/輸出7.3.4三種工作方式——方式0譯碼器AEND7~D0IOWIOR+5VA1A0A9A2~200HD7~D0CS
A1A0PB7PB6
PB0PA2PA1PA0
LED7LED6
LED0
K2K1K0……8255WRRD
A口可用三態(tài)門代替,B口可用鎖存器代替。K2K1K0=000,LED0亮;K2K1K0=001,LED1亮;K2K1K0=010,LED2亮;K2K1K0=011,LED3亮;K2K1K0=100,LED4亮;K2K1K0=101,LED5亮;K2K1K0=110,LED6亮;K2K1K0=111,LED7亮;例7.2程序7.3.4三種工作方式——方式0#include<stdio.h>#include<dos.h>unsignedchartab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};main(){unsignedchari;outportb(0x203,0x90); /*寫8255方式控制字*/while(!kbhit()){ /*無鍵按下時(shí),循環(huán)*/i=inportb(0x200); /*從A口輸入開關(guān)狀態(tài)*/i&=0x07; /*保留低3位*/outportb(0x201,tab[i]); /*從B口輸出相應(yīng)控制字*/}}有條件輸入/輸出7.3.4三種工作方式——方式0譯碼器AEND7~D0IOWIOR+5VA1A0A9A2~200HD7~D0CS
A1A0PB7PB6
PB0PA2PA1PA0
LED7LED6
LED0
K2K1K0……8255
PC0WRRD在例7.2中,用一按鈕控制實(shí)現(xiàn)有條件開關(guān)輸入和狀態(tài)顯示(按鈕按下時(shí),輸入/輸出)。2.方式1:應(yīng)答式I/O方式
A、B口為數(shù)據(jù)I/O口,C口的高4位和低4位分別作為A、B口的控制/狀態(tài)口。可用中斷式應(yīng)答,也可用查詢式應(yīng)答。方式1的輸入方式1的輸出方式1的狀態(tài)字方式1的接口方法7.3.4三種工作方式
方式1的輸入PC2=1,使INTEB=1B口控制字111D7
D6D5D4D3D2D1D0信號(hào)掛靠關(guān)系中斷開啟10111/0D7
D6D5D4D3D2D1D0PC4=1,使INTEA=1A口控制字PC6,71輸入0輸出PC4PC3PC5&RDA口PA7~PA0INTEASTBAIBFAINTRAI/OPC6、7PC2PC0PC1&RDB口PB7~PB0INTEBSTBBIBFBINTRB7.3.4三種工作方式——方式1方式1的輸出10101/0D7
D6D5D4D3D2D1D0PC6=1,使INTEA=1A口控制字PC2=1,使INTEB=1B口控制字PC7PC3PC6&WRA口PA7~PA0INTEAOBFAACKAINTRAI/OPC4、5PC1PC0PC2WR&B口PB7~PB0INTEBOBFBACKBINTRB110D7
D6D5D4D3D2D1D0PC4,51輸入0輸出信號(hào)掛靠關(guān)系中斷開啟7.3.4三種工作方式——方式1D7D6D5D4D3輸入口D7D6D5D4D3
方式1的狀態(tài)字INTEBIBFBINTRB
通過讀C口,可獲得狀態(tài)字,從中查詢I/O設(shè)備狀態(tài)(是否IBF=1或OBF=0)。輸出口輸出口C口D7D6D5D4D3D2D1D0I/OI/OIBFAINTEAINTRAA組狀態(tài)B組狀態(tài)輸入口D2
D1D0D2
D1D0INTEBOBFBINTRBOBFINTEAI/OI/OINTRA7.3.4三種工作方式——方式1方式1的接口方法方式1接口時(shí),首先要根據(jù)應(yīng)用的具體要求確定A口和B口是輸入還是輸出,然后把C口的應(yīng)答線與外設(shè)的控制、狀態(tài)線相連。具體又可采用:7.3.4三種工作方式——方式1中斷驅(qū)動(dòng)式接口程序查詢式接口方式1中斷驅(qū)動(dòng)式接口D7~D0RDWRA1A0CS
8255APC4PC5PC6PC3地址譯碼A0=0AEN=0A9~A3D7~D0IORIOWA2A1PA7~0STB數(shù)據(jù)中導(dǎo)孔響應(yīng)啟動(dòng)紙帶機(jī)ACKINTRAIRQi210H
例7.3快速啟停電容式紙帶機(jī)接口設(shè)計(jì)。7.3.4三種工作方式——方式1方式1查詢式接口這時(shí)無需使用INTR信號(hào),而是通過C口讀入方式1輸入狀態(tài)字,查詢IBF的狀態(tài)來實(shí)現(xiàn)查詢式輸入。7.3.4三種工作方式——方式1以例7.3為例,若要從紙帶機(jī)輸入一組以“$”符號(hào)結(jié)束的數(shù)據(jù),并存入內(nèi)存BUFFER開始的數(shù)據(jù)緩沖區(qū),則相應(yīng)的C語言查詢式驅(qū)動(dòng)程序如下:例7.3查詢式驅(qū)動(dòng)程序#include<stdio.h>#include<dos.h>unsignedcharbuffer[256];main(){ unsignedchari=0,status,x; outportb(0x216,0xb0);/*寫8255方式控制字*/ outportb(0x216,0x0c);/*從PC6輸出正脈沖啟動(dòng)紙帶機(jī)工作*/ outportb(0x216,0x0d); outportb(0x216,0x0c); while(1){ /*循環(huán)*/
status=inportb(0x214);/*從C口輸入狀態(tài)*/ while(!(status&0x20))/*當(dāng)IBFA=0時(shí)等待*/ status=inportb(0x214);
x=inportb(0x210);/*從A口輸入數(shù)據(jù)*/ buffer[i]=x; if(x==’$’)break; i++; }}7.3.4三種工作方式——方式13.方式2—應(yīng)答式雙向數(shù)據(jù)傳送方式。
在這種方式下,A口為雙向數(shù)據(jù)傳送端口,C口的高5位(PC7~PC3)作為相應(yīng)的應(yīng)答控制線;B口和C口余下的低3位(PC2~PC0)可工作于方式0或方式1。7.3.4三種工作方式方始的接口功能方式2的狀態(tài)字方式2的接口方法方式2的接口功能1=方式1D7控制字D6D2D1D0111/01/01/0PC2~01=輸入0=輸出通道B1=輸入0=輸出B組方式0=方式0D5D4D3≥1WRRDPA7~PA0&&INTE2INTE1PC5PC4PC6PC7PC3PC2~PC0INTRAACKAOBFASTBAIBFAI/OI/O3方式2的接口功能相當(dāng)于方式1輸入和輸出功能的組合。7.3.4三種工作方式——方式2方式2的狀態(tài)字7.3.4三種工作方式——方式2D7D6D5D4D3I/OI/OI/OC口D7D6D5D4D3D2D1D0OBFINTEAIBFAINTEAINTRAA組狀態(tài)B組狀態(tài)方式1輸入D2
D1
D0D2
D1D0INTEBIBFBINTRBD2
D1D0INTEBOBFBINTRB方式1輸出方式0輸入/輸出方式2的接口方法方式2的接口方法有兩種形式,即:
對(duì)中斷式接口,只能采用查詢式中斷:中斷響應(yīng)后,先讀狀態(tài)字,查明是輸入中斷還是輸出中斷,再轉(zhuǎn)入相應(yīng)中斷服務(wù)。中斷驅(qū)動(dòng)式接口程序查詢式接口7.3.4三種工作方式——方式2本節(jié)通過幾個(gè)具體實(shí)例來說明并行接口在實(shí)際應(yīng)用中的使用方法。7.4
并行接口應(yīng)用思維7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)7.4.2LED顯示器接口設(shè)計(jì)7.4.3鍵盤接口設(shè)計(jì)7.4.4打印機(jī)接口設(shè)計(jì)7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)
例7.4設(shè)計(jì)一個(gè)三相步進(jìn)電機(jī)控制接口。編寫程序使步進(jìn)電機(jī)按一定速度正/反轉(zhuǎn)。1.三相步進(jìn)電機(jī)的工作原理2.三相步進(jìn)電機(jī)的驅(qū)動(dòng)控制方法3.控制接口設(shè)計(jì)4.驅(qū)動(dòng)軟件設(shè)計(jì)1.三相步進(jìn)電機(jī)的工作原理三相步進(jìn)電機(jī)的內(nèi)部結(jié)構(gòu)如圖所示。當(dāng)三相定子繞組輪流接通驅(qū)動(dòng)脈沖時(shí),所產(chǎn)生的磁場(chǎng)吸引轉(zhuǎn)子轉(zhuǎn)動(dòng)。按各相定子依次勵(lì)磁的順序不同,三相步進(jìn)電機(jī)有3種工作方式:三相三拍。正轉(zhuǎn):A→B→C→A(反轉(zhuǎn))三相雙三拍。正轉(zhuǎn):AB→BC→CA→AB三相六拍。正轉(zhuǎn):A→AB→B→BC→C→CA→A7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)AABBCC2.步進(jìn)電機(jī)的驅(qū)動(dòng)控制方法步進(jìn)電機(jī)的驅(qū)動(dòng)控制方法,在于根據(jù)轉(zhuǎn)速或位移的要求產(chǎn)生所需頻率的步進(jìn)脈沖,并控制其發(fā)出的個(gè)數(shù),再由脈沖分配器將步進(jìn)脈沖按照步進(jìn)電機(jī)工作方式分配給各相繞組。常用并口代替,軟件分配7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)步進(jìn)脈沖發(fā)生器多路脈沖分配器A相驅(qū)動(dòng)器B相驅(qū)動(dòng)器C相驅(qū)動(dòng)器ABCUC3.硬件設(shè)計(jì)——方案一:用8255實(shí)現(xiàn)這時(shí)可選用PA口/PB口作控制接口,C口作狀態(tài)接口輸入正反轉(zhuǎn)標(biāo)志。相應(yīng)接口可如下所示:7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)D7~0IORIOWA2A1CS8255D7~0RDWRA1A0譯碼電路210HA0=0AEN=0A9A3~PC0PB2PB1+5V+5V+5V+5VPB0CBA正反轉(zhuǎn)標(biāo)志VC111方案二:用簡單并口實(shí)現(xiàn)7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)——硬件設(shè)計(jì)IOWD0D1D2≥10x210LEQ2Q1+5V+5V+5V+5VQ0CBA正反轉(zhuǎn)標(biāo)志VC111D0D1D2≥1IOR這時(shí)可選用鎖存器作控制接口,三態(tài)門作狀態(tài)接口輸入正反轉(zhuǎn)標(biāo)志。相應(yīng)接口可如下所示:方案三:用單片機(jī)并口實(shí)現(xiàn)7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)——硬件設(shè)計(jì)這時(shí)可選用P0口輸出作為控制接口,P1.0狀態(tài)接口輸入正反轉(zhuǎn)標(biāo)志。相應(yīng)接口可如下所示:51單片機(jī)+5V+5V+5V+5VCBA正反轉(zhuǎn)標(biāo)志VC111P0.1P0.2P1.0P0.04.驅(qū)動(dòng)軟件設(shè)計(jì)以上述電路為基礎(chǔ),根據(jù)步進(jìn)頻率計(jì)算出每一拍的時(shí)間,然后按所選擇的工作方式列出一周期內(nèi)各拍應(yīng)向并行輸出口送出的控制字表。以三相六拍為例,對(duì)應(yīng)的控制字表如下:工作方式控制字存放地址控制字(PB2PB1PB0)控制字寫入順序正轉(zhuǎn)反轉(zhuǎn)三相六拍BASEBASE+1BASE+2BASE+3BASE+4BASE+50
0
10
1
10
1
01
1
01
0
01
0
1↓↑7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)例7.4方案一程序(延時(shí)程序略)#include<stdio.h>#include<dos.h>unsignedcharbase[]={01H,03H,02H,06H,04H,05H};/*定義三相六拍控制字表*/main(){ unsignedchari=0,status,x;
outputb(0x216,0x81);/*寫8255方式控制字*/
status=inportb(0x214);/*輸入正反轉(zhuǎn)標(biāo)志*/ if(!(status&0x01))i=5;/*反轉(zhuǎn),i指向最后一個(gè)控制字*/ while(!kbhit()){ /*無鍵按下時(shí),循環(huán)*/
outportb(0x212,base[i]);/*從B口輸出當(dāng)前控制字*/ delay1s();
/*延時(shí),步進(jìn)電機(jī)走一拍*/
status=inportb(0x214);
/*從C口輸入正反轉(zhuǎn)標(biāo)志*/ if(status&1){
/*正轉(zhuǎn)*/ i++; if(i==6)i=0; /*正轉(zhuǎn)完一周,i指向第一個(gè)控制字*/ }else{ i--; if(i==-1)i=5;
/*反轉(zhuǎn)完一周,i指向最后一個(gè)控制字*/ } }}7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)例7.4方案三程序(延時(shí)程序略)#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitBF=P1^0; //正反轉(zhuǎn)標(biāo)志ucharcode
base[]={01H,03H,02H,06H,04H,05H};//定義三相六拍控制字表main(){ uchari=0,status,x;
BF=1; //置p1.0輸入
if(BF==0)i=5; //反轉(zhuǎn),i指向最后一個(gè)控制字
while(1){
//循環(huán)
p0=base[i]); //從P0口輸出當(dāng)前控制字 delay1s(); //延時(shí),步進(jìn)電機(jī)走一拍
if(BF){
//正轉(zhuǎn) i++; if(i==6)i=0; //正轉(zhuǎn)完一周,i指向第一個(gè)控制字 }else{ i--; if(i==-1)i=5; //反轉(zhuǎn)完一周,i指向最后一個(gè)控制字 } }}7.4.1步進(jìn)電機(jī)控制接口設(shè)計(jì)7.4.2
LED顯示器接口設(shè)計(jì)例7.5在微機(jī)中擴(kuò)展如圖所示的8位8段LED顯示器。1.LED顯示器內(nèi)部結(jié)構(gòu)及顯示原理2.LED顯示器的驅(qū)動(dòng)控制方法3.8位LED顯示器接口硬件設(shè)計(jì)4.接口驅(qū)動(dòng)軟件設(shè)計(jì)1.LED顯示器內(nèi)部結(jié)構(gòu)及顯示原理D7D6D5D4D3D2D1D0dpgfedcba
顯示段碼7.4.2
LED顯示器接口設(shè)計(jì)2.
LED顯示器的驅(qū)動(dòng)控制方法
以1位LED顯示器為例,只需在8段LED顯示器與微處理器之間加一個(gè)8位鎖存器。7.4.2
LED顯示器接口設(shè)計(jì)8位鎖存器DB0~7IOW40HD0Q0Q1Q2Q3Q4Q5Q6Q7abcdefgdpabcdefgdp+5V300Ω×8&D7…3.8位LED顯示器接口設(shè)計(jì)單片機(jī)驅(qū)動(dòng)器P0.7P0.0P1.7dpaaLED7LED0aaP1.0………dpdpdp陰極陰極……………驅(qū)動(dòng)器7.4.2
LED顯示器接口設(shè)計(jì)
需2個(gè)并行輸出口。方案一:若用單片機(jī)實(shí)現(xiàn),使用2個(gè)并行輸出口,如下所示。3.8位LED顯示器接口設(shè)計(jì)——方案二驅(qū)動(dòng)器PA7PA0PB7dpaaLED7LED0aaPB0………8255D7~D0A0A1DBA0A1地址譯碼A9~A2AEN=0dpdpdp陰極陰極……………驅(qū)動(dòng)器RDWRCSIORIOW200H7.4.2
LED顯示器接口設(shè)計(jì)
若用8255實(shí)現(xiàn),電路可如下所示(也可用2個(gè)鎖存器代替PA/PB口)。假定要從左至右顯示:‘1997.10.’,設(shè)計(jì)該接口的驅(qū)動(dòng)程序設(shè)計(jì)。數(shù)據(jù)結(jié)構(gòu)4.接口驅(qū)動(dòng)軟件設(shè)計(jì)該接口采用軟件譯碼,可在ROM區(qū)建立一個(gè)顯示字符段碼表;在RAM區(qū),應(yīng)開辟一個(gè)顯示數(shù)據(jù)緩沖區(qū),將要顯示的內(nèi)容預(yù)先存放到該緩沖區(qū)。7.4.2
LED顯示器接口設(shè)計(jì)ROMSEGPT+1+2+15+16012F段碼表…….0xC00xF90xA4…0x8E0x7F……RAM顯示緩沖區(qū)0x010x090x090x010x000x10……0x080x10DISMEM+1+2+5+6+7+3+419910.8.
程序流程圖指向顯示緩沖區(qū)首址關(guān)顯示從緩沖區(qū)取顯示字符從段碼表取段碼輸出至段碼寄存器位指針?biāo)臀患拇嫫餮訒r(shí)取顯示位指針修改顯示位指針修改緩沖區(qū)指針入口到最右端位?NY結(jié)束Y有鍵按下?N7.4.2
LED顯示器接口設(shè)計(jì)——驅(qū)動(dòng)軟件設(shè)計(jì)C語言程序#include"stdio.h"#include"conio.h"#include"dos.h"unsignedcharsegpt[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};unsignedchardismem[]={1,9,9,8,0x10,1,0,0x10};main(){unsignedchartemp,datal,i;intcount;outportb(0x203,0x80);
while(!kbhit()){ /*無鍵按下,循環(huán)*/ i=0;datal=0x80;outportb(0x201,0);/*位碼指向最左端,關(guān)顯示*/ while(1){temp=dismem[i]; /*取要顯示的字符*/ outportb(0x200,segpt[temp]); /*將字符顯示段碼送端口A*/ outportb(0x201,datal); /*將位碼送端口B*/
count=0xffff;while(count!=0)count--; /*延時(shí)*/ if(datal==0x01)break; i++;datal>>=1; /*調(diào)整指針,位碼右移一位*/ }}}7.4.2
LED顯示器接口設(shè)計(jì)——驅(qū)動(dòng)軟件設(shè)計(jì)
單片機(jī)方案——C語言程序#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodeSegCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f};ucharcodeDisMem[]={1,9,2,7,0x10,8,0x10,1}; //定義顯示緩沖區(qū)
voidmain(){uchartemp,BitCode,i; while(1){ i=0;BitCode=0x80; //位碼指向左端LED顯示器
P0=0; //關(guān)顯示 while(1){ temp=DisMem[i]; //取要顯示的字符
P1=SegCode[temp]; //將顯示字符的顯示段碼送P1口 P0=BitCode; //將位碼送P0口 DelayMs(); //延時(shí) if(BitCode==0x01)break; i++;BitCode>>=1; //調(diào)整指針,位碼右移1位 }; }}7.4.2
LED顯示器接口設(shè)計(jì)——驅(qū)動(dòng)軟件設(shè)計(jì)7.4.3鍵盤接口設(shè)計(jì)。
要求:鍵盤提供16個(gè)數(shù)字鍵0~F。當(dāng)有鍵按下時(shí),在PC機(jī)屏幕上顯示按鍵所對(duì)應(yīng)的數(shù)字,若按下“F”鍵,則退出程序運(yùn)行。
例6.6設(shè)計(jì)一個(gè)4行×4列的非編碼鍵盤接口。行/列掃描式鍵盤接口設(shè)計(jì)(單片機(jī))單片機(jī)P0.0P0.1P0.2P0.3P1.0P1.1P1.2P1.3+5V01234567CDEF89AB0行1行2行3行0列1列2列3列7.4.3鍵盤接口設(shè)計(jì)
可用1個(gè)并行口的4位作為行信號(hào)輸入,另一個(gè)并行口的4位作為列狀態(tài)輸入。行/列掃描式鍵盤接口設(shè)計(jì)CSD0~7A0A1RDWR200~203HPC0PC1PC2PC3PC4PC5PC6PC78255+5VD0~D7A0A1IORIOW01234567CDEF89AB0行1行2行3行0列1列2列3列7.4.3鍵盤接口設(shè)計(jì)
可用1個(gè)鎖存器代替PC3~0口,三態(tài)門代替PC7~4口。
鍵碼產(chǎn)生——查表法
①C語言可用二維表(二維數(shù)組),如下所示。當(dāng)識(shí)別出按鍵時(shí),根據(jù)按鍵的行列坐標(biāo)獲取按鍵的鍵碼。7.4.3鍵盤接口設(shè)計(jì)KEY_TAB[4,4]=‘0’,‘1’,‘2’,‘3’‘4’,‘5’,‘6’,‘7’‘8’,‘9’,‘A’,‘B’‘C’,‘D’,‘E’,‘F’②匯編語言用順序表(一維數(shù)組)0‘0’1‘1’2‘2’3‘3’F‘F’……SEGTAB當(dāng)識(shí)別出按鍵時(shí),根據(jù)按鍵的行列坐標(biāo)計(jì)算出被按鍵的鍵碼在表中存放的序號(hào),然后以該序號(hào)查表獲取鍵碼(ASCII碼)。此例,根據(jù)按鍵排列有:
序號(hào)=行號(hào)×4+列號(hào)。7.4.3鍵盤接口設(shè)計(jì)——鍵碼產(chǎn)生
方法是預(yù)先在內(nèi)存中按順序建立0~F這16個(gè)字符的鍵碼(ASCII碼)表,如圖所示。行掃描程序流程初始化8255讀入列狀態(tài)(PC7~PC4)輸出使PC3~PC0為0的掃描信號(hào)有鍵按下?軟件延時(shí)5~20ms,去抖動(dòng)取掃描0行的掃描碼,行號(hào)=0有鍵按下?讀入列狀態(tài)(PC7~PC4)輸出當(dāng)前行掃描信號(hào)行號(hào)加1行號(hào)=4?取掃描下一行的掃描碼YNYNYNAB7.4.3鍵盤接口設(shè)計(jì)行掃描程序流程(續(xù))計(jì)算被按鍵所在列號(hào)根據(jù)行列號(hào)計(jì)算被按鍵序號(hào)查表獲取被按鍵ASCII碼用DOS功能調(diào)用顯示被按鍵是F鍵?結(jié)束YNAB7.4.3鍵盤接口設(shè)計(jì)線反轉(zhuǎn)式鍵盤接口CSD0~7A0A1RDWR200~203HPC0PC1PC2PC3PC4PC5PC6PC78255+5VD0~D7A0A1IORIOW01234567CDEF89AB0行1行2行3行0列1列2列3列+5V7.4.3鍵盤接口設(shè)計(jì)
需2個(gè)可編程的輸入/輸出口。線反轉(zhuǎn)式鍵盤接口(單片機(jī))7.4.3鍵盤接口設(shè)計(jì)
需2個(gè)可編程的輸入/輸出口。+5V01234567CDEF89AB0行1行2行3行0列1列2列3列+5V單片機(jī)P0.0P0.1P0.2P0.3P1.0P1.1P1.2P1.3Centronics打印機(jī)接口標(biāo)準(zhǔn)查詢式打印機(jī)接口設(shè)計(jì)中斷式打印機(jī)接口設(shè)計(jì)7.4.4并行打印機(jī)接口設(shè)計(jì)例7.7設(shè)計(jì)一個(gè)基于Centronics標(biāo)準(zhǔn)的查詢式/中斷式打印機(jī)接口。編程將存放在內(nèi)存BUF單元開始、以數(shù)字0結(jié)束的打印數(shù)據(jù)輸出。
Centronics標(biāo)準(zhǔn)最主要的是8位并行數(shù)據(jù)線,兩根握手聯(lián)絡(luò)信號(hào)線STROBE*、ACK*和一根忙線BUSY。有效不忙≥0.5μs≥0.5μs≥0.5μs0.5μstd接口打印機(jī)DATASTROBEBUSYACK1.Centronics打印機(jī)接口標(biāo)準(zhǔn)7.4.4并行打印機(jī)接口設(shè)計(jì)2.查詢式打印機(jī)接口設(shè)計(jì)WRRDD7~0A0A1CS8255A打印機(jī)DATA8~1STROBEBUSYIOWIOR
D7~0A0A1ISAA3A4總A5AEN線A6A7ABCY2G2AG2BG174LS138驅(qū)動(dòng)器A口PC6PC21EN▽
用8255的A口作輸出數(shù)據(jù)口,C口的高4位作控制口,低4位作狀態(tài)口,電路如下:7.4.4并行打印機(jī)接口設(shè)計(jì)讀8255C口狀態(tài)數(shù)據(jù)送8255A口數(shù)據(jù)緩沖區(qū)指針加1END8255初始化:A口方式0,輸出;C口高4位輸出,低4位輸入;使PC6=1。打印數(shù)據(jù)完?忙(PC2=1)?使PC6輸出一個(gè)(選通)YYNN
查詢式驅(qū)動(dòng)程序流程7.4.4并行打印機(jī)接口設(shè)計(jì)
查詢式驅(qū)動(dòng)程序#include"stdio.h"#include"dos.h"unsignedcharbuf[256];main(){unsignedcharstatus,i;outportb(0x93,0x81); /*設(shè)置8255方式字*/outportb(0x93,0x0d); /*置PC6=1*/i=0;While(buf[i]!=0){ /*未打印完,循環(huán)*/ do{ status=inportb(0x92); /*輸入忙狀態(tài)*/ status&=0x04; }while(status!=0); /*若忙,繼續(xù)查詢*/ outportb(0x90,buf[i]); /*輸出打印字符*/ outportb(0x93,0x0c); /*輸出選通脈沖*/ outportb(0x93,0x0d); i++;}}7.4.4并行打印機(jī)接口設(shè)計(jì)假定仍以8255A作為接口器件,中斷式打印機(jī)接口如下:3.中斷驅(qū)動(dòng)式接口WRRDD7~0A0A1CS8255A打印機(jī)DATA8~1STROBEACKIOWIOR
D7~0A0A1ISAA3A4總A5AEN線A6A7IRQiABCY2G2AG2BG174LS138驅(qū)動(dòng)器A口PC7PC61EN▽7.4.4并行打印機(jī)接口設(shè)計(jì)基于上述中斷式接口的驅(qū)動(dòng)程序流程圖如下:數(shù)據(jù)送8255A口數(shù)據(jù)緩沖區(qū)指針加1開中斷中斷返回PC6=0中斷服務(wù)程序YN打印數(shù)據(jù)完?軟啟動(dòng)(將換行符0AH送A口,以便打印機(jī)發(fā)出ACK,引起中斷)8255初始化:A口方式1,輸出;使PC6=1,允許A口中斷。開中斷主程序主程序內(nèi)容…填寫中斷向量表7.4.4并行打印機(jī)接口設(shè)計(jì)7.5
串行通信的基本概念7.5.1串行通信工作方式7.5.2波特率和收/發(fā)時(shí)鐘7.5.3信號(hào)的調(diào)制與解調(diào)7.5.4誤碼率與差錯(cuò)控制7.5.5信道的多路復(fù)用7.5.6串行通信的基本方式7.5.7串行通信協(xié)議7.5.8串行通信的實(shí)現(xiàn)方法7.5.1串行通信工作方式串行數(shù)據(jù)在通信線上的傳送方式有三種:發(fā)送器接收器AB收發(fā)器收發(fā)器AB收發(fā)器收發(fā)器AB單工方式半雙工方式雙工方式7.5.2波特率和收/發(fā)時(shí)鐘
1.波特率指單位時(shí)間內(nèi)傳送二進(jìn)制數(shù)據(jù)的位數(shù),以位/秒為單位,有時(shí)也叫數(shù)據(jù)位率。它是衡量串行數(shù)據(jù)傳送速度快慢的重要指標(biāo)和參數(shù)。有時(shí)也用“位周期”來表示傳輸速度:
位周期=1/波特率
2.收/發(fā)時(shí)鐘7.5.2波特率和收/發(fā)時(shí)鐘
——用于對(duì)傳送的數(shù)據(jù)進(jìn)行定位和同步控制。并-串移位寄存器串-并移位寄存器發(fā)送數(shù)據(jù)接收數(shù)據(jù)發(fā)送緩存器接收緩存器接收時(shí)鐘發(fā)送時(shí)鐘通信線路1001001110010011發(fā)送時(shí)鐘接收時(shí)鐘發(fā)送數(shù)據(jù)接收數(shù)據(jù)接收方通常采用倍頻采樣方法,以提高采樣的分辨率。即收/發(fā)時(shí)鐘與波特率之間通常有下列關(guān)系:收/發(fā)時(shí)鐘頻率=n×波特率一般n取1,16,32,64等。3.收/發(fā)時(shí)鐘與波特率的關(guān)系7.5.2波特率和收/發(fā)時(shí)鐘7.5.3信號(hào)的調(diào)制和解調(diào)串行接口直接發(fā)送的串行數(shù)據(jù)在其基本不產(chǎn)生信號(hào)畸變和失真的條件下,所能傳送的最大距離取決于傳輸速度和傳輸線的電氣性能。對(duì)于同種傳輸線,最大傳輸距離和傳輸速率是一對(duì)矛盾:工作點(diǎn)在曲線下方時(shí)沒矛盾,可直接通過串行接口通信。最大傳輸距離波特率0100005000吋工作點(diǎn)在曲線上方時(shí)有矛盾,需加MODEM通信1.遠(yuǎn)距離通信示意圖7.5.3信號(hào)的調(diào)制和解調(diào)當(dāng)傳輸距離與傳輸速率發(fā)生矛盾時(shí),常在通信線路上引入調(diào)制、解調(diào)設(shè)備(MODEM)。發(fā)送方使用調(diào)制器把要傳送的數(shù)字信號(hào)調(diào)制轉(zhuǎn)換為適合在線路上傳輸?shù)囊纛l模擬信號(hào)。接收方則使用解調(diào)器從線路上測(cè)出這個(gè)模擬信號(hào),并還原成數(shù)字信號(hào)。2.常用調(diào)制方法它們分別按傳輸數(shù)字信號(hào)的變化規(guī)律去改變載波(音頻模擬信號(hào):Asin(2πft+φ))的頻率f、幅度A或相位φ,使之隨數(shù)字信號(hào)的變化而變化。7.5.3信號(hào)的調(diào)制和解調(diào)調(diào)頻(FM)——頻移鍵控法調(diào)幅(AM)——幅移鍵控法調(diào)相(PM)——相移鍵控法3.三種調(diào)制方法示意圖7.5.3信號(hào)的調(diào)制和解調(diào)數(shù)字信號(hào)調(diào)幅調(diào)頻調(diào)相0110100110Asin(2πft+φ)4.調(diào)制實(shí)現(xiàn)方法7.5.3信號(hào)的調(diào)制和解調(diào)音頻信號(hào)被控制數(shù)字信號(hào)?1?2電子開關(guān)1電子開關(guān)2AV+-01101001011011
以頻移鍵控法為例,其基本思想是把數(shù)字信號(hào)的“1”和“0”調(diào)制成不同頻率f1和f2的、容易識(shí)別的音頻模擬信號(hào)。7.5.4誤碼率和串行通信中的差錯(cuò)控制2.差錯(cuò)控制為減小誤碼率,常采取兩方面措施:
1.誤碼率
——指數(shù)據(jù)經(jīng)傳輸后發(fā)生錯(cuò)誤的位數(shù)與總傳輸位數(shù)之比。進(jìn)行可靠性設(shè)計(jì),盡量少出錯(cuò)。對(duì)傳輸信息采用檢錯(cuò)、糾錯(cuò)編碼技術(shù),以便發(fā)現(xiàn)和糾正錯(cuò)誤。這種方法稱為差錯(cuò)控制技術(shù)。3.差錯(cuò)控制方式應(yīng)用檢錯(cuò)、糾錯(cuò)編碼方法進(jìn)行差錯(cuò)控制,主要有三種方式:(a)自動(dòng)請(qǐng)求重發(fā)ARQ(b)前向糾錯(cuò)FEC(c)混合糾錯(cuò)HEC7.5.4誤碼率和串行通信中的差錯(cuò)控制自動(dòng)請(qǐng)求重發(fā)ARQ前向糾錯(cuò)FEC混合糾錯(cuò)HEC7.5.5信道的多路復(fù)用把多個(gè)信號(hào)按一定原則組合起來,在一條傳輸線路上用一套傳輸設(shè)備進(jìn)行傳輸。根據(jù)多個(gè)信號(hào)組合原則的不同,常用的多路信道復(fù)用技術(shù)有兩種:時(shí)分多路復(fù)用TDM頻分多路復(fù)用FDM1.時(shí)分多路復(fù)用TDM
——將一條物理傳輸線路按時(shí)間分成若干時(shí)間片輪換地為多個(gè)信號(hào)所占用。7.5.5信道的多路復(fù)用2.頻分多路復(fù)用FDM
——利用頻率調(diào)制原理,將要同時(shí)傳送的多個(gè)信號(hào)進(jìn)行頻譜搬移,使它們互不重疊地占據(jù)信道頻帶的不同頻率段,然后經(jīng)發(fā)送器從同一信道上同時(shí)或不同時(shí)地發(fā)送出去。信號(hào)1信號(hào)2信號(hào)3信號(hào)40.30.43034384246?/kHz7.5.5信道的多路復(fù)用7.5.6串行通信的基本方式根據(jù)在串行通信中數(shù)據(jù)定時(shí)、同步方法的不同,串行通信有兩種基本方式:異步串行方式同步串行方式在通信的數(shù)據(jù)流中,字符間異步,字符內(nèi)部各位間同步。數(shù)據(jù)流中的字符與字符之間和字符內(nèi)部的位與位之間都同步。前者對(duì)同步要求不嚴(yán),收/發(fā)雙方無需用同一時(shí)鐘源,只需用同頻率的收/發(fā)時(shí)鐘;后者對(duì)同步要求嚴(yán)格,收/發(fā)雙方需用同一時(shí)鐘源。7.5.7串行通信協(xié)議通信協(xié)議是收/發(fā)雙方必須共同遵守的數(shù)據(jù)傳輸協(xié)定。用于規(guī)定數(shù)據(jù)傳送格式、起始標(biāo)志、結(jié)束標(biāo)志、校驗(yàn)方式等。1.異步串行通信協(xié)議2.同步串行通信協(xié)議1.異步串行通信協(xié)議第n個(gè)字符(7~12位)第n+1個(gè)字符起始位5~8數(shù)據(jù)位(先送最低位)奇偶校驗(yàn)位停止位或2位空閑位00/10/10/10/10/10/101110/1121,1…7.5.7串行通信協(xié)議
數(shù)據(jù)幀格式以相反極性的起始位/停止位(空閑位)檢測(cè)新字符的開始,為接收端正確采樣提供時(shí)間基準(zhǔn)。接收器在每位碼元的中心采樣,以獲得最大的收/發(fā)時(shí)鐘頻率偏差容限。接收器采用比傳送波特率更高頻率的時(shí)鐘來控制采樣時(shí)間,以提高采樣的分辨能力和抗干擾能力。
異步通信中同步檢測(cè)與正確采樣的措施7.5.7串行通信協(xié)議用16倍波特率時(shí)鐘的同步檢測(cè)與采樣過程起始位0/10/1檢測(cè)到起始位前沿的時(shí)鐘確定已檢測(cè)到起始位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)管理b卷試題及答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備高級(jí)技能考前沖刺模擬試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能考試題庫
- 工程熱力學(xué)應(yīng)用測(cè)試及答案
- 農(nóng)業(yè)現(xiàn)代化種植標(biāo)準(zhǔn)化體系建設(shè)方案
- 客戶咨詢與需求記錄表
- 傳統(tǒng)文化在初中英語課中深度融入教案
- 儀器設(shè)備使用說明及維護(hù)保養(yǎng)指導(dǎo)書
- 美容美發(fā)服務(wù)安全責(zé)任協(xié)議書
- 《小學(xué)數(shù)學(xué)幾何圖形識(shí)別與性質(zhì)理解教學(xué)方案》
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)項(xiàng)目驗(yàn)收技術(shù)方案
- 人效的指標(biāo)體系及其“落地雙引擎”
- 醫(yī)學(xué)三基知識(shí)考試題庫及答案(護(hù)理+臨床)
- 2024年6月浙江省高考化學(xué)試題含答案解析
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 科研機(jī)構(gòu)科技成果轉(zhuǎn)化協(xié)議
- T-ZJHIA 13-2024 醫(yī)院私有云框架和基礎(chǔ)設(shè)施技術(shù)規(guī)范
- DB51T 1048-2010 土壤樣品采集技術(shù)規(guī)范 第1部分:適用于測(cè)土配方施肥和耕地地力評(píng)價(jià)
- 外墻窗洞企口施工深化要點(diǎn)
- 充電樁維保投標(biāo)方案
- 乳腺癌復(fù)發(fā)和轉(zhuǎn)移治療
評(píng)論
0/150
提交評(píng)論