《微型計(jì)算機(jī)原理及接口》課件第8章_第1頁
《微型計(jì)算機(jī)原理及接口》課件第8章_第2頁
《微型計(jì)算機(jī)原理及接口》課件第8章_第3頁
《微型計(jì)算機(jī)原理及接口》課件第8章_第4頁
《微型計(jì)算機(jī)原理及接口》課件第8章_第5頁
已閱讀5頁,還剩270頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章基于總線的I/O接口設(shè)計(jì)8.1基于ISA總線的I/O接口設(shè)計(jì)8.2基于PCI總線的I/O接口設(shè)計(jì)8.3基于USB總線的I/O接口設(shè)計(jì)習(xí)題8.1基于ISA總線的I/O接口設(shè)計(jì)

例8.18位ISA總線接口。圖8.1是一個(gè)8位ISA總線上的接口,該接口利用可編程并行接口芯片8255實(shí)現(xiàn)。當(dāng)對(duì)8255芯片作適當(dāng)?shù)某跏蓟?,該接口就可以作?/16位I/O端口實(shí)現(xiàn)數(shù)據(jù)傳輸。該接口采用部分地址譯碼,端口地址為B8H~BFH。若要從I/O端口(假設(shè)為8255的A、B聯(lián)合口)獲得16位數(shù)據(jù),則在8位ISA總線上的操作可為:

圖8.1一個(gè)8位ISA總線接口

MOVAL,92H;初始化8255,OUT0B3H,AL;A、B口方式0,輸入INAL,0B1H ;從8255B口讀入數(shù)據(jù)高8位MOVAH,ALIN?AL,0B0H;從8255A口讀入數(shù)據(jù)低8位

…圖8.2一個(gè)16位ISA總線接口

若要從I/O端口(假設(shè)為U1和U2的A口)輸出16位數(shù)據(jù),則在16位ISA總線上的操作可為:

MOVDX,0F006HMOVAL,89HOUTDX,AL ;初始化U1,A口方式0,輸出MOVDX,0F007HMOVAL,89HOUTDX,AL ;初始化U2,A口方式0,輸出

MOVDX,0F000HMOVAX,5555HOUTDX,AX ;16位數(shù)據(jù)從U1和U2的A口同時(shí)送出

…若要從I/O端口(假設(shè)為U1和U2的A、B口)輸出32位數(shù)據(jù)(假設(shè)高16位在IFOH存儲(chǔ)單元中,低16位在IFOL存儲(chǔ)單元中),則在16位ISA總線上的操作可為:

MOVDX,0F006HMOVAX,8989HOUTDX,AX ;初始化U1和U2,A、B口方式0,輸出

MOVDX,0F000HMOVAX,IFOLOUTDX,AX ;低16位數(shù)據(jù)從U1和U2的A口同時(shí)送出MOVDX,0F002HMOVAX,IFOHOUTDX,AX ;高16位數(shù)據(jù)從U1和U2的B口同時(shí)送出

…8.1.1LED接口

1.LED數(shù)碼管

LED數(shù)碼管是工業(yè)控制系統(tǒng)中十分常見的一種顯示裝置。它價(jià)格便宜,顯示簡(jiǎn)潔、醒目。它可以顯示數(shù)字或字符,可以一位或多位組合。

LED數(shù)碼管分為共陽和共陰兩種結(jié)構(gòu)。在封裝上有將一位、二位或更多位封裝在一起的。由于篇幅限制,這里只介紹一位共陽封裝的LED數(shù)碼管,如圖8.3所示。

圖8.3共陽LED數(shù)碼管的示意圖

2.接口電路

1)用通用并行接口芯片作接口在6、7章中介紹的鎖存器、三態(tài)鎖存器及可編程并行接口8255均可作為LED的接口器件。在此,利用鎖存器74LS273作為輸出接口,并用開路集電極門7406作為驅(qū)動(dòng)器和LED數(shù)碼管相連,用三態(tài)門74LS244作為按鈕S的輸入接口,連接電路如圖8.4所示。

圖8.4LED數(shù)碼管及按鈕的一種接口電路

在圖8.4中,要使數(shù)碼管顯示某數(shù)字或符號(hào),必須用軟件來產(chǎn)生相應(yīng)的數(shù)據(jù),這是因?yàn)榻涌陔娐分袥]有硬件譯碼器。例如,要顯示數(shù)字3,則LED的a、b、c、d、g各段應(yīng)亮而e、f應(yīng)不亮。結(jié)合圖8.4,則應(yīng)向74LS273寫數(shù)據(jù)4FH。為了方便,可在內(nèi)存中建立有關(guān)顯示的數(shù)字(或符號(hào))與相對(duì)應(yīng)輸出數(shù)據(jù)的對(duì)應(yīng)表。下面一段程序可判斷按鈕的狀態(tài)。當(dāng)S閉合時(shí)數(shù)碼管顯示3;當(dāng)S斷開時(shí)顯示6。

START:MOV DX,00F1HIN AL, DXTEST AL,01HJNZ KOPENMOV DX,00F0HMOV AL,4FHOUT DX,ALJMP STARTKOPEN:MOV DX,00F0HMOV AL,7DHOUT DX,ALJMP START

2)用LED譯碼器作接口目前有許多芯片生產(chǎn)商提供了將BCD數(shù)據(jù)或十六進(jìn)制數(shù)據(jù)直接轉(zhuǎn)換成7段LED數(shù)碼管顯示信息的譯碼器芯片。為了方便用戶設(shè)計(jì),這類芯片大多集成了鎖存器與驅(qū)動(dòng)器,使得它們可以直接作為LED數(shù)碼管與計(jì)算機(jī)系統(tǒng)(總線)間的接口。

(1)DM9368——7段譯碼驅(qū)動(dòng)鎖存器。DM9368是由FairchildSemiconductor公司生產(chǎn)的一款7段譯碼驅(qū)動(dòng)器,在其內(nèi)部加入了輸入鎖存電路和用于直接驅(qū)動(dòng)共陰極型LED顯示的恒流輸出電路。該芯片如圖8.5所示。

圖8.5DM9368芯片(a)引腳圖;(b)引腳功能描述

表8.1DM9368芯片的真值表

利用DM9368實(shí)現(xiàn)的一種LED數(shù)碼管接口電路如圖8.6所示。

圖8.6利用DM9368實(shí)現(xiàn)LED數(shù)碼管接口電路

若利用圖8.6電路中的4個(gè)數(shù)碼管,實(shí)現(xiàn)將存儲(chǔ)單元BUF中的4位十六進(jìn)制數(shù)加以顯示,并每經(jīng)過1秒,重新讀取BUF單元數(shù)據(jù),更新顯示,則控制程序如下:

MOVCL,4RP:MOVAX,BUFMOVBL,AL

ANDAL,0FH

OUT0A0H,AL

MOVAL,BL

ANDAL,0F0HSHRAL,CLOUT0A1H,ALMOV

AL,AHANDAL,0FHOUT0A2H,ALMOV

AL,AHAND

AL,0F0HSHRAL,CLOUT0A3H,ALCALLDLY1s ;DLY1s為1s延遲程序JMPRP

(2)MM74C912/917——6位數(shù)字BCD/Hex顯示控制驅(qū)動(dòng)器。MM74C912/917是另一類可用于LED接口的器件。MM74C912/917是NationalSemiconductor公司生產(chǎn)的6位BCD/Hex數(shù)字顯示的控制與驅(qū)動(dòng)器。與DM9368一個(gè)芯片驅(qū)動(dòng)一個(gè)7段數(shù)碼管不同,一個(gè)MM74C912/917芯片可控制驅(qū)動(dòng)6個(gè)8段數(shù)碼管。

MM74C912/917顯示控制器是帶有存儲(chǔ)器的接口元件,可驅(qū)動(dòng)6個(gè)數(shù)位的8段LED顯示。顯示控制器通過5個(gè)數(shù)據(jù)輸入A、B、C、D和DP接收數(shù)據(jù)信息,并通過3個(gè)地址輸入K1、K2和K3接收數(shù)位信息。

MM74C912/917芯片的引腳如圖8.7所示,真值表見表8.2,顯示字符格式見表8.3,工作時(shí)序如圖8.8所示。

圖8.7MM74C912/917芯片的引腳圖

表8.2真

表8.3顯示字符格式

圖8.8MM74C912/917的工作時(shí)序

MM74C912段譯碼器將BCD數(shù)據(jù)轉(zhuǎn)換成7段格式,MM74C917將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換成十六進(jìn)制格式。

MM74C912/917顯示控制器利用CMOS技術(shù)制造,5V供電,所有輸入是TTL兼容的,段輸出通過限流電阻直接驅(qū)動(dòng)LED顯示。數(shù)位輸出設(shè)計(jì)為直接驅(qū)動(dòng)一個(gè)發(fā)射極接地的數(shù)位晶體管的基極,而不需要達(dá)林頓(Darlington)結(jié)構(gòu)。正如圖8.9所示,顯示控制器包含6個(gè)5位寄存器,其中任何一個(gè)可以被隨機(jī)地寫。內(nèi)部的多路轉(zhuǎn)換開關(guān)掃描寄存器并刷新顯示。對(duì)于超負(fù)荷微處理器而言,這種只寫存儲(chǔ)器與自掃描顯示的結(jié)合使顯示控制器成為一種“刷新典范”,且使LED動(dòng)態(tài)顯示的設(shè)計(jì)實(shí)現(xiàn)變得十分簡(jiǎn)便。

