《單片機原理及接口技術》第九章應用系統配置及接口技術_第1頁
《單片機原理及接口技術》第九章應用系統配置及接口技術_第2頁
《單片機原理及接口技術》第九章應用系統配置及接口技術_第3頁
《單片機原理及接口技術》第九章應用系統配置及接口技術_第4頁
《單片機原理及接口技術》第九章應用系統配置及接口技術_第5頁
已閱讀5頁,還剩70頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第9章應用系統配置及接口技術PC機除了主機以外還需要哪些部分呢?單片機電路有時候也需要鍵盤、顯示等外設。本章主要內容鍵盤顯示器A/D轉換D/A轉換9.1鍵盤與計算機接口非編碼鍵盤:按鍵的動作靠軟件識別編碼鍵盤:由硬件電路產生按鍵的鍵值或編號,并由硬件識別閉合鍵按下:P1.0輸入低電平0松開:P1.0輸入高電平1鍵功能的實現:對于一組鍵或一個鍵盤,需通過接口電路與單片機相連。可采用查詢或中斷方式測試有無鍵按下,再確定是哪一個鍵按下,將該鍵號送入累加器ACC,然后判斷是數字鍵還是功能鍵,若是數字鍵,則將鍵號對應的數字送入相關輸入緩沖區;若是功能鍵,則通過跳轉指令轉入執行該鍵的功能程序,執行完后再返回主程序。抖動在按鍵按下與斷開的過程中,按鍵產生機械抖動。抖動現象將使

CPU產生誤判斷。可用硬件或軟件的去除抖動方法9.1.1獨立式非編碼鍵盤接口MOVA,#0FFHMOVP1,AMOVA,P1JNBACC.0,KEY0JNBACC.1,KEY1………假設為P1口電路簡單;但鍵數較多時,需占用較多的I/O線準雙向口:輸入時須先寫1用于較多按鍵,節省I/O線。采用逐行(逐列)掃描法:向列線輸出全掃描字00H。讀入行線狀態。若行線有0,則有鍵按下;若行線全1,則無鍵按下。9.1.2行列式非編碼鍵盤接口1、鍵盤工作原理——舉例行線:X0~X3,通過電阻接+5V。沒有鍵閉合時,行線呈高電平;某鍵閉合時,該鍵對應的行線和列線被短路。此時行線電平由列線電位所決定。例判斷有無鍵閉合:使列線為低電平,讀出行線狀態。找出哪一個鍵閉合:逐行(逐列)掃描查詢法逐行掃描法:依次將列線送低電平,逐個檢查行線狀態,確定按鍵在某行某列交叉的點上,取得鍵值,執行相應程序。例:鍵盤掃描程序SERCH:MOVR2,#0EFH MOVR3,#00HLINE0:MOVA,R2 MOVP1,A MOVA,P1 JBACC.3,LINE1 MOVA,#00H AJMPTRYKLINE1:JBACC.2,LINE2 MOVA,#04H AJMPTRYK LINE2:JBACC.1,LINE3MOVA,#08H3210476511109815141312+5VP1.4P1.3P1.089C51P1.7P1.6P1.5P1.2P1.1

AJMPTRYK

LINE3:JBACC.0,LINE4

MOVA,#0CH

AJMPTRYK

LINE4:INCR3

MOVA,R2

RL A

JNBACC.0,BACK

MOVR2,A

AJMPLINE0

TRYK:ADDA,R3

BACK:RET 9.1.3單片機對非編碼鍵盤的控制程序掃描方式CPU不斷調用鍵盤處理程序,對鍵盤進行掃描定時掃描方式利用定時器的溢出中斷請求,每隔一定的時間對鍵盤掃描一次中斷掃描方式提高CPU的效率,當鍵盤上有鍵閉合時產生中斷請求9.2LED顯示器及接口設計1、由發光二極管組成,分共陽、共陰兩種。

LowEmittingDiode問題引入:

LED顯示器如何顯示出指定數字/字符?comcom2.LED顯示字符方法:COM接低電平;各輸入端輸入一個顯示代碼,如5BH=01011011,對應c,f滅,而a,b,d,e,g點亮,則LED顯示字符“2”顯示各種字符的代碼見下表。對于共陽極LED,將顯示代碼取反。若顯示小數點,可利用D7位。限流電阻字型表

