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

下載本文檔

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

文檔簡介

第9章常用外圍設(shè)備接口電路本章要點(diǎn):LED數(shù)碼管及編碼方式靜態(tài)顯示方式及其典型應(yīng)用電路動(dòng)態(tài)顯示方式及其典型應(yīng)用電路虛擬I2C總線串行顯示電路鍵盤去抖動(dòng)和連接、控制方式獨(dú)立式按鍵及其接口電路矩陣式鍵盤及其接口電路并行A/DADC0809及其接口電路串行A/DADC0832及其接口電路I2C串行A/D典型應(yīng)用電路DAC0832及其接口電路I2C串行D/A典型應(yīng)用電路開關(guān)量驅(qū)動(dòng)輸出接口電路§0開關(guān)量驅(qū)動(dòng)輸出接口電路一、驅(qū)動(dòng)發(fā)光二極管二、

驅(qū)動(dòng)繼電器三、光電隔離接口LED輸出電路§1LED數(shù)碼管顯示接口一、LED數(shù)碼管LED顯示器的擴(kuò)展(結(jié)構(gòu))LED數(shù)碼管的結(jié)構(gòu):①共陽與共陰@

單片機(jī)系統(tǒng)擴(kuò)展LED數(shù)碼管時(shí)多用共陽LED:共陽數(shù)碼管每個(gè)段筆畫是用低電平(“0”)點(diǎn)亮的,要求驅(qū)動(dòng)功率很小;而共陰數(shù)碼管段筆畫是用高電平(“0”)點(diǎn)亮的,要求驅(qū)動(dòng)功率較大。@

通常每個(gè)段筆畫要串一個(gè)數(shù)百歐姆的降壓電阻。公共陽極hgfedcbaabcdgefh公共陰極hgfedcbaabcdgefhhgf……ahgf……a高電平點(diǎn)亮低電平點(diǎn)亮接高電平接地LED數(shù)碼管的軟件譯碼八段LED數(shù)碼管段代碼編碼表(連線不同可有多種表):公共陽極hgfedcbaabcdgefh公共陰極hgfedcbaabcdgefhhgf……ahgf……a高電平點(diǎn)亮低電平點(diǎn)亮接高電平接地字形0123456789黑共陽0C00F90A40B09992820F880900FF共陰3F065B4F666D7D077F6F00LED數(shù)碼管分類:按其內(nèi)部結(jié)構(gòu)可分為共陰型和共陽型;

按其外形尺寸有多種形式,使用較多的是0.5"和0.8";

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

正向壓降一般為1.5~2V,額定電流為10mA,最大電流為40mA。靜態(tài)顯示時(shí)取10mA為宜,動(dòng)態(tài)掃描顯示,可加大脈沖電流,但一般不超過40mA。

按亮度強(qiáng)弱可分為超亮、高亮和普亮。二、LED數(shù)碼管編碼方式

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

顯示數(shù)字共陰順序小數(shù)點(diǎn)暗共陰逆序小數(shù)點(diǎn)暗共陽順序小數(shù)點(diǎn)亮共陽順序小數(shù)點(diǎn)暗

Dpgfedcba16進(jìn)制abcdefgDp16進(jìn)制0001111113FH11111100FCH40HC0H10000011006H0110000060H79HF9H2010110115BH11011010DAH24HA4H3010011114FH11110010F2H30HB0H40110011066H0110011066H19H99H5011011016DH10110110B6H12H92H6011111017DH10111110BEH02H82H70000011107H11100000E0H78HF8H8011111117FH11111110FEH00H80H9011011116FH11110110F6H10H90H【例9-1】已知顯示數(shù)存在內(nèi)RAM30H(高位)、31H中,試將其轉(zhuǎn)換為5位共陰字段碼(順序),存在以30H(高位)為首址的內(nèi)RAM中。⑴從顯示數(shù)中分離出顯示的每一位數(shù)字

方法是將顯示數(shù)除以十進(jìn)制的權(quán)顯示數(shù)轉(zhuǎn)換為顯示字段碼的步驟:⑵將分離出的顯示數(shù)字轉(zhuǎn)換為顯示字段碼

方法是查表SPRT:MOVR0,#30H;置萬位BCD碼間址

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

MOVB,31H;MOVR6,#27H;置除數(shù)10000=2710HMOVR5,#10H;LCALLSUM;除以10000,萬位商存30H,余數(shù)存A、BMOVR6,#03H;置除數(shù)1000=03E8HMOVR5,#0E8H;INCR0;指向千位商間址(31H)LCALLSUM;除以1000,千位商存31H,余數(shù)存A、BMOVR6,#0;置除數(shù)100

MOVR5,#100;INCR0;指向百位商間址(32H)LCALLSUM;除以100,百位商存32H,余數(shù)存A(B=0)MOVB,#10;置除數(shù)10DIVAB;除以10INCR0;指向十位商間址(33H)MOV@R0,A;十位商存33HXCHA,B;讀個(gè)位數(shù)