圖8.9MM74C912/917顯示控制器的內(nèi)部電路框圖

利用MM74C912/917實(shí)現(xiàn)的一種LED數(shù)碼管接口電路如圖8.10所示。若圖8.10電路中采用MM74C912芯片作為LED數(shù)碼管接口,可實(shí)現(xiàn)十進(jìn)制數(shù)顯示?,F(xiàn)在在以DATA為首地址的存儲(chǔ)單元中存放有一個(gè)6位非壓縮型BCD數(shù)(十進(jìn)制數(shù)),高4位為整數(shù)部分,低兩位為小數(shù)部分,數(shù)碼高位放在高地址中,依次排列。將這個(gè)帶有小數(shù)點(diǎn)的6位數(shù)加以顯示的控制子程序如下:

LEDDISPLAY:PUSHSIPUSHDXPUSHAXLEASI,DATAMOVDX,02F8HMOVAL,[SI+5]OUTDX,AL;千位數(shù)輸出到數(shù)碼管1INCDXMOVAL,[SI+4]OUTDX,AL;百位數(shù)輸出到數(shù)碼管2INCDXMOVAL,[SI+3]OUTDX,AL

;十位數(shù)輸出到數(shù)碼管3INCDXMOVAL,[SI+2]ORAL,10HOUTDX,AL;個(gè)位數(shù)+小數(shù)點(diǎn)輸出到數(shù)碼管4INCDXMOVAL,[SI+1]OUTDX,AL;十分之一位數(shù)輸出到數(shù)碼管5INCDXMOVAL,[SI]OUTDX,AL;百分之一位數(shù)輸出到數(shù)碼管6POPAXPOPDXPOPSIRET若圖8.10電路中采用MM74C912芯片作為LED數(shù)碼管接口,可實(shí)現(xiàn)十進(jìn)制數(shù)顯示。假設(shè)在以DATA為首地址的存儲(chǔ)單元中存放有一個(gè)6位非壓縮型BCD數(shù)(十進(jìn)制數(shù)),高4位為整數(shù)部分,低兩位為小數(shù)部分,數(shù)碼高位放在高地址中,依次排列。將這個(gè)帶有小數(shù)點(diǎn)的6位數(shù)加以顯示的控制子程序如下:

LEDDISPLAY:PUSHSIPUSHDXPUSHAXLEASI,DATAMOVDX,02F8HMOVAL,[SI+5]OUTDX,AL;千位數(shù)輸出到數(shù)碼管1INCDXMOVAL,[SI+3]OUTDX,AL;十位數(shù)輸出到數(shù)碼管3INCDXMOVAL,[SI+2]ORAL,10HOUTDX,AL;個(gè)位數(shù)+小數(shù)點(diǎn)輸出到數(shù)碼管4INCDXMOVAL,[SI+1]OUTDX,AL;十分之一位數(shù)輸出到數(shù)碼管5INCDXMOVAL,[SI]OUTDX,AL;百分之一位數(shù)輸出到數(shù)碼管6POPAXPOPDXPOPSIRET圖8.10MM74C912/917實(shí)現(xiàn)的LED數(shù)碼管接口電路

8.1.2鍵盤接口

1.非編碼式鍵盤

1)鍵盤的基本結(jié)構(gòu)一般非編碼式鍵盤采用矩陣結(jié)構(gòu),如圖8.11所示。圖中采用6×5矩陣,可接30個(gè)按鍵。微處理器通過對(duì)行和列進(jìn)行掃描來確定有沒有鍵按下,是哪一個(gè)鍵按下。然后將按下的鍵的行、列編碼送處理器進(jìn)行處理。

圖8.11矩陣式鍵盤及其接口

在30個(gè)按鍵中,16個(gè)(0~F)是十六進(jìn)制鍵,其余則是功能鍵。每個(gè)鍵占有惟一的行與列的交叉點(diǎn),每個(gè)交叉點(diǎn)分配有相應(yīng)的鍵值。只要按下某一個(gè)鍵,經(jīng)鍵盤掃描程序和接口,并經(jīng)鍵盤譯碼程序,就可以得到相應(yīng)的鍵值。也就是說,微處理器知道了是哪一個(gè)鍵被按下,就可以作相應(yīng)的處理。如按下2行、

4列的按鍵(十六進(jìn)制“4”鍵),則經(jīng)鍵盤掃描和鍵盤譯碼以后,就可以在寄存器AL中得到對(duì)應(yīng)的鍵值04H。在圖8.11中,按鍵對(duì)應(yīng)的鍵值被標(biāo)注在交叉點(diǎn)的旁邊。

2)鍵盤接口該鍵盤有6條行選擇線和5條列選擇線。使用一個(gè)輸出口作為行選擇線輸出,其對(duì)應(yīng)關(guān)系如下:

同樣,用一個(gè)輸入口作為列選擇線輸入,其對(duì)應(yīng)關(guān)系為:

根據(jù)上述關(guān)系,我們選用一塊8D鎖存器作為行輸出口,其各位輸出經(jīng)反相后與鍵盤的各對(duì)應(yīng)行選擇線相連接。選擇一塊8輸入/輸出的三態(tài)門作為列輸入口,它的各位輸入與鍵盤的各對(duì)應(yīng)列選擇線相接。行、列線的端口地址分別為DIGLH和KBSEL。電路的具體連接見圖8.11。

矩陣式鍵盤的掃描過程如下:在初始狀態(tài)時(shí),所有行線均為高電平。掃描開始,首先給第0行加一個(gè)低電平(由鎖存器輸出高電平加至反相器而得到),其余行加高電平,即掃描第0行。然后檢查一下各列信號(hào),看是否有哪一列輸出變成了低電平(當(dāng)鍵被按下時(shí),行線和列線通過鍵接觸在一起,行線的低電平就傳送到對(duì)應(yīng)的列線),如果其中有一列變?yōu)榈碗娖?,那么根?jù)行、列號(hào)即可知道是哪一個(gè)鍵被按下了。如果未發(fā)現(xiàn)有變?yōu)榈碗娖降牧芯€,則接著掃描下一行。這時(shí),使第0行變高,第1行變低,然后再檢查各列線情況……如此循環(huán)掃描,只要有鍵被按下,就可以檢測(cè)出。

在掃描鍵盤過程中,應(yīng)注意如下問題:

(1)鍵抖動(dòng)。按鍵會(huì)產(chǎn)生機(jī)械抖動(dòng),這種抖動(dòng)經(jīng)常發(fā)生在鍵被按下或抬起的瞬間,一般持續(xù)幾毫秒到十幾毫秒,隨鍵的結(jié)構(gòu)的不同而不同。在掃描鍵盤過程中,必須想辦法消除鍵抖動(dòng),否則會(huì)引起錯(cuò)誤。消除鍵抖動(dòng)可以用硬件電路來實(shí)現(xiàn),如圖8.12所示。它利用觸發(fā)器來鎖定按鍵狀態(tài),以消除抖動(dòng)的影響。較簡(jiǎn)單的方法是用軟件延時(shí)來消除鍵的抖動(dòng)。也就是說,一旦發(fā)現(xiàn)有鍵按下,就延時(shí)20ms以后再去檢測(cè)按鍵的狀態(tài)。這樣就避開了鍵發(fā)生抖動(dòng)的那一段時(shí)間,使CPU能可靠地讀取按鍵狀態(tài)。

圖8.12按鍵的硬件消抖電路

(2)串鍵。串鍵是指一個(gè)以上的按鍵被同時(shí)按下而產(chǎn)生的不確定或錯(cuò)誤問題。解決串鍵可采取的方法有:

一是無效處理,當(dāng)發(fā)現(xiàn)有一個(gè)以上按鍵同時(shí)被按下時(shí),認(rèn)為此次按鍵輸入無效;二是等待釋放,將最后釋放的按鍵作為有效鍵處理;三是硬件封鎖,當(dāng)發(fā)現(xiàn)有一按鍵被按下時(shí),硬件電路即刻封鎖其他按鍵的輸入,直到該鍵處理完畢。

(3)應(yīng)防止按一次鍵而產(chǎn)生多次處理的情況。這種情況的發(fā)生是由于鍵掃描速度和鍵處理速度較快,當(dāng)某一個(gè)按下的按鍵還未釋放時(shí),鍵掃描程序和鍵處理程序已執(zhí)行了多遍。這種程序執(zhí)行和按鍵動(dòng)作的不同步,將造成按一次鍵有多個(gè)鍵值輸入的錯(cuò)誤狀態(tài)。為了避免發(fā)生這種情況,必須保證按一次鍵,CPU只對(duì)該鍵作一次處理。為此,在鍵掃描程序中不僅要檢測(cè)是否有鍵按下,在有鍵按下的情況下,作一次鍵處理;

而且在鍵處理完畢后,還應(yīng)檢測(cè)按下的鍵是否抬起,只有當(dāng)按下的鍵抬起以后,程序才繼續(xù)往下執(zhí)行。這樣每按一次鍵,只作一次鍵處理,使兩者達(dá)到了同步,消除了一次按鍵有多次鍵值輸入的錯(cuò)誤情況。

