單片機(jī)接口技術(shù)_第1頁(yè)
單片機(jī)接口技術(shù)_第2頁(yè)
單片機(jī)接口技術(shù)_第3頁(yè)
單片機(jī)接口技術(shù)_第4頁(yè)
單片機(jī)接口技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩75頁(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)介

第七章

單片機(jī)接口技術(shù)第一節(jié)鍵盤接口第二節(jié)顯示器接口第三節(jié)A/D轉(zhuǎn)換器接口第四節(jié)D/A轉(zhuǎn)換器接口圖7-189C51應(yīng)用系統(tǒng)框圖89C517.1鍵盤接口非編碼鍵盤:按鍵的動(dòng)作靠軟件識(shí)別編碼鍵盤:硬件電路識(shí)別按鍵動(dòng)作,并產(chǎn)生按鍵的鍵值或編號(hào)按下:P1.0輸入低電平0松開(kāi):P1.0輸入高電平189C51抖動(dòng)-去抖按鍵產(chǎn)生機(jī)械抖動(dòng),一次按鍵被誤讀為多次按鍵硬件去抖:利用RS觸發(fā)器軟件去抖:檢測(cè)到鍵動(dòng)作,延時(shí)5~10ms,再次讀鍵,確認(rèn)真正有鍵按下1.獨(dú)立式非編碼鍵盤接口及處理程序MOVA,#0FFHMOVP1,AMOVA,P1JNBACC.0,KEY0JNBACC.1,KEY1………假設(shè)為P1口為什么P1口寫1?獨(dú)立式非編碼鍵盤2.行列(矩陣)式非編碼鍵盤接口及處理程序用于較多按鍵,節(jié)省I/O線。判斷是否有健按下:向列線輸出全掃描字00H。讀入行線狀態(tài)。若行線有0,則有鍵按下;若行線全1,則無(wú)鍵按下。KS:MOVP1,#0FH ;全掃描字0送P1高4位,設(shè)置P1低4位為輸入

MOVA,P1 ;讀入P1口狀態(tài)(行線)

CPLA ;變正邏輯,P1.0-3高電平表示有鍵按下

ANLA,#0FH ;屏蔽高4位

RET ;返回,A不為0表示有鍵按下

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P7.7行列式非編碼鍵盤列掃描法:依次將列線送低電平,逐個(gè)檢查行線狀態(tài),確定按鍵在某行某列交叉的點(diǎn)上,取得鍵值,執(zhí)行相應(yīng)程序。P1.4P1.5P1.6P1.7P1.0P1.1P1.2P1.3例:鍵盤掃描程序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,#08H

AJMPTRYK

LINE3:JBACC.0,NROW

MOVA,#0CH

AJMPTRYK

NROW:INCR3

MOVA,R2

RL A

JNBACC.0,BACK

MOVR2,A

AJMPLINE0

TRYK:ADDA,R3

BACK:RET 程序控制掃描方式只有當(dāng)單片機(jī)空閑時(shí)才調(diào)用鍵盤掃描子程序定時(shí)掃描方式利用定時(shí)器的溢出中斷請(qǐng)求,每隔一定的時(shí)間對(duì)鍵盤掃描一次中斷掃描方式提高CPU的效率,當(dāng)鍵盤上有鍵閉合時(shí)產(chǎn)生中斷請(qǐng)求單片機(jī)對(duì)非編碼鍵盤的控制7.2顯示器接口LED點(diǎn)陣雙色顯示屏LED16數(shù)段碼管LCD7.2顯示器接口由發(fā)光二極管組成,分共陽(yáng)、共陰兩種。一、LightEmittingDiodeLED顯示器如何顯示出指定數(shù)字/字符?COM接低電平(共陰極),COM接高電平(共陽(yáng)極);COM接低電平;各輸入端輸入一個(gè)顯示代碼,如5BH=01011011,對(duì)應(yīng)c,f滅,而a,b,d,e,g點(diǎn)亮,則LED顯示字符“2”顯示各種字符的代碼見(jiàn)下表。對(duì)于共陽(yáng)極LED,將顯示代碼取反。若顯示小數(shù)點(diǎn),可利用D7位。D0aD1bD2cD3dD4eD5fD6gD7comh共陰LED限流電阻11011010字型表