INCR0;指向個(gè)位間址(34H)MOV@R0,A;個(gè)位存34HRET;解:連續(xù)調(diào)用下列二個(gè)子程序即可。⑴分離顯示數(shù)字子程序說明:SUM是16位除以16位子程序:(A、B)÷(R6、R5)=商@R0,余數(shù)(A、B)。(參閱例4-9)⑵轉(zhuǎn)換顯示字段碼子程序CHAG:MOVDPTR,#TAB

;置共陰字段碼表首址

MOVR0,#30H

;置顯示數(shù)據(jù)區(qū)首址CGLP:MOVA,@R0

;取顯示數(shù)字

MOVCA,@A+DPTR

;讀相應(yīng)顯示字段碼

MOV@R0,A

;存顯示字段碼

INCR0

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

CJNER0,#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)用電路⑵動(dòng)態(tài)顯示方式,在某一瞬時(shí)顯示一位,依次循環(huán)掃描,輪流顯示,由于人的視覺滯留效應(yīng),人們看到的是多位同時(shí)穩(wěn)定顯示。

特點(diǎn):占用I/O端線少,電路較簡單,編程較復(fù)雜,CPU要定時(shí)掃描刷新顯示。一般適用于顯示位數(shù)較多的場合。LED數(shù)碼管顯示分類:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。⑴靜態(tài)顯示方式,每一位字段碼分別從I/O控制口輸出,保持不變直至CPU刷新。

特點(diǎn):編程較簡單,但占用I/O口線多,一般適用于顯示位數(shù)較少的場合。LED顯示器的擴(kuò)展(顯示方式)LED數(shù)碼管的顯示方式:③靜態(tài)與動(dòng)態(tài)動(dòng)態(tài)顯示特點(diǎn):有閃爍,用元器件少,占I/O線少,必須掃描,花費(fèi)CPU時(shí)間,編程復(fù)雜。(有多個(gè)LED時(shí)尤為突出)靜態(tài)顯示特點(diǎn):無閃爍,用元器件多,占I/O線多,無須掃描,節(jié)省CPU時(shí)間,編程簡單。靜態(tài)顯示:各數(shù)碼管在顯示過程中持續(xù)得到送顯信號(hào),與各數(shù)碼管接口的I/O口線是專用的。動(dòng)態(tài)顯示:各數(shù)碼管在顯示過程中輪流得到送顯信號(hào),與各數(shù)碼管接口的I/O口線是共用的。1、并行擴(kuò)展靜態(tài)顯示電路

【例9-2】按圖9-3編制顯示子程序,顯示數(shù)(≤255)存在內(nèi)RAM30H中。

解:DIR1:MOVA,30H;讀顯示數(shù)

MOVB,#100;置除數(shù)

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

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

MOVDPTR,#0DFFFH;置74377(百位)地址

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

MOVA,B;讀余數(shù)

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

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

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

MOVCA,@A+DPTR;讀十位顯示符

MOVDPTR,#0BFFFH;置74377(十位)地址

MOVX@DPTR,A;輸出十位顯示符

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

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

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

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

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

RET;TAB:DB0C0H,0F9H,0A4H,0B0H,99H;共陽字段碼表

DB92H,82H,0F8H,80H,90H;2、串行擴(kuò)展靜態(tài)顯示電路DIR2:MOVSCON,#00H;置串口方式0

CLRES;串口禁中

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

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

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

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

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

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

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

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

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

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

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

RET;【例9-3】按圖9-4編制顯示子程序,顯示字段碼已分別存在32H~30H內(nèi)RAM中。解:要求:根據(jù)上圖編寫通過串行口和74LS164驅(qū)動(dòng)共陽LED數(shù)碼管查表顯示的子程序。條件:系統(tǒng)有6個(gè)LED數(shù)碼管,待顯數(shù)據(jù)(00H—09H)已放在35H—30H單元中(分別對應(yīng)十萬位→個(gè)位),DSPLY:MOVDPTR,#TABLE;共陽LED數(shù)碼管譯碼表首址

MOVR0,#30H;待顯數(shù)據(jù)緩沖區(qū)的個(gè)位地址REDO:MOVA,@R0;通過R0實(shí)現(xiàn)寄存器間接尋址

MOVCA,@A+DPTR;查表

MOVSBUF,A;經(jīng)串行口發(fā)送到74LS164JNBTI,$;查詢送完一個(gè)字節(jié)的第8位?

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

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

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

RET;發(fā)完6個(gè)數(shù)就返回TABLE:DB0C0H,0F9H,0A4H,0B0H,99H;共陽LED譯碼表

