第九章應(yīng)用系統(tǒng)配置及接口技術(shù)_第1頁
第九章應(yīng)用系統(tǒng)配置及接口技術(shù)_第2頁
第九章應(yīng)用系統(tǒng)配置及接口技術(shù)_第3頁
第九章應(yīng)用系統(tǒng)配置及接口技術(shù)_第4頁
第九章應(yīng)用系統(tǒng)配置及接口技術(shù)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第九章應(yīng)用系統(tǒng)配置及接口技術(shù)9.1并行I/O口的擴(kuò)展

9.1.1簡單并行I/O口的擴(kuò)展

9.1.28155帶RAM和定時(shí)器/計(jì)數(shù)器的可編程并行接口芯片9.2人-機(jī)通道配置與接口技術(shù)

9.2.1鍵盤接口及處理程序

9.2.2LED顯示器接口及顯示程序

9.2.3串行口控制的鍵盤/LED顯示器接口電路9.3A/D轉(zhuǎn)換器及接口技術(shù)9.4D/A轉(zhuǎn)換器及接口技術(shù)

9.1

并行I/O口的擴(kuò)展9.1.1簡單并行I/O口的擴(kuò)展

在稍微大的系統(tǒng),單片機(jī)片的并行口便不夠用,需要擴(kuò)展。所謂簡單擴(kuò)展,就是使用通用的74系列的TTL或4000系列的CMOS芯片擴(kuò)展。

9.1.1簡單I/O接口的擴(kuò)展方法

常用74LS244作輸入接口芯片,起緩沖作用;用74LS273作輸出接口芯片,起鎖存作用。1G,2G為H時(shí),Y為高阻;1G,2G為L時(shí),Y=A

擴(kuò)展的輸入輸出口地址均為:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ⅹ

ⅹ0ⅹ

除了P2.0以外均取1,則擴(kuò)展的輸入輸出口地址寫成16進(jìn)制數(shù)均為:

FEFFH

上面電路的功能是:按下某鍵,對應(yīng)的LED發(fā)光。其程序?yàn)椋?/p>

MOVDPTR,#0FEFFHLP:MOVXA,@DPTRMOVX@DPTR,ASJMPLP9.1.2擴(kuò)展8155可編程外圍并行接口芯片

關(guān)于Intel的8155/8156:是一多功能的可編程外圍接口芯片,內(nèi)部資源有256B的RAM,2個(gè)8位、1個(gè)6位的I/O口和1個(gè)14位的“減1”計(jì)數(shù)器。40腳雙列直插封裝。1.8155的結(jié)構(gòu)與引腳2.8155的RAM和I/O口地址

其地址按片外RAM統(tǒng)一編址(16位)。

CE、IO/M接單片機(jī)的高8位地址。一、I/O口(即片內(nèi)寄存器)地址

CE=0、IO/M=1,低3位選擇寄存器二、256BRAM的地址

CE=0、,由高8位地址控制;低8位選擇RAM的256個(gè)存儲單元。38155的寄存器(6個(gè))一、命令寄存器

地址:*****000B輸入輸出PC3~PC5出工作控制二、狀態(tài)寄存器

1、地址:*****000B

2、格式及各位的意義三、PA寄存器

是PA口引腳PA0~PA7的映射地址:*****001B四、PB寄存器

是PB口引腳PB0~PB7的映射地址:*****010B五、PC寄存器

是PC口引腳PC0~PC7的映射地址:*****011B六、定時(shí)器/計(jì)數(shù)器寄存器

是一14位計(jì)數(shù)器,對應(yīng)有兩個(gè)寄存器,最高兩位設(shè)定輸出波形。1、地址:兩個(gè)寄存器的地址分別為:*****100B2、寄存器格式*****101BM2M1的意義(決定輸出波形):48155芯片的使用一、作片外256BRAM用

低8位地址范圍為:00H~FFH二、作擴(kuò)展I/O口用

PA口、PB口、PC口注意:工作方式、地址三、作定時(shí)器擴(kuò)展用

一般先寫計(jì)數(shù)常數(shù),再寫命令字。58031與8155的接口及簡單編程一、8031與8155的連接方法

