單片機第八章_第1頁
單片機第八章_第2頁
單片機第八章_第3頁
單片機第八章_第4頁
單片機第八章_第5頁
已閱讀5頁,還剩116頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第8章 單片機接口技術(shù)本章內(nèi)容:8.1 I/O口擴展 8.2 人機交互接口 8.3 A/D轉(zhuǎn)換器及接口技術(shù) 8.4 D/A轉(zhuǎn)換器及接口技術(shù) 8.1 I/O口擴展 在單片機應(yīng)用系統(tǒng)中,經(jīng)常用到簡單的輸入/輸出(Input/Output,I/O)接口,以實現(xiàn)數(shù)據(jù)的輸入/輸出,如讀取鍵盤狀態(tài)、驅(qū)動數(shù)碼管顯示或打印機打印等。28.1.1 任務(wù)一:簡單I/O口擴展的實現(xiàn)1任務(wù)導(dǎo)入簡單I/O口擴展的實現(xiàn):擴展8位數(shù)據(jù)并行輸入的簡單輸入接口,以及8位數(shù)據(jù)并行輸出的簡單輸出接口。對于輸入接口來說,只需要滿足數(shù)據(jù)緩沖功能,以實現(xiàn)數(shù)據(jù)總線與外部設(shè)備的隔離。對輸出接口而言,要滿足數(shù)據(jù)的鎖存功能,以實現(xiàn)快速CPU與

2、慢速外部設(shè)備的速度匹配,并隔離數(shù)據(jù)總線與外部設(shè)備。32.任務(wù)分析 單片機的I/O接口是有限的,當(dāng)不能滿足需要時,可外部擴展I/O接口。如果實際需要的I/O接口功能簡單,可采用并行芯片進行擴展。但是簡單的并行接口只具備數(shù)據(jù)總線信號以及數(shù)據(jù)使能信號。1)系統(tǒng)關(guān)鍵點根據(jù)任務(wù)要求,此系統(tǒng)有如下幾個關(guān)鍵點:(1)輸入接口須滿足輸入緩沖功能。(2)輸出接口須滿足輸出鎖存功能。(3) 實現(xiàn)簡單接口芯片的控制信號與單片機地址 信號及讀寫信號的連接。42)解決辦法(1)實現(xiàn)輸入接口的輸入緩沖功能,需要采用具有三態(tài)門的并行接口芯片,如74LS244。(2)實現(xiàn)輸出接口的輸出鎖存功能,需要采用具有鎖存功能的并行接口

3、芯片,如74LS373、74LS273、8282等。(3)簡單接口沒有過多的控制信號,需要將單片機的地址信號與讀寫信號進行組合,然后連接到并行接口芯片的控制信號上,以達到控制的目的。53)知識準(zhǔn)備(1)并行接口芯片功能及操作方法。(2)地址譯碼方法。(3)組合邏輯電路設(shè)計方法。63任務(wù)實施1)輸入接口擴展 進行輸入接口擴展,首先需要清楚單片機與簡單輸入接口芯片的信號。 單片機按照三總線方式將信號分為數(shù)據(jù)信號、地址信號和控制信號;而簡單輸入接口芯片沒有地址信號,只有數(shù)據(jù)信號和控制信號。 連接時,將單片機的數(shù)據(jù)信號與輸入接口芯片的數(shù)據(jù)信號相連,將單片機的地址信號與讀控制信號組合成輸入接口芯片所需要

4、的控制信號再與之相連。7874LS244的引腳示意圖如右圖所示,引腳信號如下。(1)1A11A4、2A12A4:數(shù)據(jù)輸入信號。(2)1Y11Y4、2Y12Y4:數(shù)據(jù)輸出信號。(3) 、 :三態(tài)允許,低電平有效。當(dāng)其有效時,數(shù)據(jù)從輸入端送往輸出端。硬件連接電路如上圖所示。9根據(jù)硬件連接,可調(diào)用下面的函數(shù)實現(xiàn)數(shù)據(jù)的輸入。#include /使用其中定義的宏來訪問絕對地址unsigned char I_O_IN(void)/I/O輸入函數(shù)return XBYTE0 x7FFF;102)輸出接口擴展 進行輸出接口擴展,首先也需要清楚單片機與簡單輸出接口芯片的信號。同樣,簡單輸出接口芯片也沒有地址信號,

5、而只有數(shù)據(jù)信號和使能控制信號。在連接時,也需要將單片機的地址信號與寫控制信號組合成輸出接口芯片所需要的使能控制信號再與之相連。11下面以74LS373為例,設(shè)計一個輸出接口。74LS373的引腳示意圖如右圖,引腳信號如下。(1)D0D7:數(shù)據(jù)輸入信號線。(2)Q0Q7:數(shù)據(jù)輸出信號線。(3) :輸出使能信號。當(dāng)其有效時,數(shù)據(jù)送往輸出信號線。(4) LE:鎖存使能信號。當(dāng)其有效時,將輸入的數(shù)據(jù)鎖存在寄存器中。12硬件連接電路如上圖。13根據(jù)硬件連接,可調(diào)用下面的函數(shù)實現(xiàn)數(shù)據(jù)的輸出。#include /使用其中定義的宏來訪問絕對地址void I_O_OUT(unsigned char data)/

