常用外圍設(shè)備接口電路_第1頁(yè)
常用外圍設(shè)備接口電路_第2頁(yè)
常用外圍設(shè)備接口電路_第3頁(yè)
常用外圍設(shè)備接口電路_第4頁(yè)
常用外圍設(shè)備接口電路_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章常用外圍設(shè)備接口電路

本章要點(diǎn):

畬LED數(shù)碼管及編碼方式

令靜態(tài)顯示方式及其典型應(yīng)用電路

0動(dòng)態(tài)顯示方式及其典型應(yīng)用電路

⑥虛擬12c總線串行顯示電路

0鍵盤(pán)去抖動(dòng)和連接、控制方式

◎獨(dú)立式按鍵及其接口電路

⑤矩陣式鍵盤(pán)及其接口電路

0并行A/DADC0809及其接口電路

3串行A/DADC0832及其接口電路

◎12c串行A/D典型應(yīng)用電路

畬DAC0832及其接口電路

◎12c串行D/A典型應(yīng)用電路

。開(kāi)關(guān)量驅(qū)動(dòng)輸出接口電路

§9-1LED數(shù)碼管顯示接口

?、LED數(shù)碼管

109876

a

12345go

Dpo

edcomcDp

⑸外形和引腳(b)共陰極結(jié)構(gòu)(c)共陽(yáng)極結(jié)構(gòu)

圖9-2LED數(shù)碼管

BLED數(shù)碼管的軟件譯碼

局電平點(diǎn)殼

hgf…??

接地丁

B八段LED數(shù)碼管段代碼編碼表(連線不同可有多種表):

LED數(shù)碼管分類(lèi):

按其內(nèi)部結(jié)構(gòu)可分為共陰型和共陽(yáng)型;

按其外形尺寸有多種形式,使用較多的

是0.5〃和0.8〃;

按顯示顏色也有多種形式,主要有紅色

和綠色;

按亮度強(qiáng)弱可分為超亮、高亮和普亮。

正向壓降一般為1.5?2V,額無(wú)電流為

10mA,最大電流為40mA。靜態(tài)顯示時(shí)取10mA

為宜,動(dòng)態(tài)掃描顯示,可加大脈沖電流,但

一般不超過(guò)40mA。

二、LED數(shù)碼管編碼方式

表9-1共陰和共陽(yáng)LED數(shù)碼管幾種八段編碼表

顯示共陰順序小數(shù)點(diǎn)暗共陰逆序小數(shù)點(diǎn)暗共陽(yáng)順序共陽(yáng)順序

數(shù)字Dpgfedcba16進(jìn)制abcdefgDp16進(jìn)制小數(shù)點(diǎn)亮小數(shù)點(diǎn)暗

0001111113FH11111100FCH40HC0H

10000011006H0110000060H79HF9H

2010110115BH11011010DAH24HA4H

3010011114FH11110010F2H30HB0H

40110011066H0110011066H19H99H

5011011016DH10110110B6H12H92H

6011111017DH10111110BEH02H82H

70000011107H11100000E0H78HF8H

8011111117FH11111110FEH00H80H

9011011116FH11110110F6H10H90H

顯示數(shù)轉(zhuǎn)換為顯示字段碼的步驟:

⑴從顯示數(shù)中分離出顯示的每一位數(shù)字

方法是將顯示數(shù)除以十進(jìn)制的權(quán)

⑵將分離出的顯示數(shù)字轉(zhuǎn)換為顯示字段碼

方法是查表

【例9-1】已知顯示數(shù)存在內(nèi)RAM30H(高位)、

31H中,試將其轉(zhuǎn)換為5位共陰字段碼(順序),

存在以30H(高位)為首址的內(nèi)RAM中。

解:連續(xù)調(diào)用下列二個(gè)子程序即可。

⑴分離顯示數(shù)字子程序

SPRT:MOVRO,#30H置萬(wàn)位BCD碼間址

MOVA,30H置被除數(shù)

MOVB,31H

MOVR6,#27H置除數(shù)10000=2710H

MOVR5,#10H

LCALLSUM除以10000,萬(wàn)位商存30H,余數(shù)存A、B

MOVR6,#03H置除數(shù)1000=03E8H

MOVR5,#0E8H

INCRO指向千位商間址(31H)

LCALLSUM除以1000,千位商存31H,余數(shù)存A、B

MOVR6,#0置除數(shù)100

MOVR5,#100

INCRO指向百位商間址(32H)

LCALLSUM除以100,百位商存32H,余數(shù)存A(B=0)

MOVB,#10置除數(shù)10

DIVAB除以10

INCRO指向十位商間址(33H)

MOV@R0,A十位商存33H

XCHA,B讀個(gè)位數(shù)

INCRO指向個(gè)位間址(34H)

MOV@R0,A個(gè)位存34H

RET

說(shuō)明:SUM是16位除以16位子程序:(A、B)+(R6、R5)二商@R0,余數(shù)(A、B)。(參閱例4-9)

⑵轉(zhuǎn)換顯示字段碼子程序

CHAG:MOVDPTR,#TAB置共陰字段碼表首址

MOVRO,#30H置顯示數(shù)據(jù)區(qū)首址

CGLP:MOVA,@R0取顯示數(shù)字

MOVCA,@A+DPTR讀相應(yīng)顯示字段碼

MOV@R0,A存顯示字段碼

INCRO指向下一顯示數(shù)字

CJNERO,#35H,CGLP判5個(gè)顯示數(shù)字轉(zhuǎn)換完否?未完繼續(xù)

RET轉(zhuǎn)換完畢,結(jié)束

TAB:DB3FH,06H,5BH,4FH,66H共陰字段碼表

DB6DH,7DH,07H,7FH,6FH

三、靜態(tài)顯示方式及其典型應(yīng)用電路

LED數(shù)碼管顯示分類(lèi):靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。

⑴靜態(tài)顯示方式,每一位字段碼分別從I/O控制口輸

出,保持不變直至CPU刷新。

特點(diǎn):編程較簡(jiǎn)單,但占用I/O口線多,一般適用