DB92H,82H,0F8H,80H,90H3、BCD碼輸出靜態(tài)顯示電路CD4511是“BCD碼→七段共陰譯碼/驅(qū)動(dòng)”IC;4511是4線-7段鎖存/譯碼/驅(qū)動(dòng)電路,能將BCD碼譯成7段顯示符輸出。圖中:4511ABCD為0~9二進(jìn)制數(shù)輸入端(A是低位),abcdefg為顯示段碼輸出端,LE為輸入信號(hào)鎖存控制(低電平有效),數(shù)碼管為共陰數(shù)碼管。

利用4511實(shí)現(xiàn)靜態(tài)顯示與一般靜態(tài)顯示電路不同,一是節(jié)省I/0端線,段碼輸出只需4根;二是不需專用驅(qū)動(dòng)電路,可直接輸出;三是不需譯碼,直接輸出二進(jìn)制數(shù),編程簡單;缺點(diǎn)是只能顯示數(shù)字,不能顯示各種符號(hào)。

解:編程如下:DIR3:MOVP1,#11100000B;選通個(gè)位

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

MOVP1,#11010000B;選通十位

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

MOVP1,#10110000B;選通百位

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

RET;【例9-4】按圖9-5試編制顯示子程序(小數(shù)點(diǎn)固定在第二位),已知顯示數(shù)存在內(nèi)RAM30H~32H中。動(dòng)態(tài)顯示電路連結(jié)形式:①顯示各位的所有相同字段線連在一起,共8段,由一個(gè)8位I/O口控制;②每一位的公共端(共陽或共陰COM)由另一個(gè)I/O口控制。四、動(dòng)態(tài)顯示方式及其典型應(yīng)用電路LED數(shù)碼管動(dòng)態(tài)顯示舉例P1.5P1.4P1.3P1.2P1.2P1.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.07406OC門X3上拉電阻×14+5VAT89C51工作原理:從P0口送段代碼,P1口送位選信號(hào)。段碼雖同時(shí)到達(dá)6個(gè)LED,但一次僅一個(gè)LED被選中。利用“視覺暫留”,每送一個(gè)字符并選中相應(yīng)位線,延時(shí)一會(huì)兒,再送/選下一個(gè)……循環(huán)掃描即可。共陰數(shù)碼管位選線段代碼P1.5P1.4P1.3P1.2P1.2P1.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.07406OC門X3+5VAT89C51位選線段代碼要求:此處為共陰數(shù)碼管,P0口送段代碼,P1口送位選信號(hào)。通過查表實(shí)現(xiàn)動(dòng)態(tài)顯示。條件:待顯數(shù)據(jù)(00H—09H)已放在:7FH—7AH單元中(分別對應(yīng)十萬位~個(gè)位)說明:由于用了反相驅(qū)動(dòng)器7406,要用共陽譯碼表。共陰數(shù)碼管上拉電阻×147406OC門X3+5V(7FH)(7EH)(7DH)(7CH)(7BH)(7AH)十萬萬位千位百位十位個(gè)位數(shù)據(jù)緩沖區(qū)/顯示緩沖區(qū)P0口送段代碼,P1口送位選信號(hào)。待顯數(shù)據(jù)已經(jīng)放在:7FH—7AH單元(分別對應(yīng)十萬位→個(gè)位)使用共陽譯碼表。DIR:MOVDPTR,#DSEG

;數(shù)碼管譯碼表首址

MOVR0,#7AH;待顯緩沖區(qū)個(gè)位地址

MOVR3,#01H;個(gè)位的位選信號(hào)=01HLD1:MOVA,@R0;通過R0間接尋址

MOVCA,@A+DPTR

;查表

MOVP0,A

;字段碼送到P0口

MOVP1,R3;字位選擇送到P1口

LCALLDELY

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

INCR0;R0指向下一字節(jié)

MOVA,R3JBACC.5,LD2

;判是否發(fā)完6個(gè)數(shù)?

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

MOVR3,A;位選信號(hào)存回R1SJMPLD1

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

RET;發(fā)完6個(gè)數(shù)就返回DSEG:DB0C0H,0F9H,0A4H,0B0H,99H;共陽譯碼表

DB92H,82H,0F8H,80H,90HP0口送段代碼,P1口送位選信號(hào)。待顯數(shù)據(jù)已經(jīng)放在:7FH—7AH單元(分別對應(yīng)十萬位→個(gè)位)使用共陽譯碼表。動(dòng)態(tài)顯示舉例(循環(huán)顯示“8”的實(shí)驗(yàn))實(shí)驗(yàn)箱從P0口擴(kuò)展了兩個(gè)8位的簡單I/O口:

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

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

ORG0000H

MOVR0,#0DCH;指向字形口

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

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

MOVR1,#0DDH

;指向字位口

MOVA,#20H

;從最高位開始

LEDO:

MOVX@R1,A

;輸出字位代碼

ACALLDEYS

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

RRA

;右移一位

SJMPLEDO

;循環(huán)顯示“8”1、共陰型8位動(dòng)態(tài)顯示電路DIR4:MOVR2,#10;置循環(huán)掃描次數(shù)

MOVDPTR,#7FFFH;置74377口地址DLP1:ANLP1,#11111000B;第0位先顯示