3)鍵值的確定由圖8.11可知,鍵的行、列號(hào)不是該鍵所對(duì)應(yīng)的鍵值。那么,CPU如何根據(jù)行列號(hào)得到所按下鍵的鍵值呢?最方便的方法是利用按鍵所在行列號(hào),形成一個(gè)查表值,然后查表得到相應(yīng)的鍵值。如圖8.11所示,當(dāng)某一個(gè)鍵被按下時(shí),根據(jù)該鍵所處的行、列號(hào),CPU可以通過接口得到相應(yīng)的行寄存器值及列寄存器值,如表8.4所示。

表8.4行、列寄存器值一覽表

例如,鍵“8”處于3行,3列。那么,當(dāng)按下該鍵時(shí),行寄存器和列寄存器的值分別為08H和17H。為了簡(jiǎn)化鍵值表,我們將行寄存器和列寄存器兩個(gè)字節(jié)的值拼成一個(gè)字節(jié)。拼字的規(guī)律是:

(FFH-行號(hào))×16+列寄存器值

從而得到查表值。例如,鍵“8”查表值可按上述規(guī)律計(jì)算得:

鍵“8”查表值=(FFH-03H)×16+17H=C0H+17H=D7H鍵值表如表8.5所示。表中列出了28個(gè)按鍵的查表值。表的首地址為KYTBL。表8.5鍵

4)鍵盤掃描及譯碼程序鍵盤掃描及譯碼程序的流程圖如圖8.13所示。首先向行寄存器送FFH,由于鎖存器輸出加有反相器,故使所有行線置為低電平。然后讀列輸入端口,看是否有某一條列線變成低電平(只要有鍵按下,總有一條列線為低電平),即列輸入口的b0~b4位中有某一位為0。

圖8.13鍵盤掃描及譯碼程序流程圖

如果有鍵按下,則進(jìn)行鍵盤掃描;否則就說明無鍵按下,就跳過鍵盤掃描程序。當(dāng)發(fā)現(xiàn)有鍵按下時(shí),就進(jìn)行逐行掃描。首先使L0行線置成低電平(行寄存器b0位送1),其他行線L1~L5均為高電平(行寄存器b1~b5位送0)。然后讀列輸入端口,看是否有某一條列線是低電平(表示有鍵按下)。如果有的話,根據(jù)所在行、列號(hào)即可從鍵值表中查得按下鍵的對(duì)應(yīng)鍵值。如果所有列線都是高電平,則說明按下的鍵不在當(dāng)前掃描的那一行。接著就掃描L1行,使L1行變低,L0、

L2~L5行線均為高電平。如此循環(huán),最終可以對(duì)所有鍵掃描一次。為了消除鍵抖動(dòng),當(dāng)判斷出鍵盤上有鍵按下時(shí),應(yīng)先延時(shí)20ms,然后再進(jìn)行鍵盤掃描。用匯編語言編寫的鍵盤掃描程序如下:

;鍵盤掃描程序DECKY:MOV AL,3FH MOV DX,DIGLHOUT DX,AL ;行線全部置為低電平MOV DX,KBSELIN AL,DXAND AL,1FHCMP AL,1FH ;判有無鍵閉合JZ DISUP ;無鍵閉合轉(zhuǎn)顯示程序CALL D20MS ;消除鍵抖動(dòng),D20MS為20ms延時(shí)子程序MOV BL,01H ;初始化行掃描值

KEYDN1:MOV DX,DIGLHMOV AL,BLOUT DX,AL ;行掃描MOV DX,KBSELIN AL,DX ;該行是否有鍵閉合AND AL,1FH ;有則轉(zhuǎn)譯碼程序CMP AL,1FHJNZ KEYDN2SHL BL,1MOV AL,40HCMP AL,BL ;所有行都掃描完否JNZ KEYDN1 ;未完JMP DISUP ;掃描完轉(zhuǎn)顯示

KEYDN2:MOV CH,00H ;鍵盤譯碼程序KEYDN3:DEC CHSHR BL,1JNZ KEYDN3SHL CH,1SHL CH,1SHL CH,1SHL CH,1ADD AL,CH ;實(shí)現(xiàn)(FFH-行號(hào))×16+列MOV DI,OFFSETKYTBL ;端口值

KEYDN4:CMPAL,[DI] ;尋找鍵值

JZ KEYDN5

INCDI

INCBL ;表序號(hào)加1

JMPKEYDN4KEYDN5:MOVDX,KBSELKEYDN6:IN AL, DX

ANDAL,1FH

CMPAL,1FH ;檢測(cè)鍵是否釋放

JNZ KEYDN6 ;未釋放繼續(xù)檢測(cè)

CALLD20MS ;消除鍵抖動(dòng)

MOV

AL,BL ;鍵值送AL…2.編碼式鍵盤

1)與系統(tǒng)的連接方式目前,微機(jī)系統(tǒng)采用的101/102鍵盤或104鍵盤均屬于編碼式鍵盤。由于這類鍵盤的按鍵較多,如果仍采用非編碼式鍵盤的處理方法的話,可以看出,為了要及時(shí)發(fā)現(xiàn)鍵盤中的按鍵是否按下,CPU必須定時(shí)或不斷地利用軟件(掃描程序)對(duì)鍵盤進(jìn)行掃描,這樣CPU的開銷太大,降低了CPU的工作效率。為了提高CPU的工作效率,有關(guān)廠家專門開發(fā)了用于鍵盤接口的大規(guī)模集成電路芯片,例如8279、SSK814。這兩種芯片適用于矩陣式鍵盤接口,它們共同的特點(diǎn)是:鍵盤掃描及鍵碼讀取都是由這些接口的硬件動(dòng)作完成的,無需CPU進(jìn)行干預(yù);只有在有鍵按下時(shí),接口才向CPU提出中斷請(qǐng)求,要求CPU將鍵碼讀入。這樣CPU的工作效率就可大大提高。因此,編碼式鍵盤大多是通過專用鍵盤接口與系統(tǒng)進(jìn)行連接的。

2)專用鍵盤接口芯片

8279是一種通用可編程鍵盤和顯示器接口芯片。它可為64個(gè)觸點(diǎn)和鍵盤矩陣提供掃描式接口。只要按下一個(gè)鍵就會(huì)產(chǎn)生一個(gè)表示鍵位置的6位編碼,它和鍵盤有關(guān)狀態(tài)信息一起存入先進(jìn)先出(FIFO)寄存器中。當(dāng)FIFO寄存器中有數(shù)據(jù)時(shí),8279就會(huì)向CPU提出中斷請(qǐng)求,等待CPU將鍵編碼取走。消除鍵抖動(dòng)及鍵封鎖也是由8279本身的硬件實(shí)現(xiàn)的。只要開始對(duì)8279進(jìn)行初始化,此后就可按指定的功能要求實(shí)現(xiàn)CPU與鍵盤的接口。利用8279芯片作為鍵盤接口的框圖如圖8.14所示。

SSK814芯片也是專門用于鍵盤接口的大規(guī)模集成電路芯片。它與8279一樣,也可以方便地與8×8鍵盤矩陣接口。但是,與8279最主要的區(qū)別是,SSK814芯片是用4條線以串行通信方式與CPU交換信息的。這種信息傳送方式的好處是,SSK814往往可以和鍵盤配置在一起,利用串行通信線和CPU進(jìn)行通信。這樣鍵盤可以考慮離CPU遠(yuǎn)一些,在結(jié)構(gòu)設(shè)計(jì)時(shí)要方便得多。而8279由于以系統(tǒng)總線方式和CPU接口,因此一般都放在CPU板附近。利用SSK814作為鍵盤接口的框圖如圖8.15所示。

圖8.14利用8279作為鍵盤接口的框圖

圖8.15利用SSK814作為鍵盤接口的框圖

3)PC鍵盤所有的PC鍵盤都是完全可互換的,它是PC中少數(shù)的幾個(gè)從不會(huì)與其他部件發(fā)生沖突的設(shè)備之一。PC鍵盤采用智能接口與微機(jī)相連,該智能接口在微控制器(即單片機(jī))的控制下實(shí)現(xiàn)按鍵檢測(cè)、鍵碼識(shí)別及與微機(jī)雙向通信等功能。

XT鍵盤是最老的PC鍵盤,總鍵數(shù)為83個(gè)。AT鍵盤增加了鍵盤指示燈或數(shù)據(jù)鍵塊,總鍵數(shù)為84個(gè),它使XT鍵盤基本上在一夜之間便消失了。AT增強(qiáng)型鍵盤新增了一些功能鍵,在主鍵和附加鍵塊之間有獨(dú)立的光標(biāo)控制,它是目前能買到的惟一老式鍵盤,總鍵數(shù)為101個(gè)。目前流行的鍵盤是Windows鍵盤,它是AT鍵盤的變種,它增加了特定的Windows鍵:兩個(gè)啟動(dòng)菜單鍵和一個(gè)與按鼠標(biāo)右鍵等同的菜單鍵,總鍵數(shù)為104個(gè)。

