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

下載本文檔

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

文檔簡(jiǎn)介

第11章

80C51的系統(tǒng)擴(kuò)展與外設(shè)接口技術(shù)

本章重點(diǎn):?jiǎn)纹瑱C(jī)系統(tǒng)串行擴(kuò)展技術(shù);常用外設(shè)接口技術(shù)。本章難點(diǎn):I2C總線的工作時(shí)序。11.1并行擴(kuò)展技術(shù)11.1.1并行總線與工作時(shí)序?yàn)閷?shí)現(xiàn)單片機(jī)與外圍擴(kuò)展芯片的正確連接與數(shù)據(jù)交換,有必要了解單片機(jī)總線信號(hào)間的時(shí)序配合關(guān)系。

80C51并行總線的結(jié)構(gòu)

片外程序存儲(chǔ)器取指操作時(shí)序

片外數(shù)據(jù)存儲(chǔ)器讀操作時(shí)序

11.1.2存儲(chǔ)器的并行擴(kuò)展

存儲(chǔ)器并行擴(kuò)展示意圖

11.1.3I/O接口的并行擴(kuò)展

普通I/O口的并行擴(kuò)展

可編程I/O口的并行擴(kuò)展

11.2串行擴(kuò)展技術(shù)

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

SPI工作時(shí)序圖(模式0)

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

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

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

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

I2C總線接口的電路結(jié)構(gòu)

I2C總線上的各種信號(hào)

I2C數(shù)據(jù)幀格式

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

11.3功率接口技術(shù)

11.3.1非隔離型功率接口

1.繼電器的非隔離驅(qū)動(dòng)繼電器的非隔離驅(qū)動(dòng)電路

2.步進(jìn)電機(jī)的非隔離驅(qū)動(dòng)小型步進(jìn)電機(jī)的非隔離驅(qū)動(dòng)電路

ULN2803的內(nèi)部結(jié)構(gòu)(只畫(huà)出一路)

3.直流電機(jī)的非隔離驅(qū)動(dòng)直流電機(jī)全橋驅(qū)動(dòng)電路

采用集成芯片的直流電機(jī)驅(qū)動(dòng)電路11.3.2隔離型功率接口

1.直流設(shè)備的隔離驅(qū)動(dòng)繼電器的隔離驅(qū)動(dòng)電路

步進(jìn)電機(jī)的隔離驅(qū)動(dòng)電路

2.交流設(shè)備的隔離驅(qū)動(dòng)交流設(shè)備的隔離驅(qū)動(dòng)電路11.4模擬量接口技術(shù)

11.4.1D/A轉(zhuǎn)換器

1.DAC0832的結(jié)構(gòu)及工作原理

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

DAC0832電壓輸出電路

2.DAC0832與80C51的接口

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

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

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

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

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

DAC0832雙緩沖方式接口

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

1.ADC0809的結(jié)構(gòu)及工作原理ADC0809的內(nèi)部結(jié)構(gòu)

ADC0809的工作時(shí)序

2.ADC0809與80C51的接口

ADC0809的接口電路和程序設(shè)計(jì)主要考慮兩方面問(wèn)題,一是模擬通道的選擇和啟動(dòng)信號(hào)的發(fā)送,另外就是轉(zhuǎn)換結(jié)束的確認(rèn)與數(shù)據(jù)讀取。

ADC0809與80C51的接口電路

(1)通道選擇與啟動(dòng)控制圖(a):MOV DPTR,#7FF8H ; 選擇通道0MOVX @DPTR,A ; 啟動(dòng)A/D轉(zhuǎn)換(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)轉(zhuǎn)換結(jié)束的確認(rèn)與數(shù)據(jù)讀取A/D轉(zhuǎn)換后得到的數(shù)據(jù)應(yīng)及時(shí)傳送給單片機(jī)進(jìn)行處理。對(duì)單片機(jī)來(lái)說(shuō),首先必須知道轉(zhuǎn)換是否結(jié)束,通??刹捎靡韵?種方式:①查詢方式:將ADC0809的EOC端接到單片機(jī)某根口線上,程序中通過(guò)反復(fù)查詢EOC的狀態(tài)來(lái)了解A/D轉(zhuǎn)換是否結(jié)束。②中斷方式:將EOC求反后接到單片機(jī)的外中斷輸入引腳(見(jiàn)圖11-29),一旦轉(zhuǎn)換結(jié)束,可使單片機(jī)自動(dòng)進(jìn)入中斷服務(wù)程序。③延時(shí)等待方式:A/D轉(zhuǎn)換器的轉(zhuǎn)換時(shí)間作為一項(xiàng)指標(biāo)是已知和固定的,可在轉(zhuǎn)換開(kāi)始后延時(shí)相應(yīng)的時(shí)間,過(guò)了這段時(shí)間,轉(zhuǎn)換肯定已經(jīng)結(jié)束了。確認(rèn)轉(zhuǎn)換已經(jīng)結(jié)束后,單片機(jī)便可通過(guò)指令產(chǎn)生有效的OE信號(hào),讀入轉(zhuǎn)換結(jié)果。對(duì)圖(a),可使用以下兩條指令:MOV DPTR,#7FF8H ;選擇通道0(實(shí)際上只要求80C51的P2.7=0)MOVX A,@DPTR ; 將轉(zhuǎn)換結(jié)果通過(guò)數(shù)據(jù)總線讀入單片機(jī)對(duì)圖(b),可使用以下四條指令:CLR P1.6 ; 使P1.6為低電平SETB P1.6 ; 使P1.6為高電平MOV A,P0 ; 將轉(zhuǎn)換結(jié)果通過(guò)P0口讀入單片機(jī)CLR P1.6 ; 使P1.6為低電平