LED顯示方式靜態(tài)顯示:電路解法:所有LED的位選均共同連接到+VCC或GND,每個(gè)LED的8根段選線分別連接一個(gè)8位并行I/O口,從該I/O口送出相應(yīng)的字型碼顯示字型。

CPU送出一個(gè)顯示代碼,LED一直顯示該字形,直到送下一個(gè)代碼才改變顯示字形。特點(diǎn):原理簡(jiǎn)單;顯示亮度強(qiáng),無(wú)閃爍;占用I/O資源較多。

常用于位數(shù)較少的場(chǎng)合。D0aD1bD2cD3dD4eD5fD6gD7comh共陰LED74LS273P0CLK+P2.0WRMOVA,#0FFH;顯示‘8’MOVDPTR,#0FEFFH;P2.0=0MOVX@DPTR,ALED顯示方式:

動(dòng)態(tài)顯示

連接:將各個(gè)顯示器的輸入(段選)線并聯(lián),由一個(gè)I/O口提供字形代碼;由另一個(gè)I/O口提供位選代碼。

顯示:采用軟件掃描顯示方法,某個(gè)時(shí)刻只點(diǎn)亮1個(gè)顯示器,點(diǎn)亮?xí)r間不超過(guò)20ms,分時(shí)逐個(gè)點(diǎn)亮LED。與靜態(tài)顯示相比,特點(diǎn):節(jié)省硬件電路及I/O資源;占用CPU時(shí)間多;亮度相對(duì)較低;適用于LED位數(shù)較多的場(chǎng)合。與靜態(tài)顯示區(qū)別?逐位掃描顯示方式

6位共陰LED。利用8155的PA口(假設(shè)地址7F01H)作為位選,75452反相驅(qū)動(dòng);PB口(7F02H)作為段選,7407同相驅(qū)動(dòng)。在片內(nèi)RAM中設(shè)一顯示緩沖區(qū)40H~45H,依次存放要顯示的6個(gè)字符(高4位清0,即00~09H,0A~0FH)。反復(fù)調(diào)用顯示子程序。DIS:MOVR0,#45H;顯示緩沖區(qū)首址MOVR2,#01H;位選初始值MOVA,R2LP0:MOVDPTR,#7F01H;位選端口PAMOVX@DPTR,A;輸出位選代碼INCDPTR;段選端口PBMOVA,@R0;取顯示字符ADDA,#0DH;加偏移量MOVCA,@A+PC;查表得顯示字符的代碼MOVX@DPTR,A;輸出顯示ACALLDIMS;調(diào)用延時(shí)子程序DECR0;修改顯示緩沖區(qū)指針MOVA,R2;修改位選指針JBACC.5,LP1;判斷是否全部顯示一次?RLA;沒(méi)有,則左移一位MOVR2,ASJMPLP0LP1:RETDB3FH,06H,5BH,…;顯示代碼表格01h02h01h06h03h00h41H40H42H43H44H45H通用鍵盤顯示器接口芯片8279實(shí)現(xiàn)對(duì)鍵盤和顯示器的自動(dòng)掃描識(shí)別閉合鍵的鍵號(hào)完成顯示器的動(dòng)態(tài)掃描,節(jié)約CPU的時(shí)間通用鍵盤顯示接口芯片8279鍵盤和顯示器綜合應(yīng)用

停車場(chǎng)計(jì)數(shù)器硬件設(shè)計(jì)軟件設(shè)計(jì)硬件電路設(shè)計(jì)顯示部分計(jì)數(shù)部分實(shí)際電路多數(shù)采用傳感器,這里用按鍵模擬代替停車場(chǎng)計(jì)數(shù)器程序設(shè)計(jì)編寫程序的基本思路主程序完成單片機(jī)的初始設(shè)定、初始顯示等兩個(gè)按鍵可采用查詢或者中斷方式,本例子采用中斷方式各段功能程序地址確定MAIN主程序流程主程序中斷初始化初始車數(shù)設(shè)為0設(shè)置查表首地址十位顯示(P2口)個(gè)位顯示(P0口)進(jìn)車中斷子程序