AT鍵盤接口采用專用控制器負(fù)責(zé)鍵盤掃描。若有閉合鍵,則將其掃描碼存入FIFO緩沖器(16/20字節(jié))。當(dāng)主機(jī)允許鍵盤輸入時(shí),掃描碼經(jīng)串行接口送往主機(jī)的鍵盤接口8042。Intel8042/8742是一種通用微控制器,用來構(gòu)成PC擴(kuò)展鍵盤接口,它將來自串口的鍵盤掃描碼轉(zhuǎn)換成與XT鍵盤兼容的系統(tǒng)掃描碼,送至CPU。鍵盤接口與CPU間的通信是利用鍵盤緩沖區(qū)以中斷方式完成的,其接口框圖如圖8.16所示。

圖8.16AT鍵盤接口框圖

8.1.3光電隔離接口

1.光電隔離器件光電隔離器件的種類很多,但其基本的原理是完全一樣的。典型的光電隔離器件的電原理圖如圖8.17所示。圖中,光電隔離器件由兩部分組成:發(fā)光二極管和光敏三極管。當(dāng)發(fā)光二極管通過一定的電流時(shí),它就會(huì)發(fā)光。該光被光敏三極管接收,就使它的C、E兩端導(dǎo)通;當(dāng)發(fā)光二極管內(nèi)沒有電流流過時(shí),就沒有光照射到光敏三極管上,從而使三極管截止,C、E兩端開路。用此方法就可以將邏輯值以光的有無方式從左端傳到右端。

圖8.17

光電隔離器件的電原理圖

2.光電隔離輸入/輸出接口電路光電隔離器件只是用于實(shí)現(xiàn)電路之間在不共地的情況下進(jìn)行電氣連接的部件,因此它不能單獨(dú)作為接口部件。光電隔離輸入接口電路可利用三態(tài)門與光電隔離器件組合而成,型電路如圖8.18(a)所示。三態(tài)門對(duì)外設(shè)信息的輸入時(shí)刻進(jìn)行控制,光電隔離器件則完成弱電設(shè)備(如微機(jī))與強(qiáng)電設(shè)備(大電流或高電壓外設(shè))的不共地連接。光電隔離輸出接口電路可由鎖存器與光電隔離器件組合而成,典型電路如圖8.18(b)所示。鎖存器在規(guī)定的時(shí)間為外設(shè)提供穩(wěn)定的輸出,而光電隔離器件完成微機(jī)與強(qiáng)電外設(shè)的不共地連接。

圖8.18光電隔離輸入、輸出接口電路(a)輸入接口;(b)輸出接口

3.光電隔離接口應(yīng)用舉例繼電器是工業(yè)控制系統(tǒng)中常用的設(shè)備,利用它可以實(shí)現(xiàn)電源的通/斷、

閥門的開/關(guān)、

設(shè)備的啟/停等控制。繼電器內(nèi)部由電磁鐵、金屬簧片與兩個(gè)觸點(diǎn)構(gòu)成。在繼電器不工作時(shí),常開觸點(diǎn)處于斷開狀態(tài),常閉觸點(diǎn)處于接通狀態(tài)。當(dāng)繼電器工作時(shí),電磁鐵上的線圈被通以一定額度的電流,電磁鐵具有了磁性,于是吸合金屬簧片,使繼電器內(nèi)部的常開觸點(diǎn)處于接通狀態(tài),常閉觸點(diǎn)處于斷開狀態(tài),實(shí)現(xiàn)繼電器觸點(diǎn)的一次狀態(tài)轉(zhuǎn)換。

光電隔離輸入接口通常用于接收強(qiáng)電設(shè)備信息或強(qiáng)電設(shè)備動(dòng)作的狀態(tài)反饋。這種信息或反饋可能是電信號(hào)形式,也可能是機(jī)械觸點(diǎn)的斷開或閉合形式。這里我們假定狀態(tài)反饋的是繼電器常閉觸點(diǎn)的斷開或閉合,則光電隔離輸入接口電路的具體實(shí)例如圖8.19所示。當(dāng)繼電器的常閉觸點(diǎn)閉合時(shí),12V電源經(jīng)限流電阻R3為發(fā)光二極管提供一個(gè)工作電流。為使該發(fā)光二極管正常發(fā)光,流過它的工作電流一般要求為10mA左右。發(fā)光二極管發(fā)出的光使光敏三極管導(dǎo)通,從而使光敏三極管的集電極c變成低電平,再經(jīng)三態(tài)反相緩沖器74LS240,變成高電平送到CPU的數(shù)據(jù)總線上。三態(tài)緩沖器為光電隔離器件與CPU總線提供了一個(gè)數(shù)據(jù)緩沖。只有CPU的地址選通信號(hào)SL1加到該緩沖器的選通端時(shí),光電隔離器件的狀態(tài)才能加至數(shù)據(jù)總線并讀到CPU內(nèi)部。

光電隔離輸出接口一般是CPU和大功率執(zhí)行機(jī)構(gòu)(如大功率繼電器、電機(jī)等)之間的接口??刂菩畔⑼ㄟ^它才能送到大功率的執(zhí)行機(jī)構(gòu)。CPU與繼電器之間的接口如圖8.19所示,它也是光電隔離輸出接口的一個(gè)實(shí)例。圖8.19中的輸出控制用一塊

8位鎖存器進(jìn)行緩沖,再經(jīng)一塊反相器與發(fā)光二極管的負(fù)端相接。該反相器可以用OC門,也可以用吸收電流較大的TTL門(如74LS240)。

圖8.19光電隔離輸入/輸出接口電路實(shí)例

當(dāng)繼電器的工作電流不太大(小于50mA)時(shí),光敏三極管的集電極可以串接一個(gè)繼電器線包,以直接驅(qū)動(dòng)繼電器工作。當(dāng)所接的繼電器的工作電流較大時(shí),需要加一級(jí)驅(qū)動(dòng)放大電路(可以用一級(jí)前置繼電器,也可以用一級(jí)晶體管放大電路)。與繼電器線包并聯(lián)的二極管起阻尼作用,在繼電器斷電時(shí),它為在線圈中的工作電流提供一個(gè)低電阻通路,以防止光敏三極管被反向電壓擊穿。利用圖8.19電路,可實(shí)現(xiàn)對(duì)加熱器加電20min、斷電10min的循環(huán)控制,并在繼電器不能正常工作時(shí)給出異常指示(假定將FLG單元設(shè)置為AAH),同時(shí)停止對(duì)加熱器的控制??刂瞥绦蛉缦?假定三態(tài)門的端口地址為1000H,鎖存器的端口地址為1001H):

FLG DB?START:MOV DX,1001HMOVAL,01HOUT DX,AL;加熱器通電CALL DLY10ms;DLY10ms為10ms延遲程序,等待吸合MOV DX,1000HIN AL,DXAND AL,80HJNZ ERRCALL DLY10min ;延時(shí)10minCALL DLY10minMOV DX,1001HMOV AL,00HOUT DX,AL ;加熱器斷電CALL DLY10msMOV DX,1000HIN AL,DXAND AL,80HJZ ERRCALL DLY10minJMP STARTERR: MOV FLG,0AAHNOPHLT

4.應(yīng)注意的幾個(gè)問題

(1)由于光電耦合器件在工作過程中需要進(jìn)行電→光→電的兩次物理量的轉(zhuǎn)換,而這種轉(zhuǎn)換是需要時(shí)間的,因此輸入/輸出速率有一定限制,一般在幾十到幾百千赫茲左右。

(2)當(dāng)光電隔離器件的一端具有高電壓時(shí),為避免輸入/輸出之間被擊穿,要選擇有合適的絕緣電壓的光電耦合器件。一般常見的電壓為0.5~10kV。

(3)光電隔離器件的兩邊在電氣上是不共地的。因此,在設(shè)計(jì)電路時(shí)應(yīng)確保這一點(diǎn),

特別是供電電源,兩邊都應(yīng)是獨(dú)立的,否則將功虧一簣。

(4)光電隔離輸出接口通常用于對(duì)大功率執(zhí)行機(jī)構(gòu)的控制,這種控制要求非??煽俊榱耸刮C(jī)應(yīng)用系統(tǒng)確知控制動(dòng)作已經(jīng)執(zhí)行,一般在每一個(gè)控制動(dòng)作執(zhí)行后,應(yīng)有一個(gè)相應(yīng)的狀態(tài)信息反饋給CPU。在編寫程序時(shí),應(yīng)使控制動(dòng)作和反饋檢測(cè)互鎖,即在一個(gè)控制動(dòng)作未完成以前,下一個(gè)控制動(dòng)作不應(yīng)該執(zhí)行。

(5)對(duì)光電隔離輸入/輸出接口電路中的電阻要進(jìn)行適當(dāng)?shù)倪x擇。R1、R2與R3為限流電阻,一般選擇幾百歐姆;R為保護(hù)電阻,一般選擇十幾歐姆到幾千歐姆。

8.1.4A/D與D/A變換器接口

1.數(shù)字到模擬(D/A)變換器

1)D/A變換器的基本原理及技術(shù)指標(biāo)典型的D/A變換器芯片通常由模擬開關(guān)、權(quán)電阻網(wǎng)絡(luò)、緩沖電路等組成,其框圖如圖

8.20所示。

圖8.20典型D/A變換器芯片的組成框圖