6、I/O輸出函數(shù)XBYTE0 xBFFF=data;148.1.2 任務(wù)二:可編程I/O口擴展的實現(xiàn) 1任務(wù)導(dǎo)入 可編程I/O口擴展的實現(xiàn):擴展可編程輸入/輸出接口。 簡單I/O口擴展的接口只能滿足簡單需要,連接的外設(shè)功能單一,且接口功能固定,一旦擴展接口,其功能就不能再改變,要么只能輸入,要么只能輸出,不能隨著實際需要而更改。152. 任務(wù)分析1)系統(tǒng)關(guān)鍵點根據(jù)任務(wù)要求,此系統(tǒng)有如下幾個關(guān)鍵點。(1)實現(xiàn)可編程I/O口擴展,可根據(jù)要求實現(xiàn)輸入或輸出功能。(2)在不同的需要時,能夠提供所需要的擴展聯(lián)絡(luò)信號。162)解決辦法合理選擇可編程的I/O擴展芯片。3)知識準(zhǔn)備(1)理解可編程接口芯片的工作

7、原理。(2)理解可編程接口芯片的控制聯(lián)絡(luò)信號的功能。為了實現(xiàn)可編程接口的擴展,需要學(xué)習(xí)可編程接口芯片的知識,本任務(wù)以8255A芯片為例進行可編程接口的學(xué)習(xí)。173任務(wù)必備知識 8255A是Intel公司生產(chǎn)的通用可編程并行I/O接口芯片,由+5V電源供電,采用40腳雙列直插式封裝。8255A通過系統(tǒng)總線可方便地與單片機連接,實現(xiàn)I/O擴展。使用8255A連接外部設(shè)備時,通常不需要再附加其他電路,給用戶使用帶來了很大的方便。181)8255A內(nèi)部結(jié)構(gòu)及外部引腳8255A內(nèi)部結(jié)構(gòu)及外部引腳圖191)8255A內(nèi)部結(jié)構(gòu)及外部引腳 8255A內(nèi)部結(jié)構(gòu)及外部引腳圖如前頁圖。8255A內(nèi)部由數(shù)據(jù)總線緩沖器

8、、讀/寫控制邏輯、控制寄存器(A組控制、B組控制)及I/O端口等組成。20數(shù)據(jù)總線緩沖器將內(nèi)部數(shù)據(jù)總線和外部數(shù)據(jù)總線D0D7相連,是單片機與8255A進行數(shù)據(jù)通信和控制命令字寫入的接口;讀/寫控制邏輯用于實現(xiàn)單片機對8255A的數(shù)據(jù)、控制字和狀態(tài)字的傳送控制,分為A組控制和B組控制,A組控制電路用來控制端口A和端口C高4位(PC7PC4)的工作方式和讀/寫操作,B組控制電路用來控制端口B和端口C低4位(PC3PC0)的工作方式和讀/寫操作。 內(nèi)部總線是8255A內(nèi)部單元的數(shù)據(jù)通道,在單片機與內(nèi)部單元間傳遞數(shù)據(jù)、控制命令字和狀態(tài)字;控制寄存器的內(nèi)容(控制命令字)可改變8255A的工作狀態(tài),使82

9、55A工作于三種工作方式之一;I/O端口是8255A與連接在其上的外設(shè)之間的緩沖寄存器,具備輸入緩沖、輸出鎖存的功能。212)8255A引腳功能描述22233)8255A的工作方式 8255A有三種工作方式:基本輸入/輸出方式、選通輸入/輸出方式和雙向傳送方式。通過往控制寄存器內(nèi)寫入控制命令字,可編程改變8255A的工作方式。8255A的控制命令字格式如下圖所示。24 8255A有兩種控制字:方式選擇控制字和按位置位/復(fù)位控制字。方式選擇控制字(D7=1)用來規(guī)定端口A、端口B和端口C的工作方式。置位/復(fù)位控制字(D7=0)用來單獨設(shè)置端口C的各位。 (1)基本輸入/輸出方式(工作方式0) (

10、2)選通輸入/輸出方式(工作方式1) (3)雙向傳送方式(工作方式2)25(1)基本輸入/輸出方式(工作方式0) 3個端口可通過方式選擇控制字設(shè)置成輸入口或輸出口,并可分成兩個8位的I/O口和兩個4位的I/O口,4位的I/O口由端口C分割而成。當(dāng)端口工作于輸出方式時,具有鎖存功能;當(dāng)端口工作于輸入方式時,不具備鎖存功能。26(2)選通輸入/輸出方式(工作方式1) 在此方式下,端口被分為A組和B組,A組由端口A和端口C的上半部(高4位)組成,端口A做I/O口時,C口的上半部做端口A的控制信號或狀態(tài)信號;B組由端口B和端口C的下半部組成,端口B做I/O口時,C口的下半部做端口B的控制信號或狀態(tài)信號

11、。在方式1時,輸入、輸出的數(shù)據(jù)均可鎖存。27 工作方式1輸入時,端口C的控制聯(lián)絡(luò)信號如下圖所示,各控制聯(lián)絡(luò)信號功能如下。28工作方式1輸出時,端口C的控制聯(lián)絡(luò)信號如下圖所示,各控制聯(lián)絡(luò)信號功能如下。29(3)雙向傳送方式(工作方式2) 雙向傳送方式只適用于端口A。當(dāng)端口A工作在方式2時,端口A為雙向傳送方式,既可發(fā)送數(shù)據(jù),又可接收數(shù)據(jù),此時端口C的高5位配合端口A工作,為其提供控制聯(lián)絡(luò)信號??刂坡?lián)絡(luò)信號功能如圖8-9所示。各控制聯(lián)絡(luò)信號的功能與端口A工作在選通輸入/輸出方式時的輸入與輸出下的信號一樣,也就是將選通輸入/輸出方式的端口A的輸入與輸出兩種情況的信號進行組合,即雙向傳送方式。3082