(3)8路轉(zhuǎn)換控制程序?qū)D(a)電路,若要求使用中斷方式,將8路轉(zhuǎn)換結(jié)果依次存入內(nèi)部RAM50H~57H單元,則A/D轉(zhuǎn)換初始化程序和中斷服務(wù)程序如下:初始化程序:MOV R0,#50H;R0指向數(shù)據(jù)存儲(chǔ)區(qū)起始單元

MOV R2,#08H ;需進(jìn)行8路轉(zhuǎn)換

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

SETB EX0 ;允許INT0中斷

SETB EA ;開(kāi)中斷

MOV DPTR,#7FF8H ;先選擇通道0 MOVX @DPTR,A ;啟動(dòng)A/D轉(zhuǎn)換

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

MOVXA,@DPTR ;讀取當(dāng)前通道的轉(zhuǎn)換結(jié)果

MOV @R0,A ;轉(zhuǎn)存到數(shù)據(jù)存儲(chǔ)區(qū)當(dāng)前單元

INC DPTR ;轉(zhuǎn)向下一個(gè)通道

INC R0 ;指向數(shù)據(jù)存儲(chǔ)區(qū)下一個(gè)單元

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

CLR EA ;已轉(zhuǎn)換完,則關(guān)中斷

CLR EX0 RETI NEXT:MOVX@DPTR,A ;再次啟動(dòng)A/D轉(zhuǎn)換

RETI 11.5人機(jī)接口技術(shù)

11.5.1LED數(shù)碼顯示器

1.結(jié)構(gòu)及工作原理

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

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

LED數(shù)碼管靜態(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ū)當(dāng)前單元中的數(shù)據(jù)

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

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

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

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

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

RET DSEG:DB 0C0H,0F9H,0A4H,0B0H,99H ;共陽(yáng)數(shù)碼管段碼表(對(duì)應(yīng)0~9)

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

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

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

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

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

MOV P0,A ;通過(guò)P0口輸出段碼

MOV P2,R2 ;通過(guò)P2口輸出位碼

LCALL DELAY1MS ;調(diào)延時(shí)1ms子程序(假設(shè)已編好)

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

MOV A,R2 ;調(diào)整位碼(準(zhǔn)備點(diǎn)亮下一位)

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

MOV P2,#11111111B ;關(guān)閉顯示

RET DSEG:DBDB 0C0H,0F9H,0A4H,0B0H,99H92H,82H,0F8H,80H,90H ;共陽(yáng)數(shù)碼管段碼表(對(duì)應(yīng)0~9)11.5.2鍵盤(pán)

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

2.接口形式(1)獨(dú)立式鍵盤(pán)獨(dú)立式鍵盤(pán)由少量(一般少于8個(gè))按鍵構(gòu)成,每個(gè)按鍵單獨(dú)占用單片機(jī)的一根I/O口線。獨(dú)立式鍵盤(pán)與單片機(jī)的連接(查詢方式)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RET ;通過(guò)A返回按鍵位置編碼(無(wú)鍵則為0FH)主程序結(jié)構(gòu)如下:

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

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

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

K4EQU00000111B ;聲明K4的位置編碼(鍵值)NOKEYEQU00001111B;聲明無(wú)鍵按下?tīng)顟B(tài)的位置編碼(鍵值)MAIN: …

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

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

LCALL SCAN_KEY2 ;調(diào)用按鍵查詢子程序

CJNE A,#NOKEY,KEY_PROC;有鍵按下,準(zhǔn)備處理

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MOV A,#0FFH;通過(guò)A返回?zé)o鍵按下?tīng)顟B(tài)的鍵值FFH RET SCAN32:LCALL DLY10MS ;延時(shí)10ms(消抖)

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

MOV R3,#0 ;列號(hào)由R3保存SCAN33:MOV P1,R2 ;當(dāng)前列輸出低電平,行線作輸入

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

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

CJNE A,#11110000B,SCAN34;行線中有0,說(shuō)明當(dāng)前列有鍵按下

INC R3 ;當(dāng)前列無(wú)鍵按下,列號(hào)加1 MOV A,R2 ;準(zhǔn)備檢查或修改列掃描字

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

RR A ;掃描字右移1位,準(zhǔn)備掃描下一列

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

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

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

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

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

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

RET ;通過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論