靜態顯示方式連接

所有LED的位選均共同連接到+VCC或GND,每個LED的8根段選線分別連接一個8位并行I/O口,從該I/O口送出相應的字型碼顯示字型。

特點原理簡單;顯示亮度強,無閃爍;占用I/O資源較多。

常用于位數較少的場合。動態顯示將各個顯示器的輸入(段選)線并聯,由一個I/O口提供字形代碼;由另一個I/O口提供位選代碼。采用軟件掃描顯示方法,某個時刻只點亮1個顯示器,點亮時間不超過20ms,分時逐個點亮LED。與靜態顯示相比,特點:節省硬件電路及I/O資源;占用CPU時間多;亮度相對較低;適用于LED位數較多的場合。視覺暫留特性6位共陰LED。利用8155的PA口(假設地址7F01H)作為位選,75452反相驅動;PB口(7F02H)作為段選,7407同相驅動。在片內RAM中設一顯示緩沖區79H~7EH,依次存放要顯示的6個字符(高4位清0,即00~09H,0A~0FH)。反復調用顯示子程序。DIS:MOVR0,#7EH;顯示緩沖區首址MOVR2,#01H;位選初始值MOVA,R2LP0:MOVDPTR,#7F01H;位選端口PAMOVX@DPTR,A;輸出位選代碼INCDPTR;段選端口PBMOVA,@R0;取顯示字符ADDA,#0DH;加偏移量MOVCA,@A+PC;查表得顯示字符的代碼MOV@DPTR,A;輸出顯示ACALLDIMS;調用延時子程序DECR0;修改顯示緩沖區指針MOVA,R2;修改位選指針JBACC.5,LP1;判斷是否全部顯示一次?RLA;沒有,則左移一位MOVR2,ASJMPLP0LP1:RETDB3FH,06H,5BH,…;顯示代碼表格LCD液晶顯示器LiquidCrystalDisplay

微功耗、體積小、顯示內容豐富、超薄輕巧。任務:如何在LCD的指定位置顯示出指定的字符以及字符串。2行×16列AbHelloworld主要內容TC1602ALCD模塊引腳及結構單片機與字符型LCD模塊接口LCD接口程序設計

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊Vss:+5V電源管腳(Vcc)VDD:

地管腳(GND)Vo:

液晶顯示驅動電源(0V~5V)V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。一、TC1602ALCD模塊引腳及結構

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊DB0~DB7:數據線,可以用8位連接,也可以只用高4位連接,節約單片機資源,本實驗中采用的是八位連接方法。

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊A:背光控制正電源K:背光控制地

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊單片機與LCD模塊之間有四種基本操作: 寫命令 讀狀態 寫顯示數據 讀顯示數據

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊RSR/W操作00寫命令操作(初始化、光標定位等)01讀狀態操作(讀忙標志)10寫數據操作(要顯示內容)11讀數據操作(可以把顯示存儲區中的數據反讀出來)

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊RS:數據和指令選擇控制端,RS=0:命令/狀態;RS=1:數據R/W:讀寫控制線,R/W=0:寫操作;R/W=1:讀操作E:數據讀寫操作控制位,E線向LCD模塊發送一個脈沖,LCD模塊與單片機之間將進行一次數據交換TC1602A的內部結構由DDRAM、CGRAM、CGROM、IR、DR、BF、AC等大規模集成電路組成DDRAM:存放要LCD顯示的數據。CGROM:存放192個5*7的點陣字符,只讀不寫CGRAM:存儲特殊造型的造型碼IR:存儲MCU寫給LCD的指令碼DR:相當于數據緩沖器BF:忙碌信號AC:地址計數器:負責計數寫入/讀出CGRAM、DDRAM的數據地址,AC依照MCU對LCD的設置值而自動修改其本身內容。讀寫操作、屏幕和光標的操作都是通過指令編程來實現指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設置00000001I/DS顯示狀態設置0000001DCB光標畫面滾動000001S/CR/L**功能設置00001DLNF**CGRAM地址設置0001A5A4A3A2A1A0DDRAM地址設置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數據10數據讀數據11數據清除屏幕---01H,光標復位到地址00H位置光標復位。光標返回到地址00Hreturn指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設置00000001I/DS顯示狀態設置0000001DCB光標畫面滾動000001S/CR/L**功能設置00001DLNF**CGRAM地址設置0001A5A4A3A2A1A0DDRAM地址設置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數據10數據讀數據11數據光標和顯示模式設置。I/D:光標移動方向,1:右移,0:左移;S:屏幕上所有文字是否左移或者右移。S=1:移位S=0:不移位設整體顯示開關(D),光標顯示開關(C),光標位的字符閃耀(B)D=1;C=0;B=000001100——0cH指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設置00000001I/DS顯示開關控制0000001DCB光標畫面滾動000001S/CR/L**功能設置00001DLNF**CGRAM地址設置0001A5A4A3A2A1A0DDRAM地址設置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數據10數據讀數據11數據S/C:高電平時移動顯示的文字,低電平時移動光標