12、55A工作方式2端口C的控制聯(lián)絡(luò)信號314)8255A的按位置位/復(fù)位控制字端口C除工作于方式0以及當(dāng)端口A、端口B工作在方式1或方式2時用作控制聯(lián)絡(luò)信號外,還可工作在位控方式下按位輸出,此時用置位/復(fù)位控制字單獨設(shè)置端口C的各位。置位/復(fù)位控制字的特征是D7=0。置位/復(fù)位控制字格式如上圖所示。324. 任務(wù)實施 8255A與單片機的接口電路比較簡單。單片機的數(shù)據(jù)線與8255A的數(shù)據(jù)線對應(yīng)相連;單片機的地址信號線A0、A1連接到8255A的地址線A0、A1上,8255A的片選信號 連接到單片機地址線的高位(或地址譯碼電路將單片機的地址信號譯碼輸出)上;單片機的讀寫信號線 與8255A的讀寫信

13、號線 對應(yīng)相連;其他口線的連接取決于8255A的工作方式。33 設(shè)8255A的 連接單片機譯碼輸出的地址為7FF0H,地址線A0、A1與單片機的A0、A1相連。使8255A的端口A輸出、端口B輸入,均工作于基本的輸入/輸出方式。34按照設(shè)定的工作方式,8255A的初始化程序如下。#define CTPORT XBYTE0 x7FFFvoid Initialize(void) CTPORT=0 x82;35【拓展訓(xùn)練:88點陣顯示系統(tǒng)的實現(xiàn)】1)功能要求 擴展88點陣顯示系統(tǒng),實現(xiàn)英文字符及數(shù)字字符的顯示。 362)任務(wù)分析(1)系統(tǒng)關(guān)鍵點根據(jù)任務(wù)要求,此系統(tǒng)有如下幾個關(guān)鍵點。理解點陣顯示系統(tǒng)的

14、工作原理。88點陣顯示系統(tǒng)與單片機的連接方法。動態(tài)顯示函數(shù)的編寫。 (2)解決辦法根據(jù)任務(wù)要求,88點陣字符共需要64個發(fā)光二極管,且每個發(fā)光二極管放置在行線和列線的交叉點上,對應(yīng)的某一列為高電平,某一行為低電平,則對應(yīng)的二極管就點亮。因此為了顯示一個88點陣字符,可采用依次輸出一列點陣信息,且使此列對應(yīng)的行選線為低的動態(tài)掃描的方式實現(xiàn)。于是,要顯示一個88點陣字符系統(tǒng),需用82根I/O口線。37(3)知識準(zhǔn)備點陣顯示系統(tǒng)的工作原理??删幊探涌谛酒墓ぷ髟怼?83)點陣顯示系統(tǒng)的工作原理394)任務(wù)實施(1)88點陣顯示系統(tǒng)與單片機的連接4088點陣顯示系統(tǒng)的軟件實現(xiàn)/LED88點陣顯示,列

15、掃描,低電平有效#include /包含頭文件#define PAPORT XBYTE0 x7FFC /8255A端口A地址#define PBPORT XBYTE0 x7FFD /8255A端口B地址#define CTPORT XBYTE0 x7FFF /8255A控制端口地址#define numsizeof(table) /代碼長度unsigned chari=0; /全局變量定義unsigned charcnum=0 xfe;/列掃描碼初始值41unsigned charcode table= /顯示字符的字模0 x00,0 x3E,0 x7F,0 x41,0 x63,0 x22,0

