單片機原理與應用-9 (2)課件_第1頁
單片機原理與應用-9 (2)課件_第2頁
單片機原理與應用-9 (2)課件_第3頁
單片機原理與應用-9 (2)課件_第4頁
單片機原理與應用-9 (2)課件_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第9章應用系統(tǒng)配置及接口技術若輸入是非電的模擬信號,還需要通過傳感器轉換成電信號并加以放大,把模擬量轉換成數字量。該過程稱為“量化”,也稱為模/數轉換。實現模/數轉換的設備稱為模/數轉換器(A/D),將數字量轉換成模擬量的設備稱為數/模轉換器(D/A)。圖9-1所示為具有模擬量輸入、模擬量輸出以及鍵盤、顯示器、打印機等配置的89C51應用系統(tǒng)框圖。為節(jié)省I/O口線,89C51片外擴展應盡量采用串行外設接口芯片。2/6/20231圖9-1系統(tǒng)前向、后向人機通道配置框圖2/6/202329.1人機通道配置與接口技術單片機應用系統(tǒng)通常都需要進行人機對話。這包括人對應用系統(tǒng)的狀態(tài)干預與數據輸入,還有應用系統(tǒng)向人顯示運行狀態(tài)與運行結果等。如鍵盤、顯示器就是用來完成人機對話活動的人機通道。2/6/20233鍵盤中每個按鍵都是一個常開開關電路,如圖9-2所示。當按鍵K未被按下時,P1.0輸入為高電平;當K閉合時,P1.0輸入為低電平。圖9-2按鍵電路2/6/20235通常按鍵所用的開關為機械彈性開關,當機械觸點斷開、閉合時,電壓信號波形如圖9-3所示。由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩(wěn)定地接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,如圖9-3所示。抖動時間的長短由按鍵的機械特性決定,一般為5~10ms。這是一個很重要的時間參數,在很多場合都要用到。圖9-3按鍵時的抖動2/6/20236鍵抖動會引起一次按鍵被誤讀多次。為了確保CPU對鍵的一次閉合僅做一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時,讀取鍵的狀態(tài),并且必須判別;在鍵釋放穩(wěn)定后,再作處理。按鍵的抖動,可用硬件或軟件兩種方法消除。如果按鍵較多,常用軟件方法去抖動,即檢測出鍵閉合后執(zhí)行一個延時程序,產生5~10ms的延時;讓前沿抖動消失后,再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5~10ms的延時,待后沿抖動消失后,才能轉入該鍵的處理程序。2/6/202371)獨立式非編碼鍵盤接口及處理程序獨立式按鍵是指各按鍵相互獨立地接通一條輸入數據線,如圖9-4所示。這是最簡單的鍵盤結構,該電路為查詢方式電路。當任何一個鍵按下時,與之相連的輸入數據線即被清0(低電平),而平時該線為1(高電平)。要判別是否有鍵按下,用單片機的位處理指令十分方便。這種鍵盤結構的優(yōu)點是電路簡單;缺點是當鍵數較多時,要占用較多的I/O線。圖9-4獨立連接式非編碼鍵盤2/6/20239圖9-4所示查詢方式鍵盤的處理程序比較簡單。程序中沒有使用散轉指令,并且省略了軟件去抖動措施,只包括鍵查詢、鍵功能程序轉移。P0F~P7F為功能程序入口地址標號,其地址間隔應能容納JMP指令字節(jié);PROM0~PROM7分別為每個按鍵的功能程序。2/6/202310程序清單(設I/O為P1口):START: MOV A,#0FFH;輸入時先置P1口為全1 MOV P1,A MOV A,P1;鍵狀態(tài)輸入PL1: JNB ACC.0,P0F;0號鍵按下轉P0F標號地址 JNB ACC.1,P1F;1號鍵按下轉P1F標號地址 JNB ACC.2,P2F;2號鍵按下轉P2F標號地址 JNB ACC.3,P3F;3號鍵按下轉P3F標號地址 JNB ACC.4,P4F;4號鍵按下轉P4F標號地址 JNB ACC.5,P5F;5號鍵按下轉P5F標號地址 JNB ACC.6,P6F;6號鍵按下轉P6F標號地址 JNBA CC.7,P7F;7號鍵按下轉P7F標號地址 LJMP START;無鍵按下返回2/6/202311【例9-1】設計一個有4個獨立式按鍵的鍵盤接口,并編寫鍵掃描程序。解:電路原理圖如圖9-5所示。圖9-5鍵盤接口電路原理圖2/6/202313KEY: MOV P1,#0FFH ;P1口為輸入,各位應先置位為高電平 MOV A,P1 ;讀取按鍵狀態(tài) CPL A ;取正邏輯,高電平表示有鍵按下 ANL A,#0FH JZ KEY ;A=0時無鍵按下,重新掃描鍵盤 LCALL D10ms ;有鍵按下延時去抖動 MOV A,P1 ;讀取按鍵狀態(tài) CPL A ;取正邏輯,高電平表示有鍵按下 ANL A,#0FH ;再判別是否有鍵按下 JZ KEY ;A=0時無鍵按下重新掃描鍵盤 MOV B,A ;有鍵按下,鍵值送B暫存 MOV A,P1 CPL A ANL A,#0FH ;判別按鍵釋放KEY1:JNZ KEY1 ;按鍵未釋放,等待 LCALL D10ms ;釋放,延時去抖動 ====================================== MOV A,B ;取鍵值送A2/6/202314 ANL A,#0FH;判別按鍵釋放KEY1:JNZ KEY1;按鍵未釋放,等待 LCALL D10ms;釋放,延時去抖動 MOV A,B;取鍵值送A JB ACC.0,PKEY1;K1按下轉PKEY1 JB ACC.1,PKEY2;K2按下轉PKEY2 JB ACC.2,PKEY3;K3按下轉PKEY3 JB ACC.3,PKEY4;K4按下轉PKEY4EKEY:RET2/6/2023152)行列式鍵盤接口及工作原理為了減少鍵盤與單片機接口時所占用I/O線的數目,在鍵數較多時,通常都將鍵盤排列成行列矩陣形式,如圖9-6所示。以圖9-6所示的4×4鍵盤為例,說明行掃描法識別哪一個按鍵被按下的工作原理。2/6/202317圖9-64×4矩陣鍵盤接口圖2/6/202318首先判別鍵盤中有無鍵按下,由單片機I/O口向鍵盤送(輸出)全掃描字,然后讀入(輸入)列線狀態(tài)來判斷。方法是:向行線(圖中水平線)輸出全掃描字00H,把全部行線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會有一根列線電平被拉至低電平,從而使列輸入不全為1。判斷鍵盤中哪一個鍵被按下是通過將行線逐行置低電平后,檢查列輸入狀態(tài)實現的。方法是:依次給行線送低電平,然后查所有列線狀態(tài),稱行掃描。如果全為1,則所按下的鍵不在此行;如果不全為1,則所按下的鍵必在此行,而且是在與零電平列線相交的交點上的那個鍵。2/6/202319在掃描過程中,當發(fā)現某行有鍵按下,也就是輸入的列線中有一位為0時,便可判別閉合按鍵所在列的位置,根據行線位置和列線位置就能判斷按鍵在矩陣中的位置,知道是哪一個鍵按下。2/6/202321(2)鍵盤掃描工作過程按鍵掃描的工作過程如下:①判斷鍵盤中是否有鍵按下;②進行行掃描,判斷是哪一個鍵按下,若有鍵按下,則調用延時子程序去抖動;③讀取按鍵的位置碼;④將按鍵的位置碼轉換為鍵值(鍵的順序號)0、1、2…、F。圖9-7所示為4×4鍵盤掃描流程圖。2/6/202322圖9-74×4鍵盤掃描流程圖2/6/202323(3)鍵盤掃描子程序(參見圖9-7)