設接口數據位數(DL),顯示行數(N),及字型(F)DL=1,8位=0:4位N=1:2行=0:1行F=1:5×10=0:5×700111000——38H指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設置00000001I/DS顯示開關控制0000001DCB光標畫面滾動000001S/CR/L**功能設置00001DLNF**CGRAM地址設置0001A5A4A3A2A1A0DDRAM地址設置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數據10數據讀數據11數據字符發生器RAM地址設置設置DDRAM地址,為顯示定位讀忙信號和光標地址BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。二、單片機與字符型LCD模塊接口數據線:DB7~DB0接單片機的P1.7~P1.0控制端:

RS~~P3.0R/W~~P3.1

E~~P3.2

單片機與LCD模塊硬件連接

連線表:

A01A07連接1+5V/GND+5V/GND連接2P1.0-P1.7DB0-DB7連接3P3.0RS連接4P3.1RW連接5P3.2E液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符三、LCD接口程序設計程序設計功能設置——寫命令子程序

LCD初始化:按一定順序寫命令字如:寫清屏命令字、寫DDRAM光標定位地址命令字顯示數據——寫數據子程序讀入狀態字——讀狀態子程序

定位光標位置把顯示數據顯示在某個位置,就是把顯示數據寫在相應的DDRAM地址中,DDRAM地址占7位。SetDDRAMaddress命令如下:row12345……141516line100H01H02H03H04H……0dH0eH0fHline240H41H42H43H44H……4dH4eH4fH≈≈≈≈NOTICE≈≈≈≈光標定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式字設置;第1行DDRAM地址與第2行DDRAM地址并不連續。80H81H82H83H84H8dH8eH8fH0c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。例如要在液晶模塊的第二行第一個字符的位置顯示字母“A”

第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)LCD顯示程序設計mainLCD初始化光標定位顯示字符SJMP$RSEQUP3.0RWEQUP3.1EEQUP3.5ORG0000HMOVP1,#00000001B;清屏ACALLENABLEMOVP1,#00111000B;8位2行5x7點陣ACALLENABLEMOVP1,#00001111B;顯示器開、光標開、閃爍開ACALLENABLEMOVP1,#00000110B;文字不動,光標自動右移ACALLENABLEMOVP1,#0C0H;寫入顯示起始地址(第二行第一個位置)ACALLENABLEMOVP1,#01000001B;字母A的代碼SETBRSCLRRWCLREACALLDELAYSETBEAJMP$程序在開始時對液晶模塊功能進行了初始化設置,約定了顯示格式。注意顯示字符時光標是自動右移的,無需人工干預,每次輸入指令都先調用判斷液晶模塊是否忙的子程序DELAY,然后輸入顯示位置的地址000H,最后輸入要顯示的字符A的代碼41H。在液晶模塊的第二行第一個字符的位置顯示字母“A”:返回命令字ENABLE:CLRRS;寫入控制命令的子程序

CLRRW CLRE ACALLDELAY SETBE RETDELAY:MOVP1,#0FFH;判斷液晶顯示器是否忙的子程序

CLRRS SETBRW CLRE NOP SETBE JBP1.7,DELAY;如果P1.7為高電平表示忙就循環等待