16、 x00,0 x00, /C0 x00,0 x7F,0 x7F,0 x41,0 x7F,0 x7F,0 x00,0 x00, /O0 x00,0 x41,0 x7F,0 x41,0 x7F,0 x3E,0 x00,0 x00, /D0 x00,0 x41,0 x7F,0 x49,0 x49,0 x41,0 x00,0 x00,; /Evoid 8255Initialize(void)/8255A初始化 CTPORT=0 x80;/8255A控制字,A及B均工作在方/式0輸出42void Display(void /顯示函數(shù)PBPORT=0 xFF; /端口B列線全1,熄滅LEDPAPORT=t

17、ablei; /端口A送出數(shù)據(jù)PBPORT=cnum; /端口B送列掃描數(shù)據(jù),顯示i+; /i增量指向下個待顯示數(shù)據(jù)if(i=num)i=0; /全部顯示完畢,恢復(fù)為0,循環(huán)顯示if(cnum=0)cnum=0 xfe;cnum=cnum1 | 0 x01; /掃描碼左移1位,顯示下個字模43void T0_init(void /定時器0初始化 TMOD= 0 x01; /定時方式1TH0= 0 xf6; /定時器0初始值TL0= 0 x3c; /5000usIE= 0 x82; /允許定時中斷TR0= 1; /開始計時44void T0_intservice(void) interrupt

18、1 using 0 /定時器0中斷服務(wù)程序TH0 = 0 xf6; /重新裝填初始值TL0 = 0 x3c;Display();/調(diào)用顯示函數(shù)顯示字模45void main (void) /主函數(shù)8255Initialize(); /8255A初始化T0_init(); /定時器0初始化while(1); /循環(huán)等待468.2 人機交互接口8.2.1 任務(wù)三:簡單的鍵盤接口的實現(xiàn) 鍵盤是單片機應(yīng)用系統(tǒng)中非常重要的輸入設(shè)備,在實際應(yīng)用中可以通過鍵盤向應(yīng)用系統(tǒng)輸入數(shù)據(jù)和控制命令。鍵盤根據(jù)組成形式分為獨立式鍵盤、矩陣式鍵盤等幾種形式,可工作于掃描方式和中斷方式。47 按鍵有機械式按鍵、電容式按鍵等,

19、通過按鍵的接通、斷開輸入開關(guān)電壓信號。按鍵由斷開到閉合,以及由閉合到斷開時,由于觸點的機械作用,按鍵的動作不能立刻完成,在斷開及閉合的瞬間有抖動現(xiàn)象發(fā)生,抖動時間一般為510ms,表現(xiàn)出來就是輸入的電壓信號為抖動的不穩(wěn)定的電平信號。48 為了保證按鍵信號的正確輸入,必須避開按鍵抖動的影響,在讀取鍵盤狀態(tài)時要進行消抖處理,常用的方法有硬件消抖和軟件消抖。49 硬件消抖方法采用門電路組成穩(wěn)態(tài)電路實現(xiàn),常用的消抖電路有觸發(fā)器消抖電路、濾波消抖電路,但是電路復(fù)雜、成本較高。 軟件消抖的基本原理是當(dāng)?shù)谝淮螜z測到按鍵按下時,先延時一段時間(根據(jù)按鍵抖動時間確定),然后再次讀取按鍵狀態(tài)確認是否處于閉合狀態(tài),

20、是則確認按鍵按下,否則就是干擾,雖然成本降低了,但是鍵盤的工作速度被降低。獨立式按鍵的各個按鍵彼此之間都是獨立的,每個按鍵連接一根I/O口線。當(dāng)按鍵數(shù)量較多時,需要的I/O口線也較多,因此獨立式鍵盤適合于按鍵較少的應(yīng)用場合。1任務(wù)導(dǎo)入 簡單的鍵盤接口的實現(xiàn):擴展8個獨立式按鍵,實現(xiàn)獨立式按鍵鍵盤信號的讀入。502任務(wù)分析1)問題根據(jù)任務(wù)要求,需要考慮如下問題。(1)鍵盤怎樣連接到單片機?(2)怎樣為每個按鍵賦予鍵值?512)解決辦法(1)單片機的口線是有限的,如果P1口沒有用作他用,可以將鍵盤連接到P1口;如果P1口已經(jīng)使用,可以采用接口擴展方法將鍵盤接到P0口上,用一個接口芯片實現(xiàn)緩沖。(2

21、)對于獨立式按鍵的鍵值,可以采用循環(huán)判斷的方法為每個按鍵賦予不同的鍵值。523)知識準(zhǔn)備(1) 并行接口的構(gòu)成方法及操作方法。(2) 按鍵的去抖原理。533任務(wù)實施1)獨立式按鍵與單片機的連接54獨立式按鍵的軟件實現(xiàn)#include /包含頭文件unsigned char KEY_IN(void) /I/O輸入函數(shù)unsigned char loop,value;bit BT;int delay;XBYTE0 x7FFF=0 xFF; /準(zhǔn)雙向口輸入前先寫1value=XBYTE0 x7FFF; /讀取鍵盤if(value=0 xFF) /判斷是否有鍵按下return 0; /無鍵按下,返回0

22、55for(delay=5000;delay0;delay-); /有鍵按下,延時等待10msXBYTE0 x7FFF=0 xFF;value=XBYTE0 x7FFF;/再次讀取鍵盤if(value=0 xFF)return 0; /是干擾,返回0doXBYTE0 x7FFF=0 xFF;while(XBYTE0 x7FFF!=0 xFF); /等待鍵抬起56for(delay=5000;delay0;delay-); /再次延時等待10msfor(loop=8;loop-) /有鍵按下,判斷是哪個鍵BT=(bit)(value&0 x80); /獲取最高位if(!BT) /是0則有鍵按下r

23、eturn loop; value1; /左移一位578.2.2 任務(wù)四:LED數(shù)碼管顯示接口的實現(xiàn)1任務(wù)導(dǎo)入 LED數(shù)碼管顯示接口的實現(xiàn):用兩個LED數(shù)碼管實現(xiàn)兩個字符的顯示。582任務(wù)分析1)問題 根據(jù)任務(wù)要求,需要考慮如下問題。 (1)怎樣顯示單個字符及多字符? (2)怎樣將LED數(shù)碼管連接到單片機?2)解決辦法(1)單個字符顯示使用單個LED數(shù)碼管,可以通過簡單I/O輸出口實現(xiàn)。(2)多個字符顯示使用多個LED數(shù)碼管,可以采用8255A可編程接口芯片實現(xiàn)。59若顯示最多三個數(shù)碼管,怎么辦?若顯示超過三個數(shù)碼管,又怎么辦?3)知識準(zhǔn)備(1)并行接口的構(gòu)成方法及操作方法。(2)理解LED數(shù)

24、碼管的顯示原理。603任務(wù)必備知識1)LED數(shù)碼管的工作原理 LED數(shù)碼管是單片機常用的顯示器件,可顯示簡單的數(shù)字、字符等信息。LED數(shù)碼管顯示器也是由發(fā)光二極管按照一定的排列規(guī)律組成的顯示器件,根據(jù)連接方法的不同,有共陽極和共陰極兩種組成形式。 共陰極數(shù)碼管是將所有發(fā)光二極管的陰極接在一起,形成一個公共極com,在使用時將com極接低電平。共陽極數(shù)碼管是將所有發(fā)光二極管的陽極接在一起,形成一個公共極com,在使用時將com極接高電平。61LED數(shù)碼管驅(qū)動電路注意問題 將多個段的發(fā)光二極管點亮,可組合成需要顯示的字符。LED點亮?xí)r壓降一般為1.4V左右,驅(qū)動電流一般為10mA,因此在驅(qū)動電路中