于顯示位數(shù)較少的場(chǎng)合。

⑵動(dòng)態(tài)顯示方式,在某一瞬時(shí)顯示一位,依次循環(huán)

掃描,輪流顯示,由于人的視覺(jué)滯留效應(yīng),人們看

到的是多位同時(shí)穩(wěn)定顯示。

特點(diǎn):占用I/O端線少,電路較簡(jiǎn)單,編程較復(fù)

雜,CPU要定時(shí)掃描刷新顯示。一般適用于顯示位數(shù)

較多的場(chǎng)合。

LED顯示器的擴(kuò)展(顯示方式)

nLED數(shù)碼管的顯示方式:③靜態(tài)與動(dòng)態(tài)

用靜態(tài)顯示:I

各數(shù)碼管在顯示過(guò)程中持續(xù)得到送顯信號(hào),與各數(shù)碼管接口

的I/O口線是專(zhuān)用的?!?/p>

n動(dòng)態(tài)顯示:

各數(shù)碼管在顯示過(guò)程中輪流得到送顯信號(hào),與各數(shù)碼管接口

的I/O口線是共用的。

B靜態(tài)顯示特點(diǎn):

無(wú)閃爍,用元器件多,占I/O線多,無(wú)須掃描,節(jié)省CPU時(shí)間,

編程簡(jiǎn)單。

n動(dòng)態(tài)顯示特點(diǎn):

有閃爍,用元器件少,占I/O線少,必須掃描,花費(fèi)CPU時(shí)間,

編程復(fù)雜。(有多個(gè)LED時(shí)尤為突出)

1、并行擴(kuò)展靜態(tài)顯示電路

【例9-2】按圖9-3編制顯示子程序,顯示數(shù)(W255)存在

內(nèi)RAM30H中。

解:

DIRI:MOVA,30H讀顯示數(shù)

MOVB,#100置除數(shù)

DIVAB產(chǎn)生百位顯示數(shù)字

MOVCA,@A+DPTR讀百位顯示符

MOVDPTR,ttODFFFH置74377(百位)地址

MOVX@DPTR,A輸出百位顯示符

MOVA,B讀余類(lèi)攵

MOVB,#10置除數(shù)

DIVAB產(chǎn)生一一位顯示數(shù)字

MOVDPTR,#TAB置共9日字段碼表首址

MOVCA,@A+DPTR讀十位顯同尺符

_位

DPTR,ttOBFFFH置)±符4

MOV74377(-示

nr

MOVX@DPTR,A輸出十位小k

MOVA,B讀個(gè)位顯示數(shù)字

MOVDPTR,#TAB置共陽(yáng)字段碼表首址

MOVCA,@A+DPTR讀個(gè)位顯示符

MOVDPTR,#7FFFH置74377(個(gè)位)地址

MOVX@DPTR,A輸出個(gè)位顯不符

RET;

TAB:DBOCOH,0F9H,0A4H,OBOH,99H;共陽(yáng)字段碼表

DB92H,82H,0F8H,80H,90H;

2、串行擴(kuò)展靜態(tài)顯示電路

+5VR

【例9-3]按圖9-4編制顯示子程序,顯示字段碼已分別存

在32H?30H內(nèi)RAM中。

解:

DIR2:MOVSCON,#00H置串口方式0

CLRES串口禁中

SETBPl.0“與”門(mén)開(kāi),允許TXD發(fā)移位脈沖

MOVSBUF,30H串行輸出個(gè)位顯示字段碼

JNBTI,$等待串行發(fā)送完畢

CLRTI清串行中斷標(biāo)志

MOVSBUF,31H串行輸出十位顯示字段碼

JNBTI,$等待串行發(fā)送完畢

CLRTI清串行中斷標(biāo)志

MOVSBUF,32H串行輸出百位顯示字段碼

JNBTI,$等待串行發(fā)送完畢

CLRTI清串行中斷標(biāo)志

CLRPl.0“與”門(mén)關(guān),禁止TXD發(fā)移位脈沖

RET

B要求:根據(jù)上圖編寫(xiě)通過(guò)串行口和74LS164驅(qū)動(dòng)共

陽(yáng)LED數(shù)碼管查表顯示的子程序。

B條件:系統(tǒng)有6個(gè)LED數(shù)碼管,待顯數(shù)據(jù)(OOH—09H)

已放在35H—30H單元中(分別對(duì)應(yīng)十萬(wàn)位一個(gè)位),

nDSPLY:MOVDPTR,#TABLE;共陽(yáng)LED數(shù)碼管譯碼表首址

MOVRO,#30H;待顯數(shù)據(jù)緩沖區(qū)的個(gè)位地址

REDO:MOVA,QRO;通過(guò)RO實(shí)現(xiàn)寄存器間接尋址

MOVCA,QA+DPTR;查表

MOVSBUF,A;經(jīng)串行口發(fā)送到74LS164

JNBTI,$;查詢(xún)送完一個(gè)字節(jié)的第8位?

CLRTI;為下一字節(jié)發(fā)送作準(zhǔn)備

INCRO;R0指向下一個(gè)數(shù)據(jù)緩沖單元

CJNERO,#36H,REDO;判斷是否發(fā)完6個(gè)數(shù)?

RET;發(fā)完6個(gè)數(shù)就返回

TABLE:DBOCOH,0F9H,0A4H,OBOH,99H;共陽(yáng)LED譯碼表

DB92H,82H,0F8H,80H,90H

、碼輸出靜態(tài)顯示電路

3BCDCD4511是“BCD碼

一七段共陰譯碼/

驅(qū)動(dòng)”IC;4511是

4線-7段鎖存/譯碼/

驅(qū)動(dòng)電路,能將

BCD碼譯成7段顯

示符輸出。圖中:

4511ABCD為0?9

二進(jìn)制數(shù)輸入端(A

是低位),abcdefg

為顯示段碼輸出端,

邛為輸入信號(hào)鎖存

控制(低電平有效),

數(shù)碼管為共陰數(shù)碼

管。

