第10章-單片機應用系統(tǒng)設計與實例(ghl)課件_第1頁
第10章-單片機應用系統(tǒng)設計與實例(ghl)課件_第2頁
第10章-單片機應用系統(tǒng)設計與實例(ghl)課件_第3頁
第10章-單片機應用系統(tǒng)設計與實例(ghl)課件_第4頁
第10章-單片機應用系統(tǒng)設計與實例(ghl)課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第10章單片機應用系統(tǒng)設計與實例東北大學信息學院高宏亮《單片機原理及應用》第10章單片機應用系統(tǒng)設計10.1單片機應用系統(tǒng)的基本結(jié)構10.1.1單片機應用系統(tǒng)的硬件組成被控對象單片機光電隔離A/D光電隔離光電隔離D/A擴展存儲器顯示器、鍵盤接口功能芯片接口數(shù)字量輸入模擬量輸入開關量輸入開關量輸出模擬量輸出輸入輸出接口I/O接口10.1.2單片機應用系統(tǒng)開發(fā)的基本過程一.系統(tǒng)需求與方案調(diào)研系統(tǒng)需求與方案調(diào)研的目的是通過市場或用戶了解用戶對擬開發(fā)應用系統(tǒng)的設計目標和技術指標。通過查找資料,分析研究,解決以下問題:

1)了解國內(nèi)外同類系統(tǒng)的開發(fā)水平、器材、設備水平、供應狀態(tài);對接收委托研制項目,還應充分了解對方技術要求、環(huán)境狀況、技術水平,以確定課題的技術難度。

2)了解可移植的硬、軟件技術。能移植的盡量移植,以防止大量低水平重復勞動。

3)摸清硬、軟件技術難度,明確技術主攻方向。

4)綜合考慮硬、軟件分工與配合方案。單片機應用系統(tǒng)設計中,硬、軟件工作具有密切的相關性??尚行苑治龅哪康氖菍ο到y(tǒng)開發(fā)研制的必要性及可行性作出明確的判定結(jié)論。根據(jù)這一結(jié)論決定系統(tǒng)的開發(fā)研制工作是否進行下去??尚行苑治鐾ǔ囊韵聨讉€方面進行論證:1)市場或用戶的需求情況。2)經(jīng)濟效益和社會效益。3)技術支持與開發(fā)環(huán)境。4)現(xiàn)在的競爭力與未來的生命力。二.可行性分析系統(tǒng)功能設計包括系統(tǒng)總體目標功能的確定及系統(tǒng)硬、軟件模塊功能的劃分與協(xié)調(diào)關系。系統(tǒng)功能設計是根據(jù)系統(tǒng)硬件、軟件功能的劃分及其協(xié)調(diào)關系,確定系統(tǒng)硬件結(jié)構和軟件結(jié)構。系統(tǒng)硬件結(jié)構設計的主要內(nèi)容包括單片機系統(tǒng)擴展方案和外圍設備的配置及其接口電路方案,最后要以邏輯框圖形式描述出來。系統(tǒng)軟件結(jié)構設計主要完成的任務是確定出系統(tǒng)軟件功能模塊的劃分及各功能模塊的程序?qū)崿F(xiàn)的技術方法,最后以結(jié)構框圖或流程圖描述出來。三.系統(tǒng)方案設計應學會技能:網(wǎng)上查找芯片電子手冊系統(tǒng)詳細設計與制作就是將前面的系統(tǒng)方案付諸實施,將硬件框圖轉(zhuǎn)化成具體電路,并制作成電路板,軟件框圖或流程圖用程序加以實現(xiàn)。四.系統(tǒng)詳細設計與制作應學會技能:購買芯片、接插件(電子市場購買或郵購)

