《單片機原理及應用》課件-第8章 MCS-51單片機接口電路_第1頁
《單片機原理及應用》課件-第8章 MCS-51單片機接口電路_第2頁
《單片機原理及應用》課件-第8章 MCS-51單片機接口電路_第3頁
《單片機原理及應用》課件-第8章 MCS-51單片機接口電路_第4頁
《單片機原理及應用》課件-第8章 MCS-51單片機接口電路_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ChapterEightMCS-51單片機接口電路目錄CONTENT8.2.1LED接口 8.2.2鍵盤接口 8.2.3蜂鳴器接口8.1單片機接口電路概述8.3.1光電隔離接口 8.3.2功率輸出(繼電器)接口8.2人機接口8.3數(shù)字I/O接口8.4串行接口 8.4.1單片機和PC機通信 8.4.2串行口通訊應用及實例 8.4.3I2C接口存儲芯片的應用 8.4.4SPI串行總線應用及實例8.1單片機接口電路概述單片機接口電路是單片機同外部設備之間實現(xiàn)信息傳輸?shù)目刂齐娐贰?9C51單片機與外設的連接示意圖大多數(shù)單片機系統(tǒng)都把外設的狀態(tài)信息視為輸入數(shù)據(jù),而把命令信息看成輸出數(shù)據(jù)。8.1單片機接口電路概述如鍵盤和打印機,則外部接口只需完成速度匹配任務即可;如壓力、溫度等模擬信號,故人機接口不僅要完成速度匹配任務,還要完成信息形式的轉(zhuǎn)換任務。單片機接口電路一般要具備兩個功能:信息形式的轉(zhuǎn)換速度匹配8.2人機接口在單片機應用系統(tǒng)中,通常都要有人機對話功能。它是應用系統(tǒng)與操作人員之間交互的窗口,是系統(tǒng)與外界聯(lián)系的紐帶和界面。對系統(tǒng)狀態(tài)實現(xiàn)干預及數(shù)據(jù)輸出設備最常用的是鍵盤和顯示器,單片機中最常用的LED顯示器和鍵盤。8.2.1LED接口結(jié)構(gòu):電致發(fā)光的半導體材料LED發(fā)光二極管1符號:參數(shù):導通壓降:1.7V~1.9V 工作電流:5mA~10mA特點:低壓電源、耗能少、適應性強、多色發(fā)光8.2.1LED接口其中R2、R3、R4為對應二極管的限流電阻。當單片機對應端口輸出為低電平時,輸出端電壓接近0V;若LED正向偏壓時,兩端電壓VD為1.7V,則限流電阻R1兩端電壓為3.3V。如果希望流過LED的電流ID限制為10mA,則此限流電阻R1為:驅(qū)動發(fā)光二極管的典型應用電路;例8-1:如上圖所示,若LED正向偏壓時,兩端電壓VD為1.7V,試選擇適當?shù)南蘖麟娮鑂1,使發(fā)光二極管的電流ID限制為8mA,并編程實現(xiàn)發(fā)光二極管約2s亮滅一次。程序代碼:#include<reg51.h>sbit gate=P1^0; //定義P1.0口voidmain(void){ unsignedinti,j; while(1){ for(i=1000;i>0;i--) //雙重循環(huán),延時約1s for(j=1000;j>0;j--); gate=!gate; //對P1.0口取反

}}試編制程序,要求當其中某一按鍵壓下時與其對應的二極管將被點亮。課堂練習8.2.1LED接口