MOVR0,#30H;置顯示字段碼首址DLP2:MOVA,@R0;讀顯示字段碼

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

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

INCR0;指向下一位字段碼

INCP1;選通下一位顯示

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

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

CLRA;10次循環(huán)完畢,顯示暗

MOVX@DPTR,A;RET;子程序返回【例9-5】按圖9-7,試編制循環(huán)掃描(10次)顯示子程序,已知顯示字段碼存在以30H(低位)為首址的8字節(jié)內(nèi)RAM中。解:編程如下:2、共陽型3位動(dòng)態(tài)顯示電路DIR5:MOVDPTR,#0BFFFH;置74377地址

MOVR2,#100;置循環(huán)顯示次數(shù)DIR50:SETBP1.2;百位停顯示

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

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

CLRP1.0;個(gè)位顯示

LCALLDY2ms;調(diào)用延時(shí)2ms子程序(參閱例4.13)DIR51:SETBP1.0;個(gè)位停顯示

MOVA,41H;取十位字段碼

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

CLRP1.1;十位顯示

LCALLDY2ms;延時(shí)2msDIR52:SETBP1.1;十位停顯示

MOVA,42H;取百位字段碼

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

CLRP1.2;百位顯示

LCALLDY2ms;延時(shí)2msDJNZR2,DIR50;判循環(huán)顯示結(jié)束否?未完繼續(xù)

ORLP1,#00000111B;3位滅顯示

RET;【例9-6】根據(jù)圖9-8電路,試編制3位動(dòng)態(tài)掃描顯示程序(循環(huán)100次),已知顯示字段碼存在以40H(低位)為首址的3字節(jié)內(nèi)RAM中。解:編程如下:1、SAA1064引腳功能五、虛擬I2C總線串行顯示電路①VDD、VEE:電源、接地端。電源4.5~15V;②P1~P16:段驅(qū)動(dòng)輸出端。分為兩個(gè)8位口:P1~P8;P9~P16。P8、P16為高位??阪i存器具有反相功能,置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:I2C總線數(shù)據(jù)端、時(shí)鐘端;⑤CEXT:時(shí)鐘振蕩器外接電容,典型值2700pF⑥ADR:地址引腳端。SAA1064引腳地址A1、A0采用ADR模擬電壓比較編址。當(dāng)ADR引腳電平為0、3VDD/8,5VDD/8、VDD時(shí),相應(yīng)引腳地址A2、A1、A0分別為000、001、010、011;2、硬件電路設(shè)計(jì)

⑴片內(nèi)寄存器

符號(hào)COMdata1data2data3data4裝載內(nèi)容控制命令顯示段碼1顯示段碼2顯示段碼3顯示段碼4片內(nèi)地址00H01H02H03H04H3、片內(nèi)可編程功能⑵控制命令COMCOMD7D6D5D4D3D2D1D000H—C6C5C4C3C2C1C0CO:靜動(dòng)態(tài)控制,C0=1,動(dòng)態(tài)顯示,動(dòng)態(tài)顯示時(shí),data1、data2輪流從P8~P1輸出,data3、data4輪流從P16~P9輸出;C1:顯示位1、3亮暗選擇,C1=1,選擇亮;C2:顯示位2、4亮暗選擇,C2=1,選擇亮;C3:測試位,C3=1,所有段亮;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。⑶寫數(shù)據(jù)操作格式

SSLAWASADRACOMAdata1Adata2Adata3Adata4AP

紅色部分由80C51發(fā)送,SAA1064接收;黑色部分由SAA1064發(fā)送,80C51接收。SLAW為寫SAA1064尋址字節(jié),按圖9-10所示連接電路:SAA1064(1)SLAW=01110000B;SAA1064(2)SLAW=01110110B。其中0111(D7~4)為SAA1064器件地址,

D3~1為A2A1A0尋址字節(jié),末位D0為R/W;SADR為片內(nèi)寄存器地址;COM為控制命令。解:VSAA:MOVMTD,#00H;置SAA1064控制命令寄存器COM片內(nèi)子地址

MOV31H,#01000111B;置控制命令字,動(dòng)態(tài)顯示,驅(qū)動(dòng)電流12mAMOVNUMB,#6;置發(fā)送數(shù)據(jù)數(shù):SADR+COM+data1~4=6SAA1:MOVRO,#51H;將51H~54H顯示符數(shù)據(jù)移至32H~35HLCALLMOVB;MOVSLA,#01110000B;置SAA1064(1)寫尋址字節(jié)SLAWLCALLWRNB;發(fā)送給SAA1064(1)SAA2:MOVR0,#55H;將55H~58H顯示符數(shù)據(jù)移至32H~35H

LCALLMOVB;MOVSLA,#01110110B;置SAA1064(2)尋址字節(jié)SLAWLCALLWRNB;發(fā)送給SAA1064(2)RET;MOVB:MOVR1,#32H;顯示符數(shù)據(jù)移至32H~35H子程序MOVB1:MOVA,@R0;讀出