出口:鍵值(鍵號)在A中KEY: MOV P1,#0F0H ;令所有行為低電平 MOV R7,#0FFH ;設置計數常數KEY1: DJNZ R7,KEY1 ;延時 MOV A,P1 ;讀取P1口的列值 ANL A,#0F0H ;判別有鍵值按下嗎? CPL A ;求反后,有高電平就有鍵按下 JZ EKEY ;無鍵按下時退出 LCALL DEL20ms ;延時20ms去抖動SKEY: MOV A,#00 ;下面進行行掃描,1行1行掃 MOV R0,A ;R0作為行計數器,開始為0 MOV R1,A ;R1作為列計數器,開始為0 MOV R3#0FEH ;R3為行掃描字暫存,低4位為行掃描字SKEY2:MOV A,R3 MOV P1,A ;輸出行掃描字,高4位全1 NOP NOP NOP ;3個NOP操作使P1口輸出穩(wěn)定2/6/202325

MOV A,P1 ;讀列值 MOV R1,A ;暫存列值 ANL A,#0F0H ;取列值 CPL A ;高電平則有鍵閉合S123: JNZ SKEY3 ;有鍵按下轉SKEY3,無鍵按下時進 ;行一行掃描 INC R0 ;行計數器加1 SETB C ;準備將行掃描左移1位,形成下一行 ;掃描字,C=1保證輸出行掃描字中高4 ;位全為1,為列輸入作準備,低4位中 ;只有1位為0 MOV A,R3 ;R3帶進位C左移1位 RLC A MOV R3,A ;形成下一行掃描字→R3 MOV A,R0 CJNE A,#04H,SKEY1 ;最后一行掃(4次)完了嗎?EKEY:RET2/6/202326;列號譯碼SKEY3:MOV A,R1 JNB ACC.4,SKEY5 JNB ACC.5,SKEY6 JNB ACC.6,SKEY7 JNB ACC.7,SKEY8 AJMP EKEYSKEY5:MOV A,#00H MOV R2,A ;存0列號 AJMP DKEYSKEY6:MOV A,#01H MOV R2,A ;存1列號 AJMP DKEYSKEY7:MOV A,#02H MOV R2,A ;存2列號 AJMP DKEYSKEY8:MOV A,#03H MOV R2,A ;存3列號 AJMP DKEY2/6/202327【例92】設計一個2×2行列式鍵盤,并編寫鍵盤掃描子程序。解:原理如圖9-8所示。①判斷是否有鍵按下:將列線P1.0、P1.1送全0,查P0.0、P0.1是否為0。②判斷哪一個鍵按下:逐列送0電平信號,再逐行掃描是否為0。③鍵號=行首鍵號+列號圖9-8鍵盤掃描原理圖2/6/202329KEY: LCALL KS ;調用判斷有無鍵按下子程序 JZ KEY ;無鍵按下,重新掃描鍵盤 LCALL T10ms ;有鍵按下,延時去抖動 LCALL KS JZ KEY MOV R2,#0FEH ;首列掃描字送R2 MOV R4,#00H ;首列號#00H送入R4 MOV P0,#0FFHLK1: MOV P1,R2 ;列掃描字送P1口 MOV A,P0 JB ACC.0,ONE ;0行無鍵按下,轉1行 MOV A,#00H ;0行有鍵按下,該行首號#00H送A LJMP KP ;轉求鍵號2/6/202330ONE: JB ACC.1,NEXT ;1行無鍵按下,轉下列 MOV A,#02H ;1行有鍵按下,該行首號#02H送AKP: ADD A,R4 ;求鍵號,鍵號=行首鍵號+列號 PUSH ACC ;鍵號進棧保護LK: LCALL KS ;等待鍵釋放 JNZ LK ;未釋放,等待 POP ACC ;鍵釋放,鍵號送A RET ;鍵掃描結束,出口狀態(tài):(A)=鍵號NEXT:INC R4 ;列號加1 MOV A,R2 ;判斷兩列掃描完了嗎 JNB ACC.1,KND ;兩列掃描完,返回 RL A ;未掃描完,掃描字左移一位 MOV R2,A ;掃描字入R2 AJMP LK1 ;轉掃下一列KND: AJMP KEY2/6/202331KS: MOV P1,#0FCH;全掃描字送P1口 MOV P0, #0FFH MOV A,P0;讀入P0口行狀態(tài) CPL A;取正邏輯,高電平表示有鍵按下 ANL A,#03H;保留P0口低2位(屏蔽高6位) RET;出口狀態(tài):(A)≠0時有鍵按下T10ms:MOV R7,#10H;延遲10ms子程序TS1: MOV R6,#0FFHTS2: DJNZ R6,TS2 DJNZR7,TS1