LED數(shù)碼管如何顯示出指定數(shù)字/字母?LED數(shù)碼管27段數(shù)碼管內(nèi)部字段LED和引腳分布圖8.2.1LED接口LED數(shù)碼管內(nèi)部連接方式共陰極接法共陽極接法8.2.1LED接口7段LED顯示器字符段碼表例8-2:如圖所示,編寫字符“0-9”的顯示子程序。C51程序代碼:/****************共陽極LED數(shù)碼管顯示子程序******************入口:顯示字符----定義為變量dis_index

出口:無功能:將顯示字符對應的段碼送到P2口,實現(xiàn)對應字符的顯示功能*************************************************************/#include<reg51.h>unsignedcharcodeLEDvalue[10]={0xc0,0xf9,0xa4,0xb0,0x99,//0,1,2,3,4 0x92,0x82,0xf8,0x80,0x90};//5,6,7,8,9voidproc_dis(unsignedchardis_index){ P2=LEDvalue[dis_index]; //顯示代碼傳送到P2口}例8-3:如圖8-7所示,DS1~DS4是4位共陰極數(shù)碼管,試編寫數(shù)碼管的動態(tài)顯示程序(fosc=12MHz)。8.2.2鍵盤接口鍵盤在單片機應用系統(tǒng)中,實現(xiàn)輸入數(shù)據(jù)、傳送命令的功能,是人工干預的主要手段。矩陣式按鍵結(jié)構(gòu)獨立式按鍵結(jié)構(gòu)鍵盤主要有兩種結(jié)構(gòu):8.2.2鍵盤接口矩陣式按鍵結(jié)構(gòu)獨立式按鍵結(jié)構(gòu)8.2.2鍵盤接口鍵盤系統(tǒng)設計:首先,確定鍵盤采用獨立式按鍵結(jié)構(gòu)或矩陣式按鍵結(jié)構(gòu)。其次,確定鍵盤工作方式:采用中斷或查詢方式輸入鍵操作信息。最后,設計硬件電路。在鍵盤系統(tǒng)中,鍵閉合和鍵釋放信息的獲取,鍵抖動的消除,鍵值查找及一些保護措施的實施等任務,均可由軟件來完成。

中斷掃描方式查詢方式鍵盤工作方式8.2.2鍵盤接口鍵盤的鍵輸入程序應完成的基本任務1)監(jiān)測有無鍵按下;鍵的閉合與否,反映在電壓上就是呈現(xiàn)出高電平或低電平,所以通過電平的高低狀態(tài)的檢測,便可確認按鍵按下與否。2)判斷是哪個鍵按下。3)完成鍵處理任務。018.2.2鍵盤接口從電路或軟件的角度應解決的問題1)消除抖動影響抖動時間的長短由按鍵的機械特性決定,一般為5~10ms按鍵的消抖,通常有軟件、硬件兩種消除方法。022)采取串鍵保護措施串鍵:是指同時有一個以上的鍵按下。通常采取的策略:單鍵按下有效,多鍵同時按下無效。3)處理連擊連擊:是一次按鍵產(chǎn)生多次擊鍵的效果。為了消除連擊,則要有對按鍵釋放的處理。例8-4:參照8-10獨立式按鍵接口電路圖,編寫按鍵掃描處理子程序。已知按鍵處理子程序分別為Sub_S1()、Sub_S2()和Sub_S3()。C51程序代碼:#include<reg51.h>voidkey_deal(void){unsignedcharKey_value; //按鍵鍵值

P1|=0x07; //P1.0~P1.2為輸入端口

Key_value=P1&07; //屏蔽P1口高5位,取鍵值

switch(Key_value){ case6:Sub_S1();break; //S1按鍵按下,執(zhí)行對應子程序

case5:Sub_S2();break; //S2按鍵按下,執(zhí)行對應子程序

case3:Sub_S3();break; //S3按鍵按下,執(zhí)行對應子程序

default: break; }}本例中沒有考慮按鍵消抖的問題。矩陣式鍵盤接口設計矩陣式鍵盤適用于按鍵數(shù)量較多的場合,由行線和列線組成,按鍵位于行列的交叉點上。可以節(jié)省I/O口。行線通過上拉電阻接到+5V上,并將行線所接的單片機I/O口作為輸入端,而列線所接的I/O作為輸出端。例8-5:參照8-13矩陣式鍵盤接口電路圖,編寫3×3矩陣式按鍵掃描處理子程序。已知按鍵處理子程序分別為Sub_S1()、Sub_S2()、……、Sub_S9()。C51程序代碼:#include<reg51.h>sbitrow1=P1^0; //定義位變量,參看電路圖sbitrow2=P1^1;sbitrow3=P1^2;sbitcol1=P1^3;sbitcol2=P1^4;sbitcol3=P1^5;voidDelay10ms(void); //10ms軟件延時,子程序略/**************************************************函數(shù)名稱:KeyDown()*功能:檢測鍵盤是否按下*入口參數(shù):無*出口參數(shù):返回1表示鍵盤按下,返回0表示鍵盤未按下*/unsignedcharKeyDown(void){ row1=1;row2=1;row3=1; //行線設為輸入

col1=0;col2=0;col3=0; //列線全部置低

