《微計算機與單片機原理及應用》第11章 80C51的系統(tǒng)擴展與外設接口技術_第1頁
《微計算機與單片機原理及應用》第11章 80C51的系統(tǒng)擴展與外設接口技術_第2頁
《微計算機與單片機原理及應用》第11章 80C51的系統(tǒng)擴展與外設接口技術_第3頁
《微計算機與單片機原理及應用》第11章 80C51的系統(tǒng)擴展與外設接口技術_第4頁
《微計算機與單片機原理及應用》第11章 80C51的系統(tǒng)擴展與外設接口技術_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章

80C51的系統(tǒng)擴展與外設接口技術

本章重點:單片機系統(tǒng)串行擴展技術;常用外設接口技術。本章難點:I2C總線的工作時序。11.1并行擴展技術11.1.1并行總線與工作時序為實現單片機與外圍擴展芯片的正確連接與數據交換,有必要了解單片機總線信號間的時序配合關系。

80C51并行總線的結構

片外程序存儲器取指操作時序

片外數據存儲器讀操作時序

11.1.2存儲器的并行擴展

存儲器并行擴展示意圖

11.1.3I/O接口的并行擴展

普通I/O口的并行擴展

可編程I/O口的并行擴展

11.2串行擴展技術

11.2.1SPI串行總線及系統(tǒng)擴展根據時鐘極性與相位的不同,SPI有四種工作模式。極性指的是空閑狀態(tài)下時鐘信號處于高電平還是低電平,相位指的是數據位更新發(fā)生在時鐘周期的第一個邊沿還是第二個邊沿。SPI主機和所有SPI從機的時鐘相位與極性必須設為一致。SPI數據傳輸示意圖

SPI工作時序圖(模式0)

SPI擴展系統(tǒng)示意圖

11.2.2I2C串行總線及系統(tǒng)擴展

I2C總線(InterIntegratedCircuitBus)是Philips公司推出的二線制高性能串行總線,具備總線仲裁和高低速設備同步功能,數據傳輸速率可達400kbit/s(高速模式下可達3.4Mbit/s),總線驅動能力為400pF。

I2C總線只有串行數據(SDA)和時鐘(SCL)兩根信號線,無需片選信號(地址信息也以數據的形式傳送)。

I2C總線接口的電路結構

I2C總線上的各種信號

I2C數據幀格式

I2C擴展系統(tǒng)示意圖

11.3功率接口技術

11.3.1非隔離型功率接口

1.繼電器的非隔離驅動繼電器的非隔離驅動電路

2.步進電機的非隔離驅動小型步進電機的非隔離驅動電路

ULN2803的內部結構(只畫出一路)

3.直流電機的非隔離驅動直流電機全橋驅動電路

采用集成芯片的直流電機驅動電路11.3.2隔離型功率接口

1.直流設備的隔離驅動繼電器的隔離驅動電路

步進電機的隔離驅動電路

2.交流設備的隔離驅動交流設備的隔離驅動電路11.4模擬量接口技術

11.4.1D/A轉換器

1.DAC0832的結構及工作原理

DAC0832的內部結構

DAC0832電壓輸出電路

2.DAC0832與80C51的接口

(1)單緩沖方式DAC0832單緩沖方式接口

以下是利用單緩沖接口輸出周期性鋸齒波信號的控制程序:

START: MOV DPTR,#7FFFH; 選擇DAC0832(A15=0)

MOV A,#00H ; 從0開始NEXT: MOVX@DPTR,A ; 向DAC0832發(fā)送數據

INC A ; 數字量加1 SJMP NEXT ; 連續(xù)輸出(2)直通方式DAC0832直通方式接口(3)雙緩沖方式

DAC0832雙緩沖方式接口

以下是實現兩路同步輸出的控制程序:MOVDPTR,#0DFFFH ; 選中DAC0832(1)的輸入鎖存器MOVA,#data1 MOVX@DPTR,A ; 數據data1送入DAC0832(1)的輸入鎖存器MOVDPTR,#0BFFFH ; 選中DAC0832(2)的輸入鎖存器MOVA,#data2 MOVX@DPTR,A ; 數據data2送入DAC0832(2)的輸入鎖存器MOVDPTR,#7FFFH ; 同時選中兩片DAC0832的DAC寄存器MOVX@DPTR,A ; 同步進行轉換11.4.2A/D轉換器