25、必須加入限流電阻,對于5V供電系統(tǒng),限流電阻一般可取300歐 左右。622)LED數(shù)碼管的顯示方式(1)靜態(tài)顯示方式63(2)動態(tài)顯示方式64靜態(tài)與動態(tài)顯示電路的區(qū)別 在靜態(tài)顯示方式下,由于位選線連接在一起,因此只需要在輸出口上送出段選碼就可以顯示出需要的字符。保持段選線上的信號不變,則顯示的字符穩(wěn)定顯示。這種顯示方式由于每段LED長時間通電,因此顯示亮度高,另外控制也相對簡單,但是當(dāng)顯示的LED位數(shù)較多時,需要的I/O口較多。65 在動態(tài)顯示方式下,由于每位數(shù)碼管輪流點亮,利用人眼的視覺暫留現(xiàn)象可造成n位數(shù)碼管同時顯示的效果,適合顯示位數(shù)較多的情況。但是每位數(shù)碼管顯示一段時間,亮度較靜態(tài)顯示

26、方式暗,且需要占用較多機時。4任務(wù)實施66動態(tài)顯示方式的硬件連接動態(tài)顯示方式的軟件程序#include /包含頭文件#define PAPORT XBYTE0 x7FFC /8255A端口A地址#define PBPORT XBYTE0 x7FFD /8255A端口B地址#define CTPORT XBYTE0 x7FFF /8255A控制端口地址unsigned char i=0; /全局變量定義unsigned char cnum=0 x01; /位選信號unsigned char code table= /顯示字符的段選碼0 x40,0 x40,0 x76,0 x79,0 x38,0

27、x73,0 x40,0 x40; /-HELP-“void 8255Initialize(void)/ 8255初始化函數(shù) CTPORT=0 x80; /8255A控制字67/ 8255驅(qū)動的動態(tài)顯示函數(shù)void Display(void)/調(diào)用一次,顯示一遍table中的內(nèi)容for(i=0;i0;i-)PBPORT=0 x00; /端口B位選線全1,熄滅數(shù)碼管PAPORT=tablei; /端口A送出要顯示的字符段選PBPORT=cnum; /端口B送位選線信號,顯示字符cnum1; /位控信號左移1位,顯示下個字符delay(10); /延時10ms68/ 系統(tǒng)主函數(shù)void main(v

28、oid) 8255Initialize(); for(;)Display();69【拓展訓(xùn)練:LED數(shù)碼管顯示和鍵盤系統(tǒng)的實現(xiàn)】1)功能要求 用一片專用鍵盤顯示芯片實現(xiàn)LED數(shù)碼管顯示和鍵盤功能。702) 任務(wù)分析(1)問題根據(jù)任務(wù)要求,需要考慮如下問題:將鍵盤系統(tǒng)與LED顯示系統(tǒng)組合在一起,就可以構(gòu)成LED顯示系統(tǒng)與鍵盤系統(tǒng)。但是,不管采用簡單I/O接口還是采用可編程I/O接口連接LED顯示器,不管是靜態(tài)顯示方式還是動態(tài)顯示方式,都需要有程序參與控制,需要占用比較多的單片機CPU時間,甚至影響到CPU的工作速度。(2) 解決辦法用一種能夠自動進行鍵盤讀取和顯示的可編程芯片8279,組成鍵盤與

29、LED顯示系統(tǒng)。(3) 知識準(zhǔn)備并行接口的構(gòu)成方法及操作方法。713)8279及其引腳功能 8279是Intel公司生產(chǎn)的通用可編程鍵盤、顯示接口芯片,專門用于鍵盤輸入、顯示的控制。8279能對顯示器自動掃描;能識別鍵盤上按鍵的鍵號;可充分提高CPU工作效率。8279與單片機接口方便,由它構(gòu)成的標(biāo)準(zhǔn)鍵盤、顯示接口在單片機應(yīng)用系統(tǒng)中使用非常廣泛。728279引腳圖及引腳功能734)8279的內(nèi)部結(jié)構(gòu)8279內(nèi)部結(jié)構(gòu)745)8279的命令字格式(1)鍵盤/顯示方式設(shè)置命令字75(2)時鐘命令字(3)讀FIFO/傳感器RAM命令字(4)讀顯示RAM命令字76(5)寫顯示RAM命令字(6)寫顯示禁止/

30、顯示消隱命令特征位77(7)清除命令(8)結(jié)束中斷/設(shè)置錯誤方式命令6)8279的狀態(tài)字 8279的FIFO狀態(tài)字主要用于鍵盤和選通工作方式,以指示FIFO RAM中的字符數(shù)和有無錯誤發(fā)生。787)任務(wù)實施798279與單片機的連接以及8279與鍵盤、LED顯示系統(tǒng)的連接如圖8-21所示。 80/8279作為接口的鍵盤LED顯示系統(tǒng)程序#include /包含頭文件#define DBPORT XBYTE0 x7FFE/8279數(shù)據(jù)端口地址#define CTPORT XBYTE0 x7FFF /8279控制端口地址unsigned char key_value;/鍵值unsigned cha

31、r code table= /十六進制數(shù)字的字模,即段選碼(共陰極)0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,/090 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71;/AFvoid Int0Initialize(void)/中斷初始化IE|=0 x82;/允許外部中斷0void 8279Initialize(void)/8279初始化CTPORT=0 xD1;/8279總清命令while(CTPORT&0 x80);/等待8279內(nèi)部清除結(jié)束CTPORT=0 x2A;/分頻CTPORT=0 x0