利用4511實(shí)現(xiàn)靜態(tài)顯示與一般靜態(tài)顯示電路

不同,一是節(jié)省I/O端線,段碼輸出只需4根;二

是不需專(zhuān)用驅(qū)動(dòng)電路,可直接輸出;三是不需譯

碼,直接輸出二進(jìn)制數(shù),編程簡(jiǎn)單;缺點(diǎn)是只能

顯示數(shù)字,不能顯示各種符號(hào)。

【例9-4】按圖9-5試編制顯示子程序(小數(shù)點(diǎn)固

定在第二位),已知顯示數(shù)存在內(nèi)RAM30H?32H

中。

解:編程如下:

DIR3:MOVP1,#111OOOOOB;選通個(gè)位

ORLPl,30H;輸出個(gè)位顯示數(shù)

MOVPl,#110100006;選通十位

ORLP1,31H;輸出十位顯示數(shù)

MOVP1,#1O11OOOOB;選通百位

ORLP1,32H;輸出百位顯示數(shù)

RET:

四、動(dòng)態(tài)顯示方式

及其典型應(yīng)用電路

動(dòng)態(tài)顯示電路

連結(jié)形式:

①顯示各位的所有

相同字段線連在一起,

共8段,由一個(gè)8位

I/O口控制;

②每一位的公共端

(共陽(yáng)或共陰COM)

由另一個(gè)I/O口控制。DpgfedcbaDpgfedcbaDpgfedcba

圖9-6動(dòng)態(tài)顯示證D數(shù)碼管連接方式

LED數(shù)碼管動(dòng)態(tài)顯示舉例

工作原理:從P0口送段代碼,P1口送位選信號(hào)。段碼雖同時(shí)

到達(dá)6個(gè)LED,但一次僅一個(gè)LED被選中。利用“視覺(jué)暫

留”,每送一個(gè)字符并選中相應(yīng)位線,延時(shí)一會(huì)兒,再送/

選下一個(gè)……循環(huán)掃描即可。1

<P0.7

段PO.6

PO.5電

代6

PO.4X

PO.3

碼14

PO.2

PO.1

<PO.0

AT89C51共陰

數(shù)碼管

zpl15K

±

pXI4

pI3K

X

p2

p±12K

D10

yX

要求:此處為共陰數(shù)碼管,P0口送段代碼,Pl口送位選信號(hào)。

通過(guò)查表實(shí)現(xiàn)動(dòng)態(tài)顯示。

條件:待顯數(shù)據(jù)(00H—09H)已放在:7FH—7AH單元中(分別

對(duì)應(yīng)十萬(wàn)位~個(gè)位)

說(shuō)明:由于用了反相驅(qū)動(dòng)器7406,要用共陽(yáng)譯碼表。

Sp7

p6拉

p5

。

代p4

Sp3

碼Sp214

SP1

AT89C51管

0.5

位Pl.4

Pl.3

Pl.2

線Pl.2

0

?pon-ia'B

_

;代碼,_

PI_i

;口送位選_

_

;信號(hào)

,待顯加據(jù)

;已經(jīng)放在:

[7FH—7AH

;單元(分別

;對(duì)應(yīng)十萬(wàn)

!位一個(gè)位)

;使用共陽(yáng)(7FH)(7EH)(7DH)(7CH)(7BH)(7AH)

;譯碼表。

.十萬(wàn)萬(wàn)位千位百位十位個(gè)位

數(shù)據(jù)緩沖區(qū)/顯示緩沖區(qū)

DIR:MOVDPTR,#DSEG;數(shù)碼管譯碼表首址

P0口送段MOVRO,#7AH;待顯緩沖區(qū)個(gè)位地址

代碼,PlMOVR3,#01H;個(gè)位的位選信號(hào)二01H

口送位選LD1:MOVA,?RO;通過(guò)R0間接尋址

信號(hào)MOVCA,?A+DPTR;查表

待顯裝據(jù)MOVPO,A;字段碼送到POD

MOVPl,R3;字位選擇送到Pl口

已經(jīng)放在:

LCALLDELY;調(diào)延時(shí)1ms子程序

7FH—7AHINCR0;R0指向下一字節(jié)

單元(分別MOVA,R3

對(duì)應(yīng)十萬(wàn)JBACC.5,LD2;判是否發(fā)完6個(gè)數(shù)?

位-個(gè)位)RLA;R1指向下一個(gè)位

使用共陽(yáng)MOVR3,A;位選信號(hào)存回RI

SJMPLD1;跳去再顯示下一個(gè)數(shù)

譯碼表。

?LD2:RET;發(fā)完6個(gè)數(shù)就返回

DSEG:DBOCOH,0F9H,0A4H,OBOH,99H;共陽(yáng)譯碼表

DB92H,82H,0F8H,80H,90H

F!動(dòng)態(tài)顯示舉例(循環(huán)顯示“8”的實(shí)驗(yàn))

實(shí)驗(yàn)箱從P0口擴(kuò)展了兩個(gè)8位的簡(jiǎn)單I/O口:

一個(gè)送段代碼(字形狀),地址是ODCH;

一個(gè)送位選信號(hào)(字位置),地址是ODDH。

ORG0000H

MOVRO,#0DCH;指向字形口

MOVA,#80H;送"8"的字形代碼

MOVX@R0,A;輸出字形代碼

MOVRI,#0DDH;指向字位口

MOVA,#20H;從最高位開(kāi)始

LEDO:MOVX@R15A;輸出字位代碼

ACALLDEYS;調(diào)延時(shí)子程序

RRA;右移一位

SJMPLEDO;循環(huán)顯示“8”

1、共陰型8位動(dòng)態(tài)顯示電路

G1

+5V?_YO

G

G2AY1

2BY2

FY3

AY4

P1.0Y5

B宿

Pl.1

C否

P1.2

80C51

P2.7E

74377

WRCLK

如-Q78,

P0D0-D7

圖9-7共陰型8位動(dòng)態(tài)顯示電路

【例9-5】按圖9-7,試編制循環(huán)掃描(10次)顯示子程序,

已知顯示字段碼存在以30H(低位)為首址的8字節(jié)內(nèi)RAM中。

解:編程如下:

DIR4:M0VR2,#10置循環(huán)掃描次數(shù)

MOVDPTR,W7FFFH置74377口地址

DLP1:ANLP1,#11111OOOB第0位先顯示

MOVRO,#30H置顯示字段碼首址

DLP2:M0VA,@R0讀顯示字段碼

MOVX@DPTR,A輸出顯示字段碼

LCALLDY2ms調(diào)用延時(shí)2ms子程序(參閱例4.13)

INCRO指向下一位字段碼

INCPl選通下一位顯示

CJNERO,#38H,DLP2判8位掃描顯示完否?未完繼續(xù)

DJNZR2,DLP18位掃描顯示完畢,判10次循環(huán)完否?

CLRA10次循環(huán)完畢,顯示暗

MOVX@DPTR,A

RET子程序返回

2、共陽(yáng)型3位動(dòng)態(tài)顯示電路

圖9-8共陽(yáng)型3位動(dòng)態(tài)顯示電路

【例9-6】根據(jù)圖9-8電路,試編制3位動(dòng)態(tài)掃描顯示程序(循環(huán)100

次),已知顯示字段碼存在以40H(低位)為首址的3字節(jié)內(nèi)RAM中。

解:編程如卞:

DIR5:MOVDPTR,WOBFFFH置74377地址

MOVR2,#100置循環(huán)顯示次數(shù)

DIR50:SETBPl.2百位停顯示

MOVA,40H取個(gè)位字段碼

MOVX@DPTR,A輸出個(gè)位字段碼

CLRPl.0個(gè)位顯示

LCALLDY2ms調(diào)用延時(shí)21Tls子程序(參閱例4.13)

DIR51:SETBPl.0個(gè)位停顯示

MOVA,41H取十位字段碼

MOVX@DPTR,A輸出十位字段碼

CLRPl.1十位顯示

LCALLDY2ms延時(shí)2nls

DIR52:SETBPl.1十位停顯示

MOVA,42H取百位字段碼

MOVX@DPTR,A輸出百位字段碼

CLRPl.2百位顯示

LCALLDY2ms延時(shí)2ms

DJNZR2,DIR50判循環(huán)顯不結(jié)束否?未完繼續(xù)

ORLP1,#OOOOO111B3位滅顯示

RET

ADR-15_____f24-SCL

CEXT—223-SDA

P8-322-P16

P7-421-P15

五、虛擬12c總線串行顯示電路P6-520-P14

P5-6SAA19-P13

P4-7106418-Pl2

P3-817-Pll

1、SAA1064引腳功能P2-916-PIO

Pl-1015-P9

MX1-1114-MX2

①VDD、VEE:電源、接地端。電源4.5?15V;VEE—1213—Vcc

②P1-P16:段驅(qū)動(dòng)輸出端。分為兩個(gè)8位口:圖9-9SAA1064引腳示意圖

P1?P8;P9~P16oP8、P16為高位。口鎖存器具有反相功

能,置1時(shí),端口輸出0。

③MX1、MX2:位碼驅(qū)動(dòng)端。靜態(tài)顯示驅(qū)動(dòng)時(shí),一片

SAA1064可驅(qū)動(dòng)二位LED數(shù)碼管;動(dòng)態(tài)顯示驅(qū)動(dòng)時(shí),按圖9-10

連接方式,一片SAA1064可驅(qū)動(dòng)四位LED數(shù)碼管;

④SDA、SCL:12c總線數(shù)據(jù)端、時(shí)鐘端;

⑤CEXT:時(shí)鐘振蕩器外接電容,典型值2700pF

⑥ADR:地址引腳端。SAA1064引腳地址Al、A0采用ADR模

擬電壓比較編址。當(dāng)ADR引腳電平為0、3VDD/8,5VDD/8、VDD

時(shí),相應(yīng)引腳地址A2、Al、A0分別為000、001、010、011;

2、硬件電路設(shè)計(jì)

3、片內(nèi)可編程功能

⑴片內(nèi)寄存器

符號(hào)COMdataldata2data3data4

裝載內(nèi)容控制命令顯示段碼1顯示段碼2顯示段碼3顯示段碼4

片內(nèi)地址00H01H02H03H04H

⑵控制命令COM

D7D6D5D4D3D2D1DO

—C6C5C4C3C2C1CO

CO:靜動(dòng)態(tài)控制,C0=l,動(dòng)態(tài)顯示,動(dòng)態(tài)顯示時(shí),datal、

data2輪流從P8?Pl輸出,data3、data4輪流從P16?P9輸出;

C1:顯示位1、3亮暗選擇,C1=1,選擇亮;

C2:顯示位2、4亮暗選擇,C2=1,選擇亮;

C3:測(cè)試位,C3=l,所有段亮;

C4、C5、C6:驅(qū)動(dòng)電流控制位,C4、C5、C6分別為1時(shí),驅(qū)動(dòng)

電流分別為3mA、6mA、12mA;C4、C5、C6全為1時(shí),驅(qū)動(dòng)電流

最大,可達(dá)21mA。

⑶寫(xiě)數(shù)據(jù)操作格式

SSLAWASADRACOMAdatalAdata2Adata3Adata4AP

紅色部分由80c51發(fā)送,SAA1064接收;

黑色部分由SAA1064發(fā)送,80c51接收。

SLAw為寫(xiě)SAA1064尋址字節(jié),

按圖9-10所示連接電路:SAA1064(1)SLAw=01110000B;

SAA1064(2)SLAw=01U0110Bo

其中oni(D7?4)為SAA1064器件地址,

D3?1為42人90尋址字節(jié),

末位DO為R/W;

SADR為片內(nèi)寄存器地址;

COM為控制命令。

4、程序設(shè)計(jì)

【例9-7】已知8位顯示符(共陰編碼)已依次存入內(nèi)RAM51H?58H中,試按圖9-

10編程將其輸入SAA1064Q),(2)動(dòng)態(tài)顯示,驅(qū)動(dòng)電流為12mA。設(shè)VHC軟件包已