二、8155的基本操作程序段

1、對8155中的RAM進(jìn)行操作例1(1)向8155RAM中的5FH單元寫入數(shù)據(jù)32H;(2)從8155RAM中的98H單元讀取數(shù)據(jù)。程序段如下:(1)寫數(shù)據(jù):

MOVDPTR,#7E5FHMOVA,#32HMOVX@DPTR,A(2)讀數(shù)據(jù):

MOVDPTR,#7E98HMOVXA,@DPTR2、對8155中的I/O口和定時(shí)器進(jìn)行操作

例2設(shè)置8155,使用I/O口和定時(shí)器:使A口為基本輸入方式,B口為基本輸出方式;定時(shí)器作方波發(fā)生器,對輸入的脈沖進(jìn)行24分頻。試編程實(shí)現(xiàn)之。

思路:先對定時(shí)器賦初值和設(shè)定輸出波形,向定時(shí)器/計(jì)數(shù)器寄存器中寫;再設(shè)定A、B口的工作方式和傳輸方向,并啟動定時(shí)器工作,向命令寄存器中寫。程序段如下:(1)對定時(shí)器賦初值和設(shè)定輸出波形:

定時(shí)器/計(jì)數(shù)器寄存器地址:7F04H、7F05HMOVDPTR,#7F04HMOVA,#24MOVX@DPTR,AINCDPTRMOVA,#01000000BMOVX@DPTR,A(2)設(shè)定A、B口的工作方式并啟動定時(shí)器工作:

命令寄存器地址:7F00HMOVDPTR,#7F00HMOVA,#11000010BMOVX@DPTR,A

9.2人-機(jī)通道配置與接口技術(shù)

9.2.1鍵盤接口及處理程序

9.2.2LED顯示器接口及顯示程序

9.2.3串行口控制的鍵盤/LED顯示器接口電路9.2.1鍵盤接口及處理程序鍵盤可以分為獨(dú)立連接式和行列式(矩陣式)兩類,每一類按其譯碼方法又都可分為編碼及非編碼兩種類型.1)獨(dú)立式非編碼鍵盤接口及處理程序檢查鍵盤是否有鍵被按下,消除按鍵抖動。硬件電路消除抖動或軟件消除抖動。抖動時(shí)間<10ms開關(guān)動作時(shí)間>100ms“1”“0”<10ms前沿抖動后沿抖動&I/O接口&+5v+5v消除抖動電路開關(guān)單片機(jī)(1)獨(dú)立式鍵盤電路:獨(dú)立式鍵盤電路:每個(gè)按鍵單獨(dú)占有一根I/O接口引線。優(yōu)點(diǎn):電路簡單;缺點(diǎn):當(dāng)鍵數(shù)較多時(shí),要占用較多的I/O線.程序P/231鍵盤接口形式:P1.0P1.1P1.7+5v

下列程序?yàn)槭÷粤塑浖ザ秳哟胧┑某绦騍tart:mova,#0ffhmovP1,aMova,P1PL1:JNBACC.0,P0fJNBACC.1,P1FJNBACC.2,P2FJNBACC.3,P3FJNBACC.4,P4FJNBACC.5,P5FJNBACC.5,P6FJNBACC.6,P7FLJMPSTART

P0F:LJMPPROM0P1F:LJMPPROM1

……….P7F:LJMPPROM7PROM0:….LJMPSTARTPROM1:…..LJMPSTART…..PROM7:….LJMPSTART

例9-1:設(shè)計(jì)一個(gè)有4個(gè)獨(dú)立式按鍵盤接口,并編寫鍵掃描程序KEY:MOVP1,#0FFHMOVA,P1CPLAANLA,#0FFHJZKEYLCALLD-10MSMOVA,P1CPLAANLA,#0FHJZKEYMOVB,AMOVA,P1CPLAANLA,#0FHKEY1:JNZKEY1LCALLD-10MSMOVA,BJBACC.0,PKEY1JBACC.1,PKEY2JBACC.2,PKEY3JBACC.3,PKEY4EKEY:RETPKEY1:LCALLK1RETPKEY2:LCALLK2RETPKEY3:LCALLK3RETPKEY4:LCALLK4RETD-10MS:MOVR7,#10HDS1:MOVR6,#0FFHDS2:DJNZR6,DS2DJNZR7,DS1RET(2)矩陣式鍵盤:

0

1+5v

C0C1R0R1鍵盤I/O接口

非編碼式鍵盤識別按鍵的方法有兩種:一是行掃描法,二是線反轉(zhuǎn)法。1)行掃描法通過行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所接的端口得到的是全“1”信號,如果有鍵按下的話,則得到非全“1”信號。

為了防止雙鍵或多鍵同時(shí)按下,往往從第0行一直掃描到最后1行,若只發(fā)現(xiàn)1個(gè)閉合鍵,則為有效鍵,否則全部作廢。找到閉合鍵后,讀入相應(yīng)的鍵值,再轉(zhuǎn)至相應(yīng)的鍵處理程序。

2)線反轉(zhuǎn)法線反轉(zhuǎn)法也是識別閉合鍵的一種常用方法,該法比行掃描速度快,但在硬件上要求行線與列線外接上拉電阻。先將行線作為輸出線,列線作為輸入線,行線輸出全“0”信號,讀入列線的值,然后將行線和列線的輸入輸出關(guān)系互換,并且將剛才讀到的列線值從列線所接的端口輸出,再讀取行線的輸入值。那么在閉合鍵所在的行線上值必為0。這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可讀到一對唯一的行列值。

鍵盤處理程序任務(wù):1.鍵輸入:檢查鍵盤是否有鍵被按下,消除按鍵抖動。確定被按鍵的鍵號,獲取鍵號。硬件電路消除抖動或軟件消除抖動。鍵譯碼:鍵號為鍵盤位置碼,根據(jù)鍵號查表得出被按鍵的鍵值。鍵值:數(shù)字鍵0~9;字符鍵0AH~0FH;功能鍵10H~。鍵碼=行首鍵號+列號(鍵號必須依次是從左至右書寫)或鍵碼=列首鍵號+行號(鍵號必須依次是從上至下書寫)3.鍵處理:

根據(jù)鍵值轉(zhuǎn)移到不同程序段。若鍵值屬于數(shù)字、字符鍵,則調(diào)用顯示數(shù)字和字符的子程序。若鍵值屬于功能鍵,則進(jìn)行多分支轉(zhuǎn)移,執(zhí)行各個(gè)功能程序段。延時(shí)等待10ms

仍有按鍵信號?Y

有按鍵信號?NYN鍵盤處理

按鍵釋放?NY二、鍵盤接口方法:1、利用單片機(jī)本身的并行口;2、利用單片機(jī)本身的串行口;3、利用通用接口芯片8155、8255等;4、利用專用接口芯片8279等。三、鍵盤接口的控制方式:1、隨機(jī)方式:每當(dāng)CPU空閑時(shí)執(zhí)行鍵盤掃描程序。2、中斷方式:鍵的按下引起中斷后,單片機(jī)對鍵盤進(jìn)行掃描。3、定時(shí)方式:單片機(jī)定時(shí)地對鍵盤進(jìn)行掃描。按鍵處理程序:延時(shí)消抖鍵掃描求鍵號延時(shí)等待鍵譯碼求鍵值修改顯示緩沖區(qū)跳轉(zhuǎn)各功能程序有按鍵輸入?確有按鍵?按鍵釋放?是數(shù)字鍵?YYYNNNYN1、使用8155作鍵盤接口:接口應(yīng)用:P2.7=0,P2.0=1:A口地址為:7F01H;C口地址為:7F03H。掃描法:列線輸出,行線輸入。列線逐列輸出0,某行有按鍵,行線輸入就為0;若無按鍵,行線輸入全部為1。0167891415鍵碼=行首鍵號+列號(鍵號必須依次是從左至右書寫)

或鍵碼=列首鍵號+行號(鍵號必須依次是從上至下書寫)2.鍵盤接口電路圖采用8155的鍵盤接口電路判定有無鍵閉合的子程序:MOV DPTR,#7F01H MOV A,#00H ;A口送00HMOVX @DPTR,AINC DPTRINC DPTR ;建立C口地址MOVX A,@DPTR ;讀C口CPL A