32、0;/鍵盤及顯示器工作方式818.3 任務(wù)五:A/D轉(zhuǎn)換器及接口技術(shù) 1任務(wù)導(dǎo)入模擬信號采集系統(tǒng)的實現(xiàn):利用A/D(Analog to Digital)轉(zhuǎn)換器,實現(xiàn)對模擬電壓05V的采集并通過8個LED燈顯示。 2任務(wù)分析1)問題根據(jù)任務(wù)要求,需要考慮如下問題。(1)理解A/D轉(zhuǎn)換器的基本工作原理。(2)怎樣選用合適的A/D轉(zhuǎn)換器?(3)怎樣將A/D轉(zhuǎn)換器連接到單片機? 822)解決辦法(1)為了保證采樣的精度,必須要保證A/D轉(zhuǎn)換器有足夠的分辨率;另外為了實現(xiàn)對05V模擬信號的采樣,還應(yīng)選擇模擬量輸入范圍在05V的A/D轉(zhuǎn)換器。若A/D轉(zhuǎn)換器的輸入電壓范圍不在05V 的范圍,需要將輸入電壓信

33、號進行調(diào)理。(2)A/D轉(zhuǎn)換器的種類很多,接口形式主要有并行接口和串行接口兩種。對于并行接口的A/D,可選用工作時序和Intel總線兼容的A/D轉(zhuǎn)換器,否則編程人員得用軟件自造工作時序,會降低工作速度;對于串行接口的A/D轉(zhuǎn)換器,只需用單片機的普通I/O口來模擬串行A/D轉(zhuǎn)換器的工作時序即可。 83知識準(zhǔn)備單片機總線操作的原理及編程。(2)A/D轉(zhuǎn)換器的基本工作原理。843任務(wù)必備知識 1) A/D轉(zhuǎn)換器簡介 (1)A/D轉(zhuǎn)換器的分類。 按工作原理,A/D轉(zhuǎn)換器主要有積分型、逐次逼近型和-調(diào)制型等。其中逐次逼近型A/D轉(zhuǎn)換器轉(zhuǎn)換速度較高,轉(zhuǎn)換精度適中,價格較低廉,且種類最多,是現(xiàn)今應(yīng)用最為廣泛

34、的A/D轉(zhuǎn)換器。 按接口形式,A/D轉(zhuǎn)換器可分為兩大類:并行接口A/D轉(zhuǎn)換器和串行接口A/D轉(zhuǎn)換器。并行接口A/D轉(zhuǎn)換器的引腳多,體積大,占用單片機的口線多,但工作速度快;串行接口A/D轉(zhuǎn)換器的引腳少,體積小,占用單片機的口線少,但工作速度慢。表8-3列出了一些常用的A/D轉(zhuǎn)換器。 85表8-3 常用A/D轉(zhuǎn)換器特性 A/D型號分 辨 率轉(zhuǎn)換類型接口類型引 腳 數(shù)ADC08098逐次逼近并行28TLC5498逐次逼近串行8TLC254312逐次逼近串行20ICL7135雙積分并行28AD771424-串行2486(2)A/D轉(zhuǎn)換器的主要技術(shù)參數(shù)。 分辨率(Resolution):分辨率表示輸出

35、數(shù)字量變化一個碼值所對應(yīng)的模擬量的改變量。 量化誤差(Quantizing Error):量化誤差是指有限分辨率輸出特性曲線與理想輸出曲線的最大偏差,一般量化誤差在1/41LSB之間。 偏移誤差(Offset Error):偏移誤差指當(dāng)輸入信號為零時,輸出信號對零的偏移值,又稱做零值誤差。 滿刻度誤差(Full Scale Error):滿刻度誤差又稱為增益誤差,指滿刻度數(shù)值對應(yīng)的實際輸入電壓與理想輸入電壓之差。 線性度(Linearity):線性度是指A/D轉(zhuǎn)換器實際轉(zhuǎn)換特性與理想直線的最大誤差。 轉(zhuǎn)換速率(Conversion Rate):轉(zhuǎn)換速度指在單位時間內(nèi)完成的A/D轉(zhuǎn)換次數(shù),其倒數(shù)

36、為轉(zhuǎn)換時間。 872)8位并行A/D轉(zhuǎn)換器ADC0809 ADC0809是8位逐次逼近式A/D轉(zhuǎn)換器,采用CMOS工藝制造。其芯片內(nèi)部不僅集成了8位A/D轉(zhuǎn)換器,還集成了8路多路轉(zhuǎn)換器,可分時進行8路模擬信號的采集。ADC0809采用單一+5V供電,當(dāng)參考電壓為+5V時,模擬量輸入電壓范圍為05V。其外部引腳和內(nèi)部結(jié)構(gòu)如下圖所示。 88(2)ADC0809工作原理。 圖8-23 ADC0809時序圖 89當(dāng)ALE信號電平為高時,模擬開關(guān)的地址信號(ADD-A、ADD-B和ADD-C)存入地址鎖存器,并選通對應(yīng)的模擬通道(IN0IN7)。ALE信號電平變低,通道地址被鎖存。在A/D啟動信號STA

37、RT上加了一個正脈沖,就啟動A/D轉(zhuǎn)換,經(jīng)過64個時鐘脈沖轉(zhuǎn)換完成。轉(zhuǎn)換過程中,EOC一直為低,當(dāng)轉(zhuǎn)換結(jié)束時EOC變?yōu)楦摺R虼丝赏ㄟ^查詢EOC的電平狀態(tài)或用EOC觸發(fā)單片機的外部中斷,來得知轉(zhuǎn)換結(jié)束。A/D轉(zhuǎn)換結(jié)束后,給ENABLE施加高電平,轉(zhuǎn)換結(jié)果就出現(xiàn)在A/D輸出端上。因此,對于89C51單片機,當(dāng)采用Intel總線方式時很容易完成對ADC0809的控制。 904任務(wù)實施 硬件電路的實現(xiàn)當(dāng)單片機的地址總線作為外部設(shè)備的片選線且較富裕時,常采用如圖8-24所示的連接方式。 圖8-24 ADC0809與89C51的連接電路 91 軟件的實現(xiàn)#include void Mdelay (unsi