RETEND9.3A/D轉換接口技術A/D轉換器是將模擬量轉換成數字量的器件。模擬量可以是電壓、電流等電信號,也可以是聲、光、壓力和溫度等隨時間連續變化的非電物理量。非電物理量可通過合適的傳感器等轉換成電信號,模擬量只有轉換成數字量才能被計算機采集、分析和計算處理。A/D轉換器的主要技術指標分辨率:即輸出的數字量變化一個相鄰的值所對應的輸入模擬量的變化量。通常用數字輸出最低位(LSB)所對應的模擬輸入的電平值表示。(3~8位/9~12位/13位以上)精度:反映實際A/D轉換器在量化值上與理想A/D轉換器的差值。可表示成絕對精度和相對精度轉換時間:由啟動轉換命令到轉換結束信號開始有效的時間間隔輸入/輸出特性和范圍電源種類和功耗工作環境接口是否方便接口時注意的問題模擬量輸入信號的連接輸出數字量引腳的連接內部無輸出鎖存器的,需通過鎖存器或I/O接口與單片機相連;輸出位數高于8位的,應該分步讀出數字量。A/D轉換器的啟動方式片選信號選中的基礎上,發出啟動該芯片所需的信號判斷A/D轉換器結束及讀取數據

轉換結束標記信號,如EOC

讀取數據指令:MOVXA,@DPTR參考電源的連接

模擬量信號為單極性時:接模擬地,接參考電源正端;雙極性時,接參考電源負端,接參考電源正端A/D轉換方法雙積分式:抗干擾能力好,轉換速度低逐次逼近式:轉換速度較快,適中并行輸出:ADC0809串行輸出:TLC1549逐次逼近法A/D轉換原理逐次逼近法:對每一位進行試探的過程,即判斷該位應為0還是1。假設A/D轉換器是8位數字輸出,首先是每一個位都為0,即0000000010000000,D/A——〉Vs,*1000000,…………**100000,…………依此類推*******1,…………..雙積分A/D轉換原理在進行一次A/D轉換時,開關先把Vx采樣輸入到積分器,積分器從0V開始進行固定時間T的正向積分,時間T到后,開關將與Vx極性相反的基準電壓VREF輸入到積分器進行反相積分,到輸出為0V時停止反相積分。反相積分時積分器的斜率是固定的,Vx越大,積分器的輸出電壓就越大,反相積分時間就越長。計數器在反相積分時間內計數值就是輸入電壓Vx在時間T內的平均值對應的數字量。電子開關計數器控制邏輯VxVref減0比較器積分器數字量時鐘9.3.189C51和ADC0809的接口ADC0809是逐次逼近式的8路8位A/D轉換器,并行輸出,28腳,DIP封裝,轉換速度為100μs,電源電壓+5VADC0809引腳說明:IN0~IN7:8個模擬量輸入通道D0(2-8)~D7(2-1):8位數字量輸出ADDC、ADDB、ADDA:通道地址選擇線

000~111依次選擇轉換IN0~IN7ALE:地址鎖存允許START:啟動一次A/D轉換EOC:轉換結束信號輸出線,開始轉換時為低電平,當轉換結束時為高電平。供查詢或申請中斷OE:輸出允許控制端ADC0809與89C51的接口原理圖接地址線查詢?中斷?P2.7=0外部電壓u0外部電壓u1外部電壓u7外部電壓u3外部電壓u4外部電壓u6外部電壓u5外部電壓u289C51P1.0或int1編程要點選擇模擬量輸入通道發出啟動及地址鎖存信號用查詢或中斷方法等待轉換結束(延時)讀取轉換結果編寫采集IN0~IN7上的模擬量u0~u7的轉換程序,并將數字量存入30H~37H。MOVR1,#30H;緩存區首址MOVDPTR,#7FF8H;P2.7=0,且指向通道0(A2A1A0=000)MOVR7,#08H;置通道數LOOP:MOVX@DPTR,A;啟動A/D轉換MOVR6,#55;延時110μs等待轉換結束DJNZR6,$;2個機器周期,12MHz,2μs,MOVxA,@DPTR;讀取轉換結果MOV@R1,A;存放結果INCR1;修改數據區指針INCDPTR;指向下一個通道DJNZR7,LOOP;8個通道全采樣完了嗎?…或JBP1.0,$中斷方式程序SETBIT1SETBEX1SETBEAMOVDPTR,#7FF8HMOVA,#0MOVX@DPTR,A…EINT1:MOVDPTR,#7FF8HMOVXA,@DPTRMOV30H,AMOVA,#00MOVX@DPTR,ARETI初始化,啟動A/D轉換IN0讀取數據,再次啟動IN0如何接著啟動下一個通道?EINT1:INCDPTRINCR0MOVXA,@DPTRMOV@R0,AMOVA,#00MOVX@DPTR,ARETI9.3.2單通道串行輸出A/D芯片TLC1549及接口逐次比較型10位A/D6個工作方式:區別主要是cs是否連續為低電平快速、慢速:決定于I/OCLOCK周期TLC1549工作原理CS無效,I/OCLOCK被禁止,DATAOUT處于高阻狀態,CS有效,I/OCLOCK控制DATAOUT輸出前次轉換數據,同時A/D轉換器對本次轉換采樣。方式1工作時序TLC1549與89C51接口89C51

