基于Protues的單片機(jī)定時(shí),計(jì)數(shù)器應(yīng)用仿真實(shí)驗(yàn)設(shè)計(jì)_第1頁
基于Protues的單片機(jī)定時(shí),計(jì)數(shù)器應(yīng)用仿真實(shí)驗(yàn)設(shè)計(jì)_第2頁
基于Protues的單片機(jī)定時(shí),計(jì)數(shù)器應(yīng)用仿真實(shí)驗(yàn)設(shè)計(jì)_第3頁
基于Protues的單片機(jī)定時(shí),計(jì)數(shù)器應(yīng)用仿真實(shí)驗(yàn)設(shè)計(jì)_第4頁
基于Protues的單片機(jī)定時(shí),計(jì)數(shù)器應(yīng)用仿真實(shí)驗(yàn)設(shè)計(jì)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

大連交通大學(xué)信息工程學(xué)院2012屆本科畢業(yè)生畢業(yè)設(shè)計(jì)(論文)PAGE摘要單片機(jī)體積小,功耗小,價(jià)格低,用途靈活,無處不在,屬于專用計(jì)算機(jī)。是一種特殊器件,需經(jīng)過專門學(xué)習(xí)方能掌握應(yīng)用,應(yīng)用中需設(shè)計(jì)專用的硬件和軟件。由于其內(nèi)部自帶兩個(gè)16位計(jì)數(shù)器,所以近年來在計(jì)數(shù)器領(lǐng)域的應(yīng)用也十分廣泛,計(jì)數(shù)器種類很多,根據(jù)構(gòu)成計(jì)數(shù)制的不同,可分為二進(jìn)制計(jì)數(shù)器和非二進(jìn)制計(jì)數(shù)器。根據(jù)計(jì)數(shù)器的增減趨勢,又分為加法、減法和可逆計(jì)數(shù)器。還有可預(yù)置數(shù)和可編程序功能計(jì)數(shù)器等等。本設(shè)計(jì)通過一個(gè)由AT89C51單片機(jī)控制,結(jié)合顯示電路、電源電路、LED數(shù)碼管以及鍵盤電路等組成的一個(gè)簡單的秒表系統(tǒng),對(duì)單片機(jī)的定時(shí)器/計(jì)數(shù)器的定時(shí)和計(jì)數(shù)原理進(jìn)行研究。該系統(tǒng)的核心部分是由單片機(jī)最小系統(tǒng)構(gòu)成,在加上一系列外圍電路組成。這個(gè)多功能秒表系統(tǒng)能夠是實(shí)現(xiàn)兩位LED顯示,顯示的最大時(shí)間為24小時(shí)59分鐘59秒,每秒自動(dòng)加1,能正確地進(jìn)行計(jì)時(shí),還具有快加、復(fù)位功能。同時(shí)還可以當(dāng)做時(shí)鐘來使用。通過C語言編寫代碼并使用Proteus仿真、調(diào)試,實(shí)現(xiàn)了LED顯示屏實(shí)時(shí)時(shí)間顯示,按鍵切換顯示內(nèi)容的顯示狀態(tài)。由于Protues具有很強(qiáng)大的仿真調(diào)試功能,使用它可以實(shí)現(xiàn)在沒有單片機(jī)硬件仿真器的情況下仍然可以實(shí)現(xiàn)單片機(jī)系統(tǒng)的軟硬件開發(fā)的仿真調(diào)試。本系統(tǒng)利用Protues這一功能繪制了LED顯示屏原理圖、單片機(jī)最小系統(tǒng)原理圖以及整個(gè)完整的秒表系統(tǒng)的工作原理圖。向Protues中下載代碼,連接調(diào)試成功。關(guān)鍵詞:單片機(jī)秒表protuseABSTRACTMicrocontrollerhasmanyadvantagessuchassmallsize,lowconsumption,

lowprices,beusedwidely,

andbeusedeverywhereandsoon.Itbelongtothe

isinaprivate

computer.

Itisaspecial

device,

afterspecialized

learning

youcan

masterandapplicationit.Inthe

application

wemustbedesigned

in

adedicated

hardwareand

software.Theinterior

comeswith

two16-bit

counter,

soinrecentyearsitbeusedwidely

inthe

counter