數(shù)字量輸入的每一位都對(duì)應(yīng)一個(gè)模擬開關(guān)。當(dāng)某位為1時(shí),與其相對(duì)應(yīng)的模擬開關(guān)接通,參考電壓通過權(quán)電阻網(wǎng)絡(luò),在輸出端產(chǎn)生與該位二進(jìn)制數(shù)相對(duì)應(yīng)的權(quán)值電壓。當(dāng)有多位為1時(shí),其相應(yīng)的各位權(quán)值電壓經(jīng)電阻網(wǎng)絡(luò)求和輸出,從而實(shí)現(xiàn)數(shù)模轉(zhuǎn)換,即其中,Di=0或1(i=0,1,2,...,n-1)。

D/A變換器的主要技術(shù)指標(biāo)有:分辨率、精度、變換時(shí)間和動(dòng)態(tài)范圍。

(1)分辨率。分辨率表示D/A變換器的一個(gè)LSB(最低有效位)輸入使輸出變化的程度,通常用D/A變換器輸入的二進(jìn)制位數(shù)來描述,如8位、10位、12位等。對(duì)于一個(gè)分辨率為n位的D/A變換器來說,當(dāng)D/A變換器輸入變化1LSB時(shí),其輸出將變化滿刻度值的2-n。例如,當(dāng)

10位D/A變換器的輸出電壓為0~+5V時(shí),則其分辨率為4.88mV;

而當(dāng)

12位D/A變換器的滿刻度值仍為+5V時(shí),則其分辨率為1.22mV。可見,位數(shù)愈高,分辨率愈好。

(2)精度。精度表示由于D/A變換器的引入,變換器的輸出和輸入之間產(chǎn)生的誤差。

D/A變換器的誤差主要由下面幾部分組成:①非線性誤差。在滿刻度范圍內(nèi),偏離理想的轉(zhuǎn)換特性的最大值稱為非線性誤差。②溫度系數(shù)誤差。在使用溫度范圍內(nèi),溫度每變化1℃,D/A內(nèi)部各種參數(shù)(如增益、線性度、零漂等)的變化所引起的輸出變化量稱為溫度系數(shù)誤差。③

電源波動(dòng)誤差。由標(biāo)準(zhǔn)電源及D/A芯片的供電電源之間的波動(dòng)在其輸出端所產(chǎn)生的變化量稱為電源波動(dòng)誤差。

誤差的表示方法有兩種:絕對(duì)誤差和相對(duì)誤差。絕對(duì)誤差用D/A變換器的輸出變化量來表示,如幾分之幾伏;也有用D/A變換器最低有效位LSB的幾分之幾來表示的,如(1/4)LSB。相對(duì)誤差是將絕對(duì)誤差除以滿刻度的值并乘以100%。例如絕對(duì)誤差為±0.05V,輸出滿刻度值為5V,則相對(duì)誤差可表示為±1%。完整的D/A變換電路還應(yīng)包括與D/A芯片輸出相接的運(yùn)算放大器,這些器件也會(huì)給D/A變換器帶來誤差??紤]到這些因素是相對(duì)獨(dú)立的,因此D/A變換器的總精度可用均方誤差來表示,可寫為:

標(biāo)準(zhǔn)差為:

(8-1)(8-2)若某系統(tǒng)要求D/A變換電路的總誤差必須小于

0.1%。已知某D/A芯片的最大非線性誤差為

0.05%。那么根據(jù)式(8-1)可以確定,電源波動(dòng)、溫度漂移和運(yùn)算放大器所引起的均方誤差為:

又假設(shè),后三者是相等的,則經(jīng)計(jì)算可得:

由此誤差分配,我們就可以選擇合適的電源及運(yùn)算放大器,使其滿足D/A變換電路的精度要求。

當(dāng)然,反過來也可以已知其他各種誤差,再來推算D/A芯片的非線性誤差,最后再根據(jù)此誤差來選擇合適的D/A芯片。需要特別指出的是,D/A芯片的分辨率會(huì)對(duì)系統(tǒng)誤差產(chǎn)生影響,因?yàn)樗_定了系統(tǒng)控制精度,即確定了控制電壓的最小量化電平。這種影響是系統(tǒng)固有的。為了消除(近似消除)這種影響,一般在系統(tǒng)設(shè)計(jì)中應(yīng)這樣來選擇D/A變換器的位數(shù),即使其最低有效位1位的變化所引起的誤差遠(yuǎn)遠(yuǎn)小于D/A芯片的總誤差。如上例所述,系統(tǒng)要求D/A變換電路的誤差小于0.1%,那么D/A芯片的位數(shù)應(yīng)選擇為12位,因?yàn)?2位D/A的最低有效位(1位)的變化所引起的誤差為0.02%(1/4096)。

(3)變換時(shí)間。當(dāng)數(shù)字信號(hào)滿刻度變化時(shí),從數(shù)碼輸入到輸出模擬電壓達(dá)到其滿刻度值±(1/2)LSB所需的時(shí)間稱為變換時(shí)間。該時(shí)間限制了D/A變換器的速率,它表征了D/A變換器的最高轉(zhuǎn)換頻率。例如,后面要提到的DAC0832的變換時(shí)間為1μs,表明其最高變換頻率為1MHz。各種D/A芯片都具備各自的變換時(shí)間。需要注意的是,因?yàn)镈/A變換電路還包括輸出電路中的運(yùn)算放大器,所以D/A變換電路的變換時(shí)間應(yīng)為D/A芯片的變換時(shí)間和運(yùn)算放大器的建立時(shí)間之和。例如D/A芯片的變換時(shí)間為

1μs,運(yùn)算放大器的頻率響應(yīng)為

1MHz(建立時(shí)間為

1μs),那么整個(gè)D/A變換電路的變換時(shí)間為2μs。如果系統(tǒng)要求的D/A變換時(shí)間是

1μs,則應(yīng)重新選擇速度更高的D/A芯片和運(yùn)算放大器。

(4)動(dòng)態(tài)范圍。所謂動(dòng)態(tài)范圍,就是D/A變換電路的最大和最小的電壓輸出值范圍。D/A變換電路后接的控制對(duì)象不同,其要求也有所不同。

D/A芯片的動(dòng)態(tài)范圍一般決定于參考電壓UREF的高低,參考電壓高,動(dòng)態(tài)范圍就大。參考電壓的大小通常由D/A芯片手冊(cè)給出。整個(gè)D/A變換電路的動(dòng)態(tài)范圍還和輸出電路的運(yùn)算放大器的級(jí)數(shù)及連接方法有關(guān)。有時(shí),即使D/A芯片的動(dòng)態(tài)范圍較小,但只要適當(dāng)?shù)剡x擇相應(yīng)的運(yùn)算放大器作輸出電路,就可擴(kuò)大變換電路的動(dòng)態(tài)范圍。

2)典型的D/A變換器芯片舉例目前各國生產(chǎn)的D/A變換器的型號(hào)很多,如按數(shù)碼位數(shù)分有8位、10位、12位等;

如按速度分又有低速、高速等。但是,無論是哪一種型號(hào)的芯片,它們的基本原理和功能是一致的,其芯片的引腳定義也是雷同的。一般都有數(shù)碼輸入端和模擬量的輸出端。其中模擬量的輸出端有單端輸出和差動(dòng)輸出兩種,有電流輸出(最常見)與電壓輸出之分。D/A芯片所需參考電壓UREF由芯片外電源提供。為了使D/A變換器能連續(xù)輸出模擬信號(hào),CPU送給D/A變換器的數(shù)碼一定要進(jìn)行鎖存保持,然后再與D/A變換器相連接。有的D/A變換器芯片內(nèi)部帶有鎖存器,那么此時(shí)D/A變換器可作為CPU的一個(gè)外圍設(shè)備端口,掛在總線上。在需要進(jìn)行D/A變換時(shí),CPU通過片選信號(hào)和寫控制信號(hào)將數(shù)據(jù)寫至D/A變換器。

(1)引腳及其功能。D/A變換器DAC0832的引腳及內(nèi)部結(jié)構(gòu)分別如圖8.21和8.22所示。

圖8.21DAC0832的引腳

圖8.22DAC0832的內(nèi)部結(jié)構(gòu)

(2)工作時(shí)序。D/A芯片DAC0832的工作時(shí)序如圖8.23所示。從DAC0832芯片的內(nèi)部結(jié)構(gòu)圖可以看出,D/A變換是分兩個(gè)步驟進(jìn)行的。首先,CPU將要變換的數(shù)據(jù)送到D0~D7端,使ILE=1,CS=0,WR1=0,這時(shí)數(shù)據(jù)可以鎖存到DAC0832的輸入寄存器中,但輸出的模擬量并未改變。為了使輸出的模擬量與輸入的數(shù)據(jù)相對(duì)應(yīng),接著應(yīng)使WR2、XFER同時(shí)有效。在這兩個(gè)信號(hào)的作用下,輸入寄存器中的數(shù)據(jù)才被鎖存到變換寄存器中,再經(jīng)過變換網(wǎng)絡(luò),使輸出模擬量發(fā)生一次新的變化。

圖8.23DAC0832的工作時(shí)序

(3)DAC0832的幾種典型輸出連接方式。D/A芯片將數(shù)字量轉(zhuǎn)換為模擬量時(shí)有兩種輸出形式,即電流型與電壓型。一般微機(jī)應(yīng)用系統(tǒng)往往需要電壓輸出,當(dāng)D/A變換器輸出為電流時(shí),就必須進(jìn)行電流至電壓的轉(zhuǎn)換。