RET2/6/2023322.中斷掃描方式為了提高CPU的效率,可以采用中斷掃描工作方式,即只有在鍵盤有鍵按下時才產生中斷申請;CPU響應中斷,進入中斷服務程序進行鍵盤掃描,并做相應處理。中斷掃描工作方式的鍵盤接口如圖9-9所示。P1.4~P1.7作鍵輸出線,P1.0~P1.3作掃描輸入線。掃描時,使P1.4~P1.7位清0。當有鍵按下時,INT1端為低電平,向CPU發(fā)出中斷申請。若CPU開放外部中斷,則響應中斷請求,進入中斷服務程序。圖9-9中斷方式鍵盤接口2/6/2023333.鍵操作及功能處理若圖9-6中為4×8的32鍵,設0、1、2、…、E、F共16個鍵為數字鍵;其他16個鍵為功能鍵,鍵值為16~31,即10H~1FH,各功能鍵入口程序地址標號分別為AAA、BBB、…、PPP。當對鍵盤進行掃描并求得鍵值后,還必須做進一步處理。方法是首先判別其是功能鍵還是數字鍵。若為數字鍵,則送顯示緩沖區(qū)進行顯示;若為功能鍵,則由散轉指令“JMP@A+DPTR”轉到相應的功能鍵處理程序,完成相應的操作。完成上述任務的子程序流程圖如圖9-10所示。圖9-10求功能鍵地址轉換程序流程圖2/6/202334功能鍵地址轉移程序如下:BUFF EQU 30HKEYADR:MOV A,BUFF;鍵值→A CJNE A,#0FH,KYARD1 AJMP DIGPRO;等于F,轉數字鍵處理KYARD1:JC DIGPRO;小于F,轉數字鍵處理KEYTBL:MOV DPTR,#JMPTBL;送功能鍵地址表指針 CLR C;清進位位 SUBB A,#10H;功能鍵值(10H~1FH)減16 RL A;(A)×2,使(A)為偶數:0、2、4、… JMP @A+DPTR;轉相應的功能鍵處理程序2/6/202335JMPTBL:AJMP AAA;AJMP BBB;AJMP CCC;AJMP DDD; AJMP EEE; AJMP FFF;AJMP GGG;AJMP HHH;AJMP III;AJMP JJJ;AJMP KKK;AJMP LLL;AJMP MMM;AJMP NNN;AJMP OOO;AJMP PPP;均為2字節(jié),轉到16個功能鍵的相應入口地址。(A)=0、2、4、6…散轉到AAA、BBB、CCC、DDD、…、PPP2/6/2023369.1.2LED顯示器接口及顯示程序單片機應用系統(tǒng)中使用的顯示器主要有:發(fā)光二極管顯示器,簡稱LED(LightEmittingDiode);液晶顯示器,簡稱LCD(LiquidCrystalDisplay);CRT顯示器2/6/2023371.LED顯示器結構原理單片機中通常使用7段LED有共陰極和共陽極兩種,如圖9-11所示。發(fā)光二極管的陽極連在一起的(公共端K0)稱為共陽極顯示器陰極連在一起的(公共端K0)稱為共陰極顯示器。一位顯示器由8個發(fā)光二極管組成,其中,7個發(fā)光二極管構成字型“8”的各個筆劃(段)a~g,另一個小數點為dp發(fā)光二極管。當在某段發(fā)光二極管上施加一定的正向電壓時,該段筆劃即亮;不加電壓則暗。為了保護各段LED不被損壞,須外加限流電阻。2/6/202338以共陰極LED為例,如圖9-11(a)所示,各LED公共陰極K0接地。若向各控制端a、b、…、g、dp順次送入11100001信號,則該顯示器顯示“7.”字型。共陰極與共陽極7段LED顯示數字0~F、“-”符號及“滅”的編碼(a段為最低位,dp點為最高位)如表9-1所列。圖9-11LED7段顯示器2/6/202339表9-1共陰極和共陽極7段LED顯示字型編碼表顯示字符012345678共陰極段選碼3F(BF)06(36)5B(DB)4F(CF)66(F6)6D(FD)7D(FD)07(87)7F(FF)共陽極段選碼C0(40)F9(79)A4(24)B0(30)99(19)92(12)82(02)F8(78)80(00)顯示字符9ABCDEF-熄滅共陰極段選碼6F(EF)77(F7)7C(FC)39(B9)5E(DE)79(F9)71(F1)40(C0)00(80)共陽極段選碼90(10)88(08)82(03)C6(46)A1(21)86(06)8E(0E)BF(3F)FF(7F)2/6/2023402.LED顯示器接口及顯示方式LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種方式。2/6/2023411)LED靜態(tài)顯示方式靜態(tài)顯示就是當顯示器顯示某個字符時,相應的段(發(fā)光二極管)恒定地導通或截止,直到顯示另一個字符為止。LED顯示器工作于靜態(tài)顯示方式時,各位的共陰極(公共端K0)接地;若為共陽極(公共端K0),則接+5v電源。每位的段選線(a~dp)分別與一個8位鎖存器的輸出口相連,顯示器中的各位相互獨立,而且各位的顯示字符一經確定,相應鎖存的輸出將維持不變。因此,靜態(tài)顯示器的亮度較高。這種顯示方式編程容易,管理也較簡單,但占用I/O口線資源較多。在顯示位數較多的情況下,一般都采用動態(tài)顯示方式。2/6/2023422)LED動態(tài)顯示方式在多位LED顯示時,將所有位的段選線并聯在一起,由一個8位I/O口控制。而共陰(或共陽)極公共端K分別由相應的I/O線控制,實現各位的分時選通。圖9-12所示為6位共陰極LED動態(tài)顯示接口電路。圖9-126位LED動態(tài)顯示接口電路圖9136位動態(tài)掃描顯示狀態(tài)圖9-126位LED動態(tài)顯示接口電路2/6/202343例如,要求顯示“E0-20”時,I/O口1和I/O口2輪流送入段選碼、位選碼及顯示狀態(tài)如圖9-13所示。段選碼、位選碼每送入一次后延時1ms,因人眼的視覺暫留時間為0.1s(100ms),所以每位顯示的間隔不必超過20ms,并保持延時一段時間,以造成視覺暫留效果,給人看上去每個數碼管總在亮。這種方式稱為軟件掃描顯示。圖9-136位動態(tài)掃描顯示狀態(tài)2/6/2023443.LED顯示器與89C51接口及顯示子程序圖9-14圖中,P0口輸出段選碼,P1口輸出位選碼,位選碼占用輸出口的線數決定于顯示器位數,比如6位就要占6條。75452(或7406)是反相驅動器(30V高電壓,OC門),這是因為89C51P1口正邏輯輸出的位控與共陰極LED要求的低電平點亮正好相反,即當P1口位控線輸出高電平時,點亮一位LED。7407是同相OC門,作段選碼驅動器。逐位輪流點亮各個LED,每一位保持1ms,在10~20ms之內再一次點亮,重復不止。這樣,利用人的視覺暫留,好像6位LED同時點亮一樣。掃描顯示子程序流程如圖9-15所示。2/6/202345圖9-146只LED動態(tài)顯示接口2/6/202346圖9-15DIS顯示子程序流程圖2/6/202347DIS顯示子程序清單如下:DIS: MOV R0,#7EH;顯示緩沖區(qū)末地址→R0 MOV R2,#01H;位控字,先點亮最低位(右邊) MOV A,R2 MOV DPTR,#TAB;字型表頭地址→DPTRLP0: MOV P1,A MOV A,@R0;取顯示數據 MOVC A,@A+DPTR;取出字形碼 MOV P0,A;送出顯示 ACALL D1MS;調延時子程序 DEC R0;數據緩沖區(qū)地址減1 MOV A,R2 JB ACC.5,LP1;掃描到最左面的顯示器了嗎? RL A;沒有到,左移1位 MOV R2,A AJMP LP0LP1: RET2/6/202348TAB: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00HD1MS:MOV R7,#02H ;延時1ms子程序DL: MOV R6,#0FFHDL1: DJNZ R6,DL1 DJNZ R7,DL RET2/6/2023499.1.3串行口控制的鍵盤/LED顯示器接口電路89C51的串行口RXD和TXD為一個全雙工串行通信口,但工作在方式0下可作同步移位寄存器用,其數據由RXD(P3.0)端串行輸出或輸入;而同步移位時鐘由TXD(P3.1)端串行輸出,在同步時鐘作用下,實現由串行到并行的數據通信。在不需要使用串行通信的場合,利用串行口加外圍芯片74HC164就可構成一個或多個并行輸入/輸出口,用于串并轉換、并串轉換、鍵盤驅動或顯示器LED驅動。2/6/20235074HC164是串行輸入、并行輸出移位寄存器,并帶有清除端。其引腳如圖9-16所示。其中:Q0~Q7:并行輸出端。A、B:串行輸入端。CLR:清除端,零電平時,使74LS164輸出清0。CLK:時鐘脈沖輸入端,在脈沖的上升沿實現移位。當CLK=0、CLR=1時,74HC164保持原來的數據狀態(tài)。圖9-1674HC164引腳圖2/6/2023511.硬件電路如圖9-17所示,圖中“與”門的作用是避免鍵盤操作時對顯示器的影響,即僅當P1.2=1時,才開放顯示器傳送。圖9-17串行控制鍵盤掃描和顯示器接口電路2/6/2023522.程序清單KEY: MOV A,#00H;向串行口數據緩沖器送全0 MOV SBUF,AKL0: JNB TI,KL0;等待8位數據發(fā)送完畢 CLR TI;清中斷標志KL1: JNB P1.0,PK1;第1行有鍵按下嗎? JB P1.1,KL1;第2行有鍵按下嗎?若無則繼續(xù)掃描PK1: ACALL D10MS;有鍵按下,延時10ms,消除鍵抖動 JNB P1.0,PK2;確定是否鍵抖動引起 JB P1.1,KL1PK2: MOV R7,#08H;不是鍵抖動引起則逐列掃描 MOV R6,#0FEH;選中第0列 MOV R3,#00H;記下列號初值2/6/202353PL5: MOV A,R6;使某一列為低 MOV SUBF,AKL2: JNB TI,KL2 CLR TI JNB P1.0,PK4;是第1行嗎? JNB P1.1,PK5;是第2行嗎? MOV A,R6;不是本列,則繼續(xù)下一列 RL A MOV R6,A INC R3;列號加1 DJNZ R7,PL5;若8列掃描完仍未找到,則退出,等待執(zhí)行下一次掃描 RETPK5: MOV R4,#08H;是第2行,則R4送初值08H AJMP PK3;轉鍵處理PK4: MOV R4,#00H;是第1行,則R4送初值00HPK3: MOV A,#00H;等待鍵釋放 MOV SBUF,AKL3: JNB TI,KL3 CLR TI2/6/202354KL4: JNB P1.0,KL4 JNB P1.1,KL4 MOV A,R4;取鍵號 ADD A,R3 SUBB A,#0AH;是命令鍵嗎? JNC KL6;轉命令鍵處理程序 MOV DPTR,#TABL;字形碼表初值送DPTR ADD A,#0AH;恢復鍵號 MOVC A,@A+DPTR;取字形碼數據 MOV R0,60H;取顯示緩沖區(qū)指針 MOV @R0,A;將字形碼入顯示緩沖區(qū) INC R0;顯示緩沖區(qū)地址加1 CJNE R0,#60H,KD;判是否到最高位 MOV 60H,#58H;保存顯示緩沖區(qū)地址 SJMP KD1KD: MOV 60H,R0KD1: ACALL LED;調用送顯示子程序 RET2/6/202355KL6: MOV B,#03H;修正命令鍵地址轉移表指針 MUL AB MOV DPTR,KTAB;地址轉移表首地址送DPTR JMP @A+DPTR;根據指針跳轉KTAB: LJMP K1;K1、K3…為各命令鍵服務程序首地址 LJMP K3 ┊TABL: DB C0H,F9H,A4H,B0H;0~9字形碼轉換 DB 99H,92H,82H,F8H DB 80H,90HLED: SETB P1.2;開放顯示器控制 MOV R7,#08H;顯示位數R7 MOV R0,#58H;先送最低位LED1: MOV A,@R0;送顯示器數據 MOV SBUF,ALED2: JNB TI,LED2 CLR TI INC R0;繼續(xù)下一位 DJNZ R7,LED1;全部送完 CLR P1.2;關閉顯示器控制 RET2/6/2023569.2前向通道中的A/D轉換器及接口技術模/數(A/D)轉換電路的種類有:計數比較型、逐次逼近型、雙積分型等等。逐次逼近型A/D轉換器,在精度、速度和價格上都適中,是最常用的A/D轉換器件。雙積分A/D轉換器,具有精度高、抗干擾性好、價格低廉等優(yōu)點,但轉換速度低。串行輸出的A/D芯片由于節(jié)省單片機的I/O口線,越來越多地被采用。如具有SPI三線接口的TLC1549、TLC1543、TLC2543、MAX187等,具有2線I2C接口的MAX127、PCF8591(4路8位A/D,還含1路8位D/A)等。2/6/2023579.2.1單通道串行輸出A/D芯片TLC1549及接口1TLC1549串行A/D轉換器芯片1)主要性能逐次比較型10位A/D轉換器。片內自動產生轉換時鐘脈沖,轉換時間≤21μs;最大總不可調轉換誤差為±1LSB;單電源供電(+5V),最大工作電流僅為2.5mA;轉換結果以串行方式輸出;工作溫度為-55~+125℃。2/6/2023582)引腳及功能TLC1549M有DIP和FK2種封裝形式。其中,DIP封裝的引腳排列如圖9-18所示。引腳功能見表9-2。圖9-18TLC1549的引腳圖2/6/202359表9-2TLC1549M引腳功能引腳2/6/2023603)TLC1549的工作方式及時序TLC1549有6種工作方式,如表9-3所列。其中方式1和方式3屬同一類型,方式2和方式4屬同一類型。一般來說,時鐘頻率高于280kHz時,可認為是快速工作方式;低于280kHz時,可認為是慢速工作方式。因此,如果不考慮I/OCLOCK周期大小,方式5與方式3相同,方式6與方式4相同。2/6/202361表9-3TLC1549的工作方式方式2/6/202362工作方式1工作時序圖如圖9-19所示。圖中從CS下跳到DATA輸出數據要有1.3μs的延時;連續(xù)進行A/D轉換時,在上次轉換結果輸出的過程中,同時完成本次轉換的采樣,這樣大大提高了A/D轉換的速率。如果I/OCLOCK的時鐘頻率為2.1MHz,則完成一次A/D轉換的時間大約為26μs。如果用連續(xù)模擬信號進行采樣轉換,顯然其轉換速率是很高的。圖9-19方式1工作時序2/6/2023632TLC1549與89C51接口電路與程序TLC1549與89C51的SPI接口如圖9-20所示。圖9-20TLC1549M與89C51的接口電路2/6/20236489C51讀取TLC1549中10位數據程序如下: ORG 0050HR1549:CLR P3.0;片選有效,選中TLC1549 MOV R0,#2;要讀取高兩位數據 LCALL RDATA;調用讀數子程序 MOV R1,A;高兩位數據送到R1中 MOV R0,#8;要讀取低8位數據 LCALL RDATA;調用讀數子程序,讀取數據 MOV R2,A;低8位數據送入R2中 SETB P3.0;片選無效 CLR P3.1;時鐘低電平 RET;程序結束;讀數子程序RDATA:CLR P3.1;時鐘低電平 MOV C,P3.2;數據送進位位CY RLC A;數據送累加器A SETB P3.1;時鐘變高電平 DJNZ R0,RDATA;讀數結束了嗎 RET;子程序結束2/6/2023659.2.2多通道串行輸出A/D芯片TLC2543及接口TLC2543的特性如下:12位A/D轉換器(可8位、12位和16位輸出);在工作溫度范圍內轉換時間為10μs;11通道輸入;3種內建的自檢模式;片內采樣/保持電路;最大±1/4096的線性誤差;內置系統(tǒng)時鐘;轉換結束標志位;單/雙極性輸出;輸入/輸出的順序可編程(高位或低位在前);可支持軟件關機;輸出數據長度可編程。TLC1543為11個輸入端的10位A/D芯片,價格比TLC2543低。2/6/2023661TLC2543的片內結構及引腳功能TLC2543引腳如圖9-21所示,片內結構如圖9-22所示。TLC2543片內由通道選擇器、數據(地址和命令字)輸入寄存器、采樣/保持電路、12位的模/數轉換器、輸出寄存器、并行到串行轉換器以及控制邏輯電路7個部分組成。通道選擇器根據輸入地址寄存器中存放的模擬輸入通道地址,選擇輸入通道,并將輸入通道中的信號送到采樣/保持電路中,然后在12位模/數轉換器中將采樣的模擬量進行量化編碼,轉換成數字量,存放到輸出寄存器中。這些數據經過并行到串行轉換器轉換成串行數據,經TLC2543的DOUT輸出到微處理器中。TLC2543的引腳意義如表9-4所列。圖9-21TLC2543引腳排列2/6/202367圖9-22TLC2543片內結構框圖2/6/202368表9-4TLC2543各引腳定義(1)2/6/202369表9-4TLC2543各引腳定義(2)2/6/2023702.TLC2543的接口時序TLC2543的時序有兩種:使用片選信號CS和不使用片選信號CS。這兩種時序分別如圖9-23和圖9-24所示。圖9-23使用片選信號CS高位在前的時序2/6/202371圖9-24不使用片選信號CS高位在前的時序2/6/2023723TLC2543的命令字TLC2543的命令字如下:通道選擇位輸出數據長度控制位輸出數據順序控制位數據極性選擇位D7D6D5D4D3D2D1D0輸入到輸入寄存器中的8位編程數據選擇器件輸入通道和輸出數據的長度及格式。其選擇格式如表9-5所列。2/6/202373表9-5輸入寄存器命令字格式2/6/2023744TLC2543與89C51的SPI接口及程序TLC2543串行A/D轉換器與89C51的SPI接口電路如圖9-25所示。SPI(SerialPerpheralInterface)是一種串行外設接口標準,串行通信的雙方用4根線進行通信。這4根連線分別是:片選信號、I/O時鐘、串行輸入和串行輸出。這種接口的特點是快速、高效,并且操作起來比I2C要簡單一些,接線也比較簡單,TLC2543提供SPI接口。圖9-25TLC2543和89C51的接口電路2/6/202375對不帶SPI或相同接口能力的89C51,須用軟件合成SPI操作來和TLC2543接口。TLC2543的I/OCLOCK、DIN和CS端由單片機的P1.0、P1.1和P1.3提供。TLC2543轉換結果的輸出(DIN)數據由P1.2接收。89C51將用戶的命令字通過P1.1輸入到TLC2543的輸入寄存器中,等待20μs開始讀數據,同時寫入下一次的命令字。2/6/2023761)TLC2543與89C51的8位數據傳送程序TLC2543: MOV R4,#04H;置控制字,AIN0,8位數據高位在前 MOV A,R4 CLR P1.3;片選CS有效,選中TLC2543MSB: MOV R5,#08H;傳送8位LOOP: MOV P1,#04H;P12為輸入位 MOV C,P1.2;將TLC2543A/D轉換的8位數據串行讀到C中一位 RLC A;帶進位位循環(huán)左移 MOV P1.1,C;將控制字(在ACC中)的一位經DIN送入TLC2543 SETB P1.0;產生一個時鐘 NOP CLR P1.0 DJNZ R5,LOOP MOV R2,A;A/D轉換的數據存于R2中 RET執(zhí)行上述子程序的過程如圖9-26所示2/6/202377圖9-26TLC2543與89C51數據交換示意圖2/6/2023782)TLC2543與89C51的12位數據傳送程序 ORG 0100H MOV P1,#04H;P12為輸入位 MOV R6,#0AH;轉換10次 MOV R0,#2FH;置數據緩沖區(qū)指針 CLR P1.0;置I/O時鐘為低 SETB P1.3;置CS為高 ACALL TLC2543;調轉換子程序 SJMP $TLC2543:MOV A,#00H;設置通道選擇和工作模式(IN0,12位) CLR P13;置CS為低 MOV R5,#0CH;置輸出位計數初值LOOP: MOV P1,#04H;P12為輸入位 MOV C,P1.2;讀入轉換數據一位 RLC A;將進位位移給A,即將轉換數據的一位讀入,同時將控制字的一位輸入C2/6/202379