畫PCB電路板,畫器件封裝六.生成正式系統(tǒng)或產(chǎn)品系統(tǒng)硬件、軟件調(diào)試通過后,就可以把調(diào)試完畢的軟件固化在EPROM中,然后脫機(脫離開發(fā)系統(tǒng))運行。如果脫機運行正常,再在真實環(huán)境或模擬真實環(huán)境下運行,經(jīng)反復運行正常,開發(fā)過程即告結(jié)束。系統(tǒng)調(diào)試是檢測所設計系統(tǒng)的正確性與可靠性的必要過程。單片機應用系統(tǒng)設計是一個相當復雜的勞動過程,在設計、制作中,難免存在一些局部性問題或錯誤。系統(tǒng)調(diào)試可發(fā)現(xiàn)存在的問題和錯誤,以便及時地進行修改。調(diào)試與修改的過程可能要反復多次,最終使系統(tǒng)試運行成功,并達到設計要求。五.系統(tǒng)調(diào)試與修改10.2單片機應用系統(tǒng)的硬件設計10.2.1硬件系統(tǒng)設計原則一個單片機應用系統(tǒng)的硬件電路設計包括三個部分內(nèi)容:一是單片機芯片的選擇,二是單片機系統(tǒng)擴展,三是系統(tǒng)配置。一、單片機芯片的選擇二、單片機系統(tǒng)擴展單片機系統(tǒng)擴展是指單片機內(nèi)部的功能單元(如程序存儲器、數(shù)據(jù)存儲器、I/O口、定時器/計數(shù)器、中斷系統(tǒng)等)的容量不能滿足應用系統(tǒng)的要求時,必須在片外進行擴展,這時應選擇適當?shù)男酒O計相應的擴展連接電路;系統(tǒng)配置是按照系統(tǒng)功能要求配置外圍設備,如鍵盤、顯示器、打印機、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等,設計相應的接口電路。三、系統(tǒng)配置系統(tǒng)擴展和配置設計遵循的原則:(1)盡可能選擇典型通用的電路,并符合單片機的常規(guī)用法。(2)系統(tǒng)的擴展與外圍設備配置的水平應充分滿足應用系統(tǒng)當前的功能要求,并留有適當余地,便于以后進行功能的擴充。(3)硬件結(jié)構應結(jié)合應用軟件方案一并考慮。(4)整個系統(tǒng)中相關的器件要盡可能做到性能匹配。(5)可靠性及抗干擾設計是硬件設計中不可忽視的一部分。(6)單片機外接電路較多時,必須考慮其驅(qū)動能力。10.2.2硬件設計1)程序存儲器2)數(shù)據(jù)存儲器3)I/O接口4)譯碼電路5)總線驅(qū)動器6)抗干擾電路10.3單片機應用系統(tǒng)的軟件設計一個應用系統(tǒng)中的軟件一般是由系統(tǒng)監(jiān)控程序和應用程序兩部分構成的。其中,應用程序是用來完成諸如測量、計算、顯示、打印、輸出控制等各種實質(zhì)性功能的軟件;系統(tǒng)監(jiān)控程序是控制單片機系統(tǒng)按預定操作方式運行的程序,它負責組織調(diào)度各應用程序模塊,完成系統(tǒng)自檢、初始化、處理鍵盤命令、處理接口命令、處理條件觸發(fā)和顯示等功能。軟件設計時,應根據(jù)系統(tǒng)軟件功能要求,將軟件分成若干個相對獨立的部分,并根據(jù)它們之間的聯(lián)系和時間上的關系,設計出軟件的總體結(jié)構,畫出程序流程框圖。畫流程框圖時還要對系統(tǒng)資源作具體的分配和說明。根據(jù)系統(tǒng)特點和用戶的了解情況選擇編程語言,現(xiàn)在一般用匯編語言和C語言。匯編語言編寫程序?qū)τ布僮骱芊奖?,編寫的程序代碼短,以前單片機應用系統(tǒng)軟件主要用匯編語言編寫;C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,現(xiàn)在單片機應用系統(tǒng)開發(fā)很多都用C語言來進行開發(fā)和設計。10.3.1軟件設計的特點一個優(yōu)秀的應用系統(tǒng)的軟件應具有以下特點:(1)軟件結(jié)構清晰、簡捷、流程合理。(2)各功能程序?qū)崿F(xiàn)模塊化,系統(tǒng)化。這樣,既便于調(diào)試、連接,又便于移植、修改和維護。(3)運行狀態(tài)實現(xiàn)標志化管理。各個功能程序運行狀態(tài)、運行結(jié)果以及運行需求都設置狀態(tài)標志以便查詢,程序的轉(zhuǎn)移、運行、控制都可通過狀態(tài)標志來控制。(4)實現(xiàn)全面軟件抗干擾設計。軟件抗干擾是計算機應用系統(tǒng)提高可靠性的有力措施。(5)為了提高運行的可靠性,在應用軟件中設置自診斷程序,在系統(tǒng)運行前先運行自診斷程序,用以檢查系統(tǒng)各特征參數(shù)是否正常。10.3.3單片機應用系統(tǒng)開發(fā)工具一個單片機應用系統(tǒng)經(jīng)過總體設計,完成硬件開發(fā)和軟件設計,就進行硬件安裝。硬件安裝好后,把編制好的程序?qū)懭氪鎯ζ髦?,調(diào)試好后系統(tǒng)就可以運行了。但用戶設計的應用系統(tǒng)本身并不具備自開發(fā)的能力,不能夠?qū)懭氤绦蚝驼{(diào)試程序,這必須借助于單片機開發(fā)系統(tǒng)才能完成這些工作。單片機開發(fā)系統(tǒng)是能夠模擬用戶實際的單片機,并且能隨時觀察運行的中間過程和結(jié)果,從而能對現(xiàn)場進行模仿的仿真開發(fā)系統(tǒng)。通過它能很方便的對硬件電路進行診斷和調(diào)試,得到正確的結(jié)果。目前國內(nèi)使用的通用單片機的仿真開發(fā)系統(tǒng)很多,如復旦大學研制的SICE系列啟東計算機廠制造的DVCC系列中國科大研制的KDV系列南京偉福公司的各系列上海星研公司的各系列等。它們都具有程序輸入、編輯、匯編和調(diào)試的功能。此外,有些還具備在線仿真功能,能夠直接將程序固化到EEPROM中。一般都支持匯編語言編程,有的可以通過開發(fā)軟件,支持C語言編程。例如可通過KeilC51軟件來編寫C語言源程序,編譯連接生成目標文件、可執(zhí)行文件,仿真、調(diào)試、生成代碼并下載到應用系統(tǒng)中。第11章單片機應用系統(tǒng)設計實例東北大學信息學院高宏亮2011年《單片機原理及應用》第11章單片機應用系統(tǒng)設計實例11.1單片機電子時鐘的設計通常通過用單片機設計電子時鐘有兩種方法:一是通過單片機內(nèi)部的定時器/計數(shù)器。這種方法硬件線路簡單,采用軟件編程實現(xiàn)時鐘計數(shù),一般稱為軟時鐘。系統(tǒng)的功能一般與軟件設計相關,通常用在對時間精度要求不高的場合;二是采用時鐘芯片,它的功能強大,功能部件集成在芯片內(nèi)部,自動產(chǎn)生時鐘等相關功能。硬件成本相對較高,軟件編程簡單。通常用在對時鐘精度要求較高的場合。11.1.1軟時鐘的基本原理軟時鐘是利用單片機內(nèi)部的定時器/計數(shù)器來實現(xiàn),它的處理過程如下:首先設定單片機內(nèi)部的一個定時器/計數(shù)器工作于定時方式,對機器周期計數(shù)形成基準時間(如10ms),然后用另一個定時器/計數(shù)器或軟件計數(shù)的方法對基準時間計數(shù)形成秒(對10ms計數(shù)100次),秒計60次形成分,分計60次形成小時,小時計24次則計滿一天。然后通過數(shù)碼管把它們的內(nèi)容在相應位置顯示出來即可。11.1.2系統(tǒng)硬件電路的設計圖11.1電子時鐘電路原理圖電子時鐘的軟件系統(tǒng)由主程序和子程序組成,主程序程序包含初始化參數(shù)設置、按鍵處理、數(shù)碼管顯示模塊等,在設計時各個模塊都采用子程序結(jié)構設計,在主程序中調(diào)用。由于定時器/計數(shù)器采用中斷方式處理,因此還要編寫定時器/中斷服務子程序,在定時器/計數(shù)器中斷服務程序中對時鐘進行調(diào)整。11.1.3系統(tǒng)軟件程序的設計電子時鐘的軟件系統(tǒng)由主程序和子程序組成,主程序程序包含初始化參數(shù)設置、按鍵處理、數(shù)碼管顯示模塊等,在設計時各個模塊都采用子程序結(jié)構設計,在主程序中調(diào)用。由于定時器/計數(shù)器采用中斷方式處理,因此還要編寫定時器/中斷服務子程序,在定時器/計數(shù)器中斷服務程序中對時鐘進行調(diào)整。一.主程序主程序執(zhí)行流程如圖11.2,主程序先對顯示單元和定時器/計數(shù)器初始化,然后重復調(diào)用數(shù)碼管顯示模塊和按鍵處理模塊,當有鍵按下,則轉(zhuǎn)入相應的功能程序。圖11.2主程序流程圖本系統(tǒng)共用8個數(shù)碼管,從右到左依次顯示秒個位、秒十位、橫線、分個位、分十位、橫線、時個位和時十位。數(shù)碼管顯示的信息用8個內(nèi)存單元存放,這8個內(nèi)存單元稱為顯示緩沖區(qū),其中秒個位和秒十位、分個位和分十位、時個位和時十位分別由秒數(shù)據(jù)、分數(shù)據(jù)和小時數(shù)據(jù)分拆得到。本系統(tǒng)中數(shù)碼管顯示采用軟件譯碼動態(tài)顯示。在存儲器中首先建立一張顯示信息的字段碼表,顯示時,先從顯示緩沖區(qū)中取出顯示的信息,然后通過查表程序在字段碼表中查出所顯示的信息的字段碼,從P0口輸出,同時在P2口將對應的位選碼輸出選中顯示的數(shù)碼管,就能在相應的數(shù)碼管上顯示顯示緩沖區(qū)的內(nèi)容。二.數(shù)碼管顯示模塊 定時器/計數(shù)器T0用于時間計時。選擇方式1,重復定時,定時時間設為50ms,定時時間到則中斷,在中斷服務程序中用一個計數(shù)器對50ms計數(shù),計20次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清0;分鐘單元加到60則對時單元加1,同時分鐘單元清0;小時單元加到24則對時單元清0,標志一天時間計滿。在對各單元計數(shù)的同時,把它們的值放到存儲單元的指定位置。定時器/計數(shù)器T0中斷服務程序流程圖如圖11.3所示。三.定時器/計數(shù)器T0中斷服務程序開始現(xiàn)場保護,重置初值啟動下一個50ms50ms計數(shù)器加1秒單元加1,50ms計數(shù)器清0,秒寫入秒個位和秒十位50ms計數(shù)器=20?否是分單元加1,秒單元清0,分寫入分個位和分十位秒單元=60?時單元加1,分單元清0,時寫入時個位和時十位分單元=60?時單元清0時單元=24?中斷返回否否否是是是圖11.3T0定時中斷函數(shù)流程圖四.按鍵處理模塊 按鍵處理設置為:如沒有按鍵,則時鐘正常走時。當按下K0按鍵時,進入調(diào)分狀態(tài),時鐘停止走動;按K1可K2按鍵可進行加1或減1操作;繼續(xù)按K0鍵可分別進行分和小時的調(diào)整;最后按K0鍵將退出調(diào)整狀態(tài),時鐘開始計時運行。五.C語言源程序清單#include"reg51.h"#defineucharunsignedchar//共陽數(shù)碼管顯示碼,"0-9",全滅和'-'的字碼ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xb2,0xf8,0x80,0x90,0xff,0xbf};//鍵盤位選擇碼ucharcodescan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//顯示緩沖區(qū),小時,分鐘,秒,'-'對應顯示碼第12個位置,對應內(nèi)容為11(以0起始)uchardatadis[8]={0,0,11,0,0,11,0,0};//從右向左的顯示緩沖區(qū)uchardatatimedata[3]={0,0,0};//秒,分鐘,小時數(shù)值變量uchardatams50=0;//50ms中斷發(fā)生次數(shù)計數(shù)uchardatacon=0;//當前修改時間位置(0:不調(diào)整,1:秒,2:分鐘,3:小時)uchardatacon1=0;//臨時變量uchardatacon2=0;//臨時變量sbitkey0=P1^0;//鍵掃描線,key0為調(diào)時選擇鍵sbitkey1=P1^1;//鍵掃描線,key1為調(diào)節(jié)加1鍵sbitkey2=P1^2;//鍵掃描線,key2為調(diào)節(jié)減1鍵voiddelay1ms(intt)//1ms延時函數(shù){

int

i,j; for(i=0;i<t;i++)for(j=0;j<1000;j++);//時鐘晶振12Mhz,一個機器周期1us}voidscan()//數(shù)碼管顯示函數(shù){

uchark=0; dis[0]=timedata[0]%10;//秒個位數(shù)字

dis[1]=timedata[0]/10;//秒十位數(shù)字

dis[3]=timedata[1]%10;//分鐘個位數(shù)字

dis[4]=timedata[1]/10;//分鐘十位數(shù)字

dis[6]=timedata[2]%10;//小時個位數(shù)字

dis[7]=timedata[2]/10;//小時十位數(shù)字

for(k=0;k<8;k++){ P0=dis7[dis[k]];//輸出顯示數(shù)值對應的顯示碼

P2=scan_con[k];//選擇輸出,點亮對應位置的數(shù)碼管

delay1ms(1);//延遲1ms P2=0xff;//全部LED滅掉,用于切換顯示數(shù)碼,關鍵!!! }}voidkeyscan()//按鍵處理函數(shù){ EA=0;//停止所有中斷響應

if(key0==0){//key0鍵已按下

delay1ms(10);//延時10ms while(key0==0);//等待key0鍵抬起

con++;TR0=0;ET0=0;//調(diào)表位置改變

if(con>=3){con=0;TR0=1;ET0=1;}//移到最高位后處理

} if(con!=0){//不為零,表示為調(diào)表狀態(tài)

if(key1==0){//key1鍵已按下

delay1ms(10);//延時10ms while(key1==0);//等待key1鍵抬起

timedata[con]++;//內(nèi)容加1//con1表示調(diào)整內(nèi)容的循環(huán)上限

if(con==2)con1=24;//調(diào)整小時,上限為24 elsecon1=60;//調(diào)整分鐘和秒,上限為60 if(timedata[con]>=con1)timedata[con]=0;//調(diào)整

} }

if(con!=0){){//不為零,表示為調(diào)表狀態(tài)

if(key2==0){//key2鍵已按下

delay1ms(10);//延時10ms while(key2==0);//等待key2鍵抬起

timedata[con]--;//內(nèi)容減1//con2表示調(diào)整內(nèi)容的從零再減1時的值

if(con==2)con1=23;//調(diào)整小時,變?yōu)?3 else con1=59;//調(diào)整分鐘和秒,變?yōu)?9 if(timedata[con]<=0){

timedata[con]=con2;//調(diào)整內(nèi)容

} } } EA=1;//重新開啟中斷}voidmain(){ TH0=0x3c;//初始化Timer0計數(shù)值,0x3CB0對應計數(shù)周期50000,12MHz晶振,機器周期1us,Timer0中斷周期為50ms TL0=0xb0; TMOD=0x01;//設置Timer0工作模式1 ET0=1;//使能定時器0中斷

TR0=1;//啟動定時器0 EA=1;//開啟單片機整體中斷

while(1){ scan();//數(shù)碼管顯示

keyscan();//掃描鍵盤

}}voidtime_int0(void)interrupt1//Timer0中斷響應函數(shù){ ET0=0;//關閉中斷