單極性輸出電路。單極性輸出電路如圖8.24所示。D/A芯片輸出的電流i經(jīng)輸出電路轉(zhuǎn)換成單極性的電壓輸出。圖8.24(a)為反相輸出電路,其輸出電壓為:

UOUT=-iR(8-3)圖8.24單極性輸出電路(a)反相輸出;(b)同相輸出

圖8.24(b)是同相輸出電路,其輸出電壓為:

(8-4)②

雙極性輸出電路。在某些微機(jī)應(yīng)用系統(tǒng)中,要求D/A的輸出電壓是雙極性的,例如要求輸出-5~+5V電壓。在這種情況下,D/A的輸出電路要作相應(yīng)的變化。圖8.25就是DAC0832雙極性輸出電路的實(shí)例。

圖8.25雙極性輸出電路

如圖8.25所示,D/A變換器的電流輸出經(jīng)運(yùn)算放大器A1和A2的偏移和放大后,在運(yùn)放A2的輸出端可得到雙極性-5~+5V的輸出。圖8.25中UREF為A2提供偏移電流,且UREF的極性選擇應(yīng)使偏移電流的方向與A1輸出電流的方向相反。再選擇R3=R4=2R2,以便使偏移電流恰好為A1輸出電流的一半,從而使A2的輸出特性在A1輸出特性的基礎(chǔ)上上移1/2的動(dòng)態(tài)范圍。由電路參數(shù)計(jì)算可得到最后的輸出電壓表達(dá)式為:

UOUT=-2U1-UREF

(8-5)設(shè)U1為0~-5V,則選取UREF為+5V。那么:

UOUT=(0~10V)-5V=-5~5V(8-6)

(4)DAC0832與8088微處理器的連接。DAC0832是一種8位的D/A芯片,片內(nèi)有兩個(gè)寄存器作為輸入和輸出之間的緩沖,這種芯片可以掛接到微機(jī)系統(tǒng)總線(如ISA)上。圖8.26是0832與8位ISA總線連接的電路圖。圖8.26中的雙極性輸出端為UOUT。當(dāng)D/A變換器輸入端的數(shù)據(jù)在00H~FFH之間變化時(shí),UOUT輸出將在-5~+5V之間變化。如果想要單極性0~+5V輸出,那么只要使UREF=-5V,然后直接從運(yùn)算放大器A1的輸出端輸出即可。在圖中的輸出端UOUT接一個(gè)680~6800pF的電容是為了平滑D/A變換器的輸出,同時(shí)也可以提高電路抗脈沖干擾的能力。

由于D/A芯片是掛接在微機(jī)系統(tǒng)總線上的,因此在編制D/A驅(qū)動(dòng)程序時(shí),只要把D/A芯片看成是一個(gè)輸出端口就行了。向該端口送一個(gè)8位的數(shù)據(jù),在D/A輸出端就可以得到一個(gè)相應(yīng)的輸出電壓。設(shè)D/A的端口地址為

278H,則用

8086匯編語言書寫的、能產(chǎn)生鋸齒波的程序如下:

;用D/A產(chǎn)生鋸齒波的程序DAOUT:MOV DX,278H ;端口地址送MOV AL,00H ;準(zhǔn)備起始輸出數(shù)據(jù)LOOP:OUT DX,ALDEC ALJMP LOOP ;循環(huán)形成周期鋸齒波

圖8.26DAC0832與PC/XT總線的連接圖

很顯然,利用圖8.26電路編寫不同的驅(qū)動(dòng)程序,可以產(chǎn)生各種各樣的波形,例如方波、三角波、階梯波、梯形波乃至正弦波等。在圖8.26的基礎(chǔ)上,請(qǐng)閱讀下面的程序,判斷UOUT的波形。

START:MOV DX,0278HNEXT1:INC ALOUT DX,ALCMP AL,0FFHJNE NEXT1NEXT2:DEC ALOUT DX,ALCMP AL,00HJNE NEXT2JMP NEXT1

2.模擬到數(shù)字(A/D)變換器

A/D變換器與D/A變換器一樣,是微機(jī)應(yīng)用系統(tǒng)的一種重要接口。數(shù)據(jù)采集器中就包含有這種接口。它可以把外界的模擬量,通過A/D變換器變成數(shù)字量,送給微機(jī)。

A/D變換器的種類很多,如計(jì)數(shù)式A/D變換器、雙積分式A/D變換器、逐次反饋型A/D變換器等??紤]到精度及變換速度的折中,實(shí)際中常采用逐次反饋型A/D變換器。

1)A/D變換器的基本工作原理及結(jié)構(gòu)

(1)A/D變換器的基本工作原理。逐次反饋型A/D變換器的基本工作原理及變換過程和用天平稱某一物體重量的過程十分相似。例如,某一個(gè)12位的A/D變換器,其輸入的模擬電壓最大為5V。那么,該A/D變換器輸出的對(duì)應(yīng)值就為FFFH。其最低有效位

1位所代表的模擬電壓值稱為量化間隔Δ(或稱當(dāng)量)。Δ的定義為:

(8-7)在本例中,

(8-8)現(xiàn)在如果在A/D變換器的輸入端加0~5V的任意一個(gè)模擬電壓,其變換過程如下所述。首先輸入電壓減去二進(jìn)制位最高位的權(quán)值電壓(12位A/D的最高位為D11,最低位為D0,權(quán)值電壓就是該位二進(jìn)制位的權(quán)值乘以當(dāng)量),如果夠減,則該位就置“1”,然后用差值再與次高位的權(quán)值電壓比較;如果不夠減,則該位就置“0”,并再將原值與次高位進(jìn)行比較。按此規(guī)律,一直比較到最低有效位為止。這樣就可以得到變換后的二進(jìn)制數(shù)碼。

現(xiàn)設(shè)輸入模擬電壓為4.5V,其具體變換過程如下:

位序號(hào)比較表達(dá)式 二進(jìn)制值D11 4.5V-2048×1.22mV=2V >0 1D10 2V-1024×1.22mV=0.75V >0 1D9 0.75V-512×1.22mV=0.125V >0 1D8 0.125V-256×1.22mV <0 0D7 0.125V-128×1.22mV <0 0D6 0.125V-64×1.22mV=0.046V >0 1D5 0.046V-32×1.22mV=0.0069V>0 1D4 0.0069V-16×1.22mV <0 0D3 0.0069V-8×1.22mV <0 0D2 0.0069V-4×1.22mV=0.0021V>0 1D1 0.0021V-2×1.22mV <0 0D0

0.0021V-1×1.22mV

>0 1

(2)A/D變換器的結(jié)構(gòu)框圖。一種逐次反饋型A/D變換器的結(jié)構(gòu)框圖如圖8.27所示。從圖中可以看到,它由5大部分組成:接口控制邏輯、逐次變換寄存器、D/A變換器、比較器及三態(tài)驅(qū)動(dòng)器。在有的A/D變換器芯片中,還包含有參考電源等其他附屬電路。上述電路的工作過程完全和前述一樣。在啟動(dòng)脈沖控制下,接口控制邏輯在時(shí)鐘脈沖的驅(qū)動(dòng)下,首先使逐次變換寄存器的最高位置“1”,其輸出經(jīng)D/A變換器后形成權(quán)值電壓,并在比較器中與輸入電壓相比較。當(dāng)輸入電壓大于D/A變換器輸出電壓時(shí),比較器輸出就控制變換寄存器,使其最高位保持為“1”,接著使次高位置“1”;當(dāng)輸入電壓小于D/A變換器的輸出電壓時(shí),比較器輸出便控制變換寄存器,使其最高位置“0”,并使次高位接著置“1”。這樣逐位比較下去,直至最低位比較結(jié)束為止。變換結(jié)束后,在逐次變換寄存器中所存放的二進(jìn)制數(shù)碼就是與輸入電壓對(duì)應(yīng)的變換后的二進(jìn)制數(shù)據(jù)。

圖8.27逐次反饋型A/D變換器的結(jié)構(gòu)框圖

2)A/D變換器的主要技術(shù)指標(biāo)

(1)精度。A/D變換器的總精度由各種因素引起的誤差所決定。這些誤差有:①

量化誤差。A/D變換器的量化誤差決定于A/D變換器的轉(zhuǎn)換特性。一般的A/D變換器的轉(zhuǎn)換特性如圖8.28所示。當(dāng)模擬量的值在0~0.5V范圍變化時(shí),數(shù)字量輸出為000B;當(dāng)模擬量的值在0.5~1.5V范圍變化時(shí),數(shù)字量輸出為

001B。這樣,在給定數(shù)字量情況下,實(shí)際模擬量與理論模擬量之差最大為±0.5V。這種誤差是由轉(zhuǎn)換特性造成的,是一種原理性誤差,也是無法消除的誤差。該A/D轉(zhuǎn)換特性表明,其量化間隔Δ為

1V。由此可以推出,量化誤差用絕對(duì)誤差可表示為:

用相對(duì)誤差可表示為:

也有人用LSB/2來表示量化誤差。

這樣,一旦A/D變換器的位數(shù)確定以后,其量化誤差也就隨之確定了。