if((row1==0)||(row2==0)||(row3==0)){ //若有任一行線讀回狀態(tài)為低

Delay10ms(); //10ms延時消抖

if((row1==0)||(row2==0)||(row3==0))

//再次讀行線狀態(tài),若有任一行線讀回狀態(tài)為低

return1; //返回1,表明有鍵盤按下

else return0; //返回0,表明無鍵盤按下

} else return0;}/***************************************************函數(shù)名稱:KeyUp()*功能:檢測鍵盤是否彈起*入口參數(shù):無*出口參數(shù):返回1表示鍵盤彈起,返回0表示鍵盤未彈起****************************************************/unsignedcharKeyUp(void){col1=0;col2=0;col3=0; //列線全部置低

if((row1==1)&&(row2==1)&&(row3==1)){//若全部行線讀回狀態(tài)都為高

Delay10ms();

//10ms延時消抖

if((row1==1)&&(row2==1)&&(row3==1))

//再次讀行線狀態(tài),若全部行線讀回狀態(tài)都為高

return1; //返回1,表明所有鍵盤都處于彈起狀態(tài)

elsereturn0; //返回0,表明有鍵盤處于按下狀態(tài)

}elsereturn0;}/*函數(shù)名稱:KeyValue()*功能:檢測用戶按下的鍵盤所對應的鍵盤號*入口參數(shù):無*出口參數(shù):返回0表示沒有鍵盤被按動,返回1~9對應被按動的鍵盤*/unsignedcharKeyValue(void){unsignedcharKeyTemp=0;if(KeyDown()==1){ //若鍵盤被按下

col1=0;col2=1;col3=1;//將列線1置低,其他列線置高

if(row1==0)KeyTemp=1;//若行線1讀回狀態(tài)為低,則表明按鍵1被按下

if(row2==0)KeyTemp=4;//若行線2讀回狀態(tài)為低,則表明按鍵4被按下

if(row3==0)KeyTemp=7;//若行線3讀回狀態(tài)為低,則表明按鍵7被按下

……while(KeyUp()!=1); //等待按下的鍵盤被釋放

returnKeyTemp; //返回被按下并被釋放的鍵盤的編號

}elsereturn0;}voidkey_deal(void){switch(KeyValue()){ case1:Sub_S1();break; //S1按鍵按下,執(zhí)行對應子程序

case2:Sub_S2();break; //S2按鍵按下,執(zhí)行對應子程序

…… case9:Sub_S9();break; //S9按鍵按下,執(zhí)行對應子程序

default: break;}}8.2.3蜂鳴器接口蜂鳴器(Buzzer)是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電。在單片機應用設計上可以使用蜂鳴器來做提示或報警。蜂鳴器分有源和無源兩種:“有源”是指蜂鳴器內(nèi)部包含驅(qū)動信號的震蕩電路,只要接額定電壓就可以發(fā)聲,程序控制簡單方便;“無源”是指蜂鳴器需要靠外部的震蕩驅(qū)動才可以發(fā)聲,一般用2K-5K的方波來驅(qū)動,特點是聲音頻率可控,可以發(fā)出不同的音調(diào)。單片機一般使用PWM(脈沖寬度調(diào)制,就是占空比可變的脈沖波形)輸出口驅(qū)動無源蜂鳴器。如果沒有PWM模塊,也可以用I/O口定時翻轉(zhuǎn)電平模擬PWM。例8-6:參照圖8-15無源蜂鳴器接口電路圖,編寫頻率2500Hz,占空比50%的方波驅(qū)動蜂鳴器發(fā)聲的程序。(fosc=12MHz)。#include<reg51.h>sbitbuzzer=P3^0; //蜂鳴器的控制引腳定義intmain(){TMOD=0x02; //設置T0為定時方式2TH0=56; TL0=56; //定時200usTR0=1;ET0=1;EA=1;while(1);}voidTimer0_isr(void)interrupt1{//定時器0的中斷服務函數(shù)buzzer=!buzzer; //控制I/O口翻轉(zhuǎn)}8.3數(shù)字I/O接口

