基于單片機的直流電機控制系統(tǒng)設計畢業(yè)設計論文_第1頁
基于單片機的直流電機控制系統(tǒng)設計畢業(yè)設計論文_第2頁
基于單片機的直流電機控制系統(tǒng)設計畢業(yè)設計論文_第3頁
基于單片機的直流電機控制系統(tǒng)設計畢業(yè)設計論文_第4頁
基于單片機的直流電機控制系統(tǒng)設計畢業(yè)設計論文_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

./畢業(yè)設計〔論文說明書課題名稱:基于單片機的直流電機控制系統(tǒng)設計院系專業(yè)班級學號姓名指導教師2012年5月.摘要電動機作為最主要的機電能量轉(zhuǎn)換裝置,其應用圍已遍及國民經(jīng)濟的各個領域和人們的日常生活。無論是在工農(nóng)業(yè)生產(chǎn)、國防、醫(yī)療衛(wèi)生、交通運輸和辦公設備中,還是在日常生活的家用電器和消費電子產(chǎn)品中,都大量使用著各種各樣的電動機。電動機的調(diào)速控制一般采用模擬法,對電動機的簡單控制應用比較多。本設計實現(xiàn)了對電動機的簡單控制,也就是指對電動機進行啟動、制動和正反轉(zhuǎn)控制。本設計采用了單片機STC89C52與PC串行實現(xiàn)通信,由于單片機輸入、輸出電平是TTL電平,而PC機配置的是RS232標準串行接口,兩者的電氣規(guī)不一致,因此要完成單片機與PC機的數(shù)據(jù)通信,必須對單片機輸出的TTL電平進行電平轉(zhuǎn)換。采用的轉(zhuǎn)換電平芯片為MAX232。設計中采用STC89C52微處理器及其RS232通信接口、鍵盤、12864液晶顯示器等外圍電路,構(gòu)成一臺直流電機開環(huán)在線控制系統(tǒng)。設計中采用PWM調(diào)制技術,實現(xiàn)對直流電機速度的調(diào)制,并通過串口實現(xiàn)上位機的在線控制。系統(tǒng)實現(xiàn)了在線調(diào)速、正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、停止等多種功能,并能實時顯示、鍵盤設置等,具有一定的實際應用價值。關鍵詞:單片機電平轉(zhuǎn)換直流電機在線控制PWM調(diào)制AbstractMotorasthemainelectromechanicalenergyconversiondevice,itsapplicationhasbeenthroughoutallareasofthenationaleconomyandpeople'sdailylife.Bothinindustrialandagriculturalproduction,nationaldefense,medicalandhealth,transportationandofficeequipment,orinthedailylifeofhouseholdappliancesandconsumerelectronicsproducts,extensiveuseofvariousmotor.Motorspeedcontrolusingsimulationmethod,themotorcontrolapplicationmoresimple.Thedesignandimplementationofsimplecontrollingmotor,alsoreferstothemotorstarting,brakingandreversecontrol.ThedesignintroducedAT89C51single-chipserialcommunicationwiththePCmethod,asthesingle-chipinputandoutputlevelisTTLlevel,andPC-standardconfigurationisaRS232serialinterface,boththeelectricalspecificationsareinconsistent,ThereforetocompletePC-SCManddatacommunications,theneedforsingle-chipoutputTTLleveltoleveltranslators.Usedinchip-levelconversionfortheMAX232.AppliedtothedesignofSTC89C52microprocessorandRS232communicationinterface,keyboard,12864LCDperipheralcircuit,constituteadcmotorcontrolsystemonline.AppliedtothedesignofPWMtechnologytorealizethedcmotorspeedregulation,andthroughaserialportrealizePConlinecontrol.Theonlinespeedregulationsystem,areturning,inversion,accelerate,slowingdown,stopandotherfunctions,andcanreal-timedisplay,keyboardSettings,ithascertainpracticalapplicationvalue.Keywords:single-chipserialcommunicationLevelTranslatorsDcmotorOnlinecontrolPWMtechnology目錄摘要IAbstractII1緒論11.1直流電機概述11.2單片機概述11.3脈寬調(diào)制〔PWM技術21.4課題任務及工作容32單片機直流電機控制系統(tǒng)總體設計方案42.1設計思路42.2方案論證與比較42.3系統(tǒng)組成53單片機直流電機控制系統(tǒng)硬件設計63.1系統(tǒng)硬件結(jié)構(gòu)63.2系統(tǒng)單元電路設計63.2.1單片機最小系統(tǒng)電路63.2.2獨立式鍵盤電路7液晶顯示模塊73.2.4蜂鳴器電路83.2.5電源電路83.2.6串口通信電路93.2.7電機驅(qū)動電路104單片機直流電機控制系統(tǒng)軟件設計114.1軟件總體結(jié)構(gòu)114.2系統(tǒng)模塊程序設計12初始化模塊程序12鍵盤掃描模塊程序13液晶顯示模塊程序15串口通信模塊程序15電機調(diào)速模塊程序175系統(tǒng)測試185.1測試準備185.1.1硬件環(huán)境185.1.2軟件環(huán)境185.1.3測試項目185.2測試過程185.3測試結(jié)果19結(jié)束語21致22參考文獻23附錄24.1緒論1.1直流電機概述在現(xiàn)代工業(yè)中,電動機作為電能轉(zhuǎn)換的傳動裝置被廣泛應用于機械、冶金、石油化學、國防等工業(yè)部門中,隨著對生產(chǎn)工藝、產(chǎn)品質(zhì)量的要求不斷提高和產(chǎn)量的增長,越來越多的生產(chǎn)機械要求能實現(xiàn)自動調(diào)速。長期以來,自動調(diào)速電動機一直占據(jù)著調(diào)速控制的統(tǒng)治地位。由于它具有良好的線性調(diào)速特性,簡單的控制性能,高效率,優(yōu)異的動態(tài)特性,現(xiàn)在仍是大多數(shù)調(diào)速控制電動機的最優(yōu)選擇以前電動機大多使用由模擬電路組成的控制柜進行控制,現(xiàn)在單片機已經(jīng)開始取代模擬電路作為電機控制器。當前電機控制器的發(fā)展方向越來越趨于多樣化和復雜化,現(xiàn)有的專用集成電路未必能滿足苛刻的新產(chǎn)品開發(fā)要求,為此可考慮開發(fā)電機的新型單片機控制器,因此研究直流電機的速度控制,有著非常重要的意義。由于變頻技術的出現(xiàn),交流調(diào)速一直沖擊直流調(diào)速,但綜觀全局,尤其是我國在此領域的現(xiàn)狀,再加上全數(shù)字直流調(diào)速系統(tǒng)的出現(xiàn),更提高了直流調(diào)速系統(tǒng)的精度及可靠性,直流調(diào)速系統(tǒng)仍將處于十分重要地位。對于直流調(diào)速系統(tǒng)轉(zhuǎn)速控制的要求有穩(wěn)速、調(diào)速、加速或減速三個方面,而在工業(yè)生產(chǎn)中對于后兩個要求已能很好地實現(xiàn),但工程應用中穩(wěn)速指標卻往往不能達到預期的效果,穩(wěn)速要求即以一定的精度在所需要的轉(zhuǎn)速穩(wěn)定運行,在各種干擾不允許有過大的轉(zhuǎn)速波動。1.2單片機概述隨著單片機功能的飛速發(fā)展,單片機的應用領域已經(jīng)滲透到了國民經(jīng)濟的各個領域,并影響著現(xiàn)代人的生活。單片機技術的出現(xiàn)給現(xiàn)代工業(yè)測控領域帶來了一次技術革命。目前,單片機仍以其高可靠性、高性價比,在工業(yè)控制系統(tǒng)、智能化儀器儀表、數(shù)據(jù)采集系統(tǒng)和智能家電等諸多領域得到了廣泛應用。當今時代是一個新技術層出不窮的時代,在電子領域尤其是自動化智能控制領域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以飛快的速度被單片機智能控制系統(tǒng)所取代。單片機的優(yōu)點包括體積小、功能強、成本低,并且應用面廣,可以說智能控制與自動控制的核心就是單片機。單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。概括來講:一塊芯片就是一臺計算機。它具有體積小、質(zhì)量輕、價格便宜等優(yōu)點,為學習、應用和開發(fā)提供了諸多便利。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇?,F(xiàn)在,單片機的應用領域非常廣泛,比如實時工控、導航系統(tǒng)、智能儀表、家用電器、通訊設備等。單片機一旦運用在各種產(chǎn)品上面,就可以說是使產(chǎn)品進行了升級換代,也可以把產(chǎn)品美其名曰:"智能型",如智能型洗衣機等等。1.3脈寬調(diào)制〔PWM技術脈沖寬度調(diào)制〔PWM是英文"PulseWidthModulation"的縮寫,簡稱脈寬調(diào)制。它是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用于測量,通信,功率控制與變換等許多領域。一種模擬控制方式,根據(jù)相應載荷的變化來調(diào)制晶體管柵極或基極的偏置,來實現(xiàn)開關穩(wěn)壓電源輸出晶體管或晶體管導通時間的改變,這種方式能使電源的輸出電壓在工作條件變化時保持恒定。脈沖寬度調(diào)制〔PWM是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有<ON>,要么完全無<OFF>。電壓或電流源是以一種通<ON>或斷<OFF>的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼。多數(shù)負載<無論是電感性負載還是電容性負載>需要的調(diào)制頻率高于10Hz,通常調(diào)制頻率為1kHz到200kHz之間。許多微控制器部都包含有PWM控制器。例如,Microchip公司的PIC16C67含兩個PWM控制器,每一個都可以選擇接通時間和周期。占空比是接通時間與周期之比;調(diào)制頻率為周期的倒數(shù)。執(zhí)行PWM操作之前,這種微處理器要求在軟件中完成以下工作:1、設置提供調(diào)制方波的片上定時器/計數(shù)器的周期2、在PWM控制寄存器中設置接通時間3、設置PWM輸出的方向,這個輸出是一個通用I/O管腳4、啟動定時器5、使能PWM控制器目前幾乎所有市售的單片機都有PWM模塊功能,若沒有〔如早期的8051,也可以利用定時器及GPIO口來實現(xiàn)。更為一般的PWM模塊控制流程為〔筆者使用過TI的2000系列,AVR的Mega系列,TI的LM系列:1、使能相關的模塊〔PWM模塊以及對應管教的GPIO模塊。2、配置PWM模塊的功能,具體有:①:設置PWM定時器周期,該參數(shù)決定PWM波形的頻率。②:設置PWM定時器比較值,該參數(shù)決定PWM波形的占空比。③:設置死區(qū)〔deadband,為避免橋臂的直通需要設置死區(qū),一般較高檔的單片機都有該功能。④:設置故障處理情況,一般為故障是封鎖輸出,防止過流損壞功率管,故障一般有比較器或ADC或GPIO檢測。⑤:設定同步功能,該功能在多橋臂,即多PWM模塊協(xié)調(diào)工作時尤為重要。3、設置相應的中斷,編寫ISR,一般用于電壓電流采樣,計算下一個周期的占空比,更改占空比,這部分也會有PI控制的功能。4、使能PWM波形發(fā)生。1.4課題任務及工作容本題目要求設計一個單片機應用系統(tǒng)可以通過串行線在上位機中進行控制操作??梢酝ㄟ^上位機對單片機進行控制直流電機正轉(zhuǎn)、反轉(zhuǎn)、停止、加速、減速等功能。另外,為增加其實用性還增加了顯示、鍵盤控制、按鍵蜂鳴等功能。本課題要完成以下研究工作:1、研究直流電機控制系統(tǒng)并仔細推敲各方面的細節(jié),比如速度的控制等等。2、進行系統(tǒng)軟硬件的設計。3、制作硬件,并對硬件進行調(diào)試以及優(yōu)化。2單片機直流電機控制系統(tǒng)總體設計方案2.1設計思路本題要求設計一個上位機直流電機控制系統(tǒng)。利用鍵盤作為輸入設備,輸入電機控制信號;液晶顯示器件作為顯示,與用戶進行人機交互;利用串行通信接口與上位機進行通信,接收上位機發(fā)送過來的控制命令。從PC機發(fā)來的控制命令經(jīng)單片機系統(tǒng)接收后,產(chǎn)生電機控制信號,并提供給電機驅(qū)動電路控制直流電機正常運轉(zhuǎn)并正常顯示轉(zhuǎn)速。2.2方案論證與比較<1>主控制器的選擇與比較采用宏晶科技生產(chǎn)的STC89C52系列的8位單片機作為本系統(tǒng)的主控制芯片,該處理器芯片置有8K的Flash存儲器,置的UART全雙工異步通信接口,減少外圍接口電路。具有可在線編程、使用方便、價格低廉等優(yōu)點。運算速度滿足系統(tǒng)的要求,性價比高。<2>顯示電路選擇與比較方案一:采用數(shù)碼管顯示電路,該硬件電路簡單,編程也比較簡單。視角圍大,亮度高,顯示是效果好,但是只能顯示簡單數(shù)字字母等有限的字符,不能滿足本設計要求。故,不采用數(shù)碼管顯示電路。方案二:采用1602液晶顯示,硬件電路簡單,編程容易??梢燥@示字母和數(shù)字,以及一下簡單的圖像。能滿足本設計要求,顯示清晰度可以通過調(diào)節(jié)偏壓端電壓來改變對比度,從而實現(xiàn)清晰度調(diào)整。顯示效果較好,還可以滾動顯示等,顯示靈活。方案三:采用12864液晶顯示,硬件電路簡單,編程容易??梢燥@示復雜的圖案、字符、標點、英文、漢字等。能滿足本設計要求,顯示清晰度可以通過調(diào)節(jié)偏壓端電壓來改變對比度,從而實現(xiàn)清晰度調(diào)整。顯示效果較好,還可以滾動顯示等,顯示靈活。綜上所述,數(shù)碼管顯示電路不能滿足本設計的要求;1602顯示只能顯示字母和數(shù)字,要顯示漢字和圖像編程復雜,效果不好;12864液晶顯示可以顯示數(shù)字、英文、漢字、圖片等能滿足本設計要求。故,采用12864液晶顯示電路作為本設計的顯示電路模塊。<3>鍵盤電路選擇與比較方案一:獨立式鍵盤,獨立式鍵盤硬件電路極為簡單,程序也非常簡單。容易開發(fā),開發(fā)周期短,使用方便簡單。方案二:矩陣式鍵盤,矩陣式鍵盤硬件電路也比較簡單,編程較為復雜。不容易開發(fā),在按鍵較多的時候,與獨立式鍵盤相比較經(jīng)濟,占用IO端口較少,但編程較獨立式鍵盤難的多,由于本設計要求的鍵盤按鍵數(shù)量較少,采用獨立式鍵盤較方便,開發(fā)難度大大降低,開發(fā)周期縮短,也比較經(jīng)濟。故在本設計中采用獨立式鍵盤。經(jīng)上述比較后采用獨立式鍵盤作為本設計的鍵盤電路模塊。2.3系統(tǒng)組成經(jīng)過方案論證,最終確定系統(tǒng)的組成框圖如圖2.1所示。系統(tǒng)由STC89C52微處理器核心模塊、電源模塊、獨立式鍵盤模塊、12864液晶顯示模塊、蜂鳴器電路模塊、RS232串口通信模塊、電源指示電路模塊等組成。其中,獨立式鍵盤由微動開關連接到IO口與地線之間組成。注意,由于P0口部沒有上拉電阻,在作為輸入時,需要外接上拉電阻。串口通信電路由MAX232電平轉(zhuǎn)換芯片與9DB串口插座等構(gòu)成,用于下載程序和實現(xiàn)與上位機通信。蜂鳴器電路主要由蜂鳴器和三級管組成,用于實現(xiàn)按鍵聲音等。液晶顯示電路主要由12864液晶顯示模塊及少量外圍電阻等構(gòu)成,主要用于實現(xiàn)人機界面的交互功能。單片機STC89C5212864單片機STC89C5212864液晶顯示電路電路獨立式鍵盤蜂鳴器電路RS232串口通信電路電源電源指示電路電機驅(qū)動電路電機控制圖1.1系統(tǒng)組成框圖3單片機直流電機控制系統(tǒng)硬件設計3.1系統(tǒng)硬件結(jié)構(gòu)本設計硬件結(jié)構(gòu)由單片機最小系統(tǒng)、鍵盤模塊、12864液晶顯示模塊、蜂鳴器驅(qū)動模塊、電源指示模塊、串口通信模塊、電機驅(qū)動模塊等組成。3.2系統(tǒng)單元電路設計單片機最小系統(tǒng)電路單片機最小系統(tǒng)電路由STC89C52主控芯片、時鐘振蕩電路和復位電路等構(gòu)成。其中,時鐘振蕩電路主要由外接11.0592MHz晶振、兩個30pF的起振電容和部反相器構(gòu)成。復位電路采用簡單的容阻式復位電路。單片機最小系統(tǒng)電路原理圖如圖2.1所示。圖2.1單片機最小系統(tǒng)電路獨立式鍵盤電路鍵盤電路采用比較簡單的獨立式鍵盤便能滿足設計要求,成本低廉,編程相對簡單。4個獨立按鍵,分別與單片機P0.0-P0.3相連,由于P1口上各位部均接有上拉電阻,故,外接按鍵的時候,我們不再接上拉電阻。鍵盤電路如圖2.2所示圖2.2獨立式鍵盤電路液晶顯示模塊<1>12864液晶模塊概述12864液晶顯示電路主要由基于ST7920控制器的12864液晶和外部電位器等組成。12864具有128列64行共128*64個像素點,可以顯示中文、日文、數(shù)字、英文、特殊字符、圖片等。置國標GB2312碼簡體中文字庫<16*16>,128個字符<8*16>及64*256點陣顯示RAM<GDRAM>??梢耘cCPU直接接口,提供兩種界面來連接微處理器:8-位并行及串行兩種連接方式。具有多種功能:光標顯示、畫面移位、睡眠模式等。<2>12864液晶顯示電路原理圖液晶顯示電路主要由12864液晶顯示模塊和外圍電位器等組成??梢酝ㄟ^調(diào)節(jié)電位器R2,調(diào)節(jié)12864偏壓端電壓,改變顯示對比度,提高顯示效果,改變顯示清晰度??刂瓶诰€RS、RW、EN分別連接到單片機的P0.4、P0.5、P0.6,8位數(shù)據(jù)總線與P2口相連,實現(xiàn)8位數(shù)據(jù),并行傳輸。12864液晶顯示電路圖如圖2.3所示圖2.312864液晶電路原理圖蜂鳴器電路蜂鳴器電路主要是利用S9012〔PNP三極管驅(qū)動蜂鳴器,實現(xiàn)按鍵發(fā)聲。S9012三級管屬于PNP管,發(fā)射極串接蜂鳴器線圈接至+5V,集電極直接接地,基極通過一個4.7k限流電阻接至單片機P3.3口。當S9012基極為低電平時,三極管導通,蜂鳴器得電蜂鳴,當S9012三極管基極為高電平時,三極管截止,蜂鳴器停止蜂鳴。其詳細原理圖如圖2.4所示圖2.4蜂鳴器驅(qū)動電路原理圖電源電路電源電路包括開關電路和指示電路。指示電路采用發(fā)光二極管進行指示,放光二極管串聯(lián)上一個1K的限流電阻,正常工作時,取發(fā)光二極管上電壓為3V,流過發(fā)光二極管上的電流為10mA,故R=〔5-3/10=2K。當選擇的電阻過大時,發(fā)光二極管不夠亮,指示不明顯;當限流電阻選擇過小,發(fā)光二極管亮度過大,縮短放光二極管使用壽命。因此,應適當選取該限流電阻。當單片機正常供電時,電源指示燈正常發(fā)亮。當沒有供電或出電源線短路時,電源指示熄滅,從而可以監(jiān)測系統(tǒng)是否正常供電。電源電路原理圖如圖2.5所示圖2.5電源電路原理圖串口通信電路串口通信電路主要由美信公司生產(chǎn)的MAX232芯片和相應的通信指示電路構(gòu)成,主要是用于程序的燒寫和實現(xiàn)與上位機的通信。Max232用于實現(xiàn)TTL電平與RS232電平的轉(zhuǎn)換,只要在它的外部在接上幾個簡單的電容就構(gòu)成了通信點路,為了方便檢查、排除故障可在通信線上接上兩個通信指示燈,方便檢查與維修。具體電路圖如圖2.6所示。圖2.6串口通信電路電機驅(qū)動電路電機驅(qū)動電路主要有電機驅(qū)動芯片L298N、少量電阻電容和二極管構(gòu)成。電機驅(qū)動電路增加光耦合器件以實現(xiàn)電機驅(qū)動信號與控制信號的隔離,提高控制系統(tǒng)的抗干擾能力,但由于光耦合芯片TLP521-4昂貴,并且設計的控制要求簡單,因此驅(qū)動電路中去掉了光耦合部分。電機驅(qū)動電路原理圖如圖2.7所示。圖2.7電機驅(qū)動電路原理圖4單片機直流電機控制系統(tǒng)軟件設計4.1軟件總體結(jié)構(gòu)系統(tǒng)軟件主要由系統(tǒng)初始化程序模塊、鍵盤掃描及處理模塊、液晶顯示程序模塊、串口通信程序模塊、電機調(diào)速程序模塊和蜂鳴器驅(qū)動程序模塊等組成。系統(tǒng)初始化模塊:主要是配置系統(tǒng)工作環(huán)境。主要負責的工作有初始化定時器、初始化液晶、初始化串口、初始化I/O等鍵盤掃描及處理模塊:實現(xiàn)按鍵識別、消抖及處理,用于設置電機轉(zhuǎn)動狀態(tài)。液晶顯示模塊:實現(xiàn)對電機狀態(tài)的實時顯示以及狀態(tài)設置,實現(xiàn)人機交互。串口通信模塊:主要是實現(xiàn)與上位機進行通信,接收上位機發(fā)送過來的電機控制命令。蜂鳴器模塊:主要用實現(xiàn)按鍵蜂鳴。系統(tǒng)軟件總體框圖如圖3.1所示串口通信程序模塊串口通信程序模塊系統(tǒng)初始化鍵盤掃描及處理程序模塊液晶顯示程序模塊蜂鳴器驅(qū)動模塊電機調(diào)速程序模塊圖3.1系統(tǒng)軟件總體框圖在沒有操作系統(tǒng)的時候,我們采用結(jié)構(gòu)化程序設計思想,自頂向下,逐步求精;其系統(tǒng)主程序流程圖如圖3.2所示系統(tǒng)初始化系統(tǒng)初始化開始鍵盤掃描及處理程序顯示刷新數(shù)據(jù)處理圖3.2系統(tǒng)主程序流程圖4.2系統(tǒng)模塊程序設計初始化模塊程序系統(tǒng)初始化軟件包括三大部分:串口初始化、LCD12864液晶初始化、I/O口初始化。主要完成的工作是設置定時器,并初始化串口。初始化12864液晶模塊、關閉蜂鳴器等。串口初始化程序:設置定時器1為工作方式2,配置串口波特率為9600bps,選擇波特率不倍增,串行工作方式1,啟動定時器1,開串行口中斷,開CPU總中斷。串口初始化程序流程圖如圖3.3所示。12864液晶初始化程序:首先初始化LCD控制口,選擇12864液晶輸入輸出為8位位流,清屏,設定輸入數(shù)據(jù)后光標右移模式,開顯示無光標閃爍,無反白。最后顯示正常模式下的界面。12864液晶初始化程序流程圖如圖3.4所示開始設置波特率9600開始設置波特率9600bps的定時器1初值串口初始化為方式1、波特率不倍增結(jié)束開串口中斷、CPU中斷初始化LCD控制口開始選擇8位數(shù)據(jù)流關顯示、清屏選擇光標右移、開顯示顯示初始界面結(jié)束圖3.3串口初始程序流程圖圖3.412864液晶初始化程序流程圖鍵盤掃描模塊程序鍵盤掃描及處理程序,主要由按鍵key1、按鍵key2、按鍵key3、按鍵key4組成。Key1為循環(huán)選擇鍵,用于選擇要設置的電機狀態(tài)項目。2、Key2為加1按鍵,用于設定電機的正反轉(zhuǎn)、加減速和電機速度值。3、Key3為減1按鍵,用于設定電機的正反轉(zhuǎn)、加減速和電機速度值。4、Key4為確定鍵,用于確定當前的電機狀態(tài)為設定值。鍵盤掃描程序模塊流程圖如圖3.5所示。開始循環(huán)選擇鍵開始循環(huán)選擇鍵記錄按下次數(shù)設置模式標志光標在電機狀態(tài)處閃爍加1鍵按下光標在檢測轉(zhuǎn)速個位處閃爍減1鍵按下光標在設定轉(zhuǎn)速個位處閃爍光標在設定轉(zhuǎn)速十百位閃爍確定鍵按下對應項加1光標在檢測轉(zhuǎn)速十百位閃爍對應項減1刷新顯示退出設置結(jié)束YESYESNOYESNOYESNO圖3.5鍵盤掃描程序模塊流程圖液晶顯示模塊程序液晶顯示程序模塊包括12864液晶驅(qū)動程序模塊和12864液晶顯示刷新程序模塊。12864液晶驅(qū)動程序模塊主要包括12864液晶的寫數(shù)據(jù)、寫命令程序模塊。通過控制12864液晶的控制口線就可以實現(xiàn)對12864液晶的基本數(shù)據(jù)操作。液晶寫數(shù)據(jù)和寫命令程序流程圖分別如圖3.6和圖3.7所示。12864液晶顯示程序模塊,主要實現(xiàn)對輸入的要發(fā)送的數(shù)據(jù)和接收到的數(shù)據(jù)的顯示,以及進入設置模式時的各種界面的的刷新顯示等。開始開始選擇寫數(shù)據(jù)將要寫的數(shù)據(jù)放到數(shù)據(jù)總線延時5ms寫使能信號有效結(jié)束開始選擇寫命令將要寫的命令放到數(shù)據(jù)總線延時5ms寫使能信號有效結(jié)束圖3.612864液晶寫數(shù)據(jù)程序流程圖圖3.712864液晶寫命令程序流程圖串口通信模塊程序串口通信程序模塊主要包括串口初始化程序模塊、串口接收程序模塊。其中串口初始化程序模塊主要是配置特定的串口通信環(huán)境及通信方式等。選擇串口為通信方式1,定時器1方式2等。其程序流程圖如前面圖3.3所示。串口接收程序模塊主要由串口中斷程序與串口接收子程序構(gòu)成。當產(chǎn)生接收中斷時,首先判斷是發(fā)送中斷還是接收中斷,若是發(fā)送中斷則清除發(fā)送中斷標志位,若是接收中斷則先清除接收中斷標志位,然后調(diào)用串口接收函數(shù),將接收到的數(shù)據(jù)存于接收緩沖區(qū)中,并共單片機使用。其串口接收程序流程圖如圖3.8所示,其中標志位已在程序中標出。開始開始串口中斷接收一個字節(jié)接收完2Byte通知CPU進行數(shù)據(jù)處理理清除發(fā)送中斷標志位清除接收中斷標志位結(jié)束YESNOYESNO圖3.8串口接收程序流程圖電機調(diào)速模塊程序電機調(diào)速程序模塊采用脈寬調(diào)制法實現(xiàn)速度控制。利用定時器0固定調(diào)速信號周期,根據(jù)正反轉(zhuǎn)標志,設定電機控制端口電平。當計數(shù)值達到設定的脈寬值時則關閉電機運行,在第二個周期的調(diào)速信號到來時,又重新開啟電機運轉(zhuǎn),依次的電機通斷切換,從而實現(xiàn)電機的速度控制。其調(diào)速程序流程圖如圖3.9所示。NO開始NO開始電機停轉(zhuǎn)計數(shù)到100開電機轉(zhuǎn)動重載定時值計數(shù)變量加1結(jié)束大于脈寬值YESNOYES圖3.9調(diào)速程序流程圖5系統(tǒng)測試5.1測試準備硬件環(huán)境〔1PC機、USB轉(zhuǎn)串口通信線。用于單片機C51語言的編程、編譯、加載及發(fā)送電機控制命令?!?+5V和+12V電源、電機控制系統(tǒng)板、若干根杜邦線、1塊12864液晶模塊?!?DT9208A數(shù)字萬用表1個、螺絲刀、鑷子、斜口鉗、吸焊器。軟件環(huán)境〔1KeiluVision4,用于C51源程序的編寫、編譯、和調(diào)試。〔2上位機串口調(diào)試軟件<串口大師>、本系統(tǒng)程序、相關的庫和頭文件。測試項目12864液晶是否正常顯示。系統(tǒng)電源指示、通信指示、按鍵蜂鳴、按鍵復位等功能是否正常。上位機通過串口調(diào)試軟件能否正確控制電機的正轉(zhuǎn)、反轉(zhuǎn)、加速、減速。實驗板上的鍵盤能否正確控制電機的正轉(zhuǎn)、反轉(zhuǎn)、加速、減速。5.2測試過程1、利用萬用表檢查各線路是否存在斷路、短路并修正。2、檢查單片機等各口線是否正確連接,上電之前檢測一下正負電源線是否短路,確保不短路才上電。3、利用KeiluVision2軟件進行程序的編輯、編譯、和調(diào)試。4、利用STC-ISP軟件將在keil中編譯生成的各個xx.Hex文件下載到系統(tǒng)單片機的Flash存儲器中。5、按原理圖連接線路、上電后開始測試。上電后首先觀察系統(tǒng)顯示是否正常,指示燈工作是否正常,復位電路是否正常等等,如不正常則修改程序重新下載測試,直至顯示正常。接著按照測試項目,分別測試。首先打開串口調(diào)試軟件,選擇波特率為9600bps,打開串口,選擇發(fā)送的數(shù)據(jù)位16進制數(shù)據(jù)。<1>正轉(zhuǎn)測試:在發(fā)送窗中輸入正轉(zhuǎn)控制字和速度值。如:110其中,1表示正轉(zhuǎn),10<16進制>即16表示脈寬為16%的調(diào)速信號所對應的速度。點擊發(fā)送觀察電機是否正轉(zhuǎn),將速度改大一些看一下速度是否改變。<2>停止測試:輸入停止命令字0,速度可以任意,發(fā)送后觀察電機是否停機下來。<3>反轉(zhuǎn)測試:輸入反轉(zhuǎn)命令字及速度脈寬值<最大為100>,如220,發(fā)送后觀察電機的轉(zhuǎn)動方向及速度,改變速度后再測一次觀察電機轉(zhuǎn)速是否改變。<4>加速測試:輸入加速命令字3,速度可以任意,如320,發(fā)送后觀察電機的轉(zhuǎn)動情況。<5>減速測試:輸入減速命令字4,速度可以任意,如420,發(fā)送后觀察電機的轉(zhuǎn)動情況。再測試正反轉(zhuǎn)直接切換的情況下,電機是否還能正確運行,接著再測試一下在正反轉(zhuǎn)狀況下進行的加減速,觀察電機是否在原來速度的基礎上無跳變的平穩(wěn)加減速。最后測試鍵盤的各項控制功能能否正常。5.3測試結(jié)果經(jīng)測試表明,本電機控制系統(tǒng)可以通過上位機實現(xiàn)對直流電機的自由設速正反轉(zhuǎn)和平穩(wěn)加減速的控制,同時也可以通過鍵盤實現(xiàn)自由設速正反轉(zhuǎn)和平穩(wěn)加減速的控制;還具有顯示、按鍵發(fā)生等多種功能。該系統(tǒng)完全滿足系統(tǒng)設計要求。下面的實物測試圖是正轉(zhuǎn)和加速的測試。測試效果圖如圖5.1到圖5.4所示。經(jīng)測試表明,以上測試要求全部通過。測試結(jié)果如表4-1。表4-1電機主要測試結(jié)果測試項目指令控制字預期結(jié)果實際結(jié)果正轉(zhuǎn)11正轉(zhuǎn)<慢速>正轉(zhuǎn)<慢速>150正轉(zhuǎn)<快速>正轉(zhuǎn)<快速>反轉(zhuǎn)21反轉(zhuǎn)<慢速>反轉(zhuǎn)<慢速>250反轉(zhuǎn)<快速>反轉(zhuǎn)<快速>停止01快速停止快速停止050快速停止快速停止加速31以原速度開始加速以原速度開始加速350以原速度開始加速以原速度開始加速減速41以原速度開始減速以原速度開始減速450以原速度開始減速以原速度開始減速結(jié)束語本課題的核心任務是對串口通信的研究和對電機控制系統(tǒng)的應用設計,本文的研究方案是根據(jù)現(xiàn)有的軟硬件條件,設計單片機的電機控制系統(tǒng),通過RS232串口連接至PC機,并進行相關性電機控制實驗。具體容包括如下:一、通過對現(xiàn)在應用比較廣泛、技術比較成熟的串口通信進行研究,并經(jīng)分析論證后設計出以STC89C52單片機為核心控制單元的上位機電機控制系統(tǒng)。二、根據(jù)本設計——上位機電機控制系統(tǒng)的設計要求,編寫了系統(tǒng)程序。通過RS232接口連接至PC機,并進行相關性電機控制實驗。三、在設計好的電機控制系統(tǒng)平臺上,進行電機控制系統(tǒng)的軟件開發(fā),并通過不斷的軟硬件調(diào)試、實物測試,最終開發(fā)出性能優(yōu)越、靈活方便、具有一定實用價值的直流電機在線控制系統(tǒng)。通過本次畢業(yè)設計,我更深入的學到了有關單片機的原理及應用,并且自主的動腦、動手能力得到了很大的提高。重要的是能夠?qū)纹瑱C與實際生活中的一些應用聯(lián)系起來,同時通過畢業(yè)設計對PC機通過串口控制單片機有一定的了解。上位機控制單片機系統(tǒng),可以用于對多個單片機應用系統(tǒng)進行實時控制,也可通過調(diào)制/解調(diào)器對遠程控制系統(tǒng)進行實時控制。另外,上位機不需要進行復雜的編程,直接用微機的通信串行口進行命令控制,并且命令符可自定義??傊覀兪芤娣藴\,這將為我們以后的學習以及工作打下良好的基礎。.致經(jīng)過長期的忙碌,本次畢業(yè)設計已基本完成,作為一個還沒畢業(yè)的本科生,由于缺乏經(jīng)驗,導致許多方面考慮不周全,幸好得到了指導老師的督促和同學們的幫忙,才能夠順利完成了這次畢業(yè)設計。在這里,我要先感我的指導老師,是她對我的悉心指導,以及對畢業(yè)設計各方面提供的意見,幫我理清了許多疑問。還要感同學對我的幫助,因為他們,我才順利完成了我的畢業(yè)設計。最后,感我的母校為我提供了這么一個優(yōu)良的學習環(huán)境,培育我成長起來,。在這里,我要對在校期間幫助過我的所有人說聲!參考文獻[1]毅剛喜元.單片機原理與應用設計[M].:市海淀區(qū)四季青印刷廠,2010.[2]毅剛.新編MCS-51單片機運用設計.:工業(yè)大學,2003.[3]義和王敏男許宏昌余.例說51單片機〔c語言版.:人民郵電,2009.[4]馬忠梅籍順心凱馬巖.單片機的C語言應用程序設計.:航空航天大學,2010.[5]SamsungElectronics.S3C44BOXRiscmicrocontrollerARMinstructionsheet.2002.[6]郭天祥.《51單片機C語言教程》,電子工業(yè),20XX7月[7]丁元杰.《單片微機原理及應用》,機械工業(yè),20XX7月[8]樓然苗、光.《單片機課程設計指導》,:航空航天大學,2007.[9]OkazoeH,ShimizuK,WatanabeY.etal.Develop-mentofaFull-FlowBurnerRegenerationTypeDieselParticu-lateFilterUsingSiCHoneycomb[C].SocietyofAutomotiveEngineersInternationalCongressandExposition.Michigan:SAEPaper960130.1996,:27-35.[10]豈興明、唐杰等.《51單片機編程基礎與開發(fā)實例詳解》,:人民郵電,2008.[11]王東鋒、王會良、董冠強.《單片機C語言應用100例》,電子工業(yè),2009.1V.Yu.Teplov,A.V.Anisimov.ThermostattingSystemUsingaSingle-ChipMicrocomputerandThermoelectricModulesBasedonthePeltierEffect[J],2002[12]YeagerBrent.Howtotroubleshootyourelectronicscale[J]..PowderandBulkEngineering.1995[13]周興華.手把手教你學單片機,:航空航天大學,2005.[14]MeehanJoanne,MuirLindsey.SCMinMerseysideSMEs:Benefitsandbarriers[J]..TQMJournal.2008[15]周立功.直流電機原理與驅(qū)動[M].:電子科技大學.2008.1[16]說明書,LED12864液晶完整中文版資料[17]王曉明電動機的單片機控制<第3版>航空航天大學.2011附錄附錄1直流電機在線控制系統(tǒng)程序/*******************************************************************************************基于STC89C52和L298的直流電機的在線控制,同時可以通過鍵盤來控制電機在線控制的指令要求,選用16進制1XX正傳1代表正傳,XX代表速度2XX反轉(zhuǎn)3加速加速只會加速到最大,還沒有實現(xiàn)加速到一定量或者是加速一定量4減速減速只會加速到零,還沒有實現(xiàn)減速到一定量或者是減速一定量通過鍵盤一樣可以控制電機,檢速電路沒有實現(xiàn)********************************************************************************************/#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineLcdBusP2sbitKey0=P0^0;//循環(huán)選擇鍵sbitKey1=P0^1; //"+"下一頁sbitKey2=P0^2; //"-"上一頁sbitKey3=P0^3; //確定鍵sbitLcd_RS=P0^4;sbitLcd_RW=P0^5;sbitLcd_EN=P0^6;//12864控制端口sbitMotorIN1=P1^0;sbitMotorIN2=P1^1;//單片機對L298的控制端口sbitSpeaker=P3^3;/*變量定義*/ucharconstcodeSysName[]={"電機在線控制"};ucharconstcodeName1[]={"電機狀態(tài):停止"};ucharconstcodeName2[]={"預設脈寬:000T/q"};ucharconstcodeName3[]={"反饋脈寬:000T/q"};ucharconst codeName4[]={"0123456789"};ucharconst codeStatus0[]={"停止"};ucharconstcodeStatus1[]={"轉(zhuǎn)"};ucharconstcodeStatus2[]={"反轉(zhuǎn)"};ucharconstcodeStatus3[]={"加速"};ucharconstcodeStatus4[]={"減速"};ucharOldMotorIN1=0,OldMotorIN2=0;charPcToMcu[2]={0};charPcToMcu0;charSetSpeed[3]={0};charSpeed[3]={0};charOldPcToMcu1;ucharStatus=0;//0:停止1:正轉(zhuǎn)2:反轉(zhuǎn)ucharPWM=0;ucharKeynum0=0,Keynum1=0;ucharReFlag=0;ucharSetFlag=0;ucharFlag=0;voidInit<void>;voidInitLcd<void>;voidKeyscan<void>;voidDisplay<void>;voidWr_com12864<uchar>;voidWr_dat12864<uchardat>;voiddelay<uintn>;voidTime0_Init<void>;voidUart_Init<void>;voidWork<void>;voidKeysound<void>;voidmain<>{Init<>;while<1>{if<SetFlag==0>Work<>; Keyscan<>; if<SetFlag==0>Display<>;}}/*==============================子函數(shù)區(qū)===============================*/voidInit<void>{InitLcd<>;Uart_Init<>;Time0_Init<>;}/*鍵盤掃描函數(shù)*/voidKeyscan<void>{if<Key0==0> //循環(huán)選擇{OldPcToMcu1=PcToMcu[1];Keynum0++; SetFlag=1; while<Key0==0>Keysound<>;}if<SetFlag>//進入設置模式{switch<Keynum0> { case1:Wr_com12864<0x95>;Wr_com12864<0x0f>;break; case2:Wr_com12864<0x8E>;Wr_com12864<0x0f>;break; case3:Wr_com12864<0x8D>;Wr_com12864<0x0f>;break; case4:Keynum0=1;break; default:break; } if<Key1==0>//"+" { switch<Keynum0> { case1:if<++PcToMcu0>4>PcToMcu0=0;break; case2:SetSpeed[0]++; if<SetSpeed[0]>9> SetSpeed[0]=0; break; //設定值的設定 case3:SetSpeed[1]++; if<SetSpeed[1]>9> { SetSpeed[1]=0; SetSpeed[2]++; if<SetSpeed[2]>9> SetSpeed[2]=0; } break; case4:Keynum0=1;break; default:break; } Display<>; //刷新顯示 Wr_com12864<0x0c>;//去掉光標閃爍 while<Key1==0>Keysound<>; } if<Key2==0>//"-" { switch<Keynum0> { case1:if<--PcToMcu0<0>PcToMcu0=4;break; case2:SetSpeed[0]--; if<SetSpeed[0]<0> SetSpeed[0]=9; break; //設定值的設定 case3:SetSpeed[1]--; if<SetSpeed[1]<0> { SetSpeed[1]=9; SetSpeed[2]--; if<SetSpeed[2]<0> SetSpeed[2]=9; } break; case4:Keynum0=1;break; default:break; } Display<>; //刷新顯示 Wr_com12864<0x0c>;//去掉光標閃爍 while<Key2==0>Keysound<>; }}if<Key3==0> //確定鍵{PcToMcu[1]=SetSpeed[2]*100+SetSpeed[1]*10+SetSpeed[0]; PcToMcu[0]=PcToMcu0; Wr_com12864<0x0c>;//去掉光標閃爍 Keynum0=0; ReFlag=1; SetFlag=0;//退出設置狀態(tài) while<Key3==0>Keysound<>;}}/*按鍵聲函數(shù)*/voidKeysound<void>{uchari;for<i=0;i<10;i++>{Speaker=0; delay<1>; Speaker=1; delay<5>;}}/*初始化LCD*/voidInitLcd<void>{uchari=0,j=0; Lcd_RS=0;Lcd_RW=0; Lcd_EN=0; Wr_com12864<0x38>;//顯示模式設定 Wr_com12864<0x0c>;//不顯示光標 Wr_com12864<0x06>;//寫字符后光標右移 Wr_com12864<0x01>;//顯示清屏 Wr_com12864<0x81>; for<i=0;i<12;i++> Wr_dat12864<SysName[i]>; Wr_com12864<0x90>; for<i=0;i<14;i++> Wr_dat12864<Name1[i]>;// Wr_dat12864<0xd5>; //"正" //Wr_dat12864<0xfd>;Wr_com12864<0x88>; for<i=0;i<16;i++> Wr_dat12864<Name2[i]>;Wr_com12864<0x98>; for<i=0;i<16;i++> Wr_dat12864<Name3[i]>;}/*向12864寫命令*/voidWr_com12864<uchar>/***寫命令***/{ucharlcdtemp=0; Lcd_RS=0; Lcd_RW=1; do//判忙{ Lcd_EN=1; delay<1>; lcdtemp=P2; Lcd_EN=0; } while<lcdtemp&0x80>; Lcd_RW=0; LcdBus=; delay<1>; Lcd_EN=1; delay<1>; Lcd_EN=0;}voidWr_dat12864<uchardat> /***寫數(shù)據(jù)***/{ucharlcdtemp=0;Lcd_RS=0;Lcd_RW=1;do //判忙{Lcd_EN=1; delay<1>;lcdtemp=P2;Lcd_EN=0;}while<lcdtemp&0x80>;Lcd_RS=1;Lcd_RW=0;LcdBus=dat;Lcd_EN=1;delay<1>;Lcd_EN=0;}voiddelay<uintn> /***延時約1ms***/{uinti,j;for<i=0;i<n;i++>for<j=0;j<110;j++>;}/*名稱:UART_Init功能:初始化串口參數(shù):無返回值:無*/voidUart_Init<void>{TMOD=TMOD|0x20;//00100001設置T1為定時方式2TH1=0xfd;//9600Bps,11.0592MHz晶振TL1=0xfd;PCON=0x00;//波特率不倍增SCON=0x50;//串行方式1PS=1;//串行優(yōu)先級最高TR1=1;//啟動定時器1ES=1;//開串口中斷}/*名稱:Time0_Init功能:初始化Time0參數(shù):無返回值:無*/voidTime0_Init<void>{TMOD=TMOD|0x01;//T0為定時方式1TH0=0xF8;//定時2msTL0=0xCC;EA=1;ET0=1;TR0=1;}/*名稱:Display功能:刷新顯示參數(shù):無返回值:無*/voidDisplay<void>{Wr_com12864<0x95>;switch<PcToMcu0>{uchari=0;case0:for<i=0;i<4;i++>Wr_dat12864<Status0[i]>;break; case1:Wr_dat12864<0xd5>;Wr_dat12864<0xfd>;for<i=0;i<2;i++>Wr_dat12864<Status1[i]>;break;//"正轉(zhuǎn)" case2:for<i=0;i<4;i++>Wr_dat12864<Status2[i]>;break; case3:for<i=0;i<4;i++>Wr_dat12864<Status3[i]>;break; case4:for<i=0;i<4;i++>Wr_dat12864<Status4[i]>;break; default:break;}Wr_com12864<0x8D>;Wr_dat12864<Name4[SetSpeed[2]]>;Wr_dat12864<Name4[SetSpeed[1]]>;Wr_dat12864<Name4[SetSpeed[0]]>;Wr_com12864<0x9D>;Wr_dat12864<Name4[Speed[2]]>;Wr_dat12864<Name4[Speed[1]]>;Wr_dat12864<Name4[Speed[0]]>;}/*名稱:UART_Receive功能:串口接收參數(shù):無返回值:無*/voidUART_Receive<void>{staticucharuCount_Receive=0;PcToMcu[uCount_Receive]=SBUF;uCount_Receive++; if<uCount_Receive==1>OldPcToMcu1=PcToMcu[1];if<uCount_Receive>=2>//接收完2個字節(jié)后,串口接收計數(shù)器清零{uCount_Receive=0; ReFlag=1;//串口接收完成標志位置位} }/*名稱:Work功能:數(shù)據(jù)處理函數(shù)參數(shù):無返回值:無*/voidWork<void>{if<ReFlag==1>{ ReFlag=0; switch<PcToMcu[0]> { case0:MotorIN1=0;MotorIN2=0;Status=0;PcToMcu[1]=0;break; case1:MotorIN1=1;MotorIN2=0;Status=1;break; //正轉(zhuǎn) case2:MotorIN1=0;MotorIN2=1;Status=2;break; //反轉(zhuǎn) case3:switch<Status> {case0:MotorIN1=1;MotorIN2=0;Status=1;PcToMcu[1]=1;break; //若之前為停止,則默認正轉(zhuǎn) case1:MotorIN1=1;MotorIN2=0;PcToMcu[1]=OldPcToMcu1;break; case2:MotorIN1=0;MotorIN2=1;PcToMcu[1]=OldPcToMcu1;break; default:break; } brea

溫馨提示

  • 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

提交評論