P3.0P3.1P3.2TLC1549ANALOGINCSI/OCLOCK

DATAOUTREF-GNDVCCREF+89C51讀取TLC1549中10位數據程序如下:

ORG0050HR1549:CLRP3.0:片選有效,選中TLC1549MOVR0,#2;先讀取高兩位數據

LCALLRDADA;調用讀數子程序

MOVR1,A;高兩位數據存入R1MOVR0,#8;要讀取低8位數據

LCALLRDATAMOVR2,A;低8位數據存入R2SETBP3.0;片選無效

CLRP3.1;時鐘低電平

RET;程序結束RDADA:CLRP3.1;時鐘低電平

MOVC,P3.2;數據送進位位CYRLCA;數據送累加器ASETBP3.1;時鐘變高電平

DJNZR0,RDATA;讀書結束了嗎

RET;子程序結束D/A:DigitalsignalAnalogysignal衡量D/A性能的主要參數分辨率:輸出的模擬量最小變化量滿刻度誤差:輸入全1時輸出電壓與理想值的誤差電流穩定時間:描述D/A轉換速率快慢的重要參數,一般是指輸入數字量從全0變成全1時,輸出模擬量穩定到相應范圍內所經歷的時間9.3D/A轉換接口技術9.3.1并行輸入DAC0832芯片8位電流輸出,穩定時間1μs雙緩沖、單緩沖、直接數字輸入DAC0832的引腳D0~D7:數據輸入線ILE:數據鎖存允許控制信號輸入線,高電片有效CS:片選信號XFFR:數據傳輸控制信號輸入線WR1:輸入鎖存器寫選通輸入線WR2:DAC寄存器寫選通輸入線IOUT1:電流輸出線,當DAC寄存器為全1時IOUT1最大IOUT2:電流輸出線,其值和IOUT1值之和為一常數Rfb:反饋信號輸入線,改變Rfb端外接電值可調整轉換滿量程精度VREF:基準電壓輸入線AGND:模擬地DGND:數字地DAC0832邏輯結構工作方式直通方式:數據線上的數據字節直通D/A轉換器轉換并輸出。單緩沖方式:輸入數據在控制信號作用下,直接打入DAC寄存器中雙緩沖方式:數字量的輸入鎖存和D/A轉換輸出時分兩步完成的。單路模擬量輸出的89C51系統89C51DAC0832工作于單緩沖方式,ILE接+5V,CS和XFER相連后由MCS-51的P2.7控制

WR1和WR2相連后由MCS-51的WR控制.這樣,89C51對DAC0832執行一次寫操作就把一個數據直接寫入DAC寄存器,模擬量輸出隨之而變化.系統只有一路模擬量輸出或幾路模擬量不需同步的輸出場合,可采用單緩沖方式

89C51執行下面的程序后,運放的輸出端將產生一個鋸齒形電壓波:WAVE:MOVDPTR,#7FFFH;設置D/A口地址

MOVA,#0;輸入數字初值LOOP:MOVX@DPTR,A;輸出對應于A值的模擬量

INCA;修改A的內容

AJMPLOOP試寫出產生方波的程序?

產生方波的程序

MOVDPTR,#7FFFH;設置D/A口地址

LOOP:MOVA,#FFH;輸入數字最大值

溫馨提示

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

最新文檔

評論

0/150

提交評論