模擬“進(jìn)車”按鍵按下后出車中斷子程序DEC總結(jié)通過(guò)靜態(tài)顯示和獨(dú)立式按鍵完成了一個(gè)應(yīng)用系統(tǒng)的設(shè)計(jì)。實(shí)際系統(tǒng)通常需傳感器。二、LCD液晶顯示器LiquidCrystalDisplay

微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧。這里介紹的字符型液晶模塊是一種用5x7點(diǎn)陣圖形來(lái)顯示字符的液晶顯示器,根據(jù)顯示的容量可以分為1行16個(gè)字、2行16個(gè)字、2行20個(gè)字等等,這里以常用的2行16個(gè)字的1602液晶模塊來(lái)介紹它的編程方法。

任務(wù):如何在LCD的指定位置顯示出指定的字符以及字符串。2行×16列AbHelloworld主要內(nèi)容TC1602ALCD模塊引腳及結(jié)構(gòu)單片機(jī)與字符型LCD模塊接口LCD接口程序設(shè)計(jì)

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

地管腳(GND)Vo:

液晶顯示驅(qū)動(dòng)電源(0V~5V)V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。一、TC1602ALCD模塊引腳及結(jié)構(gòu)

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊DB0~DB7:數(shù)據(jù)線,可以用8位連接,也可以只用高4位連接,節(jié)約單片機(jī)資源,本實(shí)驗(yàn)中采用的是八位連接方法。

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

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊RS:數(shù)據(jù)和指令選擇控制端,RS=0:命令/狀態(tài);RS=1:數(shù)據(jù)R/W:讀寫控制線,R/W=0:寫操作;R/W=1:讀操作E:數(shù)據(jù)讀寫操作控制位,E線向LCD模塊發(fā)送一個(gè)脈沖,LCD模塊與單片機(jī)之間將進(jìn)行一次數(shù)據(jù)交換

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊單片機(jī)與LCD模塊之間有四種基本操作: 寫命令 讀狀態(tài) 寫顯示數(shù)據(jù) 讀顯示數(shù)據(jù)

12345678910111213141516VSSVDDVORSR/WEDB0DB1ADB3DB2DB5DB4DB7DB6KLCD模塊RSR/W操作00寫命令操作(初始化、光標(biāo)定位等)01讀狀態(tài)操作(讀忙標(biāo)志)10寫數(shù)據(jù)操作(要顯示內(nèi)容)11讀數(shù)據(jù)操作(可以把顯示存儲(chǔ)區(qū)中的數(shù)據(jù)反讀出來(lái))二、單片機(jī)與字符型LCD模塊接口數(shù)據(jù)線:DB7~DB0接單片機(jī)的P1.7~P1.0控制端:

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

E~~P3.2return

單片機(jī)與LCD模塊硬件連接

連線表:

A01A07連接1+5V/GND+5V/GND連接2P1.0-P1.7DB0-DB7連接3P3.0RS連接4P3.1RW連接5P3.2E三、LCD接口程序設(shè)計(jì)程序設(shè)計(jì)功能設(shè)置——寫命令子程序

LCD初始化:按一定順序?qū)懨钭秩纾簩懬迤撩钭?、寫DDRAM光標(biāo)定位地址命令字顯示數(shù)據(jù)——寫數(shù)據(jù)子程序讀入狀態(tài)字——讀狀態(tài)子程序