裝入ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按8.3.2軟件包小結(jié)中協(xié)議定義。

解:VSAA:MOVMTD,#00H置SAA1064控制命令寄存器COM片內(nèi)子地址

MOV31H,#01000111B置控制命令字,動(dòng)態(tài)顯示,驅(qū)動(dòng)電流12mA

MOVNUMB,#6置發(fā)送數(shù)據(jù)數(shù):SADR+COM+datal-4=6

SAA1:MOVRO,#51H將51H?54H顯示符數(shù)據(jù)移至32H?35H

LCALLMOVB

MOVSLA,ttOlllOOOOB置SAA1064(1)寫(xiě)尋址字節(jié)SLAw

LCALLWRNB發(fā)送給SAA1064(l)

SAA2:MOVRO,#55H將55H?58H顯不符數(shù)據(jù)移至32H?35H

LCALLMOVB

MOVSLA,ttOlllOHOB置SAA1064(2)尋址字節(jié)SLAW

LCALLWRNB發(fā)送給SAA1064(2)

RET

MOVB:MOVR1,#32H顯示符數(shù)據(jù)移至32H?35H子程序

M0VB1:MOVA,@R0讀出

MOV@R1,A存入

INCRO指向下一讀出單元

INCRI指向下一存入單元

CJNER1,#36H,M0VB1判4個(gè)數(shù)據(jù)移完否?未完繼續(xù)

RET

§9-2鍵盤(pán)接口

一、鍵盤(pán)接口概述

1、按鍵開(kāi)關(guān)去抖動(dòng)問(wèn)題

(a)鍵輸入(b)鍵抖動(dòng)

圖9-11鍵操作和鍵抖動(dòng)

鍵盤(pán)的抖動(dòng)時(shí)間一般為5?10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU

對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。

消除抖動(dòng)不良后果的方法:

⑴硬件去抖動(dòng)

+5V

nRi

TRQ

74121J1

(b)單穩(wěn)態(tài)梢抖電路(c)濾波消抖電路

圖9-12硬件消抖電路

其中RC濾波電路去抖動(dòng)電路簡(jiǎn)單實(shí)用,效果較好。

⑵軟件去抖動(dòng)

檢測(cè)到按鍵按下后,執(zhí)行延時(shí)10ms子程序后再確認(rèn)該鍵

是否確實(shí)按下,消除抖動(dòng)影響。

2、按鍵連接方式

⑴獨(dú)立式按鍵

獨(dú)立式按鍵是每個(gè)按鍵占用一根I/O端線。

特點(diǎn):

①各按鍵相互獨(dú)立,電路配置靈活;

②按鍵數(shù)量較多時(shí),I/O端線耗費(fèi)較多,電路結(jié)構(gòu)繁雜;

③軟件結(jié)構(gòu)簡(jiǎn)單。

適用于按鍵數(shù)量較少的場(chǎng)合。

(2)矩陣式鍵盤(pán)

I/O端線栽行線和列線,按鍵跨接在行線和列線上,按

鍵按下時(shí),行線與列線發(fā)生短路。

特點(diǎn):

蒼占用I/O端線較少;

②軟件結(jié)構(gòu)教復(fù)雜。

適用于按鍵較多的場(chǎng)合。

3、鍵盤(pán)掃描控制方式

⑴程序控制掃描方式

鍵處理程序固定在主程序的某個(gè)程序段。

特點(diǎn):對(duì)CPU工作影響小,但應(yīng)考慮鍵盤(pán)處理程序的運(yùn)行間隔

周期不能太長(zhǎng),否則會(huì)影響對(duì)鍵輸入響應(yīng)的及時(shí)性。

⑵定時(shí)控制掃描方式

利用定時(shí)/計(jì)數(shù)器每隔一段時(shí)間產(chǎn)生定時(shí)中斷,CPU響應(yīng)

中斷后對(duì)鍵盤(pán)進(jìn)行掃描。

特點(diǎn):與程序控制掃描方式的區(qū)別是,在掃描間隔時(shí)間內(nèi),

前者用CPU工作程序填充,后者用定時(shí)/計(jì)數(shù)器定時(shí)控制。定時(shí)

控制掃描方式也應(yīng)考慮定時(shí)時(shí)間不能太長(zhǎng),否則會(huì)影響對(duì)鍵輸

入響應(yīng)的及時(shí)性。

⑶中斷控制方式

中斷控制方式是利用外部中斷源,響應(yīng)鍵輸入信號(hào)。

特點(diǎn):克服了前兩種控制方式可能產(chǎn)生的空掃描和不能及時(shí)

響應(yīng)鍵輸入的缺點(diǎn),既能及時(shí)處理鍵輸入,又能提高CPU運(yùn)行效

率,但要占用一個(gè)寶貴的中斷資源。

、獨(dú)立式按鍵及其接口電路

1、按鍵直接與I/O口連接

80C5180C51

Pl.0P1.0

Pl.1Pl.1

Pl.2P1.2

(b)

圖9-13獨(dú)立式按鍵接口電路

【例9-8】按圖9-13(a)、(b),試分別編制按鍵掃描子程序。

解:按圖9T3(a)編程如下:

KEYA:ORLPl,#07H置PL0?PL2為輸入態(tài)

MOVA,Pl讀鍵值,鍵閉合相應(yīng)位為0

CPLA取反,鍵閉合相應(yīng)位為1

ANLA,ftOOOOOlllB屏蔽高5位,保留有鍵值信息的低3位

JZGRET全0,無(wú)鍵閉合,返回

LCALLDYlOms非全0,有鍵閉合,延時(shí)10ms,軟件去抖動(dòng)

MOVA,Pl重讀鍵值,鍵閉合相應(yīng)位為0

CPLA取反,鍵閉合相應(yīng)位為1

ANLA,W00000111B屏蔽高5位,保留有鍵值信息的低3位

JZGRET全0,無(wú)鍵閉合,返回;非全0,確認(rèn)有鍵閉合