1.ADC0809的結構及工作原理ADC0809的內部結構

ADC0809的工作時序

2.ADC0809與80C51的接口

ADC0809的接口電路和程序設計主要考慮兩方面問題,一是模擬通道的選擇和啟動信號的發(fā)送,另外就是轉換結束的確認與數據讀取。

ADC0809與80C51的接口電路

(1)通道選擇與啟動控制圖(a):MOV DPTR,#7FF8H ; 選擇通道0MOVX @DPTR,A ; 啟動A/D轉換(A可為任意值)圖(b):ANL P1,#11111000B ; P1口低3位為0(選擇通道0)CLR P1.7 ; 使P1.7為低電平SETB P1.7 ; 使P1.7為高電平CLR P1.7 ; 使P1.7為低電平(2)轉換結束的確認與數據讀取A/D轉換后得到的數據應及時傳送給單片機進行處理。對單片機來說,首先必須知道轉換是否結束,通??刹捎靡韵?種方式:①查詢方式:將ADC0809的EOC端接到單片機某根口線上,程序中通過反復查詢EOC的狀態(tài)來了解A/D轉換是否結束。②中斷方式:將EOC求反后接到單片機的外中斷輸入引腳(見圖11-29),一旦轉換結束,可使單片機自動進入中斷服務程序。③延時等待方式:A/D轉換器的轉換時間作為一項指標是已知和固定的,可在轉換開始后延時相應的時間,過了這段時間,轉換肯定已經結束了。確認轉換已經結束后,單片機便可通過指令產生有效的OE信號,讀入轉換結果。對圖(a),可使用以下兩條指令:MOV DPTR,#7FF8H ;選擇通道0(實際上只要求80C51的P2.7=0)MOVX A,@DPTR ; 將轉換結果通過數據總線讀入單片機對圖(b),可使用以下四條指令:CLR P1.6 ; 使P1.6為低電平SETB P1.6 ; 使P1.6為高電平MOV A,P0 ; 將轉換結果通過P0口讀入單片機CLR P1.6 ; 使P1.6為低電平

(3)8路轉換控制程序對圖(a)電路,若要求使用中斷方式,將8路轉換結果依次存入內部RAM50H~57H單元,則A/D轉換初始化程序和中斷服務程序如下:初始化程序:MOV R0,#50H;R0指向數據存儲區(qū)起始單元

MOV R2,#08H ;需進行8路轉換

SETB IT0 ;INT0采用邊沿觸發(fā)方式

SETB EX0 ;允許INT0中斷

SETB EA ;開中斷

MOV DPTR,#7FF8H ;先選擇通道0 MOVX @DPTR,A ;啟動A/D轉換

SJMP $ ;等待中斷INT0中斷服務程序(入口為0003H)如下:

MOVXA,@DPTR ;讀取當前通道的轉換結果

MOV @R0,A ;轉存到數據存儲區(qū)當前單元

INC DPTR ;轉向下一個通道

INC R0 ;指向數據存儲區(qū)下一個單元

DJNZ R2,NEXT ;8路未轉換完,則繼續(xù)

CLR EA ;已轉換完,則關中斷

CLR EX0 RETI NEXT:MOVX@DPTR,A ;再次啟動A/D轉換

RETI 11.5人機接口技術

11.5.1LED數碼顯示器

1.結構及工作原理

LED數碼顯示器由若干個LED數碼管構成。每個LED數碼管包括a~g和dp(小數點)共8個發(fā)光二極管筆段,可通過筆段的亮滅組合顯示出所需要的字形,如十進制數字符號“0”~“9”、”A”、”b”、”C”等簡單字符。數碼管分為共陽極和共陰極兩種類型。構成數碼顯示器的多個數碼管一般屬于同一類型。

2.顯示方式及接口(1)靜態(tài)顯示

LED數碼管靜態(tài)顯示電路

靜態(tài)顯示子程序如下:S_DISP:MOV SCON,#00H ;置串口方式0

MOV DPTR,#DSEG ;DPTR指向段碼表起始單元

MOV R0,#30H ;R0指向顯示緩沖區(qū)起始單元

MOV R2,#4 ;共顯示4位NEXT:MOV A,@R0 ;取顯示緩沖區(qū)當前單元中的數據