;A取反,無鍵按下則全“0”ANL A,#0FH ;屏蔽A高半字節(jié)(C口只4位)RET 執(zhí)行KS1子程序的結(jié)果是:有閉合鍵則(A)≠0;無閉合鍵則(A)=

0。CPLA;負(fù)邏輯不直觀,常采取行列線加反相器或軟件求反的方法把鍵盤改成正邏輯。KS1:

鍵盤掃描子程序如下:(硬件線路如圖,8155的A口、B口、C口和控制口地址分別為7F01H、7F02H、7F03H,設(shè)8155A已在主程序中初始化。已設(shè)定為A口方式0輸出,C口的低4位方式0輸入。)KEY1:ACALLKS1 ;調(diào)用判斷有無鍵按下子程序

JNZLK1 ;有鍵按下時(shí),(A)≠0轉(zhuǎn)消抖延時(shí)KEY2:ACALLTM6ms AJMPKEY1 ;無鍵按下返回LK1:ACALLTM12ms;調(diào)12ms延時(shí)子程序

ACALLKS1 ;查有無鍵按下,若有則真有鍵按下

JNZLK2 ;鍵(A)≠0逐列掃描

AJMPKEY2 ;不是真有鍵按下,返回LK2:MOVR2,#0FEH ;初始列掃描字(0列)送入R2 MOVR4,#00H ;初始列(0列)號送入R4LK4:MOVDPTR,#7F01H;DPTR指向8155PA口

MOVA,R2 ;列掃描字送至8155PA口

MOVX@DPTR,A INCDPTR ;DPTR指向8155PC口

INCDPTR MOVXA,@DPTR;從8155PC口讀入行狀態(tài)

JB ACC.0,LONE;查第0行無鍵按下,轉(zhuǎn)查第1行

MOVA,#00H ;第0行有鍵按下,行首鍵碼#00H→A AJMPLKP ;轉(zhuǎn)求鍵碼LONE:JBACC.1,LTWO;查第1行無鍵按下,轉(zhuǎn)查第2行

MOVA,#08H ;第1行有鍵按下,行首鍵碼#08H→A AJMPLKP ;轉(zhuǎn)求鍵碼LTWO:JBACC.2,LTHR ;查第2行無鍵按下,轉(zhuǎn)查第3行

MOVA,#10H;第2行有鍵按下,行首鍵碼#10H→A AJMPLKP ;轉(zhuǎn)求鍵碼LTHR:JBACC.3,NEXT ;查第3行無鍵按下,轉(zhuǎn)該查下一列

MOVA,#18H ;第3行有鍵按下,行首鍵碼#18H→ALKP:ADDA,R4 ;求鍵碼,鍵碼=行首鍵碼+列號

PUSHACC ;鍵碼進(jìn)棧保護(hù)LK3:ACALLKS1 ;等待鍵釋放

JNZLK3 ;鍵未釋放,等待

POPACC ;鍵釋放,鍵碼→A RET ;鍵掃描結(jié)束,出口狀態(tài)(A)=鍵碼NEXT:INC R4 ;準(zhǔn)備掃描下一列,列號加1 MOV A,R2 ;取列掃描字送累加器A JNB ACC.7,KEND;判斷8列掃描否?掃描完返回

RL A ;掃描字左移一位,變?yōu)橄乱涣袙呙枳?/p>

MOV R2,A ;掃描字送入R2保存

AJMPLK4 ;轉(zhuǎn)下一列掃描KEND:AJMPKEY1KS1:MOV DPTR,#7F01H;DPTR指向8155PA口

MOV A,#00H ;全掃描字→A MOVX@DPTR,A;全掃描字送往8155PA口

INC DPTR ;DPTR指向8155PC口

INC DPTR MOVXA,@DPTR ;讀入PC口行狀態(tài)

CPL A ;變正邏輯,以高電平表示有鍵按下

ANL A,#0FH ;屏蔽高4位,只保留低4位行線值