JBAcc.0,KAO轉(zhuǎn)0#鍵功能程序

JBAcc.1,KA1轉(zhuǎn)1#鍵功能程序

JBAcc.2,KA2轉(zhuǎn)2#鍵功能程序

GRET:RET

KAO:LCALLWORKO;執(zhí)行0#鍵功能子程序

RET

KAI:LCALLWORK1;執(zhí)行1#鍵功能子程序

RET

KA2:LCALLWORK2;執(zhí)行2#鍵功能子程序

RET

按圖9T3(b)編程如下:

KEYB:ORLPl,#07H置Pl.0?PL2為輸入態(tài)

MOVA,Pl讀鍵值,鍵閉合相應(yīng)位為1

ANLA,#OOOOO111B屏蔽高5位,保留后鍵值信息的低3位

JZGRET全0,無(wú)鍵閉合,返回

LCALLDYlOms非全0,有鍵閉合,延時(shí)10ms,軟件去抖動(dòng)

MOVA,Pl重讀鍵值,鍵閉合相應(yīng)位為1

ANLA,#0000011IB屏蔽高5位,保留有鍵值信息的低3位

JZGRET空0,無(wú)鍵閉合,返回;菲金0,流認(rèn)有鍵閉合

JBAcc.0,KBO轉(zhuǎn)0#鍵功能程序

JBAcc.1,KB1轉(zhuǎn)1#鍵功能程序

JBAcc.2,KB2轉(zhuǎn)2#鍵功能程序

GRET:RET

KBO:LCALLWORKO執(zhí)行o#鍵功能子程序.

RET

KB1:LCALLW0RK1執(zhí)行1#鍵功能子程序

RET

KB2:LCALLW0RK2執(zhí)行2#鍵功能子程序

RET

2、按鍵與擴(kuò)展I/O口連接

⑴按鍵與并行擴(kuò)展I/O口連接

圖9-14按鍵與并行擴(kuò)展I/O口連接電路

【例9-9】按圖9-14,試編制按鍵掃描子程序,將鍵信號(hào)存

入內(nèi)RAM30Ho

解:編程如下:

KEY99:MOVDPTR,#7FFFH置74373口地址

MOVXA,?DPTR輸入鍵信號(hào)("0”有效)

MOV30H,A存鍵信號(hào)數(shù)據(jù)

RET

⑵按鍵與串行擴(kuò)展I/O口連接

參閱8.2.4,圖8-6,【例8-2】。

三、矩陣式鍵盤(pán)及其接口電路

80C51

K1

P1.0o

K4班K5冷K6冷K7冷

Pl.1--~o----O---O-O--

K8Y9K9nK1

P1.2O

K12*K13?K14?,K15?

P1.3--------O--------------O-O

P1.4

P1.5

P1.6

P1.7_(ZZJ—

圖+15矩陣式鍵盤(pán)的結(jié)構(gòu)

【例9-10]按圖9-15及圖9-16,試編制矩陣式鍵盤(pán)掃描

程序。

解:KEY:MOVPl,#OFOH行線置低電平,列線置輸入態(tài)

KEY0:MOVA,Pl讀列線數(shù)據(jù)

CPLA數(shù)據(jù)取反,“1”有效

ANLA,#OFOH屏蔽行線,保留列線數(shù)據(jù)

MOVRI,A存列線數(shù)據(jù)(R1高4位)

JZGRET全0,無(wú)鍵按下,返回

KEY1:MOVPl,#OFH行線置輸入態(tài),列線置低電平

MOVA,Pl讀行線數(shù)據(jù)

CPLA數(shù)據(jù)取反,“1”有效

ANLA,#0FH屏蔽列線,保留行線數(shù)據(jù)

MOVR2,A存行線數(shù)據(jù)(R2低4位)

JZGRET全0,無(wú)鍵按下,返回

JBCFO,WAIT已有消抖標(biāo)志,轉(zhuǎn)

SETBFO無(wú)消抖標(biāo)志,置消抖標(biāo)志

LCALLDYlOms調(diào)用10ms延時(shí)子程序(參閱例4.13),消抖

SJMPKEYO重讀行線列線數(shù)據(jù)

GRET:RET

WAIT:MOVA,Pl等待按鍵釋放

CPLA

ANLA,#OFH

JNZWAIT按鍵未釋放,繼續(xù)等待

KEY2:MOVA,RI取列線數(shù)據(jù)(高4位)

MOVRI,#03H取列線編號(hào)初值

MOVR3,#03H置循環(huán)數(shù)

CLRC

KEY3:RLCA依次左移入c中一

JCKEY4C=1,該列有鍵按下,(列線編號(hào)存R1)

DECRIC=0,無(wú)鍵按下,修正列編號(hào)

DJNZR3,KEY3判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的列線

KEY4:MOVA,R2取行線數(shù)據(jù)(低4位)

MOVR2,#00H置行線編號(hào)初值

MOVR3,#03H置循環(huán)數(shù)

CLRC

KEY5:RRCA依次右移入C中

JCKEY6C=1,該行有鍵按下,(行線編號(hào)存R2)

INCR2C=0,無(wú)鍵按下,修正行線編號(hào)

DJNZR3,KEY5判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的行線

KEY6:MOVA,R2取行線編號(hào)

CLRC

RLCA行編號(hào)X2

RLCA行編號(hào)X4

ADDA,RI行編號(hào)X4+列編號(hào)二按鍵編號(hào)

KEY7:CLRC

RLCA按鍵編號(hào)X2

RLCA按鍵編號(hào)X4(LCALL+RET共4字節(jié))

MOVDPTR,#TABJ

JMP@A+DPTR散轉(zhuǎn),執(zhí)行相應(yīng)鍵功能子程序

TABJ:LCALLWORKO調(diào)用執(zhí)行0#鍵功能子程序

RET

LCALLW0RK1調(diào)用執(zhí)行1#鍵功能子程序

RET

??????

LCALLWORK15;調(diào)用執(zhí)行15#鍵功能子程序

RET

【例9-11]按圖9-17,試編制中斷方式鍵盤(pán)掃描