光電隔離電路的作用是在電隔離的情況下,以光為媒介傳送信號,對輸入和輸出電路可以進行隔離。發(fā)光源的引腳為輸入端,受光器的引腳為輸出端,常見的發(fā)光源為發(fā)光二極管,受光器為光敏二極管、光敏三極管等等,這樣就實現(xiàn)了“電——光——電”的轉(zhuǎn)換。8.3.1光電隔離接口8.3.1光電隔離接口輸入端上圖為典型的光電耦合電路。對于數(shù)字量,當輸入為低電平“0”時,光敏三極管截止,輸出為低電平“0”;輸出端008.3.1光電隔離接口輸入端當輸入為高電平“1”時,光敏三極管飽和導通,輸出為高電平“1”。通常光耦兩端有獨自的電源和參考地。輸出端118.3.2功率輸出(繼電器)接口繼電器是單片機測控系統(tǒng)中常用的一種控制設備,通俗的意義上來說就是開關(guān),在條件滿足的情況下關(guān)閉或者開啟。驅(qū)動繼電器主要考慮以下三個因素:控制電路的電源電壓,能提供的最大電流。被控制電路中的電壓和電流。被控電路需要幾組、什么形式的觸點。8.3.2功率輸出(繼電器)接口當ULN2003輸入端為高電平時,對應的輸出口輸出低電平,繼電器線圈通電,繼電器觸點吸合;當ULN2003輸入端為低電平時,繼電器線圈斷電,繼電器觸點斷開;在ULN2003內(nèi)部已集成起反向續(xù)流作用的二極管,因此可直接用它驅(qū)動繼電器。晶體管驅(qū)動電路驅(qū)動芯片驅(qū)動繼電器的接口電路8.3.2功率輸出(繼電器)接口當晶體管Q1基極被輸入高電平時,晶體管飽和導通,集電極變?yōu)榈碗娖健R虼死^電器線圈通電,觸點K1吸合。晶體管驅(qū)動電路驅(qū)動芯片驅(qū)動繼電器的接口電路8.4串行接口PC機可以使用“超級終端”或“串門專家”等軟件來進行串口數(shù)據(jù)的接收和發(fā)送。8.4.1單片機和PC機通信8.4.1單片機和PC機通信選擇正確的串口(通常PC機有兩個串行口,COM1和COM2),設置波特率和通信協(xié)議規(guī)定的幀格式。8.4.1單片機和PC機通信8.4.2串行通訊應用及實例AT89C51串行通信的過程及通信協(xié)議所謂通信協(xié)議是指通信雙方的一種約定。約定包括對數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。8.4.2串行通訊應用及實例RS232異步全雙工9600,1,N,8接收命令通信格式:幀頭+命令碼+地址碼+結(jié)束標志幀頭:ASCII碼——‘AT'命令碼(ASCII碼):抬桿:UP結(jié)束標志:16進制數(shù)——‘0DH'則向地址為11的擋車器發(fā)送抬桿命令(注:地址碼高四位為1)編程見教材(略)。8.4.3I2C接口存儲芯片的應用I2C(Inter-IntegratedCircuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。I2C總線是由串行數(shù)據(jù)線SDA和串行時鐘線SCL構(gòu)成的,可發(fā)送和接收數(shù)據(jù)。例8-8:參照圖8-31的電路,單片機的P1.0引腳作為串行時鐘線SCL,P1.1引腳作為串行數(shù)據(jù)線SDA,設計使用I/O口模擬I2C串行總線讀寫AT24C01的C51程序。8.4.4SPI串行總線應用及實例SPI(TheSerialPeripheralInterface),即串行外圍設備接口,是一種同步串行傳輸規(guī)范,一般使用3線制或者4線制8.4.4SPI串行總線應用及實例SPI的工作模式8.4.4SPI串行總線應用及實例SPI的工作模式例8-9:參考圖8-35,使用AT89C51的IO口模擬SPI接口,讀取TLC2543通道0的AD轉(zhuǎn)換結(jié)果,并計算出AD值對應的電壓。TLC2543是TI公司的串行SPI接口的12位模數(shù)轉(zhuǎn)換器,使用逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。TLC2543的引腳說明如圖所示。TLC2543的啟動需要通過SPI接口發(fā)送長度為一個字節(jié)的數(shù)據(jù),格式說明如下,其中高4位是選擇輸入通道。#include<reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineCH0 (0<<4)//TLC2543輸入數(shù)據(jù)的高4位是選擇輸入通道

sbitEOC =P1^0; //轉(zhuǎn)換結(jié)束端

sbitSPI_CLK=P1^1; //時鐘輸入端

sbitMOSI =P1^2; //從機數(shù)據(jù)輸入端

sbitMISO =P1^3; //從機數(shù)據(jù)輸出端

sbitSPI_CS =P1^4; //片選端,低電平有效

uintad_val; //保存讀取的12位AD值

floatvolt; //保存

溫馨提示

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

評論

0/150

提交評論