MOV@R1,A;存入

INCRO;指向下一讀出單元

INCR1;指向下一存入單元

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

RET;【例9-7】已知8位顯示符(共陰編碼)已依次存入內(nèi)RAM51H~58H中,試按圖9-10編程將其輸入SAA1064(1),(2)動(dòng)態(tài)顯示,驅(qū)動(dòng)電流為12mA。設(shè)VIIC軟件包已裝入ROM,VSDA.VSCL.SLA.NUMB.MTD.MRD均已按8.3.2軟件包小結(jié)中協(xié)議定義。4、程序設(shè)計(jì)1、按鍵開關(guān)去抖動(dòng)問題

§2鍵盤接口一、鍵盤接口概述鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。⑴

硬件去抖動(dòng)

消除抖動(dòng)不良后果的方法:其中RC濾波電路去抖動(dòng)電路簡單實(shí)用,效果較好。⑵軟件去抖動(dòng)檢測到按鍵按下后,執(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)簡單。

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

⑵矩陣式鍵盤

I/O端線分為行線和列線,按鍵跨接在行線和列線上,按鍵按下時(shí),行線與列線發(fā)生短路。

特點(diǎn):

①占用I/O端線較少;

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

適用于按鍵較多的場合。3、鍵盤掃描控制方式

⑴程序控制掃描方式鍵處理程序固定在主程序的某個(gè)程序段。

特點(diǎn):對CPU工作影響小,但應(yīng)考慮鍵盤處理程序的運(yùn)行間隔周期不能太長,否則會(huì)影響對鍵輸入響應(yīng)的及時(shí)性。

⑵定時(shí)控制掃描方式利用定時(shí)/計(jì)數(shù)器每隔一段時(shí)間產(chǎn)生定時(shí)中斷,CPU響應(yīng)中斷后對鍵盤進(jìn)行掃描。

特點(diǎn):與程序控制掃描方式的區(qū)別是,在掃描間隔時(shí)間內(nèi),前者用CPU工作程序填充,后者用定時(shí)/計(jì)數(shù)器定時(shí)控制。定時(shí)控制掃描方式也應(yīng)考慮定時(shí)時(shí)間不能太長,否則會(huì)影響對鍵輸入響應(yīng)的及時(shí)性。

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

特點(diǎn):克服了前兩種控制方式可能產(chǎn)生的空掃描和不能及時(shí)響應(yīng)鍵輸入的缺點(diǎn),既能及時(shí)處理鍵輸入,又能提高CPU運(yùn)行效率,但要占用一個(gè)寶貴的中斷資源。1、按鍵直接與I/O口連接

二、獨(dú)立式按鍵及其接口電路【例9-8】按圖9-13(a)、(b),試分別編制按鍵掃描子程序。解:按圖9-13(a)編程如下:KEYA:ORLP1,#07H;置P1.0~P1.2為輸入態(tài)

MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位

JZGRET;全0,無鍵閉合,返回

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

MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為0CPLA;取反,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位

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

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

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

JBAcc.2,KA2;轉(zhuǎn)2#鍵功能程序GRET:RETKA0:LCALLWORK0;執(zhí)行0#鍵功能子程序

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

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

RET按圖9-13(b)編程如下:

KEYB:ORLP1,#07H;置P1.0~P1.2為輸入態(tài)

MOVA,P1;讀鍵值,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位

JZGRET;全0,無鍵閉合,返回

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

MOVA,P1;重讀鍵值,鍵閉合相應(yīng)位為1ANLA,#00000111B;屏蔽高5位,保留有鍵值信息的低3位

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

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

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

JBAcc.2,KB2;轉(zhuǎn)2#鍵功能程序GRET:RETKB0:LCALLWORK0;執(zhí)行0#鍵功能子程序

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

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

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

2、按鍵與擴(kuò)展I/O口連接【例9-9】按圖9-14,試編制按鍵掃描子程序,將鍵信號(hào)存入內(nèi)RAM30H。解:編程如下:KEY99:MOVDPTR,#7FFFH;置74373口地址

MOVXA,@DPTR;輸入鍵信號(hào)(“0”有效)

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

RET;參閱8.2.4,圖8-6,【例8-2】。⑵按鍵與串行擴(kuò)展I/O口連接三、矩陣式鍵盤及其接口電路

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

解:KEY:MOVP1,#0F0H;行線置低電平,列線置輸入態(tài)KEY0:MOVA,P1;讀列線數(shù)據(jù)

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

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

MOVR1,A;存列線數(shù)據(jù)(R1高4位)JZGRET;全0,無鍵按下,返回KEY1:MOVP1,#0FH;行線置輸入態(tài),列線置低電平

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

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

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

MOVR2,A;存行線數(shù)據(jù)(R2低4位)JZGRET;全0,無鍵按下,返回

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