MOVC A,@A+DPTR;查表求段碼

MOV SBUF,A ;串行輸出段碼JNB TI,$ ;等待串行發(fā)送完畢

CLR TI ;清串行發(fā)送中斷標志

INC R0 ;R0指向顯示緩沖區(qū)下一單元

DJNZR2,NEXT ;未顯示完3位,繼續(xù)

RET DSEG:DB 0C0H,0F9H,0A4H,0B0H,99H ;共陽數碼管段碼表(對應0~9)

DB 92H,82H,0F8H,80H,90H (2)動態(tài)顯示LED數碼管動態(tài)顯示電路

動態(tài)顯示子程序如下:D_DISP:MOV DPTR,#DSEG ;DPTR指向段碼表起始單元

MOV R0,#30H ;R0指向顯示緩沖區(qū)起始單元

MOV R2,#11111110B;從第1位開始刷新NEXT: MOV A,@R0 ;取顯示緩沖區(qū)當前單元中的數據

MOVC A,@A+DPTR ;查表求段碼

MOV P0,A ;通過P0口輸出段碼

MOV P2,R2 ;通過P2口輸出位碼

LCALL DELAY1MS ;調延時1ms子程序(假設已編好)

INC R0 ;R0指向顯示緩沖區(qū)下一單元

MOV A,R2 ;調整位碼(準備點亮下一位)

RL A MOV R2,A CJNE R2,#11101111B,NEXT;還未刷新完4位顯示,繼續(xù)

MOV P2,#11111111B ;關閉顯示

RET DSEG:DBDB 0C0H,0F9H,0A4H,0B0H,99H92H,82H,0F8H,80H,90H ;共陽數碼管段碼表(對應0~9)11.5.2鍵盤

1.特點與分類單片機應用系統(tǒng)中鍵盤與單片機的接口形式取決于按鍵實際數量以及單片機可用口線的多少,一般可分為獨立式和矩陣式兩種。

2.接口形式(1)獨立式鍵盤獨立式鍵盤由少量(一般少于8個)按鍵構成,每個按鍵單獨占用單片機的一根I/O口線。獨立式鍵盤與單片機的連接(查詢方式)

按鍵查詢(識別)子程序:SCAN_KEY:ORL P1,#00001111B ;P1.0~P1.3作為輸入口

MOV A,P1 ;讀按鍵狀態(tài)

ANL A,#00001111B ;屏蔽高4位

CJNE A,#00001111B,SCANK1 ;低4位中有0存在,說明有鍵按下

RET ;無鍵按下,通過A返回鍵值0FHSCANK1:LCALL DLY10MS;延時10ms(消抖)

MOV A,P1 ;重讀按鍵狀態(tài)

JB ACC.0,SCANK2;K1未按下,繼續(xù)檢測K2 MOV A,#01H;K1按下,通過A返回鍵值1 RET SCANK2:JB ACC.1,SCANK3 ;K2未按下,繼續(xù)檢測K3 MOV A,#02H ;K2按下,通過A返回鍵值2 RET SCANK3:JB ACC.2,SCANK4 ;K3未按下,繼續(xù)檢測K4 MOV A,#03H ;K3按下,通過A返回鍵值3 RET SCANK4:JB ACC.3,SCAN_EXIT ;K4未按下,結束查詢

MOV A,#04H ;K4按下,通過A返回鍵值4 RET SCAN_EXIT: MOV A,#0FH ;通過A返回鍵值0FH RET 按鍵查詢子程序通過返回不同的鍵值來反映鍵盤的狀態(tài),上例中,0FH表示無鍵按下,01H~04H分別表示K1~K4被按下。以下的按鍵查詢子程序直接將按鍵的位置編碼作為鍵值返回(無鍵按下為0FH,某鍵按下則返回值低4位中對應位為0),看起來更加簡潔。SCAN_KEY2: ORL P1,#00001111B ;P1.0~P1.3作為輸入口

MOV A,P1 ;讀按鍵狀態(tài)

ANL A,#00001111B ;屏蔽高4位

CJNE A,#00001111B,SCAN22 ;低4位中有0存在,說明有鍵按下

RET ;無鍵按下,通過A返回0FHSCAN22: LCALL DLY10M;延時10ms(消抖)

MOV A,P1 ;重讀按鍵狀態(tài)