1.寫命令讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)指令名稱控制信號(hào)控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設(shè)置00000001I/DS顯示狀態(tài)設(shè)置0000001DCB光標(biāo)畫面滾動(dòng)000001S/CR/L**功能設(shè)置00001DLNF**CGRAM地址設(shè)置0001A5A4A3A2A1A0DDRAM地址設(shè)置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)10數(shù)據(jù)讀數(shù)據(jù)11數(shù)據(jù)清除屏幕---01H,光標(biāo)復(fù)位到地址00H位置光標(biāo)復(fù)位。光標(biāo)返回到地址00Hreturn指令名稱控制信號(hào)控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設(shè)置00000001I/DS顯示狀態(tài)設(shè)置0000001DCB光標(biāo)畫面滾動(dòng)000001S/CR/L**功能設(shè)置00001DLNF**CGRAM地址設(shè)置0001A5A4A3A2A1A0DDRAM地址設(shè)置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)10數(shù)據(jù)讀數(shù)據(jù)11數(shù)據(jù)光標(biāo)和顯示模式設(shè)置。I/D:光標(biāo)移動(dòng)方向,1:右移,0:左移;S:屏幕上所有文字是否左移或者右移。S=1:移位S=0:不移位設(shè)整體顯示開(kāi)關(guān)(D),光標(biāo)顯示開(kāi)關(guān)(C),光標(biāo)位的字符閃耀(B)D=1;C=0;B=000001100——0cH指令名稱控制信號(hào)控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設(shè)置00000001I/DS顯示開(kāi)關(guān)控制0000001DCB光標(biāo)畫面滾動(dòng)000001S/CR/L**功能設(shè)置00001DLNF**CGRAM地址設(shè)置0001A5A4A3A2A1A0DDRAM地址設(shè)置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)10數(shù)據(jù)讀數(shù)據(jù)11數(shù)據(jù)S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(N),及字型(F)DL=1,8位=0:4位N=1:2行=0:1行F=1:5×10=0:5×700111000——38H指令名稱控制信號(hào)控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸home位000000001*輸入方式設(shè)置00000001I/DS顯示開(kāi)關(guān)控制0000001DCB光標(biāo)畫面滾動(dòng)000001S/CR/L**功能設(shè)置00001DLNF**CGRAM地址設(shè)置0001A5A4A3A2A1A0DDRAM地址設(shè)置001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)10數(shù)據(jù)讀數(shù)據(jù)11數(shù)據(jù)字符發(fā)生器RAM地址設(shè)置設(shè)置DDRAM地址,為顯示定位讀忙信號(hào)和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。定位光標(biāo)位置把顯示數(shù)據(jù)顯示在某個(gè)位置,就是把顯示數(shù)據(jù)寫在相應(yīng)的DDRAM地址中,DDRAM地址占7位。SetDDRAMaddress命令如下:row12345……141516line100H01H02H03H04H……0dH0eH0fHline240H41H42H43H44H……4dH4eH4fH≈≈≈≈NOTICE≈≈≈≈光標(biāo)定位,寫入一個(gè)顯示字符后,DDRAM地址會(huì)自動(dòng)加1或減1,加或減由輸入方式字設(shè)置;第1行DDRAM地址與第2行DDRAM地址并不連續(xù)。80H81H82H83H84H8dH8eH8fH0c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2.寫數(shù)據(jù)10√3.讀狀態(tài)液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。例如要在液晶模塊的第二行第一個(gè)字符的位置顯示字母“A”

第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1。所以實(shí)際寫入的數(shù)據(jù)應(yīng)該是11000000B(40H)+10000000B(80H)=11000000B(C0H)LCD顯示程序設(shè)計(jì)mainLCD初始化光標(biāo)定位顯示字符SJMP$程序在開(kāi)始時(shí)對(duì)液晶模塊功能進(jìn)行了初始化設(shè)置,約定了顯示格式。注意顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù),每次輸入指令都先調(diào)用判斷液晶模塊是否忙的子程序

,然后輸入顯示位置的地址,最后輸入要顯示的字符的代碼。

lcd_rsbitP3.0;LCD寄存器選擇

lcd_rwbitP3.1;LCD讀寫控制

lcd_ebitP3.2;LCD選通

lcdio

equP1

lcdbusy

equ33H;LCD忙寄存

lcddata

equ34H;LCD傳遞數(shù)據(jù)

ORG0000H

ljmpmain;復(fù)位入口,轉(zhuǎn)主程序ORG030HMain:

movsp,#50H;設(shè)置堆棧指針

movdptr,#char1

lcalldelay

lcalldelay

lcall