RET ;出口狀態(tài):(A)≠0時(shí)有鍵按下TM12ms:MOVR7,#18H;延時(shí)12ms子程序TM: MOVR6,#0FFHTM6:DJNZR6,TM6 DJNZR7,TM RETTM6ms:MOVR7,#0CH ;延時(shí)6ms子程序TM2:MOVR6,#0FFHTM62:DJNZR6,TM6 DJNZR7,TM RET2、使用8279作鍵盤接口:P207圖7.36P2.7=0時(shí):A0=P2.0=1:命令口地址為:7FFFH;A0=P2.0=0:數(shù)據(jù)口地址為:7EFFH。(程序略)鍵碼=行首鍵號+列號(鍵號必須依次是從左至右書寫)0134567874LS156為雙2-4譯碼器/分配器3、使用中斷方式作鍵盤接口:

當(dāng)有鍵按下時(shí),INT1為低,向CPU發(fā)出中斷申請,在中斷服務(wù)程序中除完成鍵識別、鍵功能處理外,仍須有清除鍵抖動等功能。0481215913鍵碼=列首鍵號+行號(鍵號必須依次是從上至下書寫)236710111415

BUFFEQU30HKEYADR:MOVA,SBUFCJNEA,#0FH,KYARD1AJMPDIGPROKYARD1:JCDIGPROKEYTBL:MOVDPTR,#JMPTBLCLRCSUBBA,#10HRLAJMP@A+DPTRJMPTBL:AJMPAAAAJMPBBBAJMPCCCAJMPDDD

…….

下面的程序是用行掃描法進(jìn)行鍵掃描的程序,其中KS1為判鍵閉合的子程序。有鍵閉合時(shí)(A)=0。DIR為數(shù)碼顯示器掃描顯示子程序,執(zhí)行一遍的時(shí)間約6ms。程序執(zhí)行后,若鍵閉合,鍵值存入A中,鍵值的計(jì)算公式是:鍵值=行號×4+列號;若無鍵閉合,則A中存入標(biāo)志FFH。KEY1:LCALLKS1;檢查有無閉合鍵?JNZLK1;(A)=0,有鍵閉合則轉(zhuǎn)

LJMPLK8;無閉合鍵則返回LK1:LCALLDIR;延時(shí)12msLCALLDIR;清抖

LCALLKS1;再檢查有鍵閉合否?JNZLK2;有鍵閉合則轉(zhuǎn)

LJMPLK8;無鍵閉合則返回LK2:MOVR3,#00H;行號初值送R3MOVR2,#FEH;行掃描初值送R2LK3:MOVDPTR,#0101H;指向8155口AMOVA,R2;行掃描值送AMOVX@DOTR,A;掃描1行

INCDPTRINCDPTR;指向8155口CMOVXA,@DPTR;讀入列值

ANLA,#0FH;保留低4位

MOVR4,A;暫存列值

CJNZA,#0FH,LK4;列值非全“1”則轉(zhuǎn)

MOVA,R2;行掃描值送AJNBACC.7,LK8;掃至最后一行則轉(zhuǎn)RLA;未掃完,則移至下一行MOVR2,A;行值存入R2中INCR3;行號加1SJMPLK3;轉(zhuǎn)至掃描下一行LK4:MOVA,R3;行號送入AADDA,R3;行號×2MOVR5,AADDA,R5;行號×4MOVR5,A;存入R5中

MOVA,R4;列值送ALK5:RRCA;右移一位

JNCLK6;該位為0則轉(zhuǎn)

INCR5;列號加1SJMPLK5;列號未判完則繼續(xù)LK6:MOV20H,R5;存鍵值LK7:LCALLDIR;掃描一遍顯示器

LCALLKS1;發(fā)掃描信號

JNZLK7;鍵未釋放等待

LCALLDIR;鍵已釋放

LCALLDIR;延時(shí)12ms,清抖

MOVA,20H;鍵值存入A中KND:RETLK8:MOVA,#FFH;無鍵標(biāo)志FFH存入A中

RETKS1:MOVDPTR,#0101H;判鍵子程序

MOVA,#00H;全掃描信號

MOVX@DPTR,A;發(fā)全掃描信號