非線性誤差。A/D變換器的非線性誤差是指在整個(gè)變換量程范圍內(nèi),數(shù)字量所對(duì)應(yīng)的模擬輸入信號(hào)的實(shí)際值與理論值之差的最大值。理論上圖8.28的縱坐標(biāo)與橫坐標(biāo)的關(guān)系應(yīng)是一條直線;而對(duì)于實(shí)際的A/D變換器,兩者的關(guān)系則可能是一種一定形狀的曲線。所謂非線性誤差,就是由于關(guān)系的非線性而偏離理想直線的最大值,常用LSB來表示。例如AD574的非線性誤差為±1LSB。

圖8.28A/D變換器的轉(zhuǎn)換特性

③電源波動(dòng)誤差。由于A/D變換器中包含有運(yùn)算放大器,有的還利用外接電源產(chǎn)生參考電壓,因此,供電電源的變化就會(huì)直接影響A/D變換器的精度。A/D變換器對(duì)電源變化的靈敏度可用相對(duì)誤差來表示,但在更多的情況下可用絕對(duì)誤差(LSB)來表示。例如,手冊(cè)中給出AD574的電源靈敏度為:+13.5V≤VCC≤+16.5V ±2LSB-16.5V≤VDD≤-13.5V ±LSB/2+4.5V≤VLOGIC≤+13.5V ±2LSB④溫度漂移誤差。溫度漂移誤差是由于溫度變化而使A/D變換器發(fā)生的誤差。⑤零點(diǎn)漂移誤差。零點(diǎn)漂移誤差是由于輸入端零點(diǎn)漂移而引起的誤差。⑥

參考電源誤差。有的A/D變換器需使用者外接參考電源。由于參考電源在A/D變換器中相當(dāng)于用天平稱重時(shí)的砝碼,因此它的誤差將直接影響到A/D變換器的精度。通常選用參考電源時(shí),要求其精度要比由量化誤差引起的精度高一個(gè)數(shù)量級(jí)以上。

上述這些誤差構(gòu)成了A/D變換器的總誤差。在計(jì)算A/D變換器總誤差值時(shí),應(yīng)用各種誤差的均方和的根來表示。例如,總誤差可表示為:

(8-9)其中,ε1~ε5為各因素引起的誤差,ε總為A/D變換器的總誤差。

(2)變換時(shí)間(或變換速率)。完成一次A/D變換所需要的時(shí)間為變換時(shí)間。變換速率(頻率)是變換時(shí)間的倒數(shù)。例如AD574KD的變換時(shí)間為35μs,其變換速率為28.57kHz。變換時(shí)間是A/D變換器的重要參數(shù)。目前,有變換時(shí)間為數(shù)百毫秒到1納秒的各種A/D變換器可供我們選用。所選A/D變換器的最大變換時(shí)間應(yīng)不大于采樣頻率的倒數(shù),即采樣周期。

(3)輸入動(dòng)態(tài)范圍。一般A/D變換器的模擬電壓輸入范圍大約為

0~5V或0~10V。在某些A/D變換器芯片中備有不同的模擬電壓輸入范圍的引腳。例如AD574的10VIN引腳可輸入0~10V電壓,而20VIN引腳可輸入0~20V電壓。

3)A/D變換器芯片及應(yīng)用在這里僅介紹兩塊典型的A/D變換器的應(yīng)用。(1)12位A/D變換器芯片AD574。①

AD574的引腳及功能。AD574變換器的引腳如圖8.29所示。

圖8.29AD574的引腳圖

各引腳的定義如下:

REFOUT:內(nèi)部參考電源電壓輸出(+10V)。

REFIN:參考電壓輸入。

BIP:偏置電壓輸入。

10VIN:±5V輸入或0~10V輸入。

20VIN:±10V輸入或0~20V輸入。

DB0~DB11:高字節(jié)為DB8~DB11,低字節(jié)為DB0~DB7。

STS:“忙”信號(hào)輸出,高電平有效。

12/8:變換輸出字長選擇端,輸入為高電平時(shí),變換字長輸出為12位;輸入為低電平時(shí)按8位輸出。

CS:片選信號(hào)。

A0:字節(jié)地址控制輸入,在啟動(dòng)A/D時(shí)(R/=0),用來控制轉(zhuǎn)換長度。A0=0時(shí)轉(zhuǎn)換長度為12位,A0=1時(shí)轉(zhuǎn)換長度為8位。在變換數(shù)據(jù)輸出時(shí),在12/=0的情況下,A0=0,輸出高8位數(shù)據(jù)DB4~DB11;A0=1時(shí),輸出低4位數(shù)據(jù)DB0~DB3。

R/C:數(shù)據(jù)讀輸出和轉(zhuǎn)換控制輸入。

CE:工作允許信號(hào),高電平有效。+15V、-15V:+15V、-15V電源輸入端。

AGND:模擬地。

DGND:數(shù)字地。

②AD574的工作時(shí)序。AD574的控制功能如表8.6所示。

表8.6AD574的控制功能

A/D變換器芯片內(nèi)部集成有高精度參考電壓形成電路,可滿足12位A/D變換的要求。同時(shí),其內(nèi)部還集成有變換時(shí)鐘電路,故無需外接時(shí)鐘。這些都為使用者提供了很大的方便。

AD574的一次變換時(shí)間大約為15~35μs,該時(shí)間隨型號(hào)的不同而有所區(qū)別,其變換過程的時(shí)序關(guān)系如圖8.30所示。

圖8.30AD574的工作時(shí)序

③AD574的應(yīng)用。下面對(duì)以AD574芯片構(gòu)成的A/D變換器電路實(shí)例進(jìn)行說明。通過實(shí)例使讀者能較清楚地了解設(shè)計(jì)A/D變換器電路的基本內(nèi)容和方法。

a.AD574的模擬輸入電路?!衲M輸入電路的極性選擇。由AD574引腳圖可知,它有兩個(gè)模擬電壓輸入引腳,即10VIN和20VIN,具有10V和20V的動(dòng)態(tài)范圍。這兩個(gè)引腳的輸入電壓可以是單極性的也可以是雙極性的,可通過改變輸入電路的連接形式來進(jìn)行選擇,如圖8.31所示。

輸入路數(shù)的擴(kuò)展。一般A/D芯片只有一個(gè)或兩個(gè)模擬輸入端。但是,實(shí)際的系統(tǒng)往往需要對(duì)多路模擬輸入信號(hào)進(jìn)行A/D變換。利用多塊A/D芯片雖可解決這個(gè)問題,但從價(jià)格上講是不可取的。為了充分發(fā)揮A/D芯片的作用,可以采用模擬開關(guān)來對(duì)輸入路數(shù)進(jìn)行擴(kuò)展。

圖8.31AD574的模擬電壓輸入(a)單極性輸入;(b)雙極性輸入

模擬開關(guān)有多個(gè)模擬輸入端和一個(gè)模擬輸出端。在某一時(shí)刻究竟哪一個(gè)輸入端和輸出端相通取決于路地址輸入端的輸入狀態(tài)。例如,H1508是一個(gè)8路的模擬開關(guān),如圖8.32所示。它有

8路模擬輸入端IN0~I(xiàn)N7,1個(gè)模擬輸出端OUT,3個(gè)路地址輸入端A0~A2和一個(gè)選通端EN。當(dāng)EN=1,A2A1A0=000B時(shí),IN0輸入端和OUT輸出端接通。同理,當(dāng)EN=1,A2A1A0=001B時(shí),IN1與OUT接通。當(dāng)EN=0時(shí),OUT為高阻。這樣,只要將輸出端OUT和AD574的模擬輸入端相連接,在變換前給H1508送一個(gè)EN有效和路地址信號(hào),則可對(duì)相應(yīng)路的模擬輸入信號(hào)進(jìn)行A/D變換,從而將1路模擬輸入擴(kuò)展為8路模擬輸入。

如想擴(kuò)展成64路,則在該H1508的各輸入端IN0~I(xiàn)N7上再各接一塊H1508,將每個(gè)輸入端再擴(kuò)展為8路就可以了。這樣一來,9塊H1508就可以將一路模擬輸入擴(kuò)展為64路模擬輸入。請(qǐng)讀者注意,這種擴(kuò)展并不是可以無限延伸的。每個(gè)模擬開關(guān)在導(dǎo)通時(shí)都是有內(nèi)阻的,串聯(lián)級(jí)數(shù)多了,內(nèi)阻相應(yīng)就會(huì)增大,精度也就隨之降低。一般的串聯(lián)不要超過兩級(jí)。

圖8.328路模擬開關(guān)H1508引腳圖

●采樣保持電路。A/D變換器從變換開始到結(jié)束需要一段時(shí)間,這段時(shí)間的長短隨各種變換器速度的不同而不同。在變換器工作期間一般要求輸入電壓保持不變,否則就會(huì)造成不必要的誤差。為此,在A/D變換器輸入端之前總要插入一個(gè)采樣保持電路,如圖8.33所示。在啟動(dòng)變換器時(shí),對(duì)模擬輸入電壓進(jìn)行采樣,采樣保持電路的輸出就一直保持采樣時(shí)的電壓不變,從而為A/D變換器的輸入端提供一個(gè)穩(wěn)定的模擬輸入電壓。當(dāng)然,采樣保持電路的電壓保持時(shí)間是有限的,但與變換時(shí)間相比,已是足夠長了。顯然,若在A/D變換時(shí)間內(nèi),模擬輸入信號(hào)的變化對(duì)所要求的精度產(chǎn)生的影響可以忽略,則可以不用采樣保持電路。