38、gned int Delay) / 延時函數(shù),具體分析參照第4章例4.2unsigned char i;for( ;Delay0; Delay-) for (i=124; i0;i-) ;unsigned char AD_Sample(void) unsigned char temp; XBYTE0 x78ff=0;/啟動A/D轉(zhuǎn)換 delay_200us();/延時200s,讀者自行完成 temp= XBYTE0 x78ff;/讀取轉(zhuǎn)換結(jié)果 return temp;void main(void) unsigned char AD_result; /A/D采樣結(jié)果保存單元 for(;) AD_

39、result= AD_Sample ();/A/D轉(zhuǎn)換函數(shù) P1= AD_result;/輸出轉(zhuǎn)換結(jié)果 Mdelay(1000);/延時1s 92【拓展訓(xùn)練:采用串行A/D的模擬信號采集系統(tǒng)的實現(xiàn)】1)功能要求利用串行A/D轉(zhuǎn)換器,實現(xiàn)對模擬電壓05V的采集并通過8個LED燈顯示。 2) 任務(wù)分析 問題根據(jù)任務(wù)要求,需要考慮如下問題。理解串行A/D轉(zhuǎn)換器的基本工作原理。怎樣將串行A/D轉(zhuǎn)換器連接到單片機? 93(2) 解決辦法 為了節(jié)省單片機的I/O資源,現(xiàn)在市面上出現(xiàn)了大量具有串行接口的A/D轉(zhuǎn)換器,一般采用三線或四線制SPI串行總線或I2C串行總線接口方式。 對于串行A/D轉(zhuǎn)換器,只需將串

40、行A/D轉(zhuǎn)換器的串行接口連接到單片機的普通I/O口線上,然后用軟件來模擬串行A/D轉(zhuǎn)換器的工作時序,即可實現(xiàn)單片機對串行A/D轉(zhuǎn)換器的操作。(3) 知識準(zhǔn)備常用串行總線的種類及編程。 943)12位串行A/D轉(zhuǎn)換器TLC2543 TLC2543是12位A/D轉(zhuǎn)換器,使用開關(guān)電容逐次逼近技術(shù),完成A/D轉(zhuǎn)換過程。其具有14路模擬通道,外部留給用戶使用的模擬輸入通道為11路,轉(zhuǎn)換時間最快為,單一+5V電源供電,供電電流僅需1mA(典型值)。其數(shù)字控制通過3線串行總線來完成,簡化了與微處理器的接口。其引腳圖和邏輯框圖如圖8-25和圖8-26所示。 圖8-25 TLC2543引腳圖 95圖8-26 T

41、LC2543邏輯框圖 96(2) TLC2543工作原理 內(nèi)部控制寄存器。TLC2543的內(nèi)部控制寄存器有8位,其功能定義如表8-4所示。 表8-4 內(nèi)部控制寄存器格式 97 采樣過程。 轉(zhuǎn)換開始時的片選電平必須由高變低。轉(zhuǎn)換的過程包括兩個周期:I/O周期和轉(zhuǎn)換周期。I/O周期完成對內(nèi)部控制寄存器的設(shè)置并同時在DATA OUTPUT端串行輸出上次A/D轉(zhuǎn)換的結(jié)果;轉(zhuǎn)換周期內(nèi)完成A/D轉(zhuǎn)換。在轉(zhuǎn)換開始時,EOC輸出變低,當(dāng)轉(zhuǎn)換完成時,EOC變?yōu)楦?。?dāng)在新的I/O周期對A/D轉(zhuǎn)換器進行新的設(shè)置時,即可同時回讀上一時刻的A/D采樣結(jié)果,因此,當(dāng)前對A/D的讀寫操作得到的采樣結(jié)果是上次啟動A/D所采樣

42、的結(jié)果。TLC2543的一種工作時序如圖8-27所示。98圖8-27 TLC2543采用12時鐘傳送時序圖(使用 ,MSB在前)994) 任務(wù)實施 (1) 硬件實現(xiàn) 圖8-28 TCL2543與89C51的連接電路 100要讓單片機控制TLC2543進行A/D轉(zhuǎn)換并通過8個LED顯示轉(zhuǎn)換結(jié)果,需對A/D轉(zhuǎn)換函數(shù)返回的12位采樣數(shù)據(jù)進行處理,僅保留高8位數(shù)據(jù)即可,在C51語言中可通過“4”來實現(xiàn)。參照8.3節(jié)任務(wù)實施的軟件部分,軟件的具體實現(xiàn)如下。#include void Mdelay (unsigned int Delay) /延時函數(shù),具體分析參照第4章例4.2 unsigned char

43、 i; for( ;Delay0; Delay-) for (i=0; i4; /輸出轉(zhuǎn)換結(jié)果 Mdelay (1000); /延時1s 1018.4 任務(wù)六:D/A轉(zhuǎn)換器及接口技術(shù) 1任務(wù)導(dǎo)入模擬信號輸出系統(tǒng)的實現(xiàn):根據(jù)P1口的8路開關(guān)的狀態(tài),利用D/A(Digital to Analog)轉(zhuǎn)換器,實現(xiàn)模擬電壓0-5V的輸出。 2任務(wù)分析 1) 問題根據(jù)任務(wù)要求,需要考慮如下問題。(1) 理解D/A轉(zhuǎn)換器的基本工作原理。(2) 怎樣選用合適的D/A轉(zhuǎn)換器?(3) 怎樣將D/A轉(zhuǎn)換器連接到單片機?1022) 解決辦法 (1)為了保證輸出的精度,必須要保證D/A轉(zhuǎn)換器有足夠的分辨率。另外還應(yīng)考慮

