




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
6.1可編程并行I/O接口8255A6.2可編程RAM/IO/CTC接口81556.3鍵盤顯示器接口82796.4LED數(shù)碼顯示器接口6.5鍵盤接口
6.6A/D轉(zhuǎn)換器接口6.7D/A轉(zhuǎn)換器接口第6章接口芯片與接口技術(shù)6.1可編程并行I/O接口8255A8255A可編程并行輸入/輸出接口芯片是Intel公司生產(chǎn)的標(biāo)準(zhǔn)外圍接口電路。它采用NMOS工藝制造,用單一+5V電源供電,具有40條引腳,采用雙列直插式封裝。它有A、B、C3個(gè)端口共24條I/O線,可以通過(guò)編程的方法來(lái)設(shè)定端口的各種I/O功能。由于它功能強(qiáng),又能方便地與各種微機(jī)系統(tǒng)相接,而且在連接外部設(shè)備時(shí),通常不需要再附加外部電路,所以得到了廣泛的應(yīng)用。6.1.18255A的內(nèi)部結(jié)構(gòu)與引腳
1.8255A的內(nèi)部結(jié)構(gòu)
8255A的內(nèi)部結(jié)構(gòu)如圖6―1所示,由以下幾部分組成。
1)數(shù)據(jù)端口A、B、C8255A有3個(gè)8位數(shù)據(jù)端口,即端口A、端口B和端口C。編程人員可以通過(guò)軟件將它們分別作為輸入端口或輸出端口,不過(guò)這3個(gè)端口在不同的工作方式下有不同的功能及特點(diǎn),如表6―1所示。圖6―18255A的內(nèi)部結(jié)構(gòu)圖2)A組和B組控制電路這是兩組根據(jù)CPU的命令字控制8255A工作方式的電路。它們的控制寄存器先接受CPU送出的命令字,然后根據(jù)命令字分別決定兩組的工作方式,也可根據(jù)CPU的命令字對(duì)端口C的每1位實(shí)現(xiàn)按位“復(fù)位”或“置位”。
A組控制電路控制端口A和端口C的上半部(PC7~PC4)。
B組控制電路控制端口B和端口C的下半部(PC3~PC0)。表6―18255A端口功能表2.8255A的芯片引腳
8255A是一種有40個(gè)引腳的雙列直插式標(biāo)準(zhǔn)芯片,其引腳排列如圖6―2所示。除電源(+5V)和地址以外,其它信號(hào)可以分為兩組:
(1)與外設(shè)相連接的有:
PA7~PA0:A口數(shù)據(jù)線
PB7~PB0:B口數(shù)據(jù)線
PC7~PC0:C口數(shù)據(jù)線圖6―28255A的芯片引腳圖(2)與CPU相連接的有:
D7~D0:8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。
RESET:復(fù)位信號(hào),高電平有效。當(dāng)RESET有效時(shí),所有內(nèi)部寄存器都被清除,同時(shí),3個(gè)數(shù)據(jù)端口被自動(dòng)設(shè)為輸入方式。:片選信號(hào),低電平有效。只有當(dāng)有效時(shí),芯片才被選中,允許8255A與CPU交換信息。:讀信號(hào),低電平有效。當(dāng)有效時(shí),CPU可以從8255A中讀取輸入數(shù)據(jù)。
:寫信號(hào),低電平有效。當(dāng)有效時(shí),CPU可以往8255A中寫入控制字或數(shù)據(jù)。
A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,當(dāng)A1A0=00時(shí)選中端口A;A1A0=01時(shí)選中端口B;A1A0=10時(shí)選中端口C;A1A0=11時(shí)選中控制口。
A1、A0和、及組合所實(shí)現(xiàn)的各種功能如表6-2所示。表6―28255A端口選擇表6.1.28255A的工作方式
8255A有3種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來(lái)指定。3種工作方式的傳送示意圖如圖6―3所示。
圖6―38255A的3種工作方式(a)方式0;(b)方式1;(c)方式21.方式0(基本輸入/輸出方式)
這種工作方式不需要任何選通信號(hào),A口、B口及C口的高4位和低4位都可以設(shè)定為輸入或輸出。作為輸出口時(shí),輸出的數(shù)據(jù)均被鎖存;作為輸入口時(shí),A口的數(shù)據(jù)能鎖存,B口與C口的數(shù)據(jù)不能鎖存。
2.方式1(選通輸入/輸出方式)
在這種工作方式下,A口可由編程設(shè)定為輸入口或輸出口,C口的3位用來(lái)作為輸入/輸出操作的控制和同步信號(hào);B口同樣可由編程設(shè)定為輸入口或輸出口,C口的另3位用來(lái)作為輸入/輸出操作的控制和同步信號(hào)。在方式1下A口和B口的輸入數(shù)據(jù)或輸出數(shù)據(jù)都能被鎖存。
1)方式1下A口、B口均為輸入在方式1下,A口和B口均工作在輸入狀態(tài)時(shí),需利用C口的6條線作為控制和狀態(tài)信號(hào)線,其定義如圖6―4(a)所示。
圖6―4方式1下的信號(hào)定義(a)A口、B口均為輸入時(shí);(b)A口、B口均為輸出時(shí)C口所提供的用于輸入的聯(lián)絡(luò)信號(hào)有:①(Strobe):選通脈沖信號(hào)(輸入),低電平有效。當(dāng)外設(shè)送來(lái)信號(hào)時(shí),輸入的數(shù)據(jù)被裝入8255A的輸入鎖存器中。②IBF(InputBufferFull):輸入緩沖器滿信號(hào)(輸出),高電平有效。此信號(hào)有效時(shí),表示已有一個(gè)有效的外設(shè)數(shù)據(jù)鎖存于8255A的口鎖存器中,尚未被CPU取走,暫不能向接口輸入數(shù)據(jù),它是一個(gè)狀態(tài)信號(hào)。③INTR(InterruptRequest):中斷請(qǐng)求信號(hào)(輸出),高電平有效。當(dāng)IBF為高、信號(hào)由低變高(后沿)時(shí),該信號(hào)有效,向CPU發(fā)出中斷請(qǐng)求。方式1數(shù)據(jù)輸入過(guò)程如下:當(dāng)外設(shè)的數(shù)據(jù)準(zhǔn)備好后,發(fā)出信號(hào),輸入的數(shù)據(jù)被裝入鎖存器中,然后IBF信號(hào)有效(變?yōu)楦唠娖?。
數(shù)據(jù)輸入操作的時(shí)序關(guān)系如圖6―5所示。
圖6―5方式1下的輸入時(shí)序2)方式1下A口、B口均為輸出與輸入時(shí)一樣,要利用C口的6根信號(hào)線,其定義如圖6―4(b)所示。用于輸出的聯(lián)絡(luò)信號(hào)有:
(1)(Acknowledge):外設(shè)響應(yīng)信號(hào)(輸入),低電平有效。
(2)(OutputBuffeFull):輸出緩沖器滿信號(hào)(輸出),低電平有效。
(3)INTR:中斷請(qǐng)求信號(hào)(輸出),高電平有效。
方式1下數(shù)據(jù)輸出過(guò)程如下:當(dāng)外設(shè)接收并處理完1組數(shù)據(jù)后,發(fā)回響應(yīng)信號(hào)。數(shù)據(jù)輸出操作的時(shí)序關(guān)系如圖6―6所示。應(yīng)當(dāng)指出,當(dāng)8255A的A口與B口同時(shí)為方式1的輸入或輸出時(shí),需使用C口的6條線,C口剩下的2條線還可以用程序來(lái)指定數(shù)據(jù)的傳送方向是輸入還是輸出,而且也可以對(duì)它們實(shí)現(xiàn)置位或復(fù)位操作。當(dāng)一個(gè)口工作在方式1時(shí),則C口剩下的5條線也可按照上述情況工作。
圖6―6方式1下的輸出時(shí)序3.方式28255A只有A口具有這種雙向輸入輸出工作方式,實(shí)際上是在方式1下A口輸入輸出的結(jié)合。在這種方式下,A口為8位雙向傳輸口,C口的PC7~PC3用來(lái)作為輸入/輸出的同步控制信號(hào)。在這種情況下,B口和PC2~PC0只能編程為方式0或方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口方式1之下的控制線。圖6―7方式2下的信號(hào)定義
在方式2時(shí),其輸入輸出的操作時(shí)序如圖6―8所示。
1)輸入操作當(dāng)外設(shè)向8255A送數(shù)據(jù)時(shí),選通信號(hào)STBA[TX-]也同時(shí)送到,選通信號(hào)將數(shù)據(jù)鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號(hào)IBFA成為高電平(有效),告訴外設(shè),A口已收到數(shù)據(jù)。選通信號(hào)結(jié)束時(shí),使中斷請(qǐng)求信號(hào)為高,向CPU請(qǐng)求中斷。
2)輸出操作
CPU響應(yīng)中斷,當(dāng)用輸出指令向8255A的A端口中寫入一個(gè)數(shù)據(jù)時(shí),會(huì)發(fā)出寫脈沖信號(hào)。圖6―8方式2下的時(shí)序圖6.1.38255A的控制字及初始化
1.8255A的控制字
8255A為可編程接口芯片,以控制字形式對(duì)其工作方式和C口各位的狀態(tài)進(jìn)行設(shè)置。它有兩種控制字:工作方式控制字和C口置位/復(fù)位控制字。
1)工作方式控制字工作方式控制字用于確定各口的工作方式及數(shù)據(jù)傳送方向,其格式如圖6―9所示。
對(duì)工作方式控制字作如下說(shuō)明:
(1)A口有3種工作方式,而B(niǎo)口只有2種工作方式。
(2)A組包括A口與C口的高4位,B組包括B口與C口的低4位。
(3)在方式1或方式2下,對(duì)C口的定義(輸入或輸出)不影響作為聯(lián)絡(luò)線使用的C口各位的功能。
(4)最高位(D7位)為標(biāo)志位,D7=1為方式控制字。2)C口置位/復(fù)位控制字利用C口置位/復(fù)位控制字可以很方便地使C口8位中的任一位清0或置1,該控制字的格式如圖6―9(b)所示。D7位為該控制字的標(biāo)志位,D7=0為C口置位/復(fù)位控制字。在使用中,該控制字每次只能對(duì)C口中的一位進(jìn)行置位或復(fù)位。應(yīng)注意的是,作為聯(lián)絡(luò)線使用的C口各位是不能采用置位/復(fù)位操作來(lái)使其置位或復(fù)位的。其數(shù)值應(yīng)視現(xiàn)場(chǎng)的具體情況而定。2.8255A的初始化編程
8255A初始化的內(nèi)容就是向控制寄存器寫入工作方式控制字或C口置位/復(fù)位控制字。這兩個(gè)控制字可按同一地址寫入且不受先后順序限制。由于兩個(gè)控制字因標(biāo)志位的狀態(tài)不同,因此8255A能加以區(qū)分。
圖6―98255A控制字格式(a)工作方式控制字;(b)C口置位/復(fù)位控制字
例如對(duì)8255A各口作如下設(shè)置:A口方式0輸入,B口方式0輸出,C口高位部分為輸出、低位部分為輸入。設(shè)控制寄存器的地址為03FFH,則其工作方式控制字可設(shè)置為:
D0=1:C口低半部輸入;
D1=0:B口輸出;
D2=0:B口方式0;
D3=0:C口高半部輸出;
D4=1:A口輸入;
D6D5=00:A口方式0;
D7=1:工作方式字標(biāo)志。
因此工作方式控制字為10010001B即91H。初始化程序段為:
MOVDPTR,#03FFHMOVA,#91HMOVX@DPTR,A
若要使端口C的D3位置位的控制字為00000111B(即07H),而使D3位復(fù)位的控制字為00000110B(即06H)。6.1.48255A與系統(tǒng)的連接由于8255A是Intel公司專為其主機(jī)配套設(shè)計(jì)制造的標(biāo)準(zhǔn)化外圍接口芯片,因此它與MCS-51單片機(jī)的連接是比較簡(jiǎn)單方便的。一般來(lái)說(shuō),MCS-51單片機(jī)擴(kuò)展的I/O接口均與片外RAM統(tǒng)一編址。由于單片機(jī)系統(tǒng)片外RAM的實(shí)際容量一般均不太大,遠(yuǎn)遠(yuǎn)達(dá)不到64KB的范圍,因此I/O接口芯片大多采用部分譯碼的方法,而用得比較多的則是直接利用地址線的線選法。這種方法雖然要浪費(fèi)大量的地址號(hào),但譯碼電路比較簡(jiǎn)單。圖6―10就是一種較常用的連接實(shí)例。圖6―108255A與8031的連接
圖6―10中,P0口為地址/數(shù)據(jù)復(fù)用口。數(shù)據(jù)通過(guò)P0口直接傳送,地址的低8位是需通過(guò)鎖存器74LS373得到的,而地址的高8位則由P2口傳送?,F(xiàn)采用線選法,利用高8位地址線的P2.7作為線選信號(hào),直接與8255A的片選端相連,而A1、A0則與地址的最末2位相連。由圖6―10所示接法,可得到8255A各個(gè)端口的地址,如表6―3所示。
表6―38255A各端口的地址
6.1.58255A應(yīng)用舉例
8255A在微機(jī)和單片機(jī)控制系統(tǒng)中得到了廣泛應(yīng)用,現(xiàn)舉兩例加以說(shuō)明。例1:要求通過(guò)8255A的PC5端向外輸出1個(gè)正脈沖信號(hào),已知8255A的C口和控制口的地址分別為0002H和0003H。解:若要從PC5端輸出1個(gè)正脈沖信號(hào),可通過(guò)對(duì)PC5位的置位和復(fù)位控制來(lái)實(shí)現(xiàn)。由于每送1個(gè)控制字,只能對(duì)1位作1次置位或復(fù)位操作,故產(chǎn)生1個(gè)正脈沖要對(duì)PC5位先送置位控制字,經(jīng)過(guò)一定的延時(shí)后(延時(shí)時(shí)間視脈寬而定),再送復(fù)位控制字即能實(shí)現(xiàn)。程序編制如下:MOVDPTR,#0003H;指向8255A的控制口MOVA,#OBH
;對(duì)PC5置1MOVX@DPTR,ALCALLDELAY;延時(shí)(調(diào)用延時(shí)子程序)DECA;對(duì)PC5置0MOVX@DPTR,A
例2:8255A作為連接打印機(jī)的接口。圖6―11是通過(guò)8255A連接打印機(jī)的接口電路,數(shù)據(jù)傳送采用查詢方式。8255A的地址譯碼采用線選法,將P0.7直接與8255A的端相連(通過(guò)地址鎖存器),其口地址A口為7CH,B口為7DH,C口為7EH,命令口為7FH。圖6―118255A連接打印機(jī)的接口電路
現(xiàn)要求編制打印50個(gè)字符的程序,該數(shù)據(jù)存于片內(nèi)RAM從20H開(kāi)始的50個(gè)連續(xù)單元中。
程序如下:
MOVR0,#7FH;指向8255A的命令口
MOVA,#88H;取方式字:A口輸出,C口低出高入
MOVX@R0,A;送入方式字
MOVR1,#20H;R1指向數(shù)據(jù)區(qū)首址
MOVR2,#32H;送數(shù)據(jù)塊長(zhǎng)度LP:MOVR0,#7EH;指向C口LOOP1:MOVXA,@R0;讀入C口信息
JBA.7,LOOP1;若BUSY=1,繼續(xù)查詢
MOVR0,#7CH;指向A口
MOVA,@R1;取RAM數(shù)據(jù)
MOVX@R0,A;數(shù)據(jù)輸出到A口
INCR1;數(shù)據(jù)指針加1MOVR0,#7FH;指向命令口
MOVA,#00H;C口置位/復(fù)位命令字(PC0=0)MOVX@R0,A;產(chǎn)生STB[TX-]的下降沿
MOVA,#01H;改變C口置位/復(fù)位命令字(PC0=1)MOVX@R0,A;產(chǎn)生STB[TX-]的上升沿
DJNZR2,LP;未完,則反復(fù)
6.2可編程RAM/IO/CTC接口8155
6.2.18155的結(jié)構(gòu)與引腳
1.8155的內(nèi)部結(jié)構(gòu)
8155的內(nèi)部結(jié)構(gòu)如圖6―12(b)所示。它含有1個(gè)256字節(jié)的RAM、1個(gè)14位定時(shí)/計(jì)數(shù)器以及3個(gè)并行I/O口,其中A口、B口均為8位,C口為6位。A口、B口既可作為基本I/O口,也可作為選通I/O口;C口除可作為基本I/O口外,還可用作A口、B口的應(yīng)答控制聯(lián)絡(luò)信號(hào)線。此外,8155內(nèi)部還有一個(gè)控制寄存器組,用來(lái)存放控制命令字。圖6―128155引腳排列及結(jié)構(gòu)框圖
(a)引腳排列;(b)內(nèi)部結(jié)構(gòu)框圖圖6―128155引腳排列及結(jié)構(gòu)框圖
(a)引腳排列;(b)內(nèi)部結(jié)構(gòu)框圖2.8155的引腳
8155為40引腳雙列直插式封裝芯片,其引腳排列如圖6―12(a)所示?,F(xiàn)將其各引腳的功能簡(jiǎn)介如下:
AD0~AD7:地址/數(shù)據(jù)復(fù)用線。它與8031單片機(jī)的P0口直接相連。8155和CPU之間的地址、數(shù)據(jù)、命令及狀態(tài)信號(hào)都通過(guò)這組信號(hào)線傳送。:片選信號(hào),輸入,低電平有效。:RAM和I/O口選擇線。當(dāng)=1時(shí),選中I/O口;當(dāng)=0時(shí),選中RAM。ALE:地址鎖存信號(hào)。:讀選通信號(hào),輸入,低電平有效。:寫選通信號(hào),輸入,低電平有效。
TIMERIN:定時(shí)器輸入。它是8155片內(nèi)定時(shí)器的脈沖信號(hào)輸入端。
TIMEROUT:定時(shí)器輸出。通過(guò)它可以輸出矩形波或脈沖波。
PA0~PA7:A口通用的輸入/輸出線。由編程來(lái)決定是輸入還是輸出。
PB0~PB7:B口通用的輸入/輸出線。由編程來(lái)決定是輸入還是輸出。
PC0~PC5:C口的輸入/輸出或控制信號(hào)線。6.2.28155的RAM和I/O口的編址與其它接口芯片一樣,8155芯片中的RAM和I/O口均占用單片機(jī)系統(tǒng)片外RAM的地址,其中高8位地址由和IO/[AKM-]信號(hào)決定。當(dāng)=0,且IO/=0時(shí),低8位的00H~FFH為RAM的有效地址;當(dāng)=0,且
IO/=1時(shí),由低8位地址中的末3位(A2A1A0)來(lái)決定各個(gè)口的地址,如表6―4所示。表6―48155端口地址表
對(duì)于多數(shù)單片機(jī)應(yīng)用系統(tǒng)來(lái)說(shuō),由于片外RAM區(qū)的容量較大(最大為64KB),因此通常采用線選法對(duì)接口芯片進(jìn)行編址。對(duì)8155來(lái)說(shuō),常用高8位地址中的兩位來(lái)選擇和IO/。例如將P2.7接至,將P2.0接至IO/,那么8155的RMA和I/O口的編址為:RAM:P2.7=0,P2.0=0,其地址范圍為:
0111111000000000B~0111111011111111B,即:7E00H~7EFFH。
I/O口:P2.7=0,P2.0=1,口地址范圍為:
0111111100000000B~0111111100000101B,即7F00H~7F05H。具體分配如下:命令口:7F00HA口:7F01HB口:7F02HC口:7F03H定時(shí)器低8位:7F04H定時(shí)器高8位:7F05H6.2.38155I/O口的工作方式
8155有3個(gè)I/O口,即A口、B口和C口,其中C口只有6位。A口和B口均可工作于基本I/O方式或選通I/O方式。C口既可作為I/O口線,工作于基本I/O方式,也可作為A口、B口選通工作時(shí)的狀態(tài)聯(lián)絡(luò)控制信號(hào)線。
1.基本I/O
基本I/O為無(wú)條件傳送,這是最簡(jiǎn)單的I/O操作,不需要任何聯(lián)絡(luò)信號(hào),隨時(shí)可以進(jìn)行。
2.選通I/O
選通I/O為條件傳送,傳送的方式可用查詢方式,也可用中斷方式。(1)BF:I/O緩沖器滿空標(biāo)志,輸出,高電平有效。
(2):選通信號(hào),輸入,低電平有效。
(3)INTR:中斷請(qǐng)求信號(hào),輸出,高電平有效。
以上這些信號(hào)線對(duì)A口與B口均適用,分別稱之為ABF、、AINTR與BBF、、BINTR。它們都是由C口提供的,如表6―5所示。表6―58155的PC口線聯(lián)絡(luò)信號(hào)定義6.2.48155的命令/狀態(tài)字
8155有1個(gè)命令/狀態(tài)寄存器,實(shí)際上這是兩個(gè)不同的寄存器,分別存放命令字和狀態(tài)字。由于對(duì)命令寄存器只能進(jìn)行寫操作,而對(duì)狀態(tài)寄存器只能進(jìn)行讀操作,因此把它們編為同一個(gè)地址,合在一起稱之為命令/狀態(tài)寄存器。
1.命令字命令字共8位,用于定義I/O端口及定時(shí)器的工作方式。對(duì)命令寄存器只能寫入不能讀出(讀出的將是狀態(tài)寄存器的內(nèi)容)。命令字的格式如圖6―13所示。圖6―138155的命令字格式
對(duì)C口工作方式的說(shuō)明:
D3D2=00(ALT1):A口、B口為基本I/O,C口為輸入。
D3D2=01(ALT2):A口、B口為基本I/O,C口為輸出。
D3D2=10(ALT3):A口選通I/O,B口基本I/O,C口低3位為聯(lián)絡(luò)信號(hào),高3位輸出(參閱表6―5)。
D3D2=11(ALT4):A口、B口均為選通I/O,C口低3位作為A口聯(lián)絡(luò)信號(hào),高3位作為B口聯(lián)絡(luò)信號(hào)(參閱表6―5)。
關(guān)于定時(shí)器運(yùn)行控制位(TM2、TM1)補(bǔ)充說(shuō)明如下:當(dāng)TM2、TM1=11時(shí),其操作為:當(dāng)計(jì)數(shù)器未計(jì)數(shù)時(shí),裝入計(jì)數(shù)長(zhǎng)度和方式后立即開(kāi)始計(jì)數(shù);當(dāng)計(jì)數(shù)器正在計(jì)數(shù)時(shí),待計(jì)數(shù)器溢出后以新裝入的計(jì)數(shù)長(zhǎng)度和方式進(jìn)行計(jì)數(shù)。
2.狀態(tài)字
8155的狀態(tài)寄存器與命令寄存器共用1個(gè)地址,當(dāng)使用讀操作時(shí),讀入的便是狀態(tài)寄存器中的內(nèi)容。其格式如圖6―14所示。圖6―148155的狀態(tài)字格式6.2.58155的定時(shí)/計(jì)數(shù)器
8155的定時(shí)/計(jì)數(shù)器是1個(gè)14位的減法計(jì)數(shù)器,由兩個(gè)8位寄存器構(gòu)成,其格式如下:T7T6T5T4T3T2T1T0M2M1T13T12T11T10T9T8D7D0
其中低14位組成計(jì)數(shù)器,剩下的兩個(gè)高位(M2M1)用于定義計(jì)數(shù)器輸出的信號(hào)形式,如圖6―15所示。
8155的定時(shí)/計(jì)數(shù)器與MCS-51單片機(jī)芯片內(nèi)部的定時(shí)/計(jì)數(shù)器在功能上是相同的,都有定時(shí)和計(jì)數(shù)兩種功能。但是在使用上卻有很多不同之處。具體表現(xiàn)在:
(1)8155的定時(shí)/計(jì)數(shù)器為減法計(jì)數(shù),而MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器卻是加法計(jì)數(shù)。
(2)MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器有多種工作方式,而8155的定時(shí)/計(jì)數(shù)器卻只有一種固定的工作方式,即14位計(jì)數(shù),通過(guò)軟件方法進(jìn)行計(jì)數(shù)值的加載。
(3)MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器有兩種計(jì)數(shù)脈沖:當(dāng)定時(shí)工作時(shí),由芯片內(nèi)部按機(jī)器周期提供固定頻率的計(jì)數(shù)脈沖;當(dāng)計(jì)數(shù)工作時(shí),從芯片外部引入計(jì)數(shù)脈沖。
(4)MCS-51單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器,在計(jì)數(shù)溢出時(shí)自動(dòng)置位TCON寄存器中的計(jì)數(shù)溢出標(biāo)志位TF,供用戶以查詢或中斷方式使用;而8155的定時(shí)/計(jì)數(shù)器,在計(jì)數(shù)溢出時(shí)卻是通過(guò)TIMEROUT引腳向外部發(fā)出1個(gè)脈沖信號(hào)。圖6―15定時(shí)/計(jì)數(shù)器輸出方式
另外,8155的定時(shí)器在計(jì)數(shù)過(guò)程中,計(jì)數(shù)器的值并不直接表示外部輸入的脈沖。若作為外部事件計(jì)數(shù),那么由計(jì)數(shù)器的現(xiàn)行計(jì)數(shù)值求輸入脈沖數(shù)的方法為:
(1)停止計(jì)數(shù)器計(jì)數(shù)。
(2)分別讀出計(jì)數(shù)器的兩個(gè)字節(jié)內(nèi)容。
(3)取其低14位數(shù)作為現(xiàn)行計(jì)數(shù)值。
(4)算出現(xiàn)行計(jì)數(shù)值與初始計(jì)數(shù)值之差即可。6.2.68155和MCS-51單片機(jī)的接口電路
8155可以和MCS-51單片機(jī)直接相連,而不需外加邏輯電路。圖6―16所示為8155和MSC-51相連的一種基本連接方法。按圖6―16所示接法,8155的RAM和各端口地址如下:
RAM的地址:0000H~00FFH
命令口:0200HA口:0201HB口:0202HC口:0203H
定時(shí)器低位:0204H
定時(shí)器高位:0205H圖6―168155與MCS-51的連接方法6.2.78155的初始化編程及應(yīng)用舉例
8155初始化編程的主要內(nèi)容為寫入8155的命令字和定時(shí)/計(jì)數(shù)器的初值以及輸出方式。現(xiàn)舉例說(shuō)明如下。例1:采用如圖6―16所示的接口電路,設(shè)A口與C口為輸入口,B口為輸出口,均為基本I/O。定時(shí)器為連續(xù)方波工作方式,對(duì)輸入脈沖進(jìn)行24分頻。試編寫8155的初始化程序。解:命令字可選取為PA=0:A口輸入PB=1:B口輸出PC2、PC1=00:A口、B口基本I/O,C口輸入IEA=0,IEB=0:A口、B口均禁止中斷TM2、TM1=11:立即啟動(dòng)計(jì)數(shù)器所以命令字為11000010B=C2H。
計(jì)數(shù)初值的選取方法為:由于計(jì)數(shù)值為24,所以定時(shí)器的低8位為18H,高6位為000000B。定時(shí)器的輸出方式要求為連續(xù)方波,選M2M1=01,那么定時(shí)器的高8位為01000000B=40H。
RAM及端口地址與前面的相同。初始化程序:MOVDPTR,#0204H;指向定時(shí)器的低8位MOVA,#18H;取定時(shí)器低8位的值MOVX@DPTR,A;寫入定時(shí)器低8位INCDPTR;指向定時(shí)器高8位MOVA,#40H;取定時(shí)器高8位的值MOVX@DPTR,A;寫入定時(shí)器高8位MOVDPTR,#0200H;指向命令口MOVA,#C2H;取8155的命令字MOVX@DPTR,A;寫入命令字
例2:仍采用圖6―16所示的接口電路,從8155的A口輸入數(shù)據(jù)并進(jìn)行判斷:若不為0,則將該數(shù)據(jù)存入8155的RAM中(從起始單元開(kāi)始存放,數(shù)據(jù)的總數(shù)不超過(guò)256個(gè)),同時(shí)從B口輸出,并將PC0置“1”;若為0,則停止輸入輸出,同時(shí)將PC0清“0”。試編寫能完成上述任務(wù)的初始化及應(yīng)用程序。解:初始化及應(yīng)用程序如下:
MOVDPTR,#0200H;指向命令口
MOVA,#00000110B;取命令字
MOVX@DPTR,A;寫入命令字MOVR0,#00H;指向8155的RAM區(qū)首址
MOVR1,#00H;數(shù)據(jù)總數(shù)為256個(gè)LOOP1:MOVDPTR,#0201H;指向A口
MOVXA,@DPTR;從A口輸入數(shù)據(jù)
JZLOOP3;為0則轉(zhuǎn)
MOVX@R0,A;不為0,則存入RAM中
INCR0;指向下一單元
INCDPTR;指向B口
MOVX@DPTR,A;從B口輸出
INCDPTR;指向C口MOVXA,@DPTR;取C口數(shù)據(jù)
SETBACC,0;使PC0置1MOVX@DPTR,A;回送
DJNZR1,LOOP1;未完則反復(fù)LOOP2:SJMP$;暫停LOOP3:MOVDPTR,#0203H;指向C口
MOVX@DPTR,A;回送
SJMPLOOP26.3鍵盤顯示器接口82796.3.18279的組成及引腳
8279芯片有40條引腳,由單一+5V電源供電。它主要由以下幾部分組成:
(1)I/O控制和數(shù)據(jù)緩沖器;
(2)控制和定時(shí)寄存器及定時(shí)控制部分;
(3)掃描計(jì)數(shù)器;
(4)回送緩沖器與鍵盤去抖動(dòng)控制電路;
(5)FIFO(先進(jìn)先出)寄存器和狀態(tài)電路;
(6)顯示器地址寄存器及顯示RAM。8279的引腳如圖6―17所示,下面對(duì)引腳名稱作簡(jiǎn)要說(shuō)明。
DB0~DB7:雙向數(shù)據(jù)總線。
A0:命令狀態(tài)或數(shù)據(jù)選擇線。A0=1,表示從DB0~DB7線上傳送的是命令或狀態(tài)字;A0=0表示為數(shù)據(jù)。、:讀、寫信號(hào)線。
IRQ:中斷請(qǐng)求線。
SL0~SL3:掃描線??蛇M(jìn)行譯碼掃描(4選1),也可進(jìn)行編碼掃描(16選1),但要使用4-16譯碼器。若用3-8譯碼器的話,則掃描線為8選1。圖6―178279引腳圖RL0~RL7:回送線。內(nèi)部有上拉電阻,從此線上得到鍵盤的回掃信號(hào)。
OUTA0~OUTA3、OUTB0~OUTB3:顯示器刷新寄存器輸出,與掃描線同步。6.3.28279的接口電路與應(yīng)用舉例圖6―18給出了用8279芯片管理24個(gè)鍵的鍵盤和6個(gè)LED數(shù)碼顯示器的實(shí)際應(yīng)用接口電路,以及它與8031單片機(jī)的接口方法。作為一個(gè)外設(shè)接口芯片,8279的片選信號(hào)由8031的P25、P26、P27這3條地址線經(jīng)地址譯碼器譯碼后得到的(P27、P26、P25=011)。其片內(nèi)尋址線A0與8031系統(tǒng)的地址線A0相連,此時(shí)8279數(shù)據(jù)口的地址號(hào)為6000H,命令/狀態(tài)口的地址號(hào)為6001H。圖6―188279應(yīng)用實(shí)例
該接口電路的工作過(guò)程簡(jiǎn)述如下:每當(dāng)按下一個(gè)鍵,8279會(huì)自動(dòng)識(shí)別鍵號(hào),產(chǎn)生相應(yīng)的鍵編碼自動(dòng)送入先進(jìn)先出寄存器FIFO中,同時(shí)產(chǎn)生中斷請(qǐng)求信號(hào)IRQ,向CPU請(qǐng)求中斷。當(dāng)CPU響應(yīng)中斷,執(zhí)行中斷服務(wù)程序,并從FIFO中讀取編碼數(shù)據(jù)之后,則IRQ信號(hào)將自動(dòng)撤消。
6.4LED數(shù)碼顯示器接口6.4.1LED數(shù)碼顯示器的結(jié)構(gòu)與顯示段碼
1.LED數(shù)碼顯示器的結(jié)構(gòu)
LED數(shù)碼顯示器是1種由LED發(fā)光二極管組合顯示字符的顯示器件。它使用了8個(gè)LED發(fā)光二極管,其中7個(gè)用于顯示字符,1個(gè)用于顯示小數(shù)點(diǎn),故通常稱之為7段(也有稱作8段)發(fā)光二極管數(shù)碼顯示器。其內(nèi)部結(jié)構(gòu)如圖6―19所示。圖6―197段LED數(shù)碼顯示器LED數(shù)碼顯示器有兩種連接方法:
(1)共陽(yáng)極接法。把發(fā)光二極管的陽(yáng)極連在一起構(gòu)成公共陽(yáng)極,使用時(shí)公共陽(yáng)極接+5V,每個(gè)發(fā)光二極管的陰極通過(guò)電阻與輸入端相連。
(2)共陰極接法。把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極,使用時(shí)公共陰極接地。每個(gè)發(fā)光二極管的陽(yáng)極通過(guò)電阻與輸入端相連。2.LED數(shù)碼顯示器的顯示段碼為了顯示字符,要為L(zhǎng)ED顯示器提供顯示段碼(或稱字形代碼),組成一個(gè)“8”字形字符的7段,再加上1個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供給LED顯示器的顯示段碼為1個(gè)字節(jié)。各段碼位的對(duì)應(yīng)關(guān)系如下:
段碼位D7D6D5D4D3D2D1D0
顯示段dpgfedcba表6―6十六進(jìn)制數(shù)及空白字符與P的顯示段碼6.4.2LED數(shù)碼顯示器的接口方法與接口電路
1.LED數(shù)碼顯示器的接口方法單片機(jī)與LED數(shù)碼顯示器有以硬件為主和以軟件為主的兩種接口方法。
1)以硬件為主的接口方法這種接口方法的電路如圖6―20所示。圖6―20以硬件為主的LED顯示器接口電路2)以軟件為主的接口方法這種接口方法的電路如圖6―21所示,它是以軟件查表代替硬件譯碼,不但省去了譯碼器,而且還能顯示更多的字符。但是驅(qū)動(dòng)器是必不可少的,因?yàn)閮H靠接口提供不了較大的電流供LED顯示器使用。圖6―21以軟件為主的LED顯示器接口電路2.LED數(shù)碼顯示器的接口電路實(shí)際使用的LED數(shù)碼顯示器位數(shù)較多,為了簡(jiǎn)化線路、降低成本,大多采用以軟件為主的接口方法。對(duì)于多位LED數(shù)碼顯示器,通常采用動(dòng)態(tài)掃描顯示方法,即逐個(gè)地循環(huán)地點(diǎn)亮各位顯示器。這樣雖然在任一時(shí)刻只有1位顯示器被點(diǎn)亮,但是由于人眼具有視覺(jué)殘留效應(yīng),看起來(lái)與全部顯示器持續(xù)點(diǎn)亮的效果基本一樣(在亮度上要有差別)。圖6―228155作6位LED顯示器接口的電路6.4.3LED數(shù)碼顯示器的顯示方法對(duì)于多位數(shù)碼顯示器來(lái)說(shuō),為了簡(jiǎn)化線路、降低成本,往往采用以軟件為主的接口方法,即不使用專門的硬件譯碼器,而采用軟件程序進(jìn)行譯碼。如前所述,由于各位數(shù)碼管的顯示段碼是互相并聯(lián)的,因此在同一時(shí)刻只能顯示同一種字符。對(duì)于這種接口電路來(lái)說(shuō),其顯示方法有靜態(tài)顯示和動(dòng)態(tài)顯示兩種。
1.靜態(tài)顯示所謂靜態(tài)顯示,就是在同一時(shí)刻只顯示1種字符,或者說(shuō)被顯示的字符在同一時(shí)刻是穩(wěn)定不變的。其顯示方法比較簡(jiǎn)單,只要將顯示段碼送至段碼口,并把位控字送至位控口即可。所用指令為:MOVDPTR,#SEGPORT;指向段碼口MOVA,#SEG;取顯示段碼MOVX@DPTR,A;輸出段碼MOVDPTR,#BITPORT;指向位控口MOVA,#BIT;取位控字MOVX@DPTR,A;輸出位控字2.動(dòng)態(tài)顯示如果要在同一時(shí)刻顯示不同的字符,從電路上看,這是辦不到的。因此只能利用人眼對(duì)視覺(jué)的殘留效應(yīng),采用動(dòng)態(tài)掃描顯示的方法,逐個(gè)地循環(huán)點(diǎn)亮各位數(shù)碼管,每位顯示1ms左右,使人看起來(lái)就好象在同時(shí)顯示不同的字符一樣。在進(jìn)行動(dòng)態(tài)掃描顯示時(shí),往往事先并不知道應(yīng)顯示什么內(nèi)容,這樣也就無(wú)從選擇被顯示字符的顯示段碼。為此,一般采用查表的方法,由待顯示的字符通過(guò)查表得到其對(duì)應(yīng)的顯示段碼。下面介紹一種動(dòng)態(tài)掃描顯示子程序:DIR:MOVR0,#7AH;指向顯示緩沖區(qū)首址
MOVR3,#01H;從右邊第1位開(kāi)始顯示
MOVA,#00H
;取全不亮位控字
MOVR1,#BITPORT;指向位控口
MOVX@R1,A;瞬時(shí)關(guān)顯示LD1:MOVA,@R0;取出顯示數(shù)據(jù)
MOVDPTR,#DSEG;指向顯示段碼表首址
MOVCA,@A+DPTR;查顯示段碼表
MOVR1,#SEGPORT;指向段碼口MOVX@R1,A;輸出顯示段碼MOVR1,#BITPORT;指向位控口MOVA,R3;取位控字MOVX@R1,A;輸出位控字LCALLDELY;延時(shí)1msINCR0;指向下一個(gè)緩沖單元JBA.5,LD2;已到最高位則轉(zhuǎn)返回RLA;不到,向顯示器高位移位MOVR3,A;保存位控字SJMPLD1
;循環(huán)LD2:RETDSEG:DBC0H,F9H,A4H,B0H,99H,92H,82H;顯示段碼表
DBF8H,80H,90H,88H,83H,C6H,A1HDB86H,84H,FFH
程序說(shuō)明:
(1)本例接口電路是以軟件為主的接口電路,顯示數(shù)據(jù)有6位,每位數(shù)碼管對(duì)應(yīng)1位有效顯示數(shù)據(jù)。
(2)由程序可知,由于數(shù)碼顯示器的低位(最右邊的位)顯示的是顯示緩沖區(qū)中的低地址單元中的數(shù),因此數(shù)在顯示緩沖區(qū)中存放的次序?yàn)榈偷刂穯卧娴臀?高地址單元存高位。
(3)在動(dòng)態(tài)掃描顯示過(guò)程中,每位數(shù)碼管的顯示時(shí)間約1ms,這由調(diào)用延時(shí)1ms子程序DELY來(lái)實(shí)現(xiàn)。(4)本程序是利用查表方法來(lái)得到顯示段碼的,這是一種既簡(jiǎn)便又快速的方法。由于MCS-51單片機(jī)具有查表指令(MOVC指令),因此用來(lái)編制查表程序是非常方便的。
(5)由于在顯示段碼表中,將“空白”字符排在字母“F”的后邊,因此在使用查表指令時(shí),若要查“空白”字符的顯示段碼,那么在累加器A中應(yīng)放入數(shù)據(jù)“10H”。
(6)在實(shí)際的單片機(jī)應(yīng)用系統(tǒng)中,一般將顯示程序作為1個(gè)子程序供監(jiān)控程序調(diào)用。6.4.4LED數(shù)碼顯示器應(yīng)用舉例
1.靜態(tài)顯示舉例例1:在數(shù)碼顯示器的最左邊1位上顯示1個(gè)“P”字。數(shù)碼顯示器的接口電路如圖6―22所示,設(shè)8155的端口地址為7F00H~7F05H,數(shù)碼管為共陽(yáng)極。試編寫相應(yīng)的顯示程序。解:本例要顯示的字符已知,且在同一時(shí)刻只顯示1種字符,故可采用靜態(tài)顯示的方法。由圖6―22可知,當(dāng)采用共陽(yáng)極數(shù)碼管時(shí),應(yīng)按共陽(yáng)極規(guī)律控制。在程序的開(kāi)始,應(yīng)對(duì)8155進(jìn)行初始化編程,設(shè)A、B口均為輸出。程序如下:MOVA,#03H;8155命令字(A、B口均為輸出)MOVDPTR,#7F00H;指向命令口MOVX@DPTR,A;輸出命令字MOVA,#8CH;取“P”字符的顯示段碼INCDPTR;指向A口MOVX@DPTR,A;輸出顯示段碼INCDPTRINCDPTR;指向C口MOVA,#20H;取位控字(最左邊一位上顯示)MOVX@DPTR,A;輸出位控字SJMP$;暫停
例2:開(kāi)始時(shí)在數(shù)碼顯示器的最右邊一位上顯示1個(gè)“0”字,以后每隔0.5秒將“0”字左移1位,直到最左邊一位后則停止顯示。接口電路與端口地址同上,設(shè)有20ms延時(shí)子程序D20MS可供調(diào)用。試編寫相應(yīng)的程序。解:本例仍可采用靜態(tài)顯示的方法。程序如下:
MOVA,#03H;8155命令字(A、B口均為輸出)MOVDPTR,#7F00H;指向命令口
MOVX@DPTR,A;輸出命令字
MOVA,#C0H;取“0”字的顯示段碼INCDPTR;指向A口
MOVX@DPTR,A;輸出顯示段碼
INCDPTRINCDPTR;指向C口
MOVA,#01H;取位控字(最右邊一位上顯示)LOOP1:MOVX@DPTR,A;輸出位控字
MOVR0,#19H;延時(shí)0.5秒LOOP2:LCALLD20MSDJNZR0,LOOP2JBA.5,LOOP3;若已到最左邊一位,則轉(zhuǎn)
RLA;未到,則將位控字左移1位SJMPLOOP1;繼續(xù)LOOP3:MOVA,#00H;停止顯示
MOVX@DPTR,ASJMP$;暫停
2.動(dòng)態(tài)顯示舉例例3:編一動(dòng)態(tài)顯示程序,使數(shù)碼顯示器同時(shí)顯示“ABCDEF”6個(gè)字符。設(shè)顯示緩沖區(qū)的首地址為7AH,可調(diào)用動(dòng)態(tài)掃描顯示子程序DIR(參見(jiàn)643小節(jié))。解:MOVA,#0FH;取最右邊1位字符
MOVR0,#7AH;指向顯緩區(qū)首址(最低位)MOVR1,#06H;共送入6個(gè)字符LOOP:MOV@R0,A;將字符送入顯緩區(qū)
INCR0;指向下一顯示單元
DECA;取下一個(gè)顯示字符
DJNZR1,LOOP;6個(gè)數(shù)未送完,則重復(fù)MM:LCALLDIR;掃描顯示一遍
SJMPMM;重復(fù)掃描
例4:在一串單字節(jié)無(wú)符號(hào)數(shù)中找出最大值,并在數(shù)碼顯示器的最右邊兩位上顯示。設(shè)數(shù)據(jù)串的長(zhǎng)度為20,存放在片內(nèi)RAM從30H單元開(kāi)始的一段區(qū)域中。
解:根據(jù)題意,LED數(shù)碼顯示器必須采用動(dòng)態(tài)掃描顯示的方法。本例要顯示的是兩位數(shù),而數(shù)碼顯示器有6位。在不顯示數(shù)字的位上數(shù)碼管應(yīng)該不亮,而動(dòng)態(tài)掃描顯示子程序每次對(duì)6位數(shù)碼管全掃描一遍。
程序按如下思路編寫:
(1)先求出最大值。
(2)將最大值拆字節(jié)后存入顯示緩沖區(qū),應(yīng)注意數(shù)的存放次序。根據(jù)題意,低位數(shù)應(yīng)存入顯示緩沖區(qū)的低地址單元。
(3)將“空白”字符的查表值10H送入不顯示位所對(duì)應(yīng)的顯示緩沖區(qū)中。
(4)反復(fù)調(diào)用動(dòng)態(tài)掃描顯示子程序。程序如下:
MOVR0,#30H;R0指向數(shù)據(jù)區(qū)首地址
MOVR1,#13H;比較次數(shù)送R1MOVA,@R0;取第1個(gè)數(shù)M1:INCR0;指向下一個(gè)數(shù)
MOV70H,@R0;下一個(gè)數(shù)送入70H單元中
CJNEA,70H,M3;若前后兩個(gè)數(shù)不相等則轉(zhuǎn)M2:DJNZR1,M1;若相等,則判比較完否?SJMPM4;若已完,則轉(zhuǎn)至顯示處理M3:JNCM2;前一個(gè)數(shù)大,轉(zhuǎn)至判結(jié)束否?MOVA,70H;前一個(gè)數(shù)小,將大數(shù)換入A中
SJMPM2;轉(zhuǎn)至判結(jié)束處M4:MOVR2,A;暫存最大值
ANLA,#0FH;保留低位數(shù)
MOV7AH,A;將低位數(shù)存入顯示緩沖區(qū)中
MOVA,R2;恢復(fù)最大值
ANLA,#F0H;保留高位數(shù)
SWAP;將高位換入低位中
MOV7BH,A;存入高位數(shù)MOVA,#10H;取“空白”字符查表值
MOV7CH,A;放入顯示緩沖區(qū)不顯示位的單元中
MOV7DH,A;高4位不顯示
MOV7EH,AMOV7FH,AMM:LCALLDIR;掃描顯示一遍
SJMPMM;重復(fù)掃描,顯示最大值6.5鍵盤接口
鍵盤實(shí)際上是由排列成矩陣形式的一系列按鍵開(kāi)關(guān)組成的,它是單片機(jī)系統(tǒng)中最常用的人機(jī)聯(lián)系的一種輸入設(shè)備。用戶通過(guò)鍵盤可以向CPU輸入數(shù)據(jù)、地址和命令。鍵盤按其結(jié)構(gòu)形式可分為編碼式鍵盤和非編碼式鍵盤兩大類。編碼式鍵盤是由其內(nèi)部硬件邏輯電路自動(dòng)產(chǎn)生被按鍵的編碼。這種鍵盤使用方便,但價(jià)格較貴。單片機(jī)系統(tǒng)中普遍使用非編碼式鍵盤。這類鍵盤應(yīng)主要解決以下幾個(gè)問(wèn)題:
(1)鍵的識(shí)別;
(2)如何消除鍵的抖動(dòng);
(3)鍵的保護(hù)。在以上幾個(gè)問(wèn)題中,最主要的是鍵的識(shí)別。6.5.1非編碼式鍵盤的結(jié)構(gòu)與工作原理
1.非編碼式鍵盤的結(jié)構(gòu)非編碼式鍵盤一般采用行列式結(jié)構(gòu)并按矩陣形式排列,如圖6―23所示。圖6―23示出4×4行列式鍵盤的基本結(jié)構(gòu)示意圖。4×4表示有4根行線和4根列線,在每根行線和列線的交叉點(diǎn)上均分布1個(gè)單觸點(diǎn)按鍵,共有16個(gè)按鍵。2.非編碼式鍵盤的工作原理非編碼式鍵盤識(shí)別閉合鍵通常有兩種方法:一種稱為行掃描法,另一種稱為線反轉(zhuǎn)法。
1)行掃描法所謂行掃描法,就是通過(guò)行線發(fā)出低電平信號(hào),如果該行線所連接的鍵沒(méi)有按下的話,則列線所連接的輸出端口得到的是全“1”信號(hào);如果有鍵按下的話,則得到的是非全“1”信號(hào)。圖6―23非編碼式鍵盤行掃描法的工作原理(a)無(wú)鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行圖6―23非編碼式鍵盤行掃描法的工作原理(a)無(wú)鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行圖6―23非編碼式鍵盤行掃描法的工作原理(a)無(wú)鍵按下;(b)有鍵按下;(c)掃描第0行;(d)掃描第1行;(e)掃描第2行;(f)掃描第3行
具體過(guò)程如下:首先,為了提高效率,一般先快速檢查整個(gè)鍵盤中是否有鍵按下;然后,再確定按下的是哪一個(gè)鍵。其次,再用逐行掃描的方法來(lái)確定閉合鍵的具體位置。方法是:先掃描第0行,即輸出1110(第0行為“0”,其余3行為“1”),然后讀入列信號(hào),判斷是否為全“1”。2)線反轉(zhuǎn)法線反轉(zhuǎn)法也是識(shí)別閉合鍵的一種常用方法。該方法比行掃描法速度要快,但在硬件電路上要求行線與列線均需有上拉電阻,故比行掃描法稍復(fù)雜些。
3.如何消除鍵的抖動(dòng)由于按鍵為機(jī)械開(kāi)關(guān)結(jié)構(gòu),因此機(jī)械觸點(diǎn)的彈性及電壓突跳等原因,往往在觸點(diǎn)閉合或斷開(kāi)的瞬間會(huì)出現(xiàn)電壓抖動(dòng),如圖6―24所示。圖6―24鍵閉合和斷開(kāi)時(shí)的電壓抖動(dòng)4.鍵的保護(hù)鍵的保護(hù)問(wèn)題指的是當(dāng)有雙鍵或多鍵同時(shí)按下時(shí)會(huì)出現(xiàn)什么問(wèn)題以及如何加以解決。
以圖6―23所示為例,若在同一行上有兩個(gè)鍵同時(shí)按下,從硬件上來(lái)說(shuō),不會(huì)出現(xiàn)什么問(wèn)題;從軟件上來(lái)說(shuō),由于這時(shí)讀入的列代碼中出現(xiàn)了兩個(gè)0,由此代碼與行值組合成的鍵特征值就超出了原設(shè)定鍵的范圍,因此也就查不出有效的鍵值來(lái)。一旦出現(xiàn)這樣情況,一般作為廢鍵處理。6.5.2鍵盤接口電路對(duì)于8031型單片機(jī)來(lái)說(shuō),如果P1口不作其它用途的話,則可與4×4的鍵盤相連接,如圖6―25所示,其中P1.0~P1.3作為輸出口,P1.4~P1.7作為輸入口。對(duì)于8751或8051型單片機(jī)來(lái)說(shuō),如果不再外擴(kuò)程序存儲(chǔ)器的話,則可以利用P0~P2口中的任意兩個(gè)口構(gòu)成多達(dá)8×8的鍵盤,其中1個(gè)作為輸出口,1個(gè)作為輸入口,既可以采用行掃描法,也可以采用線反轉(zhuǎn)法。
圖6―258031與4×4鍵盤的接口電路(行掃描法)
如果單片機(jī)本身的口線已被占用的話,則可以通過(guò)外擴(kuò)I/O接口芯片來(lái)構(gòu)成鍵盤接口電路,較常用的是8155、8255A等接口芯片。圖6―26是采用8155接口芯片構(gòu)成8×4鍵盤的接口電路,其中A口為輸出,作為行線;C口為輸入,作為列線(只用了PC0~PC3四根口線)。圖6―26采用8155的鍵盤接口電路6.5.3鍵盤掃描程序現(xiàn)以圖6―26所示接口電路為例,說(shuō)明鍵盤掃描程序的編制方法。
1.采用行掃描法采用行掃描法識(shí)別閉合鍵的程序流程圖見(jiàn)圖6―27。圖6―27鍵分析程序流程圖
首先調(diào)用全掃描子程序,檢查有無(wú)閉合鍵。若無(wú)鍵閉合,則對(duì)數(shù)碼顯示器掃描顯示1遍;若有鍵閉合,則先消抖。這里采用調(diào)用兩次數(shù)碼顯示器掃描循環(huán)顯示子程序的方法,每次6ms共12ms。然后再次檢查有無(wú)鍵閉合,若無(wú)鍵閉合,則返回主程序;若有鍵閉合,則進(jìn)行逐行掃描,以判別閉合鍵的具體位置。本例介紹的是第1種方法,采用的計(jì)算公式為鍵值=行號(hào)×4+列號(hào)(6―1)對(duì)于8×4的鍵盤來(lái)說(shuō),其具體鍵值由式(6―1)可計(jì)算出,見(jiàn)表6―7。
表6―78
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳品工藝技術(shù)創(chuàng)新與發(fā)展考核試卷
- 勘察項(xiàng)目項(xiàng)目管理氣候變化與勘察應(yīng)對(duì)策略考核試卷
- 批發(fā)市場(chǎng)的產(chǎn)品陳列與促銷技巧考核試卷
- 施工監(jiān)督與試車開(kāi)車中安全注意事項(xiàng)考核試卷
- 小學(xué)生天氣安全教育課件
- 農(nóng)田土壤售賣合同范本
- 個(gè)人產(chǎn)品交易合同范本
- 玻璃浴房合同范本
- 委托裝修安全合同范本
- 礦供銷合同范本
- TBPMA 0009-2021 生活飲用水二次供水水箱(池)清洗消毒技術(shù)規(guī)范
- LY/T 2499-2015野生動(dòng)物飼養(yǎng)場(chǎng)總體設(shè)計(jì)規(guī)范
- 佛教空性與緣起課件
- 民兵組織建設(shè)課件
- 腹腔鏡下闌尾切除術(shù)護(hù)理課件
- 《抖音生活服務(wù)服務(wù)商合作手冊(cè)》
- 語(yǔ)文教學(xué)設(shè)計(jì)(教案目標(biāo))
- 工程造價(jià)三級(jí)復(fù)核
- 皮膚性病學(xué)課件:濕疹皮炎
- 綠化養(yǎng)護(hù)重點(diǎn)難點(diǎn)分析及解決措施
- 一體化學(xué)工服務(wù)平臺(tái)、人事管理系統(tǒng)、科研管理系統(tǒng)建設(shè)方案
評(píng)論
0/150
提交評(píng)論