MOV P1.1,C;送出一位控制位入2543 SETB P1.0;置I/O時鐘為高 NOP CLR P1.0;置I/O時鐘為低 CJNE R5,#04,LOP1;剩4位了嗎? MOV @R0,A;前8位存入RAM INC R0 CLR ALOP1:DJNZ R5,LOOP;未轉完繼續(xù)讀剩余4位 ANL A,#0FH MOV @R0,A;轉換完的存入單元 RET2/6/2023803)TLC2543與89C51的16位數據傳送程序

ORG 100HSTART:MOV SP,#50H;初始化堆棧指針 MOV P1,#04H;初始化P1口 CLR P1.0;置I/OCLOCK為低 SETB P1.3;置CS為高 MOV A,#0FFH ACALL TLC2543 ACALL STORE LJMP STARJTLC2543: MOV R4,#0CH;讀輸入數據命令字到R4,AIN0,16位,高位在前 MOV A,R4;讀輸入數據到ADW0: CLR P1.3;置CS為低 JB ACC.1,LSB;若輸入數據D1為1,首先進行低字節(jié)數據傳送MSB: MOV R5,#08;以下傳送高字節(jié)數據LOOP1:MOV C,P12;讀轉換數據到C RLC A;轉換數據移到A的最低位,輸入數據移入C2/6/202381 MOV P1.1,C;寫輸入數據(命令字) SETB P1.0;置I/OCLOCK為高 NOP CLR P1.0;置I/OCLOCK為低 DJNZ R5,LOOP1;判8個數據送完否,未完跳回 MOV R2,A;轉換結果的高字節(jié)放入R2 MOV A,R4;讀輸入數據到A JB ACC.1,RETURN;若輸入數據D1為1,送數結束LSB: MOV R5,#08;以下傳送低字節(jié)數據LOOP2:MOV C,P1.2 RLC A MOV P1.1,C SETB P1.0 NOP CLR P1.0 DJNZ R5,LOOP2 MOV R3,A;轉換結果低字節(jié)放入R3 MOV A,R4 JB ACC.1,MSB;若輸入數據D1為1,進行高字節(jié)數據傳送RETURN:RET2/6/202382STORE:MOV A,R4;讀輸入數據到A ANL A,#0F0H;只保留地址位 SWAP A;以下產生存儲地址 MOV B,#02 MUL AB ADD A,#30H MOV R1,A MOV A,R2 MOV @R1,A ;把高字節(jié)放入相應的偶數地址RAM: ;各通道地址依次為30H、32H…… INC R1 MOV A,R3 MOV @R1,A ;把低字節(jié)放入相應的奇數地址RAM: ;各通道地址依次為31H、33H…… RET END2/6/2023839.2.3逐次逼近型并行輸出A/D轉換器及接口ADC0809A/D轉換器芯片圖9-27所示為ADC0809的引腳圖及內部邏輯結構圖。它由8路模擬開關、8位A/D轉換器、三態(tài)輸出鎖存器以及地址鎖存譯碼器等組成。圖9-27ADC0809結構2/6/202384引腳功能說明如下:IN0~IN7:8個輸入通道的模擬輸入端。D0~D7:8位數字量輸出端。START:啟動信號,加上正脈沖后,A/D轉換開始進行。ALE:地址鎖存信號。由低至高電平時,把三位地址信號送入通道號地址鎖存器,并經譯碼器得到地址輸出,以選擇相應的模擬輸入通道。EOC:轉換結束信號,是芯片的輸出信號。轉換開始后,EOC信號變低;轉換結束時,EOC返回高電平。這個信號可以作為A/D轉換器的狀態(tài)信號來查詢,也可以直接用作中斷請求信號。OE:輸出允許控制端(開數字量輸出三態(tài)門)。CLK:時鐘信號。最高允許值為640kHz。VREF+和VREF-:A/D轉換器的參考電壓。VCC:電源電壓。由于是CMOS芯片,允許的電壓范圍較寬,可以是+5~+15V。8位模擬開關地址輸入通道的關系見表96。2/6/202385表9-68位模擬開關功能表ADC0809的時序圖見圖9-28。圖9-28ADC0809的時序圖ADDCADDBADDA輸入通道號000IN0001IN1010IN2┇┇┇┇111IN72/6/2023862.ADC0809與89C51接口ADC0809與89C51連接可采用查詢方式,也可采用中斷方式。圖9-29為中斷方式連接電路圖。由于ADC0809片內有三態(tài)輸出鎖存器,因此可直接與89C51接口。圖9-29ADC0809與89C51的連接2/6/2023873.8路巡回檢測系統(tǒng)【例9-3】某糧庫或某冷凍廠需對8點(8個冷凍室或8個糧倉)進行溫度巡回檢測。要求設計一個單片機巡回檢測系統(tǒng),使其能對各冷凍室或各糧倉的溫度巡回檢測并加以處理。設被測溫度范圍為-30~+50℃,溫度檢測精度要求不大于±1℃。將讀數依次存放在片外數據存儲器A0H~A7H單元。其主程序和中斷服務程序如下:主程序:MAIN: MOVR0,#0A0H;數據暫存區(qū)首址 MOVR2,#08H;8路計數初值 SETBIT1;脈沖觸發(fā)方式 SETBEA;開中斷 SETBEX1 MOVDPTR,#7FF8H;指向0809首地址 MOVX@DPTR,A;啟動A/D轉換HERE:SJMPHERE;等待中斷2/6/202388中斷服務程序: MOVX A,@DPTR;讀數 MOVX @R0,A;存數 INC DPTR;更新通道 INC R0;更新暫存單元 DJNZ R2,DONE RETIDONE:MOVX @DPTR,A RETI2/6/2023899.2.43位雙積分A/D轉換器及接口技術適用于單片機接口的有3位雙積分A/D轉換器

