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

下載本文檔

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

文檔簡介

第9章常用外圍設備接口電路

本章要點:

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

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

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

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

0鍵盤去抖動和連接、控制方式

◎獨立式按鍵及其接口電路

⑤矩陣式鍵盤及其接口電路

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

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

◎12c串行A/D典型應用電路

畬DAC0832及其接口電路

◎12c串行D/A典型應用電路

。開關量驅動輸出接口電路

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

?、LED數(shù)碼管

109876

a

12345go

Dpo

edcomcDp

⑸外形和引腳(b)共陰極結構(c)共陽極結構

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

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

局電平點殼

hgf…??

接地丁

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

LED數(shù)碼管分類:

按其內(nèi)部結構可分為共陰型和共陽型;

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

是0.5〃和0.8〃;

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

和綠色;

按亮度強弱可分為超亮、高亮和普亮。

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

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

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

一般不超過40mA。

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

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

顯示共陰順序小數(shù)點暗共陰逆序小數(shù)點暗共陽順序共陽順序

數(shù)字Dpgfedcba16進制abcdefgDp16進制小數(shù)點亮小數(shù)點暗

0001111113FH11111100FCH40HC0H

10000011006H0110000060H79HF9H

2010110115BH11011010DAH24HA4H

3010011114FH11110010F2H30HB0H

40110011066H0110011066H19H99H

5011011016DH10110110B6H12H92H

6011111017DH10111110BEH02H82H

70000011107H11100000E0H78HF8H

8011111117FH11111110FEH00H80H

9011011116FH11110110F6H10H90H

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

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

方法是將顯示數(shù)除以十進制的權

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

方法是查表

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

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

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

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

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

SPRT:MOVRO,#30H置萬位BCD碼間址

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

MOVB,31H

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

MOVR5,#10H

LCALLSUM除以10000,萬位商存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讀個位數(shù)

INCRO指向個位間址(34H)

MOV@R0,A個位存34H

RET

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

⑵轉換顯示字段碼子程序

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

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

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

MOVCA,@A+DPTR讀相應顯示字段碼

MOV@R0,A存顯示字段碼

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

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

RET轉換完畢,結束

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

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

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

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

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

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

特點:編程較簡單,但占用I/O口線多,一般適用

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

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

掃描,輪流顯示,由于人的視覺滯留效應,人們看

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

特點:占用I/O端線少,電路較簡單,編程較復

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

較多的場合。

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

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

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

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

的I/O口線是專用的?!?/p>

n動態(tài)顯示:

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

的I/O口線是共用的。

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

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

編程簡單。

n動態(tài)顯示特點:

有閃爍,用元器件少,占I/O線少,必須掃描,花費CPU時間,

編程復雜。(有多個LED時尤為突出)

1、并行擴展靜態(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讀余類攵

MOVB,#10置除數(shù)

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

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

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

_位

DPTR,ttOBFFFH置)±符4

MOV74377(-示

nr

MOVX@DPTR,A輸出十位小k

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

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

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

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

MOVX@DPTR,A輸出個位顯不符

RET;

TAB:DBOCOH,0F9H,0A4H,OBOH,99H;共陽字段碼表

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

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

+5VR

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

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

解:

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

CLRES串口禁中

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

MOVSBUF,30H串行輸出個位顯示字段碼

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

CLRTI清串行中斷標志

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

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

CLRTI清串行中斷標志

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

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

CLRTI清串行中斷標志

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

RET

B要求:根據(jù)上圖編寫通過串行口和74LS164驅動共

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

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

已放在35H—30H單元中(分別對應十萬位一個位),

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

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

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

MOVCA,QA+DPTR;查表

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

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

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

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

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

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

TABLE:DBOCOH,0F9H,0A4H,OBOH,99H;共陽LED譯碼表

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

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

3BCDCD4511是“BCD碼

一七段共陰譯碼/

驅動”IC;4511是

4線-7段鎖存/譯碼/

驅動電路,能將

BCD碼譯成7段顯

示符輸出。圖中:

4511ABCD為0?9

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

是低位),abcdefg

為顯示段碼輸出端,

邛為輸入信號鎖存

控制(低電平有效),

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

管。

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

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

是不需專用驅動電路,可直接輸出;三是不需譯

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

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

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

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

中。

解:編程如下:

DIR3:MOVP1,#111OOOOOB;選通個位

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

MOVPl,#110100006;選通十位

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

MOVP1,#1O11OOOOB;選通百位

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

RET:

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

及其典型應用電路

動態(tài)顯示電路