44、0-5V模擬量的輸出,若D/A輸出的信號不滿足要求,還需進行信號變換處理。 (2) D/A轉(zhuǎn)換器的種類很多,接口形式主要有并行接口和串行接口兩種。對于并行接口的D/A,可選用工作時序和Intel總線兼容的D/A轉(zhuǎn)換器;對于串行接口的D/A轉(zhuǎn)換器,只需用單片機的普通I/O口來模擬串行D/A轉(zhuǎn)換器的工作時序。 1033) 知識準(zhǔn)備 單片機總線操作的原理及編程。(2)D/A轉(zhuǎn)換器的基本工作原理。1043任務(wù)必備知識 1)D/A轉(zhuǎn)換器簡介 (1)D/A轉(zhuǎn)換器的分類。 目前常用的D/A轉(zhuǎn)換器從接口上可分為兩大類:并行接口D/A轉(zhuǎn)換器和串行接口D/A轉(zhuǎn)換器。并行接口D/A轉(zhuǎn)換器的引腳多,體積大,占用單片機

45、的口線多,但工作速度快;串行接口D/A轉(zhuǎn)換器的引腳少,體積小,占用單片機的口線少,但工作速度慢。表8-5列出了一些常用的D/A轉(zhuǎn)換器。 105表8-5 常用D/A轉(zhuǎn)換器特性 D/A型號分 辨 率輸出形式接口類型引 腳 數(shù)DAC08328電流輸出并行28DAC121012電流輸出并行24DAC754112電流輸出并行18TLC561510電壓輸出SPI8DAC757412電壓輸出I2C10106(2) D/A轉(zhuǎn)換器的主要技術(shù)參數(shù)。 分辨率(Resolution):分辨率是指D/A轉(zhuǎn)換器能輸出的最小模擬增量。輸出的模擬增量越小,說明分辨率越高。D/A轉(zhuǎn)換器的分辨率主要取決于輸入數(shù)字量的位數(shù)。 轉(zhuǎn)換

46、精度(Conversion Accuracy):D/A轉(zhuǎn)換器的實際輸出模擬量與理想輸出模擬量的差值和理想輸出模擬量之比為D/A轉(zhuǎn)換器的轉(zhuǎn)換精度。 偏移誤差(Offset Error):偏移誤差指輸入數(shù)字量為零時,輸出模擬量對零的偏移值。這種誤差通??梢酝ㄟ^D/A的外接Vref 和電位計加以調(diào)整。 線性度(Linearity):線性度指D/A轉(zhuǎn)換器的實際轉(zhuǎn)換特性曲線和理想直線之間的最大偏移差。通常線性度不應(yīng)超出 1LSB。 建立時間(Setting Time):建立時間指D/A轉(zhuǎn)換器輸入數(shù)字代碼滿度值變化時,輸出模擬量達到滿度值所需的時間。 1072) 8位并行D/A轉(zhuǎn)換器DAC0832 DAC

47、0832是采用CMOS工藝制造的8位單片D/A轉(zhuǎn)換器,使用方便,兼容MCS-51單片機總線,匹配性能好。其外部引腳和內(nèi)部結(jié)構(gòu)如圖8-29所示。圖8-29 DAC0832外部引腳及內(nèi)部結(jié)構(gòu) 108(2)DAC0832工作原理。DAC0832主要由兩個8位鎖存器和一個8位D/A轉(zhuǎn)換器組成,使用時數(shù)據(jù)輸入可采用雙緩沖形式、單緩沖形式或直接輸入形式。當(dāng)LE1=1時,輸入鎖存器的輸出隨輸入變化;當(dāng)LE1=0時,數(shù)據(jù)鎖存在鎖存器中,不再隨數(shù)據(jù)總線上的數(shù)據(jù)變化而變化。當(dāng)ILE為高,且和同時為低時,鎖存器的輸出隨輸入的變化而變化;當(dāng)寫信號變高時,8位輸入鎖存器將輸入數(shù)據(jù)鎖存。當(dāng)XFER和WR2同時為低時,LE

48、2=1,8位DAC鎖存器的輸出隨輸入的變化而變化。當(dāng)WR2上升沿到來時,將輸入鎖存器的信息鎖存在DAC鎖存器中。若將8位數(shù)字量轉(zhuǎn)換為模擬量,只要使DAC鎖存器處于常通狀態(tài)(LE2=0、WR2=0),在CS和WR1端產(chǎn)生一次負脈沖,即可完成一次D/A轉(zhuǎn)換;或者將CS和WR1接地,在XFER和WR2端產(chǎn)生一次負脈沖,也可完成一次D/A轉(zhuǎn)換。若多路D/A工作且要求同時輸出模擬量以達到控制輸出同步,則采用雙緩沖方式。 109(3) DAC0832輸出電路。 DAC0832輸出量是電流,而實際應(yīng)用中常常需要的是模擬電壓。因此,對于DAC0832這種電流型輸出的D/A芯片還需要有將電流轉(zhuǎn)換為電壓的I/V電路。DAC0832的輸出電路可接成單極性和雙極性兩種,如圖8-30和圖8-31所示。 圖8-30 DAC0832單極性輸出電路 圖8-31 DAC0832雙極性輸出電路 110表8-6 DAC0832輸入數(shù)據(jù)與參考電壓對應(yīng)關(guān)系 00000,00000000,0001 01000,00001111,1111雙極性輸出單極性輸出輸入數(shù)碼MSB,LSB1114. 任務(wù)實施 硬件實現(xiàn) 圖8-32 DAC0832與89C51的連接電路 112按該圖連接,若要輸出模擬信號可調(diào)用如下函數(shù)實現(xiàn)。#include #include /使用宏定義來訪問絕對地址void DAC_tran(unsign

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論