SETBF0;無消抖標(biāo)志,置消抖標(biāo)志

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

SJMPKEY0;重讀行線列線數(shù)據(jù)GRET:RET;WAIT:MOVA,P1;等待按鍵釋放

CPLA;ANLA,#0FH;JNZWAIT;按鍵未釋放,繼續(xù)等待KEY2:MOVA,R1;取列線數(shù)據(jù)(高4位)MOVR1,#03H;取列線編號(hào)初值

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

CLRC;KEY3:RLCA;依次左移入C中

JCKEY4;C=1,該列有鍵按下,(列線編號(hào)存R1)DECR1;C=0,無鍵按下,修正列編號(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中

JCKEY6;C=1,該行有鍵按下,(行線編號(hào)存R2)INCR2;C=0,無鍵按下,修正行線編號(hào)

DJNZR3,KEY5;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下的行線KEY6:MOVA,R2;取行線編號(hào)

CLRC;RLCA;行編號(hào)×2RLCA;行編號(hào)×4ADDA,R1;行編號(hào)×4+列編號(hào)=按鍵編號(hào)KEY7:CLRC;RLCA;按鍵編號(hào)×2RLCA;按鍵編號(hào)×4(LCALL+RET共4字節(jié))MOVDPTR,#TABJ;JMP@A+DPTR;散轉(zhuǎn),執(zhí)行相應(yīng)鍵功能子程序TABJ:LCALLWORK0;調(diào)用執(zhí)行0#鍵功能子程序

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

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

RET;【例9-11】按圖9-17,試編制中斷方式鍵盤掃描程序,將鍵盤序號(hào)存入內(nèi)RAM30H。

ORG0000H;復(fù)位地址

LJMPSTAT;轉(zhuǎn)初始化

ORG0003H;中斷入口地址

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

ORG0100H;初始化程序首地址STAT:MOVSP,#60H;置堆棧指針

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

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

MOVP1,#00001111B;置P1.0~P1.3置為輸入態(tài),置P1.4~P1.7輸出0SETBEA;CPU開中

SETBEX0;開中

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

OGR2000H;中斷服務(wù)程序首地址PINT0:PUSHAcc;保護(hù)現(xiàn)場

PUSHPSW;MOVA,P1;讀行線(P1.0~P1.3)數(shù)據(jù)

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

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

MOVR2,A;存行線(P1.0~P1.3)數(shù)據(jù)(R2低4位)MOVP1,#0F0H;行線置低電平,列線置輸入態(tài)

MOVA,P1;讀列線(P1.4~P1.7)數(shù)據(jù)

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

ANLA,#0F0H;屏蔽行線,保留列線數(shù)據(jù)(A中高4位)MOVR1,#03H;取列線編號(hào)初值

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

CLRC;PINT01:RLCA;依次左移入C中

JCPINT02;C=1,該列有鍵按下,(列線編號(hào)存R1)DECR1;C=0,無鍵按下,修正列編號(hào)

DJNZR3,PINT01;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下列線PINT02:MOVA,R2;取行線數(shù)據(jù)(低4位)MOVR2,#00H;置行線編號(hào)初值

MOVR3,#03H;置循環(huán)數(shù)PINT03:RRCA;依次右移入C中

JCPINT04;C=1,該行有鍵按下,(行線編號(hào)存R2)INCR2;C=0,無鍵按下,修正行線編號(hào)

DJNZR3,PINT03;判循環(huán)結(jié)束否?未結(jié)束繼續(xù)尋找有鍵按下行線PINT04:MOVA,R2;取行線編號(hào)

CLRC;RLCA;行編號(hào)×2RLCA;行編號(hào)×4ADDA,R1;行編號(hào)×4+列編號(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為參考電壓,無論A/D或D/A,其轉(zhuǎn)換關(guān)系為:UA=D×UREF/2N

(其中:D=D0×20+D1×21+…+DN-1×2N-1)1、A/D轉(zhuǎn)換器的主要性能指標(biāo):

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

①分辨率。分辨率=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)換器分類

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

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

按信號(hào)傳輸形式可分為并行A/D和串行A/D。二、并行A/DADC0809及其接口電路

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

⑴IN0~I(xiàn)N7:8路模擬信號(hào)輸入端。

⑵C、B、A:8路模擬信號(hào)轉(zhuǎn)換選擇端。與低8位地址中A0~A2連接。由A0~A2地址000~111選擇IN0~I(xiàn)N7八路A/D通道。

⑶CLK:外部時(shí)鐘輸入端。時(shí)鐘頻率高,A/D轉(zhuǎn)換速度快。允許范圍為10~1280KHz。通常由80C51ALE端直接或分頻后與0809CLK端相連接。

⑷D0~D7:數(shù)字量輸出端。

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

OE=1,允許將A/D轉(zhuǎn)換結(jié)果從D0~D7端輸出。通常由80C51的端與0809片選端(例如P2.0)通過或非門與0809OE端相連接。

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

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

⑺START:啟動(dòng)A/D轉(zhuǎn)換信號(hào)輸入端。當(dāng)START端輸入一個(gè)正脈沖時(shí),立即啟動(dòng)0809進(jìn)行A/D轉(zhuǎn)換。START端與ALE端連在一起,由80C51WR與0809片選端(例如P2.0)通過或非門相連。

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

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

⑽Vcc:正電源電壓(+5V)。GND:接地端。2、ADC0809應(yīng)用實(shí)例

⑴中斷方式

【例9-12】按圖9-20,用中斷方式對8路模擬信號(hào)依次A/D轉(zhuǎn)換一次,并把結(jié)果存入以30H為首址的內(nèi)RAM中,試編制程序。

解:

ORG0000H;復(fù)位地址

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

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

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

ORG0100H;初始化程序首地址

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

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

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

SETBEX1;開中

SETBEA;CPU開中

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

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

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

ORG0200H;中斷服務(wù)子程序首地址PINT1:PUSHAcc;保護(hù)現(xiàn)場

PUSHPSW;MOVXA,@DPTR;讀A/D值

MOV@R1,A;存A/D值

INCDPTR;修正通道地址

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

MOVX@DPTR,A;啟動(dòng)下一通道A/DDJNZR7,GORETI;判8路采集完否?未完繼續(xù)

CLREX1;8路采集已完,關(guān)中GORETI:POPPSW;恢復(fù)現(xiàn)場

POPAcc;RETI;中斷返回⑵查詢方式工作在查詢方式時(shí),0809EOC端可不必通過反相器與或相連,直接與80C51P1口或P3口中任一端線相連?!纠?-13】圖9-20中,用P1.0直接與0809EOC端相連,試用查詢方式編制程序,對8路模擬信號(hào)依次A/D轉(zhuǎn)換一次,并把結(jié)果存入以40H為首址的內(nèi)RAM中。解:MAIN:MOVR1,#40H;置數(shù)據(jù)區(qū)首址

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

SETBP1.0;置P1.0輸入態(tài)

MOVDPTR,#0FEF8H;置0809通道0地址LOOP:MOVX@DPTR,A;啟動(dòng)A/DJNBP1.0,$;查詢A/D轉(zhuǎn)換結(jié)束否?未完繼續(xù)查詢等待

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

MOV@R1,A;存A/D值

INCDPTR;修改通道地址

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

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

RET;8路采集完畢,返回⑶延時(shí)等待方式工作在延時(shí)等待方式時(shí),0809EOC端可不必與80C51相連,是根據(jù)時(shí)鐘頻率計(jì)算出A/D轉(zhuǎn)換時(shí)間,略微延長后直接讀A/D轉(zhuǎn)換值?!纠?-14】圖9-20中,0809EOC端開路,fosc=6MHz,試用延時(shí)等待方式編制程序,對8路模擬信號(hào)依次A/D轉(zhuǎn)換一次,并把結(jié)果存入以50H為首址的內(nèi)RAM中。解:編程如下:MAIN:MOVR1,#50H;置數(shù)據(jù)區(qū)首址

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

MOVDPTR,#0FEF8H;置0809通道0地址LOOP:MOVX@DPTR,A;啟動(dòng)A/DMOVR6,#17;DJNZR6,$;延時(shí)68S:2機(jī)周×17=34機(jī)周,2S×34=68SMOVXA,@DPTR;讀A/D值

MOV@R1,A;存A/D值

INCDPTR;修正通道地址

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

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

RET;8路采集完畢,返回三、串行A/DADC0832及其接口電路

ADC0832是8位串行A/D轉(zhuǎn)換器;轉(zhuǎn)換速度較高(250KHz時(shí)轉(zhuǎn)換時(shí)間32s);單電源供電,功耗低(15mw)。1、引腳功能

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

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

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

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

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

CH0、CH1:模擬信號(hào)輸入端(雙通道);2、典型應(yīng)用電路

P1.0片選CS;

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

RXD與DI、DO端連接在一起。編碼通道選擇CH0CH100

+-01

-+10

+11

+表9-33、串行A/D轉(zhuǎn)換工作時(shí)序

工作時(shí)序分為二個(gè)階段:⑴起始和通道配置,由CPU發(fā)送,從ADC0832DI端輸入;⑵A/D轉(zhuǎn)換數(shù)據(jù)串行輸出,由ADC0832從DO端輸出,CPU接收。4、軟件編程【例9-15】按圖9-21(b)電路,試編制程序,將CH0、CH1通道輸入的模擬信號(hào)A/D轉(zhuǎn)換,分別存入30H31H中。解:AD0832:MOVSCON,#00H;置串口方式0,禁止接收

CLRES;串口禁中

MOVR0,#30H;置A/D數(shù)據(jù)存儲(chǔ)區(qū)首址

CLRP1.0;片選0832

MOVA,#06H;置CH0通道配置ADC0:MOVSBUF,A;啟動(dòng)A/DADC1:JNBTI,ADC1;串行發(fā)送啟動(dòng)及通道配置信號(hào)

CLRTI;清發(fā)送中斷標(biāo)志

SETBREN;允許(啟動(dòng))串行接收ADC2:JNBRI,ADC2;接收第一字節(jié)

CLRRI;清接收中斷標(biāo)志,同時(shí)啟動(dòng)接收第二字節(jié)

MOVA,SBUF;讀第一字節(jié)數(shù)據(jù)

MOVB,A;暫存說明:①接收第一字節(jié)的8位數(shù)據(jù)為(注意先接收低位D4):②清串行接收中斷標(biāo)志后,啟動(dòng)串行接收第二字節(jié),其數(shù)據(jù)為:③組合后的8位數(shù)據(jù)為:

④高低4位互換后的8位數(shù)據(jù)為:

ADC3:JNBRI,ADC3;接收第二字節(jié)

CLRRI;清接收中斷標(biāo)志

MOVA,SBUF;讀第二字節(jié)數(shù)據(jù)

ANLA,#0FH;第二字節(jié)屏蔽高4位

ANLB,#0FOH;第一字節(jié)屏蔽低4位

ORLA,B;組合

SWAPA;高低4位互換,組成正確的A/D數(shù)據(jù)

MOV@R0,A;存A/D數(shù)據(jù)

INCR0;指向下一存儲(chǔ)單元

MOVA,#0EH;置CH1通道配置

CJNER0,#32H,ADC0;判兩通道A/D完畢否?未完繼續(xù)

CLRREN;兩通道A/D完畢,禁止接收

SETBP1.0;清0832片選

RET;D3D2D1D0D1D2D3D4××××D7D6D5D4D3D2D1D0D7D6D5D4D7D6D5D4D3D2D1D0四、I2C串行A/D典型應(yīng)用電路

I2C串行A/D芯片PCF8591,同時(shí)具有A/D、D/A轉(zhuǎn)換功能。

1、PCF8591引腳功能

SDA、SCL:I2C總線數(shù)據(jù)線、時(shí)鐘線;

A2、A1、A0:引腳地址輸入端;

AIN0~AIN3:模擬信號(hào)輸入端,

OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端;

EXT:內(nèi)外部時(shí)鐘選擇端,EXT=0時(shí)選擇內(nèi)部時(shí)鐘;

VDD、VSS:電源、接地端;

AGND:模擬信號(hào)地;

UREF:基準(zhǔn)電壓輸入端;

AOUT:D/A轉(zhuǎn)換模擬量輸出端;

該芯片既可用于A/D轉(zhuǎn)換(模擬信號(hào)從AIN0~AIN3輸入),又可用于D/A轉(zhuǎn)換(D/A轉(zhuǎn)換模擬量從AOUT輸出),器件地址為1001,若A2A1A0接地,D/A轉(zhuǎn)換寫尋址字節(jié)SLAW=90H,A/D轉(zhuǎn)換讀尋址字節(jié)SLAR=91H。2、硬件電路設(shè)計(jì)3、片內(nèi)可編程功能

控制命令字

PCF8591內(nèi)部有一個(gè)控制寄存器,用來存放控制命令,其格式如下:COMD7D6D5D4D3D2D1D0D1、D0:A/D通道編號(hào)

00:通道0;01:通道1;10:通道2;11:通道3;D2:自動(dòng)增量選擇

D2=1時(shí),A/D轉(zhuǎn)換將按通道0~3依次自動(dòng)轉(zhuǎn)換;D3、D7:必須為0;D5、D4:模擬量輸入方式選擇位:

00:輸入方式0(四路單端輸入);

01:輸入方式1(三路差分輸入);

10:輸入方式2(二路單端一路差分輸入);

11:輸入方式3(二路差分輸入)。D6:模擬輸出允許。D6=1,模擬量輸出有效;①輸入方式0(四路單端輸入):

ANI0——通道0(單端輸入)

ANI1——通道1(單端輸入)

ANI2——通道2(單端輸入)

ANI3——通道3(單端輸入)②輸入方式1(三路差分輸入):

③輸入方式2(二路單端一路差分輸入):

④輸入方式3(二路差分輸入):⑵ADC數(shù)據(jù)操作格式SSLAWACOMASSLARAData0AData1A

發(fā)出控制命令(寫操作)

A/D轉(zhuǎn)換(讀操作)其中紅色部分由80C51發(fā)送,PCF8591接收;黑色部分由PCF8591發(fā)送,80C51接收;4、軟件編程

【例9-16】按圖9-23(b)編程將AIN0~AIN34個(gè)通道的模擬信號(hào)A/D轉(zhuǎn)換后,依次存入以50H為首址的內(nèi)RAM中。設(shè)VIIC軟件包已裝入ROM,VSDA、VS

溫馨提示

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

評論

0/150

提交評論