lcd_init;調(diào)液晶初始化

lcall

lcd_sendcharloop:

nop

Ajmploop

lcd_init_3:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_init_3

movlcddata,#0dH;顯示狀態(tài)設(shè)置

lcall

lcd_writecomm

lcalldelaylcd_init_4:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_init_4

movlcddata,#01H;清屏

lcall

lcd_writecomm

lcalldelayretlcd_init:;液晶初始化程序lcd_init_1:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_init_1

movlcddata,#38H;8位2行5x7點(diǎn)陣

lcall

lcd_writecomm

lcalldelaylcd_init_2:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_init_2

movlcddata,#06H;文字不動(dòng),光標(biāo)自 ;動(dòng)右移

lcall

lcd_writecomm

lcalldelaylcd_sendchar:;發(fā)送字符lcd_sendchar_1:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_sendchar_1

movlcddata,#80H;

lcall

lcd_writecomm

lcalldelay

movr1,#16lcd_sendchar_2:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_sendchar_2CLRA

movcA,@A+DPTRIncdptr

mov

lcddata,A

lcall

lcd_writedata

lcalldelay

djnzr1,lcd_sendchar_2lcd_sendchar_3:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_sendchar_3

movlcddata,#0c0H;

lcall

lcd_writecomm

lcalldelay

movr1,#16

movdptr,#char2lcd_sendchar_4:

lcall

lcd_readbusy

mov

a,lcdbusy

cjneA,#0,lcd_sendchar_4CLRA

movcA,@A+DPTRIncdptr

mov

lcddata,A

lcall

lcd_writedata

lcalldelay

djnzr1,lcd_sendchar_4retlcd_writecomm:;寫命令

clr

lcd_rs

nop

clr

lcd_rw

nop

mov

lcdio,lcddata

nop

setb

lcd_e

nop

clr

lcd_eretlcd_writedata:;寫數(shù)據(jù)

setb

lcd_rs

nop

clr

lcd_rw

nop

mov

lcdio,lcddata

nop

setb

lcd_e

nop

clr

lcd_eretlcd_readdata:;讀數(shù)據(jù)

setb

lcd_rs

nop

setb

lcd_rw

nop

setb

lcd_e

nop

mov

lcdbusy,lcdio

clr

lcd_eretlcd_readbusy:;讀忙

clr

lcd_rs

nop

setb

lcd_rw

nop

setb

lcd_e

nop

mov

lcdbusy,lcdio

clr

lcd_e

anllcdbusy,#80Hretchar1:DB'WelcomeTo......';char2:DB'';END7.3A/D轉(zhuǎn)換器接口技術(shù)A/D轉(zhuǎn)換器是將模擬量轉(zhuǎn)換成數(shù)字量的器件。模擬量可是電壓、電流等電信號(hào),也可是聲、光、壓力和溫度等隨時(shí)間連續(xù)變化的非電物理量。非電物理量可通過(guò)合適的傳感器等轉(zhuǎn)換成電信號(hào),模擬量只有轉(zhuǎn)換成數(shù)字量才能被計(jì)算機(jī)采集、分析和計(jì)算處理。A/D轉(zhuǎn)換方法電壓頻率式:精度高價(jià)格低,但轉(zhuǎn)換速度不高雙積分式:抗干擾能力好,轉(zhuǎn)換速度低逐次逼近式:轉(zhuǎn)換速度較快,適中并行轉(zhuǎn)換:速度快,價(jià)格高串行轉(zhuǎn)換:體積小,速度滿硬件設(shè)計(jì)考慮的問(wèn)題選擇分辨率(3~8位/9~12位/13位以上)確定精度(誤差范圍)A/D轉(zhuǎn)換時(shí)間和路數(shù)輸入/輸出特性和范圍電源種類和功耗工作環(huán)境接口是否方便8051和ADC0809的接口ADC0809是逐次比較式的8路8位A/D轉(zhuǎn)換器,28腳,DIP封裝,轉(zhuǎn)換速度為100μs,電源電壓+5VADC0809引腳說(shuō)明:IN0~I(xiàn)N7:8個(gè)模擬量輸入通道D0(2-8)~D7(2-1):8位數(shù)字量輸出ADDC、ADDB、ADDA:通道地址選擇線