MC14433(精度相當于11位二進制數)和4位雙積分A/D轉換器ICL7135(精度相當于14位二進制數)。2/6/2023901.MC14433芯片介紹MC14433主要特性參數如下:轉換精度具有±1/1999的分辨率或讀數的±0.05%±1個字(相當于11位二進制數);電壓量程分1.999V和199.9mV兩檔;轉換速度為3~10次/秒,相應的時鐘頻率變化范圍為50~150kHz;輸入阻抗大于100MΩ;基準電壓取2V或200mV(分別對應量程為1.999V或199.9mV);具有過量程和欠量程輸出標志;片內具有自動極性轉換和自動調零功能;轉換結束輸出經過多路調制的BCD碼;工作電壓范圍為±4.5~±8V或9~16V;當電源為±5V時,典型功耗為8mW。2/6/202391MC14433為24腳雙列直插式封裝,其引腳如圖9-30所示。引腳功能介紹如下:VAG(1腳) :模擬地。VREF(2腳):基準電壓輸入端。VX(3腳):被測電壓輸入端。R1、R1/C1和C1(4~6腳):外接積分阻容元件,4腳和6腳為輸入線,5腳為積分波形輸出端。若時鐘為66kHz,R1為470kΩ(2V)或27kΩ(200mV)時,一次轉換的時間約為250ms。C01和C02(7和8腳):外接失調補償電容。通常取0.1μF。DU(9腳):定時輸出控制端。若輸入一個正脈沖,則使轉換結果送至結果寄存器。圖9-30MC14433的引腳圖2/6/202392EOC(14腳):一次轉換結束標志輸出。每一次A/D轉換結束時便輸出一個正脈沖,其寬度為時鐘周期的1/2。若把9腳和14腳相連接,則每次轉換結束都送到輸出鎖存器。在實際電路中常把它們相連。CLKI和CLKO(10和11腳):時鐘信號輸入、輸出端。通常外接一個300KΩ左右的電阻。OR(15腳):過量程標志。當|Vx|>VR時,輸出低電平。DS4~DS1(16~19腳):個、十、百、千位選通特征位輸出信號,寬度為18個時鐘周期。當DS1=1時,Q3~Q0輸出為千位數;DS2=1時,Q3~Q0輸出為百位數……。Q3~Q0(23~20腳):經A/D轉換后的BCD碼結果輸出端。VEE(12腳):負電源,為電路最低電平端。VSS(13腳):輸出低電平基準,為數字地或稱系統(tǒng)地。VDD(24腳):正電源。若VSS=VAG,則輸出幅度為VAG~VDD;若VSS=VEE,則輸出幅度為VEE~VDD。圖931為MC14433的轉換輸出時序。2/6/202393圖9-31MC14433選通脈沖時序2/6/202394DS1=1時,Q3Q2Q1Q0輸出過量程、欠量程、千位和極性標志的編碼如表9-7所列。由表9-7可知,Q3在Q0=0時,表示千位數的內容:Q3=0,千位為1;Q3=1,千位為0。Q3在Q0=1時,表示過、欠量程:Q3=0,表示過量程;Q3=1表示欠量程。當量程選為1.999V時,過量程表示被測信號大于1.999V;欠量程表示被測信號小于0.179V。Q2表示被測信號的極性:Q2=1,為正極性;Q2=0,為負極性。表9-7DS1選通時Q0~Q3表示的輸出結果DS1Q3Q2Q1Q0輸出結果狀態(tài)11××0千位數為010××0千位數為11×1×0輸出結果為正1×0×0輸出結果為負10××1輸入信號過量程11××1輸入信號欠量程2/6/2023952.MC14433與89C51接口MC14433與89C51的接口電路如圖9-32所示。該電路采用中斷方式管理MC14433的操作。由于引腳EOC與DU連接在一起,所以,MC14433能自動連續(xù)轉換,每次轉換結束便在EOC腳輸出正脈沖,經反相后作為89C51的外部中斷請求信號INT1。圖9-325G14433與89C51單片機直接連接的硬件接口2/6/2023969.3系統(tǒng)后向通道配置及接口技術后向通道是計算機實現控制運算處理后,對被控對象的輸出通道接口。系統(tǒng)的后向通道是一個輸出通道,其特點是弱電控制強電,即小信號輸出實現大功率控制。常見的被控對象有電機、電磁開關等。單片機實現控制是以數字信號或模擬信號的形式通過I/O口送給被控對象的。其中,數字信號形態(tài)的開關量、二進制數字量和頻率量可直接用于開關量、數字量系統(tǒng)及頻率調制系統(tǒng)的控制;但對于一些模擬量控制系統(tǒng),則應通過D/A轉換器轉換成模擬量控制信號后,才能實現控制。2/6/2023979.3.1后向通道中的功率開關器件及接口1.繼電器及接口 1)單片機與繼電器的接口 一個典型的繼電器與單片機的接口電路如圖9-33所示。圖9-33繼電器接口2/6/2023982)單片機與固態(tài)繼電器接口固態(tài)繼電器簡稱SSR(SolidStateRelay),是一種四端器件:兩端輸入,兩端輸出,它們之間用光耦合器隔離。它是一種新型的無觸點電子繼電器,其輸入端僅要求輸入很小的控制電流,與TTL、HTL、CMOS等集成電路具有較好的兼容性,而其輸出則用雙向晶閘管(可控硅)來接通和斷開負載電源。圖9-34所示為固態(tài)繼電器內部結構。圖9-35為89C51單片機I/O口線與固態(tài)繼電器SSR接口電路。2/6/202399圖9-34固態(tài)繼電器內部結構圖9-35I/O口線與SSR接口電路2/6/20231002.光電耦合器(隔離器)件及驅動接口后向通道往往所處環(huán)境惡劣,控制對象多為大功率伺服驅動機構,電磁干擾較為嚴重。為防止干擾竄入和保證系統(tǒng)的安全,常常采用光電耦合器,用以實現信號的傳輸,同時又可將系統(tǒng)與現場隔離開。晶體管輸出型光電耦合器的受光器是光電晶體管,如圖9-36所示。圖9-36是使用4N25的光電耦合器接口電路圖。圖9-36光電耦合器4N25的接口電路2/6/2023101圖9-36所示的接口電路中,使用同相驅動器OC門7407作為光電耦合器4N25輸入端的驅動。光電耦合器輸入端的電流一般為10~15mA,發(fā)光二極管的壓降為1.2~1.5V。限流電阻由下式計算:式中:VCC為電源電壓;VF為輸入端發(fā)光二極管的壓降,取1.5V;VCS為驅動器7407的壓降,取0.5V。圖9-36所示電路要求IF為15mA,則限流電阻值計算如下:R=200Ω2/6/2023102光電耦合器也常用于較遠距離的信號隔離傳送。一方面,光電耦合器可以起到隔離兩個系統(tǒng)地線的作用,使兩個系統(tǒng)的電源相互獨立,消除地電位不同所產生的影響;另一方面,光電耦合器的發(fā)光二極管是電流驅動器件,可以形成電流環(huán)路的傳送形式。由于電流環(huán)電路是低阻抗電路,它對噪音的敏感度低,因此,提高了通信系統(tǒng)的抗干擾能力。其常用于有噪音干擾環(huán)境下的傳輸,最大傳輸距離為900m。圖9-37是用光電耦合器組成的電流環(huán)發(fā)送和接收電路。圖9-37電流環(huán)電路2/6/20231033.光電耦合驅動晶閘管(可控硅)功率開關及接口圖9-38是4N40和MOC3041的接口驅動電路。4N40是常用的單向晶閘管輸出型光電耦合器,也稱固態(tài)繼電器。MOC3041是常用的雙向晶閘管輸出的光電耦合器(固態(tài)繼電器)。圖9-38晶閘管輸出型光電耦合器驅動接口2/6/20231049.3.2串行輸入D/A芯片TLC5615接口技術TLC5615是具有3線串行接口的數/模轉換器。其輸出為電壓型,最大輸出電壓是基準電壓值的兩倍。帶有上電復位功能,上電時把DAC寄存器復位至全0。TLC5615的性能價格比較高,市場售價比較低。2/6/20231051.TLC5615的特點10位CMOS電壓輸出;5V單電源工作;與微處理器3線串行接口(SPI);最大輸出電壓是基準電壓的2倍;輸出電壓具有和基準電壓相同的極性;建立時間12.5μs;內部上電復位;低功耗,最高為1.75mW;引腳與MAX515兼容。2/6/20231062.功能方框圖TLC5615的功能方框圖如圖9-39所示。圖9-39TLC5615功能方框圖2/6/20231073.引腳排列及功能TLC5615的引腳排列及功能說明分別見圖9-40及表9-8。圖9-40TLC5615引腳圖引腳I/O說明名稱序號DIN1I串行數據輸入SCLK2I串行時鐘輸入/CS3I芯片選擇。低有效DOUT4O用于菊花鏈(daisychaining)的串行數據輸出AGND5模擬地REFIN6I基準電壓輸入OUT7ODAC模擬電壓輸出VDD8正電源(4.5~5.5V)表9-8引腳功能2/6/20231084.TLC5615的時序分析TLC5615的時序圖如圖9-41所示。圖9-41時序波形圖2/6/20231095.TLC5615的輸入/輸出關系圖9-42的D/A輸入/輸出關系如表9-9所列。圖9-42TLC5615與89C51接口電路數字量輸入模擬量輸出1111111111(00)2VREFIN×1023/1024┇