程序,將鍵盤(pán)序號(hào)存入內(nèi)RAM30Ho

圖定17工作于中斷方式的矩陣式鍵盤(pán)接口電路

解:

ORG0000H;復(fù)位地址

LJMPSTAT轉(zhuǎn)初始化

ORG0003H中斷入口地址

LJMPPINTO轉(zhuǎn)中斷服務(wù)程序

ORG0100H初始化程序首地址

STAT:MOVSP,#60H置堆棧指針

SETBITO置為邊沿觸發(fā)方式

MOVIP,#00000001B置為高優(yōu)先級(jí)中斷

MOVP1,#OOOO1111B置P1.0?P1.3置為輸入態(tài),置PL4?PL7輸出0

SETBEACPU開(kāi)中

SETBEXO開(kāi)中

LJMPMAIN轉(zhuǎn)主程序,并等待有鍵按下時(shí)中斷

OGR2000H中斷服務(wù)程序首地址

PINTO:PUSHAcc保護(hù)現(xiàn)場(chǎng)

PUSHPSW

MOVA,Pl讀行線(PL0?PL3)數(shù)據(jù)

CPLA數(shù)據(jù)取反,“1”有效

ANLA,#OFH屏蔽列線,保留行線數(shù)據(jù)

MOVR2,A存行線(P1.0?P1.3)數(shù)據(jù)(R2低4位)

MOVP1,#OFOH行線置低電平,列線置輸入態(tài)

MOVA,Pl讀列線(PL4?PL7)數(shù)據(jù)

CPLA數(shù)據(jù)取反,“1”后效

ANLA,#OFOH屏蔽行線,保留列線數(shù)據(jù)(A中高4位)

MOVRl,#03H取列線編號(hào)初值

MOVR3,#03H置循環(huán)數(shù)

CLRC

PINTO1:RLCA依次左移入C中

JCPINT02C=1,該列有鍵按下,(列線編號(hào)存R1)

DECRIC=0,無(wú)鍵按下,修正列編號(hào)

DJNZR3,PINTO1判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下列線

PINT02:M0VA,R2取行線數(shù)據(jù)(低4位)

MOVR2,#OOH置行線編號(hào)初值

MOVR3,#03H置循環(huán)數(shù)

PINT03:RRCA依次右移入C中

JCPINT04C=1,該行有鍵按下,(行線編號(hào)存R2)

INCR2c=o,無(wú)鍵按下,修正行線編號(hào)

DJNZR3,PINT03判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下行線

PINT04:M0VA,R2取行線編號(hào)

CLRC

RLCA行編號(hào)X2

RLCA行編號(hào)X4

ADDA,RI行編號(hào)X4+列編號(hào)二按鍵編號(hào)

MOV30H,A存按鍵編號(hào)

POPPSW

POPAcc

RETI

§9-3A/D轉(zhuǎn)換接口電路

、A/D轉(zhuǎn)換的基本概念

A/D轉(zhuǎn)換的功能是把模擬量電壓轉(zhuǎn)換為N位數(shù)字

量。

設(shè)D為N位二進(jìn)制數(shù)字量,UA為電壓模擬量,

UREF為參考電壓,無(wú)論A/D或D/A,其轉(zhuǎn)換關(guān)系為:

UA=DXUREF/2N

(其中:D=DoX2°+DiX21+???+DN—1X2NT)

1、A/D轉(zhuǎn)換器的主要性能指標(biāo):

⑴轉(zhuǎn)換精度。轉(zhuǎn)換精度通常用分辨率和量化誤差來(lái)描述。

①分辨率。分辨率二UREF/2N

表示輸出數(shù)字量變化一個(gè)相鄰數(shù)碼所需輸入模擬電壓的

變化量。N為A/D轉(zhuǎn)換的位數(shù),N越大,分辨率越高,習(xí)慣上分

辨率常以A/D轉(zhuǎn)換位數(shù)N表示。

②量化誤差。量化誤差是指零點(diǎn)和滿度校準(zhǔn)后,在整個(gè)轉(zhuǎn)

換范圍內(nèi)的最大誤差。

⑵轉(zhuǎn)換時(shí)間。指A/D轉(zhuǎn)換器完成一次A/D轉(zhuǎn)換所需時(shí)間。轉(zhuǎn)

換時(shí)間越短,適應(yīng)輸入信號(hào)快速變化能力越強(qiáng)。

2、A/D轉(zhuǎn)換器分類(lèi)

A/D轉(zhuǎn)換器分類(lèi):

按轉(zhuǎn)換原理形式可分為逐次逼近式、雙積分式和V/F變換式;

按信號(hào)傳輸形式可分為并行A/D和串行A/D。

、并行A/D

ADC0809及其接口電路

VREFI+)VREF(-)VCCGND

STARTCLKOE

圖9-18ADC0809的結(jié)構(gòu)框圖圖9-20ADC0809與80c51的連接電路

1、引腳功能和典型連接電路

⑴INO?IN7:8路模擬信號(hào)輸入端。

⑵C、B、A:8路模擬信號(hào)轉(zhuǎn)換選擇端。

與低8位地址中A0?A2連接。由A0?A2地址000?111選擇INO?IN7八路

A/D通道。

(3)CLK:外部時(shí)鐘輸入端。

時(shí)鐘頻率高,A/D轉(zhuǎn)換速度快。允許范圍為10?1280KHZ。

通常由80c51ALE端直接或分頻后與0809CLK端相連接。

(4)D0-D7:數(shù)字量輸出端。

⑸0E:A/D轉(zhuǎn)換結(jié)果輸出允許控制端。

0E=l,允許將A/D轉(zhuǎn)換結(jié)果從DO?D7端輸出。通常由80c51的端與0809片

選端(例如P2.0)通過(guò)或非門(mén)與08090E端相連接。

(6)ALE:地址鎖存允許信號(hào)輸入端。

0809ALE信號(hào)有效時(shí)將當(dāng)前轉(zhuǎn)換的通道地址鎖存。