INCDPTRINCDPTR;指向8155口CMOVXA,@DPTR;讀入列值

ANLA,#0FH;保留低4位

ORLA,#F0H;高4位取“1”CPLA ;取反,無鍵按下則全“0”RET9.2.2LED顯示器接口及顯示程序1.LED顯示器結(jié)構(gòu)與原理圖7段LED數(shù)碼顯示器各段碼位的對應(yīng)關(guān)系如下:表十六進(jìn)制數(shù)及空白與P的顯示段碼

LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種方式(1)靜態(tài)顯示方式編程容易,管理也簡單,但占用I/O口線資源較多.(2)動態(tài)顯示簡化電路,因人眼的視覺暫留時(shí)間為0.1s(100ms),所以每位顯示的間隔不必超過20ms,并保持延時(shí)一段時(shí)間,以造成視覺暫留效果,給人看上去每個(gè)數(shù)碼管總在亮,這種方式稱為軟件掃描顯示.2.LED顯示器接口電路圖6位動態(tài)顯示器接口圖顯示子程序流程圖程序清單如下:DIR:MOVR0,#79H;顯示緩沖區(qū)首址送R0 MOVR3,#01H;使顯示器最右邊位亮

MOVA,R3LD0:MOVDPTR,#0101H;掃描值送PA口

MOVX@DPTR,A INCDPTR;指向PB口

MOVA,@R0;取顯示數(shù)據(jù)

ADDA,#12H;加上偏移量

MOVXA,@A+PC;取出字形

MOVX@DPTR,A;送出顯示ACALLDL1 ;延時(shí)

INCR0 ;緩沖區(qū)地址加1MOVA,R3;JBACC.5,LD1 ;掃到第6個(gè)顯示位了嗎?

RLA ;沒有,R3左環(huán)移一位,掃描下一個(gè)顯示位

MOVR3,AAJMPLD0LD1:RETDSEG:DB3FH,06H,5BH,4FH,66H,6DH;顯示段碼表DSEG1:DB7DH,07H,7FH,6FH,77H,7CHDSEG2:DB39H,5EH,79H,71H,73H,3EHDSEG3:DB31H,61H,1CH,23H,40H,03HDSEG4:DB18H,00H,00H,00HDL1:MOVR7,#02H[DW];延時(shí)子程序DL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET

9.2.3串行口控制的鍵盤/LED顯示器接口電路

見P/2457.4.3鍵盤顯示器接口82791.8279的組成及引腳

8279芯片有40條引腳,由單一+5V電源供電。它主要由以下幾部分組成:(1)I/O控制和數(shù)據(jù)緩沖器;(2)控制和定時(shí)寄存器及定時(shí)控制部分;(3)掃描計(jì)數(shù)器;(4)回送緩沖器與鍵盤去抖動控制電路;(5)FIFO(先進(jìn)后出)寄存器和狀態(tài)電路;(6)顯示器地址寄存器及顯示RAM。圖8279的引腳圖2.8279的接口電路與應(yīng)用圖9.318031與8279接口連接框圖

9.3A/D轉(zhuǎn)換器及接口技術(shù)

9.4D/A轉(zhuǎn)換器及接口技術(shù)

9.3A/D轉(zhuǎn)換器接口

1.概述

A/D轉(zhuǎn)換器用以實(shí)現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換。按轉(zhuǎn)換原理可分為4種:計(jì)數(shù)式、雙積分式、逐次逼近式以及并行式A/D轉(zhuǎn)換器。逐次逼近式A/D轉(zhuǎn)換器是一種速度較快,精度較高的轉(zhuǎn)換器,其轉(zhuǎn)換時(shí)間大約在幾微秒到幾百微秒之間。常用的這種芯片有:(1)ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器;(2)ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器;(3)ADC0816/0817型8位MOS型A/D轉(zhuǎn)換器;量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)之一。量化間隔由下式計(jì)算:

其中n為A/D轉(zhuǎn)換器的位數(shù)。量化誤差有兩種表示方法:一種是絕對量化誤差;另一種是相對量化誤差。絕對量化誤差相對量化誤差逐次比較型A/D轉(zhuǎn)換器原理圖:

2.典型A/D轉(zhuǎn)換器芯片ADC0809簡介ADC0809是采用CMOS工藝制造的雙列直插式單片8位A/D轉(zhuǎn)換器。分辨率8位,精度7位,帶8個(gè)模擬量輸入通道,有通道地址譯碼鎖存器,輸出帶三態(tài)數(shù)據(jù)鎖存器。啟動信號為脈沖啟動方式,最大可調(diào)節(jié)誤差為±1LSB,ADC0809內(nèi)部沒有時(shí)鐘電路,故CLK時(shí)鐘需由外部輸入,fclk允許范圍為500kHz~1MHz,典型值為640kHz。每通道的轉(zhuǎn)換需66~73個(gè)時(shí)鐘脈沖,大約100~110μs。工作溫度范圍為-40℃~+85℃。功耗為15mW,輸入電壓范圍為0~5V,單一+5V電源供電。它可以直接與Z80、8085、8080、8031等CPU相連,也可以獨(dú)立使用。圖ADC0809的內(nèi)部結(jié)構(gòu)圖9.33ADC0809引腳圖表9.9地址碼與輸入通道的對應(yīng)關(guān)系圖9.34ADC0809時(shí)序圖3.ADC0809與8031的中斷方式接口電路圖9.36ADC0809中斷方式硬件接口

這里將ADC0809作為一個(gè)外部擴(kuò)展的并行I/O口,直接由8031的P2.0和WR脈沖進(jìn)行啟動。因而其端口地址為0FEFFH。用中斷方式讀取轉(zhuǎn)換結(jié)果的數(shù)字量,模擬量輸入通道選擇端ADDA、ADDB、ADDC分別與8031的P0.0、P0.1、P0.2直接相連,CLK由8031的ALE提供。啟動數(shù)據(jù)轉(zhuǎn)換:例如選中0通道C、B、A為000,

MOVDPTR,#0FEFFH;端口地址送DPTRMOVA,#00H;選擇0通道輸入

MOVX@DPTR,A;啟動輸入轉(zhuǎn)換數(shù)據(jù)的傳送:MOVDPTR,#0FEF8H;端口地址送DPTRMOVXA,@DPTR;讀取IN0的轉(zhuǎn)換結(jié)果4.“轉(zhuǎn)換數(shù)據(jù)傳送”的時(shí)機(jī)(1)定時(shí)傳送方式(AD0809轉(zhuǎn)換時(shí)間為128US)(2)查詢方式(3)中斷方式

(1)定時(shí)傳送方式用定時(shí)傳送方式,對8個(gè)通道的模擬量逐個(gè)進(jìn)行A/D轉(zhuǎn)換.MAIN:MOVR1,#dataMOVDPTR,#7FF8HMOVR7,#08HMOVR2,#00HLOOP:MOVA,R2MOVX@DPTR,ALCALLDELAYMOVXA,@DPTRMOV@R1,AINCDPTRINCR1INCR2DJNZR7,LOOPRETDELAY:…..;延時(shí)128us

MAIN:MOVR1,#dataMOVDPTR,#7FF8HMOVR7,#08HMOVR2,#00HLOOP:MOVA,R2MOVX@DPTR,AHERE:JNBP1.0,$MOVXA,@DPTRMOV@R1,AINCDPTRINCR1INCR2DJNZR7,LOOPRET

(2)查詢方式(EOC與單片機(jī)的P1.0連接)ORG0000HAJMPINADC

ORG1000HINADC:SETBIT1;INT1設(shè)為邊沿觸發(fā)

SETBEA;開中斷INT1SETBEX1

MOVDPTR,#0FEF8H;端口地址送DPTRMOVA,#00H;選擇0通道輸入MOVX@DPTR,A;啟動輸入

HERE:SJMPHERE(3)中斷方式

ORG0013HAJMPPINT1PINT1:…MOVDPTR,#0FEF8H;端口地址送DPTRMOVXA,@DPTR;讀取IN0的轉(zhuǎn)換結(jié)果

MOV50H,A;存入50H單元

MOVA,#00HMOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論