TR0=0;//關閉定時器Timer0 TH0=0x3c;TL0=0xb0;//再次給定時器賦值

TR0=1;//開啟定時器Timer0 ms50++;//50ms計數(shù)變量加1 if(ms50==20){//當計數(shù)值達到20,達到1m ms50=0;//清零

timedata[0]=++;//秒變量加1 if(timedata[0]==60){//秒數(shù)達到60 timedata[0]=0;timedata[1]++;//更新

if(timedata[1]==60){//分鐘數(shù)達到60 timedata[1]=0;timedata[2]++;//更新

if(timedata[2]==24){//小時數(shù)達到60 timedata[2]=0;//更新

} } } } ET0=1;}11.2多路數(shù)字電壓表的設計11.2.1多路數(shù)字電壓表的原理及功能多路數(shù)字式電壓表應用系統(tǒng)主要利用A/D轉(zhuǎn)換器,處理過程如下:先用A/D轉(zhuǎn)換器對各路電壓值進行采樣,得到相應的數(shù)字量,再按數(shù)字量與模擬量成正比關系運算得到對應的模擬電壓值,然后把模擬值通過顯示器顯示出來。設計時假設待測的輸入電壓為8路,電壓值的范疇為0~5V,要求能在四位LED數(shù)碼管上輪流顯示或單路選擇顯示。測量的最小分辨率為0.019V,測量誤差為0.02V。

根據(jù)系

溫馨提示

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

評論

0/150

提交評論