⑺START:?jiǎn)?dòng)A/D轉(zhuǎn)換信號(hào)輸入端。

當(dāng)START端輸入一個(gè)正彈沖時(shí),立即啟動(dòng)0809進(jìn)行A/D轉(zhuǎn)換。START端與

ALE端連在一起,由80c51而與0809片選端(例如P2.0)通過(guò)或非門(mén)相連。

(8)EOC:A/D轉(zhuǎn)換結(jié)束信號(hào)輸出端,高電平有效。

(9)UREF(+)、UREF(-):正負(fù)基準(zhǔn)電壓輸入端。

⑩Vcc:正電源電壓(+5V)。GND:接地端。

2、ADC0809應(yīng)用實(shí)例

⑴中斷方式

【例9-12]按圖9-20,用中斷方式對(duì)8路模擬信號(hào)依次A/D轉(zhuǎn)

換一次,并把結(jié)果存入以30H為首址的內(nèi)RAM中,試編制程序。

解:

0RG0000H;復(fù)位地址

LJMPSTAT;轉(zhuǎn)初始化程序

ORG0013H;中斷服務(wù)子程序入口地址

LJMPPINT1;中斷,轉(zhuǎn)中斷服務(wù)子程序;

ORG0100H;初始化程序首地址

STAT:MOVRI,#30H;置數(shù)據(jù)區(qū)首址

MOVR7,#8;置通道數(shù)

SETBIT1;置邊沿觸發(fā)方式

SETBEXI;開(kāi)中

SETBEA;CPU開(kāi)中

MOVDPTR,#0FEF8H;置0809通道0地址

MOVX?DPTR,A;啟動(dòng)0通道A/D

LJMPMAIN;轉(zhuǎn)主程序,并等待A/D中斷

ORG0200H;中斷服務(wù)子程序首地址

PINT1:PUSHAcc保護(hù)現(xiàn)場(chǎng)

PUSHPSW

MOVXA,@DPTR讀A/D值

MOV@R1,A存A/D值

INCDPTR修正通道地址

INCRI修正數(shù)據(jù)區(qū)地址

MOVX?DPTR,A啟動(dòng)下一通道A/D

DJNZR7,GORETI判8路采集完否?未完繼續(xù)

CLREXI8路聚集已完,關(guān)中

GORETI:POPPSW恢復(fù)現(xiàn)場(chǎng)

POPAcc

RETI中斷返回

⑵查詢(xún)方式

工作在查詢(xún)方式時(shí),0809EOC端可不必通過(guò)反相器與或相連,

直接與80c51Pl口或P3口中任一端線相連。

【例9-13]圖9-20中,用PL0直接與0809E0C端相連,試用查

詢(xún)方式編制程序,對(duì)8路模擬信號(hào)依次A/D轉(zhuǎn)換一次,并把結(jié)果

存入以40H為首址的內(nèi)RAM中。

解:

MAIN:MOVRI,#40H置數(shù)據(jù)區(qū)首址

MOVR7,#8置通道數(shù)

SETBPl.0置Pl.0輸入態(tài)

MOVDPTR,#0FEF8H置0809通道0地址

LOOP:MOVX@DPTR,A啟動(dòng)A/D

JNBPl.0,$查詢(xún)A/D轉(zhuǎn)換結(jié)束否?未完繼續(xù)查詢(xún)等待

MOVXA,@DPTRA/D已結(jié)束,讀A/D值

MOV@R1,A存A/D值

INCDPTR修改通道地址

INCRI修改數(shù)據(jù)區(qū)地址

DJNZR7,LOOP判8路采集完否?未完繼續(xù)

RET8路采集完畢,返回

⑶延時(shí)等待方式

工作在延時(shí)等待方式時(shí),0809EOC端可不必與80c51相連,是根

據(jù)時(shí)鐘頻率計(jì)算出A/D轉(zhuǎn)換時(shí)間,略微延長(zhǎng)后直接讀A/D轉(zhuǎn)換值。

【例9T4】圖9-20中,0809EOC端開(kāi)路,fosc=6MHz,試用延

時(shí)等待方式編制程序,對(duì)8路模擬信號(hào)依次A/D轉(zhuǎn)換一次,并把

結(jié)果存入以50H為首址的內(nèi)RAM中。

解:編程如下:

MAIN:MOVRl,#50H置數(shù)據(jù)區(qū)首址

MOVR7,#8置通道數(shù)

MOVDPTR,#0FEF8H置0809通道0地址

LOOP:MOVX@DPTR,A啟動(dòng)A/D

MOVR6,#17

DJNZR6,$延時(shí)68Hs:2機(jī)周X17=34機(jī)周,22X34=6迎S

MOVXA,@DPTR讀A/D值

MOV@R1,A存A/D值

INCDPTR修正通道地址

INCRI修正數(shù)據(jù)區(qū)地址

DJNZR7,LOOP判8路采集完否?未完繼續(xù)

RET8路采集完畢,返回

二、串行A/D

ADC0832及其接口電路

ADC0832是8位串行A/D轉(zhuǎn)換器;

轉(zhuǎn)換速度較高(250KHz時(shí)轉(zhuǎn)換時(shí)間32.);

單電源供電,功耗低(15mw)。

(a)引腳圖(b))典型應(yīng)用接口電路

圖9-21ADC0832與80C51接口電路

1、引腳功能

VDD、VSS:電源接地端,VDD同時(shí)兼任UREF;表9-3

cs:片選端,低電平有效;

通道選擇

DI:數(shù)據(jù)信號(hào)輸入端;編碼

DO:數(shù)據(jù)信號(hào)輸出端;CHOCH1

CLK:時(shí)鐘信號(hào)輸入端,要求低于600KHz;00+—

CHO、CH1:模擬信號(hào)輸入端(雙通道);01—+

2、典型鹿用電路10+

P1.0片選民;

11+

TXD發(fā)送時(shí)鐘信號(hào)輸入ADC0832CLK;

RXD與DI、DO端連接在一起

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論