版權說明:本文檔由用戶提供并上傳,收益歸屬內(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025荷蘭物流行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025英國銀行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025英國新能源發(fā)電行業(yè)市場分析及投資方向與行業(yè)發(fā)展趨勢研究報告
- 2025航運行業(yè)市場供需現(xiàn)狀分析投資前景規(guī)劃研究報告
- 2025航運港口行業(yè)市場供需趨勢及投資前景規(guī)劃分析研究報告
- 2025湖南中醫(yī)藥大學第一附屬醫(yī)院第二批公開招聘高層次人才2人筆試備考重點試題及答案解析
- 甘肅特崗教師歷年查詢備考考試試題及答案解析
- 2026遼寧大連海事大學招聘事業(yè)編制非教學科研人員(第一批)23人筆試備考重點試題及答案解析
- 大班美術繪本活動七彩下雨天教案(2025-2026學年)
- 形容詞副詞復習公開課獲獎百校聯(lián)賽教案
- 臨床麻醉的經(jīng)驗與教訓化險為夷的80個病例
- 口腔正畸學課件
- 血常規(guī)報告單模板
- 物聯(lián)網(wǎng)就在身邊初識物聯(lián)網(wǎng)課件
- 路基拼接技術施工方案
- 宏觀經(jīng)濟學PPT完整全套教學課件
- 陜09J02 屋面標準圖集
- 2023年上海清算登記托管結算試題試題
- 動車組受電弓故障分析及改進探討
- GB/T 41932-2022塑料斷裂韌性(GIC和KIC)的測定線彈性斷裂力學(LEFM)法
- 2023年浙江省大學生物理競賽試卷
評論
0/150
提交評論