ANL A,#00001111B ;屏蔽高4位

RET ;通過A返回按鍵位置編碼(無鍵則為0FH)主程序結構如下:

K1EQU00001110B ;聲明K1的位置編碼(鍵值)

K2EQU00001101B ;聲明K2的位置編碼(鍵值)

K3EQU00001011B ;聲明K3的位置編碼(鍵值)

K4EQU00000111B ;聲明K4的位置編碼(鍵值)NOKEYEQU00001111B;聲明無鍵按下狀態(tài)的位置編碼(鍵值)MAIN: …

… ;系統(tǒng)初始化等操作LOOP: …

… ;主循環(huán)中其它操作(刷新顯示等)

LCALL SCAN_KEY2 ;調用按鍵查詢子程序

CJNE A,#NOKEY,KEY_PROC;有鍵按下,準備處理

LJMP LOOP ;無鍵按下,繼續(xù)主循環(huán)KEY_PROC: PUSH ACC ;保存鍵值,待該鍵釋放后處理WAIT_NULL: LCALL SCAN_KEY2 CJNE A,#NOKEY,WAIT_NULL;等待按鍵釋放

POP ACC ;恢復A先前保存的鍵值CHK_K1: CJNE A,#K1,CHK_K2;K1未按下,繼續(xù)檢查K2

… ;K1被按下,執(zhí)行相應的操作

LJMP LOOP ;回到主循環(huán)CHK_K2: CJNE A,#K2,CHK_K3 ;K2未按下,繼續(xù)檢查K3

… ;K2被按下,執(zhí)行相應的操作

LJMP LOOP ;回到主循環(huán)CHK_K3: CJNE A,#K3,CHK_K4 ;K3未按下,繼續(xù)檢查K4

… ;K3被按下,執(zhí)行相應的操作

LJMP LOOP ;回到主循環(huán)CHK_K4:CJNE A,#K4,LOOP ;K4未按下,回到主循環(huán)

… ;K4被按下,執(zhí)行相應的操作

LJMP LOOP ;回到主循環(huán)獨立式鍵盤與單片機的連接(中斷方式)

2.矩陣式鍵盤矩陣式鍵盤與單片機的連接按鍵處理:(1)掃描法SCAN_KEY3: MOV P1,#11110000B ;列線全置為低電平,行線作輸入

MOV A,P1 ;讀行線狀態(tài)

ANL A,#11110000B ;屏蔽低4位(僅需要行線狀態(tài))

CJNE A,#11110000B,SCAN32;行線中有0,說明有鍵按下

MOV A,#0FFH;通過A返回無鍵按下狀態(tài)的鍵值FFH RET SCAN32:LCALL DLY10MS ;延時10ms(消抖)

MOV R2,#11110111B ;列掃描字由R2保存(0列開始掃描)

MOV R3,#0 ;列號由R3保存SCAN33:MOV P1,R2 ;當前列輸出低電平,行線作輸入

MOV A,P1 ;讀行線狀態(tài)

ANL A,#11110000B ;屏蔽低4位(僅需要行線狀態(tài))

CJNE A,#11110000B,SCAN34;行線中有0,說明當前列有鍵按下

INC R3 ;當前列無鍵按下,列號加1 MOV A,R2 ;準備檢查或修改列掃描字

JNB ACC.0,SCAN3_EXIT ;已掃描完所有列,結束掃描返回

RR A ;掃描字右移1位,準備掃描下一列

MOV R2,A AJMP SCAN33 ;掃描下一列SCAN34:JB ACC.7,SCAN35;第0行無鍵按下,檢查第1行

MOV A,#0 ;第0行有鍵按下,首鍵值0送給A ADD A,R3 ;加上列號得到鍵值

RET ;通過A返回鍵值SCAN35:jB ACC.6,SCAN36 ;第1行無鍵按下,檢查第2行

MOV A,#4 ;第1行有鍵按下,首鍵值4送給A ADD A,R3 ;加上列號得到鍵值

RET ;通過A返回鍵值SCAN36:JB ACC.5,SCAN37 ;第2行無鍵按下,檢查第3行

MOV A,#8 ;第2行有鍵按下,首鍵值8送給A ADD A,R3 ;加上列號得到鍵值

RET ;通過

溫馨提示

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

評論

0/150

提交評論