field.Therearemanykindsofcounter,Accordingtoconstitutethenotationisdifferent,canbedividedintobinarycounterandthebinarycounter.Accordingtothecounteroftheincreaseanddecreaseofthetrend,anddividedintotheaddition,subtraction,andreversiblecounter.Andpresetnumberandprogrammablefunctioncounterandsoon.ThisdesignthroughtheAT89C51single-chipmicrocomputercontrol,combinedwiththeshowcircuit,thepowersupplycircuit,LEDdigitaltube,andkeyboardcircuitconsistingofasimplestopwatchsystem,thesinglechipmicrocomputertimer/counterofthetimingandcountprincipleforresearch.Thecoreofthesystemisthesmallestpartofmicrocomputersystemstructure,combinedwithaseriesofperipheryofcircuit.Themulti-functionstopwatchsystemcanrealizeistwoLEDdisplay,displaytimefor00-99secondspersecondtobeautomaticadd1,cancorrectlytoadd,subtract(fall)time,alsohasquicklyaddandresetfunction.ThroughtheClanguagewritingcodeanduseProteussimulation,commissioning,realizedtheLEDdisplayreal-timetimetoshow,switchbuttonshowingthecontentsofthedisplaystate.BecauseProtueshasverypowerfulsimulationcommissioningfunction,useitcanrealizeinnomicrocontrollerhardwaresimulationsuppressorcanstillachievetheSCMsystemhardwareandsoftwaredevelopmentofthesimulationtest.ThissystemUSESProtuesthisfunctiontodrawtheLEDdisplayprinciplediagram,singlechipminimizesystemdiagramandthecompleteastopwatchsystemworkprinciplediagram.Protuestodownloadthecode,connectiondebuggingsuccess.Keywords:tuse目錄1前言 12單片機(jī)控制電路的設(shè)計(jì) 22.1單片機(jī)介紹 32.2單片機(jī)的特點(diǎn)和結(jié)構(gòu)原理 42.2.1單片機(jī)的特點(diǎn) 42.2.2單片機(jī)結(jié)構(gòu) 52.3單片機(jī)最小系統(tǒng)電路設(shè)計(jì) 73系統(tǒng)外圍電路的設(shè)計(jì) 113.1鍵盤電路的設(shè)計(jì) 113.1.1按鍵電路的選擇 113.1.2按鍵電路的故障及解決方法 123.2顯示電路的設(shè)計(jì) 123.2.1顯示電路的介紹 123.2.2LED數(shù)碼管的工作原理 133.3晶振振蕩電路的設(shè)計(jì) 144系統(tǒng)軟件的設(shè)計(jì) 164.1軟件設(shè)計(jì)概述 164.2軟件設(shè)計(jì)流程圖 164.3定時(shí)中斷服務(wù)程序流程圖 174.3.1中斷的介紹 174.3.2定時(shí)中斷的設(shè)置 184.3.3定時(shí)中斷程序 195Protues軟件仿真 205.1Protues軟件功能簡介 205.2KeiluVision2.0軟件編譯 215.2.1KeiluVision2.0軟件簡介 215.2.2KeiluVision2.0軟件的使用說明 226系統(tǒng)調(diào)試與功能說明 256.1系統(tǒng)性能測試與功能說明 256.2系統(tǒng)誤差分析 256.3軟件調(diào)試問題及解決 25結(jié)論 26謝辭 27參考文獻(xiàn) 28附錄 29大連交通大學(xué)信息工程學(xué)院2012屆本科畢業(yè)生畢業(yè)設(shè)計(jì)(論文)PAGE33大連交通大學(xué)信息工程學(xué)院2012屆本科畢業(yè)生畢業(yè)設(shè)計(jì)(論文)PAGE11前言隨著科學(xué)技術(shù)的不斷發(fā)展與進(jìn)步[10],目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用具有高度現(xiàn)實(shí)意義。單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域,大致可分如下幾個(gè)范疇:1.在智能儀器儀表上的應(yīng)用單片機(jī)具有體積小、功耗低、控制功能強(qiáng)、擴(kuò)展靈活、微型化和使用方便等優(yōu)點(diǎn),廣泛應(yīng)用于儀器儀表中,結(jié)合不同類型的傳感器,可實(shí)現(xiàn)諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機(jī)控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強(qiáng)大。例如精密的測量設(shè)備(功率計(jì),示波器,各種分析儀)。2.在工業(yè)控制中的應(yīng)用用單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理,電梯智能化控制、各種報(bào)警系統(tǒng),與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(tǒng)等。3.在家用電器中的應(yīng)用可以這樣說,現(xiàn)在的家用電器基本上都采用了單片機(jī)控制,從電飯煲、洗衣機(jī)、電冰箱、空調(diào)機(jī)、彩電、其他音響視頻器材、再到電子秤量設(shè)備,五花八門,無所不在。4.在計(jì)算機(jī)網(wǎng)絡(luò)和通信領(lǐng)域中的應(yīng)用現(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動(dòng)電話,集群移動(dòng)通信,無線電對(duì)講機(jī)等。5.單片機(jī)在醫(yī)用設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機(jī),各種分析儀,監(jiān)護(hù)儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。6.在各種大型電器中的模塊化應(yīng)用某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能,從而在各種電路中進(jìn)行模塊化應(yīng)用,而不要求使用人員了解其內(nèi)部結(jié)構(gòu)。如音樂集成單片機(jī),看似簡單的功能,微縮在純電子芯片中(有別于磁帶機(jī)的原理),就需要復(fù)雜的類似于計(jì)算機(jī)的原理。如:音樂信號(hào)以數(shù)字的形式存于存儲(chǔ)器中(類似于ROM),由微控制器讀出,轉(zhuǎn)化為模擬音樂電信號(hào)(類似于聲卡)。在大型電路中,這種模塊化應(yīng)用極大地縮小了體積,簡化了電路,降低了損壞、錯(cuò)誤率,也方便于更換。7.單片機(jī)在汽車設(shè)備領(lǐng)域中的應(yīng)用單片機(jī)在汽車電子中的應(yīng)用非常廣泛,例如汽車中的發(fā)動(dòng)機(jī)控制器,基于CAN總線的汽車發(fā)動(dòng)機(jī)智能電子控制器,GPS導(dǎo)航系統(tǒng),abs防抱死系統(tǒng),制動(dòng)系統(tǒng)等等。此外,單片機(jī)在計(jì)數(shù)器技術(shù)領(lǐng)域也有著十分廣泛的用途。隨著計(jì)數(shù)器技術(shù)的不斷發(fā)展與進(jìn)步,計(jì)數(shù)器的種類越來越多,應(yīng)用的范圍越來越廣,隨之而來的競爭也越來越激烈。過硬的技術(shù)也成為眾多生產(chǎn)廠商競爭的焦點(diǎn)之一。廠商為了在競爭中處于不敗之地,從而不斷地改進(jìn)技術(shù),增加產(chǎn)品的種類?,F(xiàn)計(jì)數(shù)器的種類以增加到:電磁計(jì)數(shù)器、電子計(jì)數(shù)器、機(jī)械計(jì)數(shù)器(拉動(dòng)機(jī)械計(jì)數(shù)器、轉(zhuǎn)動(dòng)機(jī)械計(jì)數(shù)器、按動(dòng)機(jī)械計(jì)數(shù)器、測長機(jī)械計(jì)數(shù)器)、液晶計(jì)數(shù)器等。本文通過對(duì)一個(gè)簡單的秒表系統(tǒng)設(shè)計(jì),對(duì)單片機(jī)的定時(shí)/計(jì)數(shù)功能、最小系統(tǒng)進(jìn)行研究。并運(yùn)用Protues這款強(qiáng)大的仿真工具進(jìn)行仿真,對(duì)單片機(jī)的研究和學(xué)習(xí)真正的做到學(xué)以致用把科學(xué)技術(shù)應(yīng)用于我們的生活。2單片機(jī)控制電路的設(shè)計(jì)2.1單片機(jī)介紹單片機(jī)是一種集成在電路芯片[4],是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。單片微型計(jì)算機(jī)簡稱單片機(jī),是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計(jì)理念是通過將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的發(fā)展便分道揚(yáng)鑣。早期的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8031,因?yàn)楹唵慰煽慷阅懿诲e(cuò)獲得了很大的好評(píng)。此后在8031上發(fā)展出了MCS51系列單片機(jī)系統(tǒng)。基于這一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTELi960系列特別是后來的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,高端的32位單片機(jī)主頻已經(jīng)超過300MHz,性能直追90年代中期的專用處理器,而普通的型號(hào)出廠價(jià)格跌落至1美元,最高端的型號(hào)也只有10美元。當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和手機(jī)核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。單片機(jī)比專用處理器更適合應(yīng)用于嵌入式系統(tǒng),因此它得到了最多的應(yīng)用。事實(shí)上單片機(jī)是世界上數(shù)量最多的計(jì)算機(jī)?,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個(gè)人電腦中也會(huì)有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺(tái)單片機(jī)在同時(shí)工作!單片機(jī)的數(shù)量不僅遠(yuǎn)超過PC機(jī)和其他計(jì)算的總和,甚至比人類的數(shù)量還要多。單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。單片機(jī)內(nèi)部也用和電腦功能類似的模塊[5],比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲(chǔ)器件,不同的是它的這些部件性能都相對(duì)我們的家用電腦弱很多,不過價(jià)錢也是低的,一般不超過10元即可.用它來做一些控制電器一類不是很復(fù)雜的工作足矣了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影。它主要是作為控制部分的核心部件。它是一種在線式實(shí)時(shí)控制計(jì)算機(jī),在線式就是現(xiàn)場控制,需要的是有較強(qiáng)的抗干擾能力,較低的成本,這也是和離線式計(jì)算機(jī)的(比如家用PC)的主要區(qū)別。單片機(jī)是靠程序運(yùn)行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨(dú)特的一些功能,這是別的器件需要費(fèi)很大力氣才能做到的,有些則是花大力氣也很難做到的。一個(gè)不是很復(fù)雜的功能要是用美國50年代開發(fā)的74系列,或者60年代的CD4000系列這些純硬件來搞定的話,電路一定是一塊大PCB板!但是如果要是用美國70年代成功投放市場的系列單片機(jī),結(jié)果就會(huì)有天壤之別!只因?yàn)閱纹瑱C(jī)的通過你編寫的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性!由于單片機(jī)對(duì)成本是敏感的,所以目前占統(tǒng)治地位的軟件還是最低級(jí)匯編語言,它是除了二進(jìn)制機(jī)器碼以上最低級(jí)的語言了,既然這么低級(jí)為什么還要用呢?很多高級(jí)的語言已經(jīng)達(dá)到了可視化編程的水平為什么不用呢?原因很簡單,就是單片機(jī)沒有家用計(jì)算機(jī)那樣的CPU,也沒有像硬盤那樣的海量存儲(chǔ)設(shè)備。一個(gè)可視化高級(jí)語言編寫的小程序里面即使只有一個(gè)按鈕,也會(huì)達(dá)到幾十K的尺寸!對(duì)于家用PC的硬盤來講沒什么,可是對(duì)于單片機(jī)來講是不能接受的。單片機(jī)在硬件資源方面的利用率必須很高才行,所以匯編雖然原始卻還是在大量使用。一樣的道理,如果把巨型計(jì)算機(jī)上的操作系統(tǒng)和應(yīng)用軟件拿到家用PC上來運(yùn)行,家用PC的也是承受不了的??梢哉f,二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過,這種電腦,通常是指個(gè)人計(jì)算機(jī),簡稱PC機(jī)。它由主機(jī)、鍵盤、顯示器等組成。還有一類計(jì)算機(jī),大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(亦稱微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞——“智能型”,如智能型洗衣機(jī)等。現(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開發(fā)者搞出來的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機(jī)或其它可編程邏輯器件上。2.2單片機(jī)的特點(diǎn)和結(jié)構(gòu)原理2.2.1單片機(jī)的特點(diǎn)AT89C51是ATMEL公司推出的51單片機(jī)[9],該系列單片機(jī)是采用高性能的靜態(tài)80C51設(shè)計(jì)由先進(jìn)CMOS工藝制造并帶有非易失性Flash程序存儲(chǔ)器全部支持12時(shí)鐘和6時(shí)鐘操作P89C51X2和P89C52X2/54X2/58X2分別包含128字節(jié)和256字節(jié)RAM32條I/O口線3個(gè)16位定時(shí)/計(jì)數(shù)器6輸入4優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)1個(gè)串行I/O口可用于多機(jī)通信I/O擴(kuò)展或全雙工UART以及片內(nèi)振蕩器和時(shí)鐘電路此外由于器件采用了靜態(tài)設(shè)計(jì)可提供很寬的操作頻率范圍頻率可降至0可實(shí)現(xiàn)兩個(gè)由軟件選擇的節(jié)電模式空閑模式和掉電模式空閑模式凍結(jié)CPU但RAM定時(shí)器串口和中斷系統(tǒng)仍然工作掉電模式保存RAM的內(nèi)容但是凍結(jié)振蕩器導(dǎo)致所有其它的片內(nèi)功能停止工作由于設(shè)計(jì)是靜態(tài)的時(shí)鐘可停止而不會(huì)丟失用戶數(shù)據(jù)運(yùn)行可從時(shí)鐘停止處恢復(fù)。它除了具有集成芯片的特點(diǎn)外還有許多特點(diǎn)。(l)高度集成,體積小、制作方便。單片機(jī)內(nèi)部集成CUP、內(nèi)存、1/0口,保證控制功能的實(shí)現(xiàn),雙列直插40引腳的單片機(jī)尺寸大約只1.srnmxsrnrn,貼片式單片機(jī)的尺寸大約有小紐扣大小,給設(shè)計(jì)制作電路帶來了方便。(2)靈活性好、可靠性高。在設(shè)計(jì)電路時(shí),單片機(jī)的最小系統(tǒng)就可以提供電路工作所需的時(shí)序,因此在設(shè)計(jì)電路的時(shí)候,只要根據(jù)具體要求擴(kuò)展外圍電路就可以達(dá)到要求。單片機(jī)的工作電壓是SV,在單片機(jī)內(nèi)固化不同的程序,實(shí)現(xiàn)的功能,它的誤差就會(huì)控制在可控范圍內(nèi)。(3)易于擴(kuò)展ROM、RAM等資源,用途廣、價(jià)格低。單片機(jī)的資源一般可以滿足小系統(tǒng)的應(yīng)用,若系統(tǒng)較大,單片機(jī)可以擴(kuò)展資源,它有便于擴(kuò)展的結(jié)構(gòu)及控制引腳,利用它們?nèi)菀讟?gòu)成各種規(guī)模的單片機(jī)系統(tǒng)和單片機(jī)應(yīng)用系統(tǒng)。每片STC89C52單片機(jī)的價(jià)格大致在8元左右,對(duì)于學(xué)生和大多數(shù)研究開發(fā)人員可以承擔(dān)其開發(fā)經(jīng)費(fèi)。2.2.2單片機(jī)結(jié)構(gòu)1.內(nèi)部結(jié)構(gòu)框圖89C51系列的各單片機(jī)的生產(chǎn)廠商和型號(hào)的不同,導(dǎo)致其ROM、RAM、中斷系統(tǒng)、外圍功能模塊以及處理器速度等方面有一定的不同[7],但是其基本結(jié)構(gòu)相同,均包括算術(shù)邏輯單元ALU、片內(nèi)RAM、1/0端口、定時(shí)器、中斷系統(tǒng)等基本的功能單元。89C51單片機(jī)的內(nèi)部結(jié)構(gòu)如圖2.1所示。圖2.189C51內(nèi)部結(jié)構(gòu)圖2.89C51單片機(jī)內(nèi)部主要部件[1.3.5(l)算數(shù)邏輯單元ALU(ArithmeticLogicUnit)。運(yùn)算器是進(jìn)行算術(shù)/邏輯運(yùn)算的部件,包括存放操作數(shù)和運(yùn)算結(jié)果的累加器和寄存器等。51單片機(jī)包含一個(gè)8位的算術(shù)邏輯單元ALU,它為用戶提供了指令系統(tǒng),在外部時(shí)鐘頻率為12MHz的情況下,多數(shù)指令的執(zhí)行時(shí)間僅為lus,乘法指令為4us。它包括運(yùn)算器、布爾處理器、累加器A、寄存器B、暫存器、程序狀態(tài)字PSW寄存器等。(2)片內(nèi)存儲(chǔ)器。片內(nèi)存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,即RAM、ROM。51單片機(jī)提供了128B片內(nèi)RAM存儲(chǔ)器,提供了4KB的片內(nèi)ROM存儲(chǔ)器。用于存儲(chǔ)控制單片機(jī)執(zhí)行操作的代碼,或者進(jìn)行運(yùn)算的數(shù)據(jù)。(3)并行I/O口。單片機(jī)共有4個(gè)8位并行I/O口P1、P2、P3和P4共32根引腳,每個(gè)I/O口都有自己寄存器、驅(qū)動(dòng)器和鎖存器,保證數(shù)據(jù)的雙向傳輸?shù)姆€(wěn)定運(yùn)行。其中P3口具有第二功能,P3口的每位引腳具有特殊功能,其中具體功能如表2.1所示。表2.1P3口特殊功能表I/O口引腳說明P3.0RXD-串行數(shù)據(jù)接收端P3.1TXD-串行數(shù)據(jù)發(fā)送端P3.2-外部中斷0請(qǐng)求端P3.3-外部中斷1求端P3.4T0-定時(shí)器/計(jì)數(shù)器0P3.5T1定時(shí)器/計(jì)數(shù)器1P3.6-外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)P3.7-外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)(4)定時(shí)/計(jì)數(shù)系統(tǒng)和中斷系統(tǒng)。51單片機(jī)內(nèi)部有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,通過設(shè)置寄存器,實(shí)現(xiàn)4種工作模式。中斷系統(tǒng)包含5個(gè)中斷源,即外部中斷。、外部中斷1、定時(shí)器/計(jì)數(shù)器0溢出中斷、定時(shí)器/計(jì)數(shù)器1溢出中斷和串口中斷。計(jì)算機(jī)響應(yīng)中斷的先后順序即中斷優(yōu)先級(jí),系統(tǒng)有默認(rèn)的級(jí)別定義,同時(shí)也可以人為設(shè)定。具體的89C51/89C52系列單片機(jī)主要包括的功能部件如下:(l)l個(gè)8位的CPU;(2)片內(nèi)128/256字節(jié)數(shù)據(jù)存儲(chǔ)器RAM/SFR,用以存放可以讀/寫的數(shù)據(jù),如的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等;(3)片內(nèi)4KB/8KB程序存儲(chǔ)器ROMEPROM,用以存放程序、一些原始數(shù)據(jù)和表格;(4)4個(gè)8位雙向UO口,每個(gè)端口既可以用作輸入,也可以用作輸出;(5)2或3個(gè)16位定時(shí)/計(jì)數(shù)器,每個(gè)定時(shí)/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制;(6)具有5個(gè)或6個(gè)中斷源、2個(gè)中斷優(yōu)先級(jí)的中斷控制系統(tǒng):(7)1個(gè)全雙工異步串行口,用于實(shí)現(xiàn)單片機(jī)之間或單片機(jī)與PC機(jī)之間的串行通信;(8)片內(nèi)振蕩器和時(shí)鐘電路,但石英晶體和微調(diào)電容需要外接,最高允許振蕩頻率為24MHZ;(9)可尋址外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,最大范圍均為64KB;(l0)具有位尋址能力。從以上介紹的單片機(jī)的功能部件可以看出單片機(jī)可以實(shí)現(xiàn)基本的處理器功能,是計(jì)算機(jī)的微型化,但是單片機(jī)的體積小,集成化高,給設(shè)計(jì)電路帶來了方便。2.3單片機(jī)最小系統(tǒng)電路設(shè)計(jì)本設(shè)計(jì)采用的是AT89C51單片機(jī)芯片,以它為核心對(duì)LED顯示屏實(shí)現(xiàn)控制。89C51單片機(jī)主要由多個(gè)基本部件組成,即微處理器(CPU)、數(shù)據(jù)存儲(chǔ)器(RAM)、程序存儲(chǔ)器(ROM/EPROM)、1/0口(P0-P3口)、串行口、定時(shí)/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。它具有51系列單片機(jī)所具有的共同的特點(diǎn),它有40個(gè)引腳,包括8位的I/O口四個(gè):P0、Pl、P2和P3,共32個(gè)引腳;電源Vcc引腳,電源地GND引腳,外接晶振引腳XTALI和XTALZ,控制信號(hào)引腳:RST、ALE、和[11]。輸入/輸出端口:P0、Pl、P2和P3,每個(gè)P口都有八位,其中P0口是準(zhǔn)雙向口,作為輸出口的時(shí)候,要先向該口寫入1,P0口的內(nèi)部不包含內(nèi)部上拉電阻,因此在對(duì)P0口操作的時(shí)候要在其外部電路加入上拉電阻。P3口具有第二功能,具體功能詳見表2.1,這里不再贅述。P2口可以用在訪問外部程序存儲(chǔ)器和16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出的是高8位地址,P0口提供低8位地址,P0口可分時(shí)提供8位數(shù)據(jù)總線。控制信號(hào)引腳:RST、ALE、和。RST是單片機(jī)的復(fù)位引腳,外接硬件電路可以實(shí)現(xiàn)單片機(jī)的復(fù)位操作。ALE是地址鎖存允許信號(hào)引腳,高電平有效,當(dāng)單片機(jī)訪問外部存儲(chǔ)器時(shí),ALE輸出信號(hào)作為鎖存低8位地址的控制信號(hào)。PSEN是程序存儲(chǔ)允許輸出信號(hào)端,主要應(yīng)用在對(duì)片外存儲(chǔ)器的操作方面。EA是外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端,主要應(yīng)用在訪問外部ROM,在實(shí)際應(yīng)用時(shí),保持該引腳是高電平即可。晶振連接引腳:XTAL1和XTAL2,在需要接振蕩晶體的時(shí)候?qū)蓚€(gè)引腳之間跨接一個(gè)晶振,如果需要采用外部時(shí)鐘電路的時(shí)候,XTAL1輸入外部時(shí)鐘脈沖,XTAL2引腳懸空。電源引腳:Vcc為電源端,接+5V電壓源,GND是接地端,接電源地。單片機(jī)如果要正常工作,需要有時(shí)鐘脈沖源,使單片機(jī)有可以工作的時(shí)序脈沖。另外為了防止單片機(jī)工作時(shí)不穩(wěn)定,或者出現(xiàn)程序跑飛、死循環(huán)等現(xiàn)象,還要有使單片機(jī)重新初始化的電路即復(fù)位電路,這就組成了單片機(jī)的最小系統(tǒng)電路,最小系統(tǒng)電路如圖2.2所示。圖2.2單片機(jī)最小系統(tǒng)電路圖時(shí)鐘電路是由石英晶體及兩個(gè)電容構(gòu)成的穩(wěn)定的自激振蕩器,電容通常取值30pF左右,可穩(wěn)定頻率并對(duì)振蕩頻率有微調(diào)作用。振蕩脈沖頻率范圍為0-24MHZ,晶體振蕩器的頻率為fosc,89C51的一個(gè)機(jī)器周期包括12個(gè)振蕩周期,如果采用6MHz晶體振蕩器,則每個(gè)機(jī)器周期恰為2腳。每條指令都由一個(gè)或幾個(gè)機(jī)器周期組成,在89CRST引腳是單片機(jī)復(fù)位信號(hào)的輸入端,復(fù)位信號(hào)是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期,即二個(gè)機(jī)器周期以上,單片機(jī)晶振選用16MHZ,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)該超過2us,才能完成復(fù)位操作。復(fù)位電路分自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式。上電自動(dòng)復(fù)位是在加電瞬間電容通過充電來實(shí)現(xiàn)復(fù)位,電路圖如圖2.3所示。在通電瞬間,電容C通過電阻R充電,RST端出現(xiàn)正脈沖,用以復(fù)位。只要Vcc的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)上電復(fù)位,當(dāng)采用12MHz晶體的時(shí)候,電容C取值為10us,電阻R取值為8.2K?。手動(dòng)復(fù)位是通過人為的按鍵使單片機(jī)復(fù)位,當(dāng)程序出現(xiàn)不需要的死循環(huán),或者程序跑飛的時(shí)候就需要人為的來使單片機(jī)復(fù)位初始化,這樣就可以通過按鍵來使單片機(jī)復(fù)位。單片機(jī)復(fù)位電路通常是上電復(fù)位電路和手動(dòng)復(fù)位電路組合在一起使用。圖2.3手動(dòng)復(fù)位電路和上電復(fù)位電路3系統(tǒng)外圍電路的設(shè)計(jì)3.1鍵盤電路的設(shè)計(jì)為了實(shí)現(xiàn)對(duì)定時(shí)器輸入的控制,我們?cè)谠撛O(shè)計(jì)中加入了按鍵設(shè)置。由于該系統(tǒng)要實(shí)現(xiàn)開始計(jì)時(shí)、停止計(jì)時(shí)、繼續(xù)計(jì)時(shí)、清零、加調(diào)時(shí)、減調(diào)時(shí)等功能等6個(gè)功能,所以需要6個(gè)獨(dú)立按鍵滿足設(shè)計(jì)要求。3.1.1按鍵電路的選擇按照鍵盤與CPU的連接方式可以分為獨(dú)立式鍵盤和矩陣式鍵盤。(l)獨(dú)立式鍵盤獨(dú)立式鍵盤是各按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其他I/O口線上的按鍵工作狀態(tài)。獨(dú)立式鍵盤電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)顯得繁雜,故這種形式適用于按鍵數(shù)量較少的場合。(2)矩陣式鍵盤在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口就可以構(gòu)成4×4=16個(gè)按鍵,比直接用端口線連接鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些。無論是獨(dú)立鍵盤還是矩陣鍵盤,單片機(jī)檢測其是否被按下的依據(jù)都是一樣的,也就是檢測與該鍵對(duì)應(yīng)的I/O口是否為低電平。獨(dú)立鍵盤有一端固定為低電平,單片機(jī)寫程序檢測時(shí)比較方便。而矩陣鍵盤兩端都與單片機(jī)I/O口相連,因此在檢測時(shí)需要人為的通過單片機(jī)I/O口送出低電平。檢測時(shí),先送一列為低電平,其余幾列全為高電平,然后立即輪流檢測一次各行是否有低電平,若檢測到某一行為低電平,則我們便可確認(rèn)當(dāng)前被按下的鍵是哪一行那一列的,用同樣的方法輪流送各列一次低電平,再輪流檢測一次各行是否變?yōu)榈碗娖?,這樣即可檢測完所有的按鍵,當(dāng)有按鍵被按下時(shí)便可判斷出按下的鍵是哪一個(gè)鍵。當(dāng)然我們也可以將行先置低電平,掃描列是否有低電平。這就是矩陣鍵盤檢測的原理和方法[12]。根據(jù)對(duì)兩種不同鍵盤電路工作原理的了解,通過對(duì)比選擇,本系統(tǒng)設(shè)計(jì)選擇采用6個(gè)獨(dú)立式鍵盤,分別控制切換各種狀態(tài)。按鍵接口電路圖3.1所示。P2.1-P2.5接6個(gè)按鍵,分別控制開始計(jì)時(shí)、停止計(jì)時(shí)、繼續(xù)計(jì)時(shí)、清零、加調(diào)時(shí)、減調(diào)時(shí)等功能。功能的實(shí)現(xiàn)主要是對(duì)按鍵的掃描,主要體現(xiàn)在軟件程序編寫方面,根據(jù)不同的按鍵值,執(zhí)行不同的操作,在具體場合應(yīng)用中可以將按鍵的功能重新定義,只要在程序中重新編寫就可以,使工作更加有效率。圖3.1按鍵接口電路圖3.1.2按鍵電路的故障及解決方法本系統(tǒng)采用的按鍵的開關(guān)為機(jī)械彈性開關(guān)。當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),由于彈性作用,一個(gè)按鍵開關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開時(shí)也不會(huì)一下子斷開,有可能伴隨有一連串的抖動(dòng)。抖動(dòng)時(shí)間的長短由按鍵的機(jī)械特性決定,一般為5-10ms。按鍵穩(wěn)定閉合的長短則是由操作人員的按鍵動(dòng)作決定的,一般為零點(diǎn)幾秒至數(shù)秒。鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次,為了確保對(duì)鍵的一次閉合僅作一次處理,必須去除鍵抖動(dòng)。去抖有專用的去抖硬件電路,也有專用的去抖芯片,本系統(tǒng)采用軟件方法去除抖動(dòng),即檢測出鍵閉合后執(zhí)行一個(gè)延時(shí)程序產(chǎn)生5ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平則確認(rèn)為真正有鍵按下。延時(shí)程序如下所示。voiddelay(uintn){uinty,z;for(z=0;z<n;z++)//250*nus{for(y=0;y<125;y++);//2*125us=250us}}該程序延時(shí)250×nus,具體延時(shí)多長時(shí)間由n決定。3.2顯示電路的設(shè)計(jì)3.2.1顯示電路的介紹顯示器普遍地用于直觀地顯示數(shù)字的運(yùn)行狀態(tài)和工作數(shù)據(jù),按照材料及產(chǎn)品工藝,單片機(jī)應(yīng)用系統(tǒng)中常用的顯示器有:發(fā)光二極管LED(LiquidCrystalDisplay)顯示器、CRT顯示器等。LED顯示器是現(xiàn)在最常用的顯示器之一,發(fā)光二極管LED由特殊的半導(dǎo)體材料砷化鎵、磷砷化鎵等制成,可以單獨(dú)使用,也可以組裝成分段式或點(diǎn)陣式LED顯示器件(半導(dǎo)體顯示器)。分段式顯示器(LED數(shù)碼管)由7條線段圍成8字型,每一段包含一個(gè)發(fā)光二極管。外加正向電壓時(shí)二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號(hào)。本系統(tǒng)的顯示電路采用六位數(shù)碼管進(jìn)行顯示。3.2.2LED數(shù)碼管的工作原理數(shù)碼管分為共陰極、和共陽極之分,由于本系統(tǒng)使用的數(shù)碼管屬于共陰極,所以下面只對(duì)共陰極數(shù)碼管的工作原理進(jìn)行敘述。數(shù)碼管的顯示原理是靠點(diǎn)亮內(nèi)部的發(fā)光二極管來發(fā)光,圖3.2為數(shù)碼管內(nèi)部電路圖,由圖可以看出,一位數(shù)碼管的引腳是10個(gè),顯示一個(gè)8字需要7小段,另外還有個(gè)一個(gè)小數(shù)點(diǎn),所以其內(nèi)部一共有8個(gè)小的發(fā)光二極管,最后還有一個(gè)公共端,生產(chǎn)商為了封裝統(tǒng)一,單位數(shù)碼管封裝10個(gè)引腳,其中第3和第8引腳是連在一起的。圖3.2數(shù)碼管內(nèi)部原理圖對(duì)于共陰極數(shù)碼管來說,其8個(gè)發(fā)光二極管的陰極在數(shù)碼管內(nèi)部全部連在一起,所以稱為“共陰”,而它們的陽極是獨(dú)立的,通常在設(shè)計(jì)電路時(shí)一般把陰極接地。當(dāng)我們給數(shù)碼管的任一個(gè)陽極加一個(gè)高電平時(shí),對(duì)應(yīng)的這個(gè)發(fā)光二極管就點(diǎn)亮了。如果想要顯示一個(gè)8字,并且把右下角的小數(shù)點(diǎn)也點(diǎn)亮的話,可以給8個(gè)陽極全部送高電平,如果想要顯示一個(gè)0字,那么我們可以除了給“g、dp”這兩位送低電平外,其余引腳全部都送高電平,這樣就顯示出0字了。想讓它幾,就給相對(duì)應(yīng)的發(fā)光二極管送高電平,因此我們?cè)陲@示數(shù)字的時(shí)候首先做的就是給0-9十個(gè)數(shù)字編碼,在要它亮什么數(shù)字的時(shí)候直接把這個(gè)編碼送到它的陽極就行了。顯示電路如圖3.3所示。圖3.3顯示電路3.3晶振振蕩電路的設(shè)計(jì)一般的晶振振蕩電路都是在一個(gè)反相放大器(注意是放大器不是反相器)的兩端接入晶振,再有兩個(gè)電容分別接到晶振的兩端,每個(gè)電容的另一端再接到地,這兩個(gè)電容串聯(lián)的容量值就應(yīng)該等于負(fù)載電容。單片機(jī)如果要正常工作,需要有時(shí)鐘脈沖源,使單片機(jī)有可以工作的時(shí)序脈沖。時(shí)鐘電路是由石英晶體及兩個(gè)電容構(gòu)成的穩(wěn)定的自激振蕩器,電容通常取值30pF左右,可穩(wěn)定頻率并對(duì)振蕩頻率有微調(diào)作用。振蕩脈沖頻率范圍為0-24MHz,晶體振蕩器的頻率為?osc,89C51的一個(gè)機(jī)器周期包括12個(gè)振蕩周期,如果采用6MHz晶體振蕩器,則每個(gè)機(jī)器周期恰為2us。每條指令都由一個(gè)或幾個(gè)機(jī)器周期組成,在89C51系統(tǒng)中,有單周期指令、雙周期指令和4周期指令。指令的運(yùn)算速度和它的機(jī)器周期數(shù)第二章單片機(jī)控制電路的設(shè)計(jì)直接相關(guān),機(jī)器周期數(shù)較少則執(zhí)行速度快。但是,晶振的振蕩頻率不能選擇過大,超過了單片機(jī)的承受能力單片機(jī)就會(huì)無法執(zhí)行程序。AT89C51單片機(jī)內(nèi)部的振蕩電路是一個(gè)高增益反相放大器,引線XYAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入和來自反向振蕩器的輸出,該反向放大器可以配置為片內(nèi)振蕩器[8]。這里,選用51單片機(jī)12MHz的內(nèi)部振蕩方式,電路如下:電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時(shí)要使用晶體振蕩器X1盡可能接近單片機(jī)。圖3.4晶振振蕩電路4系統(tǒng)軟件的設(shè)計(jì)4.1軟件設(shè)計(jì)概述在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn)。把一個(gè)多功能的復(fù)雜的程序劃分為若干個(gè)簡單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。應(yīng)用系統(tǒng)的程序由包含多個(gè)模塊的主程序和各種子程序組成。各程序模塊都要完成一個(gè)明確的任務(wù),實(shí)現(xiàn)某個(gè)具體的功能,如:延時(shí)、中斷服務(wù)程序、快加、快減調(diào)時(shí)等。在軟件設(shè)計(jì)時(shí)通常要考慮以下幾個(gè)問題:(l)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個(gè)相對(duì)獨(dú)立的部分,設(shè)計(jì)出合理的總體結(jié)構(gòu),使軟件開發(fā)清晰、簡潔和流程合理;(2)培養(yǎng)良好的編程風(fēng)格,如考慮結(jié)構(gòu)化程序設(shè)計(jì)、實(shí)行模塊化、子程序化。既便于調(diào)試、鏈接,又便于移植和修改;(3)建立正確的數(shù)學(xué)模型,通過仿真提高系統(tǒng)的性能,并選取合適的參數(shù);(4)繪制程序流程圖;(5)合理分配系統(tǒng)資源;(6)為程序加入注釋,提高可讀性,實(shí)施軟件工程;(7)注意軟件的抗干擾設(shè)計(jì),提高系統(tǒng)的可靠性;4.2軟件設(shè)計(jì)流程圖程序的編寫主要體現(xiàn)的是模塊化,將每個(gè)功能分別用獨(dú)立的子函數(shù)編寫,然后再調(diào)用主函數(shù)調(diào)用子程序,實(shí)現(xiàn)相應(yīng)的功能,其中子函數(shù)包括按鍵掃描子函數(shù),實(shí)時(shí)時(shí)鐘讀取子函數(shù)以及延時(shí)子函數(shù)。程序首先初始化所有宏定義和全局變量,以及存儲(chǔ)在ROM里的數(shù)據(jù),執(zhí)行按鍵掃描程序,如果有鍵按下,則單片機(jī)的P2口產(chǎn)生一個(gè)低電平,并執(zhí)行按鍵消抖程序,使系統(tǒng)的誤差變小。如果是Kl鍵按下,系統(tǒng)則計(jì)時(shí)開始;若是K2鍵按下,系統(tǒng)則停止計(jì)時(shí);若是K3鍵按下系統(tǒng)則繼續(xù)計(jì)時(shí);若是K4鍵被按下,秒表系統(tǒng)被清零;若是K5按鍵按下,則可以對(duì)系統(tǒng)進(jìn)行加調(diào)時(shí);若是K6按鍵按下,則可以對(duì)系統(tǒng)進(jìn)行減調(diào)時(shí);主程序的程序框圖如圖4.1所示。是否有鍵按下?開始初始化鍵盤掃描K1?是否有鍵按下?開始初始化鍵盤掃描K1?K2?K3?K4?K5?K6?開始計(jì)時(shí)停止計(jì)時(shí)繼續(xù)計(jì)時(shí)清零加數(shù)調(diào)時(shí)減數(shù)調(diào)時(shí)NYYYYYYYNNNNNN圖4.1系統(tǒng)主程序流程圖4.3定時(shí)中斷服務(wù)程序流程圖4.3.1中斷的介紹CPU在執(zhí)行程序時(shí),CPU以外的設(shè)備請(qǐng)求停止現(xiàn)程序的執(zhí)行,轉(zhuǎn)去處理外設(shè)事件,處理后再回到原地執(zhí)行,這一過程叫中斷。其流程如圖4.2所示。中斷工作方式的優(yōu)點(diǎn):(l)外設(shè)與CPU可并行工作CPU與多個(gè)外設(shè)同時(shí)工作,互不干擾(2)實(shí)現(xiàn)了實(shí)時(shí)處理、實(shí)時(shí)控制CPU能及時(shí)處理外部信息,如數(shù)據(jù)采集,監(jiān)控(3)能及時(shí)處理隨機(jī)故障圖4.2中斷流程圖4.3.2定時(shí)中斷的設(shè)置51單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動(dòng)和中斷申請(qǐng)。工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如表4.3所示。表4.3TMOD寄存器位76543210字節(jié)地址:89HGATEC/M1M0GATEC/M1M0TMODGATE:門控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATE=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。即此時(shí)定時(shí)器的啟動(dòng)多了一條件。C/:定時(shí)/計(jì)數(shù)模式選擇位。C/=0為定時(shí)模式;C/=1為計(jì)數(shù)模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。M1M0工作方式如表4.4所示[5]。表4.4定時(shí)/計(jì)數(shù)器工作方式設(shè)置M1M0工作方式說明00方式013位定時(shí)/計(jì)數(shù)器01方式116位定時(shí)/計(jì)數(shù)器10方式28位自動(dòng)重裝定時(shí)/定時(shí)器11方式3T0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;T1此方式停止技術(shù)TCON的低4位用于控制外部中斷,其高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如表4.5所示。TCON中的TF1和TF0是溢出中斷請(qǐng)求標(biāo)志位。有硬件自動(dòng)設(shè)置,這里不做介紹。TCON中的TR0和TR1的運(yùn)行控制位。TR1置1時(shí),T1開始工作,TR1置0時(shí),T1停止工作。TR1由軟件置1或清0.所以,用軟件可以控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)與停止。TR0功能與TR1功能類同,這里也不再贅述。表4.5TCON寄存器位76543210字節(jié)地址:88TF1TR1TF0TR0M0TCON4.3.3定時(shí)中斷程序根據(jù)前一小節(jié)的介紹,要使用定時(shí)器/計(jì)數(shù)器,先應(yīng)對(duì)其進(jìn)行初始化,其初始化程序如下所示。TMOD=0x10;//定時(shí)器1為工作方式1TH1=(65536-50000)/256;//送入初值50msTL1=(65536-50000)%256;EA=1;//打開總中斷ET1=1;TR1=1;5Protues軟件仿真5.1Protues軟件功能簡介Proteus就是一款硬件仿真軟件[2],它由英國Labcenier公司開發(fā),集51單片機(jī),PIC單片機(jī),MSP430單片機(jī),甚至是ARM和AVR單片機(jī)于一起,還配有虛擬儀器仿真平臺(tái),使用該軟件就可以給自學(xué)者和學(xué)生、研究人員帶來了方便。該軟件操作簡單,容易學(xué)習(xí),在互聯(lián)網(wǎng)的時(shí)代很容易在網(wǎng)絡(luò)上搜集關(guān)于該軟件使用方法的介紹。本系統(tǒng)就是在該軟件仿真環(huán)境下進(jìn)行設(shè)計(jì)研發(fā)的,仿真結(jié)果與實(shí)際結(jié)果差別較小,操作靈活,給研究工作帶來了便利。本設(shè)計(jì)具體仿真步驟描述如下:(l)打開Proteus7Professional,選擇Proteus菜單欄中的打開選項(xiàng),打開已經(jīng)繪制好的仿真電路圖。打開后,鼠標(biāo)左鍵雙擊單片機(jī)芯片,出現(xiàn)如圖5.1所示的界面。然后再單擊ProgramFile一欄中的“文圖5.1Proteus選擇界面件夾”圖標(biāo),出現(xiàn)如圖5.2所示的界面。然后再鼠標(biāo)雙擊所需的HEX文件后,就完成了程序的加載。圖5.2Proteus仿真的HEX文件選擇界面(2)完成程序加載后,點(diǎn)擊Proteus仿真中的“”按鈕,軟件便開始了仿真。仿真結(jié)束時(shí)按“”按鈕,則結(jié)束仿真。5.2KeilUvision2.0軟件編譯5.2.1KeilUvision2.0軟件簡介KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。用KeilC開發(fā)的程序可以在用Proteus設(shè)計(jì)的仿真電路中調(diào)試和交互運(yùn)行。KeilUvision2.0軟件界面如圖5.3所示。圖5.3KeilUvision2.0軟件界面5.2.2KeilUvision2.0軟件的使用說明(1)打開Keil軟件后,我們先新建一個(gè)工程文件,點(diǎn)擊“Project->NewProject…”.選擇工程文件要存放的路徑,并且輸入工程文件名,這里我們用test2作為工程文件名,這里就不用在后面加.c了。如圖5.4所示。(2)點(diǎn)擊Save后彈出選擇CPU及型號(hào)的對(duì)話框,由于本實(shí)驗(yàn)板所配的單片是STC公司的,而KEIL中并沒有STC公司的產(chǎn)品,不過STC公司的單片機(jī)和傳圖5.4KEIL軟件新建工程統(tǒng)的51單片機(jī)是兼容的,所以這里我們就選擇Atmel公司的AT89C51。如圖5.5所示。圖5.5芯片CPU及型號(hào)的選擇(3)新建一個(gè)C51文件,單擊左上角的NewFile,保存新建的文件,單擊保存按鈕。(4)輸入文件名test2.c,這里必須以**.c為文件名。保存好后我們還需要把文件加入到工程項(xiàng)目中,如圖5.6所示在SourceGroup1上單擊右鍵,選擇AddFilesto‘GroupSourceGroup1’。圖5.6把.C文件添加到工程里(5)然后選擇剛才建立的test2.c文件,單擊Add。這時(shí)我們看左邊工程信息窗口中的SourceGroup1下面多了test2.c文件,這說明添加文件成功了。此時(shí)就可以在編輯框內(nèi)輸入字符進(jìn)行編程了。新工程建立好就可以在編輯框內(nèi)輸入字符進(jìn)行編程了。6系統(tǒng)調(diào)試與功能說明6.1系統(tǒng)性能測試與功能說明秒表系統(tǒng)運(yùn)行時(shí):默認(rèn)運(yùn)行狀態(tài),按24小時(shí)制分別顯示“時(shí)時(shí)-分分-秒秒”有兩個(gè)動(dòng)態(tài)顯示,時(shí)間會(huì)按實(shí)際時(shí)間以秒為最小單位變化。該系統(tǒng)如果只按下K1鍵就可以當(dāng)做時(shí)鐘使用,按照24小時(shí)制顯示時(shí)間。秒控制:Kl鍵按下,系統(tǒng)則計(jì)時(shí)開始;若是K2鍵按下,系統(tǒng)則停止計(jì)時(shí);若是K3鍵按下系統(tǒng)則繼續(xù)計(jì)時(shí);若是K4鍵被按下,秒表系統(tǒng)被清零;若是K5按鍵按下,則可以對(duì)系統(tǒng)進(jìn)行加調(diào)時(shí);若是K6按鍵按下,則可以對(duì)系統(tǒng)進(jìn)行減調(diào)時(shí);6.2系統(tǒng)誤差分析時(shí)間是一個(gè)基本物理量,具有連續(xù)、自動(dòng)流逝、不重復(fù)等特性。我國時(shí)間基準(zhǔn)來自國家授時(shí)中心,人們?nèi)粘J褂玫臅r(shí)鐘就是以一定的精度與該基準(zhǔn)保持同步的。結(jié)合時(shí)間概念和誤差理論,可以定義電子鐘的走時(shí)誤差S=S1-S2,S1表示程序?qū)嶋H運(yùn)行計(jì)算所得的秒;S2表示客觀時(shí)間的標(biāo)準(zhǔn)秒。S>0時(shí)表示電子鐘秒單元數(shù)值刷新滯后,即走時(shí)誤差為“慢”:反之,S<0表示秒單元數(shù)值刷新超前,即走時(shí)誤差為“快”。本次設(shè)計(jì)的單片機(jī)電子鐘系統(tǒng)中,其誤差主要來源包括晶體頻率誤差,定時(shí)器溢出誤差,延遲誤差。晶體頻率產(chǎn)生震蕩,容易產(chǎn)生走時(shí)誤差;定時(shí)器溢出的時(shí)間誤差,本應(yīng)這一秒溢出,但卻在下一秒溢出,造成走時(shí)誤差;延遲時(shí)間過長或過短,都會(huì)造成與基準(zhǔn)時(shí)間產(chǎn)生偏差,造成走時(shí)誤差。6.3軟件調(diào)試問題及解決軟件程序的調(diào)試一般可以將重點(diǎn)放在模塊調(diào)試上,統(tǒng)調(diào)時(shí)最后一環(huán)。軟件調(diào)試可以采取離線調(diào)試和在線調(diào)試兩種方式。前者不需要硬件仿真器,可借助于軟件仿真器即可;后者一般需要仿真系統(tǒng)的支持。本次課題,Keil軟件來調(diào)試程序,通過各個(gè)模塊程序的單步或跟蹤調(diào)試,使程序逐漸趨于正確,最后統(tǒng)調(diào)程序。仿真部分采用Protues7Professional軟件,次軟件功能強(qiáng)大且操作較為簡單,可以很容易的實(shí)現(xiàn)各種系統(tǒng)的仿真。首先打開Protues7Professional軟件,在元件庫中找到要選用的所有元件,然后進(jìn)行原理圖的繪制;繪制號(hào)后再選擇Keil已經(jīng)編譯好的.hex文件,選擇運(yùn)行,觀察顯示結(jié)果,根據(jù)顯示的結(jié)果和課題的要求再修改程序,再運(yùn)行Protues7Professional軟件觀察,直到滿足要求。結(jié)論這次畢業(yè)設(shè)計(jì)讓我受益匪淺。通過這次設(shè)計(jì)我對(duì)自己在大學(xué)四年時(shí)間里所學(xué)的知識(shí)得到了全面的回顧,并充分發(fā)揮對(duì)所學(xué)知識(shí)的理解和對(duì)畢業(yè)設(shè)計(jì)的思考及表達(dá)能力,最終完成了這份論文。撰寫論文的過程也是專業(yè)知識(shí)的學(xué)習(xí)過程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識(shí),對(duì)其進(jìn)行設(shè)計(jì),分析和解決一個(gè)理論問題或?qū)嶋H問題,把知識(shí)轉(zhuǎn)化為能力的實(shí)際訓(xùn)練。培養(yǎng)了我運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的能力。下面就本次的設(shè)計(jì)的心得體會(huì)做一下簡要描述:(1)將學(xué)習(xí)的理論知識(shí)通過實(shí)驗(yàn)融會(huì)貫通,讓我對(duì)它的理解更加深刻,對(duì)程序的編譯過程了解透徹。(2)本次課程設(shè)計(jì)以自己設(shè)計(jì)為主,因此培養(yǎng)了學(xué)習(xí)的積極性,讓我能夠獨(dú)立去分析問題、發(fā)現(xiàn)問題、解決問題,更增強(qiáng)我與老師同學(xué)交流溝通和合作完成任務(wù)的能力。(3)由于這次課程設(shè)計(jì)不僅設(shè)計(jì)編程方面的知識(shí),還涉及了其它學(xué)科的知識(shí),例如Protues和Keil等的基本知識(shí)。程序是用C語言來編寫的,這次課程設(shè)計(jì)讓我在編程方面得到了提高??傊ㄟ^這次課程設(shè)計(jì),不僅加深了我對(duì)單片機(jī)理論方面的理解,將理更好的運(yùn)用于實(shí)踐方面,而且也鍛煉了我們各方面的能力,培養(yǎng)了堅(jiān)強(qiáng)的毅力和做事的耐心和細(xì)心,認(rèn)識(shí)合作的重要性,為我以后的工作打下了一定的基礎(chǔ)。謝辭本設(shè)計(jì)能夠順利的完成是得到了院系領(lǐng)導(dǎo)老師的大力支持和幫助,尤其是在我的導(dǎo)師李文老師的親切關(guān)懷和悉心指導(dǎo)下完成的。在設(shè)計(jì)的過程中,李老師多次詢問研究過程,并認(rèn)真的幫我改正錯(cuò)誤,拓展思路。李老師治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,視野雄闊,為我營造了一種良好的精神氛圍。授人以魚不如授人以漁,置身其間,耳濡目染,潛移默化,使我不僅接受了全新的思想觀念,樹立了宏偉的學(xué)術(shù)目標(biāo),領(lǐng)會(huì)了基本的思考方式,從論文題目的選定到論文寫作的指導(dǎo),經(jīng)由您悉心的點(diǎn)撥,再經(jīng)思考后的領(lǐng)悟,常常讓我有“山重水復(fù)疑無路,柳暗花明又一村”的感覺。很高興,在畢業(yè)設(shè)計(jì)的完成中得到李老師的幫助與指導(dǎo),這是我在大學(xué)生活中的一次很寶貴的經(jīng)歷。我在學(xué)校圖書館,本部圖書館搜集資料,并且還在網(wǎng)上查找各類相關(guān)資料,將這些寶貴的資料全部記錄下來,盡量使我的資料完整、精確、數(shù)量多,有利于對(duì)本論文的撰寫。然后我將收集到的資料仔細(xì)整理分類,及時(shí)拿給李老師

溫馨提示

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