000~111依次選擇轉(zhuǎn)換IN0~I(xiàn)N7,表8-2ALE:地址鎖存允許START:?jiǎn)?dòng)一次A/D轉(zhuǎn)換EOC:轉(zhuǎn)換結(jié)束信號(hào)輸出線,開(kāi)始轉(zhuǎn)換時(shí)為低電平,當(dāng)轉(zhuǎn)換結(jié)束時(shí)為高電平。供查詢或申請(qǐng)中斷(89C51需加反相)OE:輸出允許控制端地址線:CBA選擇的通道000

IN0001

IN1010

IN2011

IN3100

IN4101

IN5110

IN6111

IN7ADC0809與8051的接口原理圖接地址線查詢?中斷?P2.7=0外部電壓u0外部電壓u1外部電壓u7外部電壓u3外部電壓u4外部電壓u6外部電壓u5外部電壓u2OEEOC編程要點(diǎn)選擇模擬量輸入通道發(fā)出啟動(dòng)及地址鎖存信號(hào)用延時(shí)、查詢或中斷方法等待轉(zhuǎn)換結(jié)束讀取轉(zhuǎn)換結(jié)果定時(shí)傳送方式對(duì)于一種A/D轉(zhuǎn)換器來(lái)說(shuō),轉(zhuǎn)換時(shí)間作為一項(xiàng)技術(shù)指標(biāo)是已知的和固定的。例如,ADC0809轉(zhuǎn)換時(shí)間約為100μs。可據(jù)此設(shè)計(jì)一個(gè)延時(shí)子程序,A/D轉(zhuǎn)換啟動(dòng)后即調(diào)用這個(gè)延時(shí)子程序,延遲時(shí)間一到,轉(zhuǎn)換肯定已經(jīng)完成了,接著就可進(jìn)行數(shù)據(jù)傳送。在這種方式下,EOC引腳懸空。查詢傳送方式單片機(jī)啟動(dòng)0809后,檢測(cè)EOC,若EOC=0則A/D轉(zhuǎn)換沒(méi)有結(jié)束,繼續(xù)檢測(cè)EOC,直到EOC=1。當(dāng)EOC=1時(shí),A/D轉(zhuǎn)換已經(jīng)結(jié)束,單片機(jī)讀取A/D轉(zhuǎn)換結(jié)果。在這種方式下,EOC必須接到8051的一條I/O線上。P1.0中斷傳送方式單片機(jī)啟動(dòng)A/D轉(zhuǎn)換后可以做其它工作,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),EOC由0---1經(jīng)過(guò)非門傳到INT端,8051收到中斷請(qǐng)求信號(hào),若8051開(kāi)著中斷,則進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中單片機(jī)讀取A/D轉(zhuǎn)換的結(jié)果。在這種方式下,EOC必須經(jīng)過(guò)非門接到8051的中斷請(qǐng)求輸入線INT0或INT1上,89C51的中斷觸發(fā)方式為下降沿觸發(fā)。INT1編寫連續(xù)采集IN0~I(xiàn)N7上的模擬量u0~u7的轉(zhuǎn)換程序,并將數(shù)字量存入30H~37H。MOVR1,#30H;緩存區(qū)首址MOVDPTR,#7FF8H;P2.7=0,且指向通道0(A2A1A0=000)MOVR7,#08H;置通道數(shù)LOOP:MOVX@DPTR,A;啟動(dòng)A/D轉(zhuǎn)換MOVR6,#55;延時(shí)110μs等待轉(zhuǎn)換結(jié)束DJNZR6,$;2個(gè)機(jī)器周期,12MHz,2μs,MOVA,@DPTR;讀取轉(zhuǎn)換結(jié)果MOV@R1,A;存放結(jié)果INCR1;修改數(shù)據(jù)區(qū)指針I(yè)NCDPTR;指向下一個(gè)通道DJNZR7,LOOP;8個(gè)通道全采樣完了嗎?…查詢:JBP1.0,$JNBP1.0,$中斷方式程序SETBIT1SETBEX1SETBEAMOVR1,#30HMOVDPTR,#7FF8HMOVA,#0MOVX@DPTR,A…PUSHACCMOVXA,@DPTRMOV@R1,AINCR1INCDPTRMOVX@DPTR,APOPACCRETI初始化,啟動(dòng)A/D轉(zhuǎn)換IN0如何接著啟動(dòng)下一個(gè)通道?實(shí)驗(yàn)-原理、調(diào)試通道的選擇是由地址線A0、A1、A2來(lái)完成,只可用IN0,IN1輸入,電位器單步運(yùn)行程序,觀察讀入的A/D轉(zhuǎn)換結(jié)果,并測(cè)量對(duì)應(yīng)的模擬輸入電壓值,記錄試采用延時(shí)、查詢、中斷,最少兩種7.4D/A轉(zhuǎn)換器接口后向通道分開(kāi)關(guān)量、模擬量信號(hào)開(kāi)關(guān)量:繼電器、接觸器、SSR、晶閘管,如控制電機(jī)啟停、信號(hào)有無(wú)等模擬量:D/A轉(zhuǎn)換器SolidStateRalayDAC0832芯片介紹分辨率8位電流輸出,穩(wěn)定時(shí)間1μs雙緩沖、單緩沖、直接數(shù)字輸入單電源供電邏輯結(jié)構(gòu)工作方式直通方式:各控制端口一直有效單緩沖方式:輸入寄存器和8位DAC寄存器鎖存信號(hào)同時(shí)有效;或者一個(gè)寄存器控制端一直有效。雙緩沖方式:輸入寄存器和8位DAC寄存器鎖存信號(hào)分開(kāi)控制系統(tǒng)只有一路模擬量輸出或幾路模擬量不需同步的輸出場(chǎng)合,可采用單緩沖方式實(shí)驗(yàn):輸出00~FFH,0~-5V和-5~+5V兩種VREF00H~FFH通過(guò)運(yùn)放可輸出一個(gè)鋸齒波