連結形式:

①顯示各位的所有

相同字段線連在一起,

共8段,由一個8位

I/O口控制;

②每一位的公共端

(共陽或共陰COM)

由另一個I/O口控制。DpgfedcbaDpgfedcbaDpgfedcba

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

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

工作原理:從P0口送段代碼,P1口送位選信號。段碼雖同時

到達6個LED,但一次僅一個LED被選中。利用“視覺暫

留”,每送一個字符并選中相應位線,延時一會兒,再送/

選下一個……循環(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口送位選信號。

通過查表實現(xiàn)動態(tài)顯示。

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

對應十萬位~個位)

說明:由于用了反相驅動器7406,要用共陽譯碼表。

Sp7

。

p6拉

p5

。

代p4

Sp3

碼Sp214

SP1

AT89C51管

0.5

位Pl.4

Pl.3

Pl.2

線Pl.2

0

?pon-ia'B

_

;代碼,_

PI_i

;口送位選_

_

;信號

,待顯加據(jù)

;已經(jīng)放在:

[7FH—7AH

;單元(分別

;對應十萬

!位一個位)

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

;譯碼表。

.十萬萬位千位百位十位個位

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

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

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

代碼,PlMOVR3,#01H;個位的位選信號二01H

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

信號MOVCA,?A+DPTR;查表

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

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

已經(jīng)放在:

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

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

單元(分別MOVA,R3

對應十萬JBACC.5,LD2;判是否發(fā)完6個數(shù)?

位-個位)RLA;R1指向下一個位

使用共陽MOVR3,A;位選信號存回RI

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

譯碼表。

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

DSEG:DBOCOH,0F9H,0A4H,OBOH,99H;共陽譯碼表

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

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

實驗箱從P0口擴展了兩個8位的簡單I/O口:

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

一個送位選信號(字位置),地址是ODDH。

ORG0000H

MOVRO,#0DCH;指向字形口

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

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

MOVRI,#0DDH;指向字位口

MOVA,#20H;從最高位開始

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

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

RRA;右移一位

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

1、共陰型8位動態(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位動態(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)用延時2ms子程序(參閱例4.13)

INCRO指向下一位字段碼

INCPl選通下一位顯示

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

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

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

MOVX@DPTR,A

RET子程序返回

2、共陽型3位動態(tài)顯示電路

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

【例9-6】根據(jù)圖9-8電路,試編制3位動態(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取個位字段碼

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

CLRPl.0個位顯示

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

DIR51:SETBPl.0個位停顯示

MOVA,41H取十位字段碼

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

CLRPl.1十位顯示

LCALLDY2ms延時2nls

DIR52:SETBPl.1十位停顯示

MOVA,42H取百位字段碼

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

CLRPl.2百位顯示

LCALLDY2ms延時2ms

DJNZR2,DIR50判循環(huán)顯不結束否?未完繼續(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:段驅動輸出端。分為兩個8位口:圖9-9SAA1064引腳示意圖

P1?P8;P9~P16oP8、P16為高位??阪i存器具有反相功

能,置1時,端口輸出0。

③MX1、MX2:位碼驅動端。靜態(tài)顯示驅動時,一片

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

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

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

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

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

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

時,相應引腳地址A2、Al、A0分別為000、001、010、011;

2、硬件電路設計

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

⑴片內(nèi)寄存器

符號COMdataldata2data3data4

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

片內(nèi)地址00H01H02H03H04H

⑵控制命令COM

D7D6D5D4D3D2D1DO

—C6C5C4C3C2C1CO

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

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

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

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

C3:測試位,C3=l,所有段亮;

C4、C5、C6:驅動電流控制位,C4、C5、C6分別為1時,驅動

電流分別為3mA、6mA、12mA;C4、C5、C6全為1時,驅動電流

最大,可達21mA。

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

SSLAWASADRACOMAdatalAdata2Adata3Adata4AP

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

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

SLAw為寫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、程序設計

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

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

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

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

MOV31H,#01000111B置控制命令字,動態(tài)顯示,驅動電流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)寫尋址字節(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個數(shù)據(jù)移完否?未完繼續(xù)

RET

§9-2鍵盤接口

一、鍵盤接口概述

1、按鍵開關去抖動問題

(a)鍵輸入(b)鍵抖動

圖9-11鍵操作和鍵抖動

鍵盤的抖動時間一般為5?10ms,抖動現(xiàn)象會引起CPU

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

消除抖動不良后果的方法:

⑴硬件去抖動

+5V

nRi

TRQ

74121J1

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

圖9-12硬件消抖電路

其中RC濾波電路去抖動電路簡單實用,效果較好。

⑵軟件去抖動

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

是否確實按下,消除抖動影響。

2、按鍵連接方式

⑴獨立式按鍵

獨立式按鍵是每個按鍵占用一根I/O端線。

特點:

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

②按鍵數(shù)量較多時,I/O端線耗費較多,電路結構繁雜;

③軟件結構簡單。

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

(2)矩陣式鍵盤

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

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

特點:

蒼占用I/O端線較少;

②軟件結構教復雜。

適用于按鍵較多的場合。

3、鍵盤掃描控制方式

⑴程序控制掃描方式

鍵處理程序固定在主程序的某個程序段。

特點:對CPU工作影響小,但應考慮鍵盤處理程序的運行間隔

周期不能太長,否則會影響對鍵輸入響應的及時性。

⑵定時控制掃描方式

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

中斷后對鍵盤進行掃描。

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

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

控制掃描方式也應考慮定時時間不能太長,否則會影響對鍵輸

入響應的及時性。

⑶中斷控制方式

中斷控制方式是利用外部中斷源,響應鍵輸入信號。

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

響應鍵輸入的缺點,既能及時處理鍵輸入,又能提高CPU運行效

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

、獨立式按鍵及其接口電路

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

80C5180C51

Pl.0P1.0

Pl.1Pl.1

Pl.2P1.2

(b)

圖9-13獨立式按鍵接口電路

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

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

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

MOVA,Pl讀鍵值,鍵閉合相應位為0

CPLA取反,鍵閉合相應位為1

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

JZGRET全0,無鍵閉合,返回

LCALLDYlOms非全0,有鍵閉合,延時10ms,軟件去抖動

MOVA,Pl重讀鍵值,鍵閉合相應位為0

CPLA取反,鍵閉合相應位為1

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

JZGRET全0,無鍵閉合,返回;非全0,確認有鍵閉合

JBAcc.0,KAO轉0#鍵功能程序

JBAcc.1,KA1轉1#鍵功能程序

JBAcc.2,KA2轉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讀鍵值,鍵閉合相應位為1

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

JZGRET全0,無鍵閉合,返回

LCALLDYlOms非全0,有鍵閉合,延時10ms,軟件去抖動

MOVA,Pl重讀鍵值,鍵閉合相應位為1

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

JZGRET空0,無鍵閉合,返回;菲金0,流認有鍵閉合

JBAcc.0,KBO轉0#鍵功能程序

JBAcc.1,KB1轉1#鍵功能程序

JBAcc.2,KB2轉2#鍵功能程序

GRET:RET

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

RET

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

RET

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

RET

2、按鍵與擴展I/O口連接

⑴按鍵與并行擴展I/O口連接

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

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

入內(nèi)RAM30Ho

解:編程如下:

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

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

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

RET

⑵按鍵與串行擴展I/O口連接

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

三、矩陣式鍵盤及其接口電路

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矩陣式鍵盤的結構

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

程序。

解: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,無鍵按下,返回

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,無鍵按下,返回

JBCFO,WAIT已有消抖標志,轉

SETBFO無消抖標志,置消抖標志

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

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

GRET:RET

WAIT:MOVA,Pl等待按鍵釋放

CPLA

ANLA,#OFH

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

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

MOVRI,#03H取列線編號初值

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

CLRC

KEY3:RLCA依次左移入c中一

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

DECRIC=0,無鍵按下,修正列編號

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

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

MOVR2,#00H置行線編號初值

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

CLRC

KEY5:RRCA依次右移入C中

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

INCR2C=0,無鍵按下,修正行線編號

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

KEY6:MOVA,R2取行線編號

CLRC

RLCA行編號X2

RLCA行編號X4

ADDA,RI行編號X4+列編號二按鍵編號

KEY7:CLRC

RLCA按鍵編號X2

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

MOVDPTR,#TABJ

JMP@A+DPTR散轉,執(zhí)行相應鍵功能子程序

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

RET

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

RET

??????

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

RET

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

程序,將鍵盤序號存入內(nèi)RAM30Ho

圖定17工作于中斷方式的矩陣式鍵盤接口電路

解:

ORG0000H;復位地址

LJMPSTAT轉初始化

ORG0003H中斷入口地址

LJMPPINTO轉中斷服務程序

ORG0100H初始化程序首地址

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

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

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

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

SETBEACPU開中

SETBEXO開中

LJMPMAIN轉主程序,并等待有鍵按下時中斷

OGR2000H中斷服務程序首地址

PINTO:PUSHAcc保護現(xiàn)場

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取列線編號初值

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

CLRC

PINTO1:RLCA依次左移入C中

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

DECRIC=0,無鍵按下,修正列編號

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

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

MOVR2,#OOH置行線編號初值

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

PINT03:RRCA依次右移入C中

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

INCR2c=o,無鍵按下,修正行線編號

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

PINT04:M0VA,R2取行線編號

CLRC

RLCA行編號X2

RLCA行編號X4

ADDA,RI行編號X4+列編號二按鍵編號

MOV30H,A存按鍵編號

POPPSW

POPAcc

RETI

§9-3A/D轉換接口電路

、A/D轉換的基本概念

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

量。

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

UREF為參考電壓,無論A/D或D/A,其轉換關系為:

UA=DXUREF/2N

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

1、A/D轉換器的主要性能指標:

⑴轉換精度。轉換精度通常用分辨率和量化誤差來描述。

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

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

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

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

②量化誤差。量化誤差是指零點和滿度校準后,在整個轉

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

⑵轉換時間。指A/D轉換器完成一次A/D轉換所需時間。轉

換時間越短,適應輸入信號快速變化能力越強。

2、A/D轉換器分類

A/D轉換器分類:

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

按信號傳輸形式可分為并行A/D和串行A/D。

、并行A/D

ADC0809及其接口電路

VREFI+)VREF(-)VCCGND

STARTCLKOE

圖9-18ADC0809的結構框圖圖9-20ADC0809與80c51的連接電路

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

⑴INO?IN7:8路模擬信號輸入端。

⑵C、B、A:8路模擬信號轉換選擇端。

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

A/D通道。

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

時鐘頻率高,A/D轉換速度快。允許范圍為10?1280KHZ。

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

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

⑸0E:A/D轉換結果輸出允許控制端。

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

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

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

0809ALE信號有效時將當前轉換的通道地址鎖存。

⑺START:啟動A/D轉換信號輸入端。

當START端輸入一個正彈沖時,立即啟動0809進行A/D轉換。START端與

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

(8)EOC:A/D轉換結束信號輸出端,高電平有效。

(9)UREF(+)、UREF(-):正負基準電壓輸入端。

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

2、ADC0809應用實例

⑴中斷方式

【例9-12]按圖9-20,用中斷方式對8路模擬信號依次A/D轉

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

解:

0RG0000H;復位地址

LJMPSTAT;轉初始化程序

ORG0013H;中斷服務子程序入口地址

LJMPPINT1;中斷,轉中斷服務子程序;

ORG0100H;初始化程序首地址

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

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

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

SETBEXI;開中

SETBEA;CPU開中

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

MOVX?DPTR,A;啟動0通道A/D

LJMPMAIN;轉主程序,并等待A/D中斷

ORG0200H;中斷服務子程序首地址

PINT1:PUSHAcc保護現(xiàn)場

PUSHPSW

MOVXA,@DPTR讀A/D值

MOV@R1,A存A/D值

INCDPTR修正通道地址

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

MOVX?DPTR,A啟動下一通道A/D

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

CLREXI8路聚集已完,關中

GORETI:POPPSW恢復現(xiàn)場

POPAcc

RETI中斷返回

⑵查詢方式

工作在查詢方式時,0809EOC端可不必通過反相器與或相連,

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

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

詢方式編制程序,對8路模擬信號依次A/D轉換一次,并把結果

存入以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啟動A/D

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

MOVXA,@DPTRA/D已結束,讀A/D值

MOV@R1,A存A/D值

INCDPTR修改通道地址

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

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

RET8路采集完畢,返回

⑶延時等待方式

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

據(jù)時鐘頻率計算出A/D轉換時間,略微延長后直接讀A/D轉換值。

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

時等待方式編制程序,對8路模擬信號依次A/D轉換一次,并把

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

解:編程如下:

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

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

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

LOOP:MOVX@DPTR,A啟動A/D

MOVR6,#17

DJNZR6,$延時68Hs:2機周X17=34機周,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轉換器;

轉換速度較高(250KHz時轉換時間32.);

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

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

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

1、引腳功能

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

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

通道選擇

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

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

CLK:時鐘信號輸入端,要求低于600KHz;00+—

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

2、典型鹿用電路10+

P1.0片選民;

11+

TXD發(fā)送時鐘信號輸入ADC0832CLK;

RXD與DI、DO端連接在一起

溫馨提示

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

評論

0/150

提交評論