濾波電容的連接。為了平滑輸入模擬電壓和減小干擾,在A/D變換器的模擬輸入端與地之間通常接有一個(gè)濾波電容。其電容值的大小應(yīng)不至于對(duì)正常變化產(chǎn)生太大影響,即由模擬信號(hào)源內(nèi)阻與該濾波電容所構(gòu)成的時(shí)間常數(shù)的倒數(shù),應(yīng)大于模擬信號(hào)中有用分量的最高頻率分量。例如,模擬信號(hào)的最高頻率分量為2kHz,那么該時(shí)常數(shù)應(yīng)選擇為:

圖8.33采樣保持電路的連接

另外,濾波電容的連接點(diǎn)也應(yīng)該仔細(xì)選擇,否則會(huì)造成很大的人為誤差。一般應(yīng)接在模擬信號(hào)輸入的最外端。例如,在圖8.32中,我們可以將濾波電容接在H1508的OUT端,也可以接在H1508的IN0~I(xiàn)N7各輸入端。前者只要接1個(gè),后者卻要接8個(gè)。

到底哪一種接法好?在前一種情況下,假設(shè)IN0輸入電壓為5V,IN1的輸入電壓為0V,

當(dāng)對(duì)IN0路的輸入進(jìn)行A/D變換時(shí),接于OUT端的濾波電容被充電至5V。當(dāng)IN0路變換結(jié)束,緊接著對(duì)IN1路進(jìn)行變換時(shí),由于濾波電容上已充有5V電壓,要放電到

0V電壓需要一定的時(shí)間,因此很可能在沒有放電到0V時(shí)A/D變換器已經(jīng)啟動(dòng),從而對(duì)IN1路的輸入變換精度帶來不利的影響。如果濾波電容按第二種情況連接,就不會(huì)產(chǎn)生這種不利的影響。

b.AD574與CPU的連接。

AD574是12位A/D變換器,它可以和16位CPU相連接,也可以和8位的CPU相連接。只要適當(dāng)?shù)馗淖傾D574某些控制引腳的接法就可以實(shí)現(xiàn)上述要求。

AD574可以通過簡(jiǎn)單的三態(tài)門、鎖存器接口與微機(jī)的系統(tǒng)總線相連接,也可以通過可編程接口(如8255)與系統(tǒng)總線相連接。由表8.6可見,AD574可以工作在8位,也可以工作在12位。下面就以8255為接口芯片,將工作于12位下的AD574接到8位ISA系統(tǒng)總線上,其連接如圖8.34所示。

圖8.34中,簡(jiǎn)化的連接可使CE和12/8恒為高電平,而使CS和A0接地。此時(shí)只用R/來啟動(dòng),查詢STS狀態(tài)可判斷變換是否完成。對(duì)應(yīng)圖8.34的采集變換程序如下:

;對(duì)8255初始化,此段程序放在應(yīng)用程序開始的位置上INTI55:MOV DX,0063HMOV AL,10011010BOUT DX,AL ;控制字寫入8255的CRMOV AL,00000001BOUT DX,AL ;位控方式,使PC0=1;以下是對(duì)輸入信號(hào)進(jìn)行一次變換的程序ACQUQ:MOV DX,0062H MOV AL,00HOUT DX,ALMOV AL,01HOUT DX,AL ;由PC0輸出負(fù)R/脈沖啟動(dòng)變換NOPNOPWAITS:IN AL,DX ;取STS狀態(tài)AND AL,80H ;判斷變換結(jié)束否?JNZ WAITS ;未結(jié)束等待MOV DX,0060HIN AL,DX ;讀A口,取得A/D變換低8位MOV BL,ALMOV DX,0061HIN AL,DXAND AL,0FH ;讀B口,取得高4位MOV BH,ALRET圖8.34AD574經(jīng)8255與8位ISA系統(tǒng)總線相連接

(2)8位A/D變換器芯片ADC0809。ADC0809的引腳定義如圖8.35所示。它共有28個(gè)引腳。D0~D7:輸出數(shù)據(jù)線。IN0~I(xiàn)N7:8路模擬電壓輸入端。ADDA、ADDB、ADDC:路地址輸入,ADDA是最低位,ADDC是最高位。START:?jiǎn)?dòng)信號(hào)輸入端,下降沿有效。ALE:路地址鎖存信號(hào),用來鎖存ADDA、ADDB、ADDC的地址輸入,上升沿有效。EOC:變換結(jié)束狀態(tài)信號(hào),高電平表示一次變換已結(jié)束。OE:讀允許信號(hào),高電平有效。CLK:時(shí)鐘輸入端。UREF(+)、UREF(-):參考電壓輸入端。VCC:5V電源輸入。GND:地。

圖8.35ADC0809的引腳圖

ADC0809需要外接參考電源和外接時(shí)鐘。外接時(shí)鐘頻率為10kHz~1.2MHz。在時(shí)鐘為640kHz時(shí),一次變換時(shí)間為100μs,且隨時(shí)鐘的降低而增加。ADC0809的時(shí)序關(guān)系如圖

8.36所示。從該圖可以看到,在進(jìn)行A/D變換時(shí),路地址應(yīng)先送到ADDA~ADDC輸入端,然后在ALE輸入端加一個(gè)正跳變脈沖,將路地址鎖存到ADC0809內(nèi)部的路地址寄存器中。這樣對(duì)應(yīng)路的模擬電壓輸入就和內(nèi)部變換電路接通。為了啟動(dòng)A/D變換,必須在START端加一個(gè)負(fù)跳變信號(hào),此后變換工作就開始進(jìn)行。標(biāo)志ADC0809正在工作的狀態(tài)信號(hào)是EOC,它由高電平(閑狀態(tài))變成低電平(工作狀態(tài))。一旦變換結(jié)束,EOC信號(hào)就又由低電平變成高電平。此時(shí)只要在OE端加一個(gè)高電平,即可打開數(shù)據(jù)線的三態(tài)緩沖器而從D0~D7數(shù)據(jù)線讀得一次變換后的數(shù)據(jù)。

8.36ADC0809工作時(shí)序圖

由上述過程可以看到,ADC0809的一個(gè)顯著特點(diǎn)是,其芯片內(nèi)部集成了一個(gè)8選1的模擬門,且利用ADDA~ADDC三個(gè)信號(hào)的編碼來選擇相應(yīng)的模擬輸入。將ADC0809連接到系統(tǒng)總線上有多種方法。由于ADC0809輸出數(shù)字信號(hào)的過程是經(jīng)由OE控制的三態(tài)門完成的,故ADC0809可以直接與系統(tǒng)總線相連接,占用

8個(gè)接口地址。它也可以像前面AD574那樣經(jīng)可編程并行接口8255與總線相連接。這些方法我們不再說明,留給讀者思考。若以三態(tài)門、鎖存器為接口,將ADC0809接到系統(tǒng)總線上,其連接電路如圖8.37所示。

圖8.37ADC0809的一種接口電路

在圖8.37中,我們未畫出ADC0809參考電壓的形成電路和時(shí)鐘形成電路。前者可買現(xiàn)成的芯片來產(chǎn)生,而后者常從系統(tǒng)總線上取時(shí)鐘信號(hào)經(jīng)分頻來產(chǎn)生。結(jié)合圖8.37,并假定系統(tǒng)初始化時(shí)已將

74LS273的Q7初始化為

0,則采集程序如下:

ACQ09:MOV AX,SEGDATAMOV DS,AXMOV SI,OFFSETDATAMOV BL,0MOV CL,8GOON:MOV AL,BL

MOV DX,007AHOUT DX,AL ;送出路地址OR AL,80HOUT DX,AL ;送ALE上升沿AND AL,7FHOUT DX,AL ;輸出STARTNOPMOV DX,0079HPWAT:IN AL,DX ;讀EOC狀態(tài)AND AL,01HJZ PWATMOV DX,007AHMOV AL,BLOR AL,40HOUT DX,AL ;使OE=1MOV DX,0078HIN AL,DX ;讀A/D變換器數(shù)據(jù)MOV

SI],AL ;存入內(nèi)存INC SIINC BLDEC CLJNZ GOONMOV DX,007AHMOV AL,0OUT DX,ALRET

3.數(shù)據(jù)監(jiān)測(cè)與控制系統(tǒng)

A/D與D/A變換器是構(gòu)成數(shù)據(jù)監(jiān)測(cè)與控制系統(tǒng)的核心部件。數(shù)據(jù)監(jiān)測(cè)可利用數(shù)據(jù)采集系統(tǒng)實(shí)現(xiàn),它主要完成對(duì)模擬或數(shù)字信號(hào)的獲取。目前數(shù)據(jù)采集系統(tǒng)均是利用微機(jī)應(yīng)用系統(tǒng)實(shí)現(xiàn)的。采集到的數(shù)據(jù)最終將以數(shù)字形式存儲(chǔ)于計(jì)算機(jī)中或在計(jì)算機(jī)中加以處理。但由于模擬信號(hào)與計(jì)算機(jī)可接收的數(shù)字信號(hào)形式不符,因而需用A/D變換器完成模/數(shù)轉(zhuǎn)換工作。

計(jì)算機(jī)強(qiáng)大

溫馨提示

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

評(píng)論

0/150

提交評(píng)論