MOVDPTR,#7FFFHMOVA,#00HLOOP:MOVX@DPTR,AINCAAJMPLOOP產(chǎn)生方波的程序

MOVDPTR,#7FFFH;設(shè)置D/A口地址

LOOP:MOVA,#FFH;輸入數(shù)字最大值

MOVX@DPTR,A;輸出對(duì)應(yīng)于A值的模擬量

ACALLDELAY;延時(shí)

MOVA,#00H;修改A的內(nèi)容

MOVX@DPTR,A;輸出對(duì)應(yīng)于A值的模擬量

ACALLDELAY;延時(shí)

AJMPLOOP;循環(huán)輸出下一個(gè)方波DELAY:延時(shí)程序?qū)嶒?yàn):輸出鋸齒波,三角波。思考:幅值變化的方波、三角波?雙緩沖方式適用于幾個(gè)模擬量同時(shí)輸出的系統(tǒng)先分時(shí)將數(shù)字量裝入兩片0832輸入寄存器(地址:P2.5和P2.6)然后同時(shí)選通兩片0832的DAC寄存器(地址:P2.7),同時(shí)輸出模擬量信號(hào)單通道串行輸出A/D芯片TLC1549及接口逐次比較型10位A/D6個(gè)工作方式:區(qū)別主要是cs是否連續(xù)為低電平快速、慢速:決定于I/OCLOCK周期TLC1549與89C51接口89C51

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

DATAOUTREF-GNDVCCREF+89C51讀取TLC1549中10位數(shù)據(jù)程序如下:

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

LCALLRDADA;調(diào)用讀數(shù)子程序

MOVR1,A;高兩位數(shù)據(jù)存入R1MOVR0,#8;要讀取低8位數(shù)據(jù)

LCALLRDATAMOVR2,A;低8位數(shù)據(jù)存入R2SETBP3.0;片選無(wú)效

CLRP3.1;時(shí)鐘低電平

RET;程序結(jié)束RDADA:CLRP

溫馨提示

  • 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)論