┇1000000001(00)2VREFIN×513/10241000000000(00)2VREFIN×512/10240111111111(00)2VREFIN×511/1024┇┇0000000001(00)2VREFIN×1/10240000000000(00)0V表9-9D/A轉換關系2/6/2023110因為TCL5615芯片內的輸入鎖存器為12位寬,所以要在10位數字的低位后面再添上兩位數字××。××為不關心狀態(tài)。串行傳送的方向是先送出高位MSB,后送出低位LSB。10位××如果有級聯電路,則應使用16位的傳送格式,即在最高位MSB的前面再加上4個虛位,被轉換的10位數字在中間。4個虛位10位××MSBLSB2/6/20231116.TLC5615與89C51的串行接口電路圖9-42為TLC5615和89C51單片機的接口電路。將89C51要輸出的12位數據存在R0和R1寄存器中,其D/A轉換程序如下: CLR P3.0;片選有效 MOV R2,#4;將要送入的前4位數據位數 MOV A,R0;前4位數據送累加器低4位 SWAP A;A中高4位和低4位互換(4位數在高位) LCALL WRdata;由DIN輸入前4位數據 MOV R2,#8;將要送入的后8位數據位數 MOV A,R1;8位數據送入累加器A LCALL WRdata;由DIN輸入后8位數據 CLR P3.1;時鐘低電平 SETB P3.0;片選高電平,輸入的12位數據有效 RET;結束送數子程序如下:WRdata:NOP;空操作LOOP: CLR P3.1;時鐘低電平 RLC A;數據送入進位位CY MOV P3.2,C;數據輸入TLC5615有效 SETB P3.1;時鐘高電平 DJNZ R2,LOOP;循環(huán)送數 RET2/6/20231129.3.3并行輸入D/A芯片及接口技術1.并行輸入D/A轉換芯片——DAC0832DAC0832引腳圖和邏輯框圖如圖9-43所示。DAC0832主要由兩個8位寄存器和一個8位D/A轉換器組成。圖9-43DAC0832結構2/6/2023113圖中,LE1和LE2是寄存命令。當LE1=1時,輸入寄存器的輸出隨輸入變化;當LE1=0時,數據鎖存在寄存器中,不再隨數據總線上的數據變化而變化。ILE為高電平,且CS與WR1同時為低時,使得LE1=1;當WR1變高時,8位輸入寄存器便將輸入數據鎖存。XFER與WR2同時為低,使得LE2=2,8位DAC寄存器的輸出隨寄存器的輸入變化。WR2上升沿將輸入寄存器的信息鎖存在DAC寄存器中。圖中的RFB是片內電阻,為外部運算放大器提供反饋電阻,用以提供適當的輸出電壓;VREF端由外部電路提供+10~-10V的參考電源;IOUT1與IOUT2是兩個電流輸出端。欲將數字量D0~D7轉換為模擬量,只要使WR2=0,XFER=0,DAC寄存器為不鎖存狀態(tài),即ILE=1,CS和WR1端接負脈沖信號,即可完成一次轉換;或者WR1=0,CS=0,ILE=1,輸入寄存器為不鎖存狀態(tài),而WR2和XFER端接負脈沖信號,可達到同樣目的。2/6/20231141)DAC0832引腳功能D0~D7:數字量數據輸入線。ILE:數據鎖存允許信號,高電平有效。CS:輸入寄存器選擇信號,低電平有效。WR1:輸入寄存器的“寫”選通信號,低電平有效。XFER:數據轉移控制信號線,低電平有效。WR2:DAC寄存器的“寫”選通信號。VREF:基準電壓輸入線。RFB:反饋信號輸入線,芯片內已有反饋電阻。IOUT1和IOUT2:電流輸出線。

IOUT1與IOUT2的和為常數,IOUT1隨DAC寄存器的內容線性變化。一般在單極性輸出時,IOUT2接地;在雙極性輸出時,接運放。VCC:工作電源。DGND:數字地。AGND:模擬信號地。2/6/2023115當LE1=1時,輸入鎖存器狀態(tài)隨數據輸入線狀態(tài)變化;而LE1=0時,則

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論