基于單片機(jī)的萬年歷設(shè)計與實現(xiàn)_第1頁
基于單片機(jī)的萬年歷設(shè)計與實現(xiàn)_第2頁
基于單片機(jī)的萬年歷設(shè)計與實現(xiàn)_第3頁
基于單片機(jī)的萬年歷設(shè)計與實現(xiàn)_第4頁
基于單片機(jī)的萬年歷設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

中文摘要萬年歷已成為人們?nèi)粘I钪斜夭豢缮俚谋匦杵?,廣泛用于個人家庭以及辦公室等公共場所,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。盡管目前市場上已有現(xiàn)成的電子表集成電路芯片出售,價格便宜、使用也方便,但鑒于萬年歷電路的基本組成包含了數(shù)字電路的主要組成部分,因此進(jìn)行萬年歷的設(shè)計是必要的,用C語言設(shè)計萬年歷顯示程序,要求根據(jù)輸入程序顯示萬年歷畫面。研究萬年歷及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實的意義。設(shè)計主要完成的工作有。1.設(shè)計一個基于單片機(jī)的萬年歷,并且能夠?qū)崿F(xiàn)時分秒的顯示和調(diào)節(jié)。2.系統(tǒng)顯示器由8位數(shù)字型數(shù)碼管組成,分別顯示時間值的小時、分和秒。3.能夠隨時對當(dāng)前時間進(jìn)行調(diào)整。4.能夠隨時輸入定時(鬧鐘)時間。5.定時(鬧鐘)時間到,發(fā)出鬧鐘提醒信號。6.鬧鐘提醒信號的聲音為斷續(xù)形式,最長不超過1min。關(guān)鍵詞萬年歷,數(shù)碼管,AT89C51外文摘要TitleDesignandRealizationofPerennialCalendarBasedonSingleChipMicrocomputerAbstractThecalendarhasbecomeanindispensablenecessityinpeople'sdailylife.Itiswidelyusedinpersonalfamiliesandpublicplacessuchasoffices.Itbringsgreatconveniencetopeople'slife,study,workandentertainment.Althoughtheintegratedcircuitchipsofelectronicwatchesareavailableonthemarketatpresent,whicharecheapandconvenienttouse,itisnecessarytodesignthecalendarbecausethebasiccomponentsofthecalendarcircuitincludethemaincomponentsofthedigitalcircuit.ThecalendardisplayprogramisdesignedinClanguage,andthecalendarscreenisrequiredtobedisplayedaccordingtotheinputprogram.Itisofgreatpracticalsignificancetostudythecalendarandexpanditsapplication.Themaintasksofthedesignareasfollows.1.DesigningacalendarbasedonMCU,whichcandisplayandadjusttimeandseconds.2.Thesystemdisplayconsistsof8-digitdigitaltube,whichshowshours,minutesandsecondsoftimevaluerespectively.3.Beabletoadjustthecurrenttimeatanytime.4.Caninputtiming(alarmclock)timeatanytime.5.Timing(alarmclock)time,sendalarmclockremindersignal.6.Thesoundofalarmclockremindersignalisintermittent,withamaximumofnotmorethan1minute.KeywordsCalendar,DigitalTube,AT89C51目錄TOC\o"1-3"\h\u236141前言 143471.1研究背景及意義 1104361.2設(shè)計目的 1128901.3研究內(nèi)容 125512總體方案設(shè)計 1124022.1電子時鐘的設(shè)計思路 1219512.2方案設(shè)計 2311162.2.1總體設(shè)計框圖 2310332.2.2計時方案 316363硬件電路設(shè)計 346053.1單片機(jī)最小系統(tǒng) 337963.1.1AT89C51單片機(jī) 3201173.1.2AT89C51單片機(jī)最小系統(tǒng) 4278903.2LED數(shù)碼管顯示電路設(shè)計 4142533.2.1LED數(shù)碼管介紹 4271313.2.2LED數(shù)碼管與單片機(jī)連接電路 5204193.3按鍵電路設(shè)計 5193963.3.1鍵盤結(jié)構(gòu) 595733.3.2鍵盤與單片機(jī)的接口電路設(shè)計 5282973.4蜂鳴器電路 651753.4.1蜂鳴器介紹 6220933.4.2蜂鳴器電路設(shè)計 749554軟件設(shè)計 7154064.1軟件總設(shè)計 792044.2LED數(shù)碼管顯示程序設(shè)計 9325934.3按鍵程序設(shè)計 10186475電子時鐘的調(diào)試 12241605.1單片機(jī)調(diào)試仿真軟件 12308855.2電子時鐘的仿真及調(diào)試 13178295.2.1單片機(jī)最小系統(tǒng)調(diào)試 13178965.2.2按鍵控制調(diào)試 1480065.2.3數(shù)碼管顯示模塊調(diào)試 1453545.3整機(jī)的仿真及調(diào)試 1515927結(jié)論 1613655致謝 17469參考文獻(xiàn) 189712附錄A原理圖 1932590附錄B仿真圖 2015065附錄C源代碼 211前言1.1研究背景及意義電子時鐘則是以數(shù)字電路為基礎(chǔ),綜合了模擬電路和電路基礎(chǔ)知識設(shè)計出來的一種對時、分、秒進(jìn)行時間數(shù)字顯示的裝置。它是以不同的計數(shù)器為基本單元構(gòu)成的,用途十分廣泛,只要有計時、計數(shù)的存在,便要用到數(shù)字鐘的原理及結(jié)構(gòu),由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度遠(yuǎn)遠(yuǎn)超過老式鐘表,在給人們生活帶來了極大的方便之外,大大的擴(kuò)展了鐘表原先的報時功能。目前,數(shù)字鐘的功能越來越強(qiáng),不僅僅是一個數(shù)字電路,它在其他領(lǐng)域也有相當(dāng)大的發(fā)展空間,諸如按時自動鬧鈴、定時啟閉電路、定時自動報警器、定時開關(guān)烘箱、通斷動力設(shè)備、時間程序自動控制、定時廣播,甚至各種定時電氣的自動啟用等。所有這些都是以鐘表數(shù)字化為基礎(chǔ)的。因此研究數(shù)字鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實的意義。1.2設(shè)計目的為了實現(xiàn)電子時鐘時間設(shè)置,時間顯示,以及能夠正確無誤的運行,本文主要介紹用單片機(jī)內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計由單片機(jī)AT89C51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個單片機(jī)電子時鐘。1.3研究內(nèi)容本文是以數(shù)字電路為設(shè)計基礎(chǔ),探究多功能數(shù)字鐘的設(shè)計方法。數(shù)字鐘由組合邏輯電路和時序電路組成,通過對數(shù)字鐘的設(shè)計,可以更好的了解、學(xué)習(xí)和掌握組合邏輯電路和時序電路的原理知識和使用方法,同時,本設(shè)計是基于proteus軟件實現(xiàn)電路設(shè)計和仿真,使用AltiumDesigner軟件完成原理圖繪制和PCB制板,在電路設(shè)計的過程中,采用由簡入深、由原理框圖到實際電路圖的模式,明確設(shè)計步驟,理清設(shè)計的各個環(huán)節(jié),將各個電路功能模塊化,使得整體的電路更加清晰易懂。2總體方案設(shè)計2.1電子時鐘的設(shè)計思路據(jù)設(shè)計要求,初步思路如下:(1)計時單元由單片機(jī)內(nèi)部的定時器/計數(shù)器3來實現(xiàn)。(2)時間顯示采用8段LED數(shù)碼管,動態(tài)掃描方式。(3)LED數(shù)碼管的段碼輸入,由并行端口P0八位產(chǎn)生。(4)LED數(shù)碼管的位碼輸入,由并行端口P2八位產(chǎn)生。(5)時間調(diào)整與定時時間的輸入,通過接入鍵盤電路實現(xiàn)。系統(tǒng)共設(shè)計4個按鍵,分別定義為:K1鍵(時間調(diào)整設(shè)置鍵):其功能是當(dāng)該鍵按下時,進(jìn)入時間調(diào)整輸入功能;K2鍵(定時時間設(shè)置鍵):其功能是當(dāng)該鍵按下時,進(jìn)入定時(鬧鐘)時間輸入功能;K3鍵:其功能是當(dāng)該鍵按下時,被調(diào)整位加1;K4鍵:其功能是當(dāng)該鍵按下時,指向下一個調(diào)整的位。(6)按鍵的接入方式:K1鍵:通過P3口P1.0引腳接入,中斷工作方式;K2鍵:通過P3口P1.1引腳接入,中斷工作方式;K3鍵:通過P3口P1.2引腳接入,查詢工作方式;K4鍵:通過P3口P1.3引腳接入,查詢工作方式。(7)報警聲響用蜂鳴器產(chǎn)生,蜂鳴器接入P2口的P3.6引腳2.2方案設(shè)計2.2.1總體設(shè)計框圖根據(jù)設(shè)計要求與設(shè)計思路,確定該系統(tǒng)的設(shè)計方案,下圖2-1為該系統(tǒng)設(shè)計方案的硬件電路設(shè)計框圖。硬件電路由8部分組成,即按鍵輸入電路、單片機(jī)、時鐘電路、復(fù)位電路、LED顯示器段碼驅(qū)動電路、LED顯示器位碼驅(qū)動電路、8位顯示器電路和蜂鳴器電路。圖2-1設(shè)計方案框圖2.2.2計時方案利用AT89C51單片機(jī)內(nèi)部的定時/計數(shù)器進(jìn)行中斷定時,配合軟件延時實現(xiàn)時、分、秒的計時。該方案節(jié)省硬件成本,且能使讀者在定時/計數(shù)器的使用、中斷及程序設(shè)計方面得到鍛煉與提高,對單片機(jī)的指令系統(tǒng)能有更深入的了解,從而對學(xué)好單片機(jī)技術(shù)這門課程起到一定的作用。2.2.3顯示方案AT89C51的P0口和P2口外接由8個LED數(shù)碼管(LED7~LED0)構(gòu)成的顯示器,用P0口作LED的段碼輸出口,P2口作LED數(shù)碼管的位控輸出線,P1口外接四個按鍵K1、K2、K3、K4構(gòu)成鍵盤電路。電子時鐘的功能不復(fù)雜,采用其現(xiàn)有的I/O便可完成3硬件電路設(shè)計3.1單片機(jī)最小系統(tǒng)3.1.1AT89C51單片機(jī)單片機(jī)的最小系統(tǒng)的核心是單片機(jī),其次是其他輔助電路。AT89C51單片機(jī)作為應(yīng)用較為廣泛的單片機(jī)當(dāng)然也適用于本系統(tǒng)。使得其應(yīng)用更加的廣泛。在本文硬件電路設(shè)計中,AT89C51作為主控芯片將承擔(dān)著重要的控制功能,因此本節(jié)將重點研究該單片機(jī)的內(nèi)部結(jié)構(gòu)。單片機(jī)的內(nèi)部構(gòu)造比較復(fù)雜,但是認(rèn)真的分析可以發(fā)現(xiàn)存在一定的規(guī)律。單片機(jī)引腳如圖3-1所示:圖3-1AT89C51引腳圖3.1.2AT89C51單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)是整個控制系統(tǒng)的基礎(chǔ),它主要是由供電模塊、晶振模塊和復(fù)位模塊構(gòu)成。供電模塊是所有電氣系統(tǒng)的電力來源,這是電路能正常工作最基本的條件。晶振電路是單片機(jī)自帶的時鐘電路,是獲取時鐘信號的重要電路,沒有時鐘電路,單片機(jī)最小系統(tǒng)就無從談起。復(fù)位電路是單片機(jī)最小系統(tǒng)中一個人工復(fù)位電路,當(dāng)系統(tǒng)出現(xiàn)內(nèi)部錯誤,可以按下復(fù)位按鍵啟動復(fù)位電路,手動復(fù)位的優(yōu)點在于根據(jù)實際情況初始化單片機(jī)。當(dāng)上述三個電路正常工作時,整個最小系統(tǒng)電路全部就緒完畢。其他功能性電路就可以根據(jù)需要進(jìn)行設(shè)計,這就是單片機(jī)可擴(kuò)充的功能。圖3-2是單片機(jī)最小系統(tǒng)。而晶振電路有兩個引腳和單片機(jī)相連,具體的連接方式見圖3-2所示。圖3-2單片機(jī)最小系統(tǒng)3.2LED數(shù)碼管顯示電路設(shè)計3.2.1LED數(shù)碼管介紹數(shù)碼管是一種把多個LED顯示段集成在一起的顯示設(shè)備。有兩種類型,一種是共陽型,一種是共陰型。數(shù)碼管顯示方法可分為靜態(tài)顯示和動態(tài)顯示兩種。靜態(tài)顯示就是數(shù)碼管的8段輸入及其公共端電平一直有效。動態(tài)顯示的原理是,各個數(shù)碼管的相同段連接在一起,共同占用8位段引管線;每位數(shù)碼管的陽極連在一起組成公共端。利用人眼的視覺暫留性,依次給出各個數(shù)碼管公共端加有效信號,在此同時給出該數(shù)碼管加有效的數(shù)據(jù)信號,當(dāng)全段掃描速度大于視覺暫留速度時,顯示就會清晰顯示出來。如圖3-3是數(shù)碼管引腳圖。圖3-3LED數(shù)碼管示意圖3.2.2LED數(shù)碼管與單片機(jī)連接電路可以采用單片機(jī)的P2口和P0作為與LED的輸出接口,即P0口8位作為LED的段碼輸出信號,P2口位作為LED位碼的輸出控制信號。硬件電路連接如圖3-3所示。段碼輸出所接上拉電阻,作用是保證LED可靠導(dǎo)通與截止。如圖3-4是LED數(shù)碼管與單片機(jī)連接電路。圖3-4LED數(shù)碼管與單片機(jī)連接電路3.3按鍵電路設(shè)計3.3.1鍵盤結(jié)構(gòu)電子時鐘應(yīng)用系統(tǒng)工作時應(yīng)具備兩項基本功能,意識隨時輸入定時(鬧鐘)時間,而是隨時對當(dāng)前時間進(jìn)行調(diào)整。要實現(xiàn)這兩項功能,可以介入鍵盤輸入電路。在單片機(jī)組成的測控系統(tǒng)及智能化儀器中,用得最多的是非編碼鍵盤。鍵盤結(jié)構(gòu)可以分為獨立式鍵盤和行列式鍵盤(矩陣式)兩類。本次設(shè)計中只需要4個按鍵,因此選擇獨立式鍵盤。如圖3-5所示,電路有按鍵和4個電阻組成,按鍵分別名為K1、K2、K3、K4,按鍵可以采用輕觸開關(guān)。3.3.2鍵盤與單片機(jī)的接口電路設(shè)計如圖3-5所示,將鍵盤直接與單片機(jī)的P1口連接。用P1.0、P1.1引腳通過兩個按鍵K1、K2接入中斷請求;P1.2、P1.3引腳作為I/O口使用,通過兩個按鍵K3、K4接入兩個輸入信號。4個按鍵功能的設(shè)計思路如下:圖3-5鍵盤與單片機(jī)的接口電路設(shè)計K1鍵功能:設(shè)置當(dāng)前時間,即當(dāng)電子時鐘的時間有誤差時,需要隨時對它進(jìn)行調(diào)整,使用K1鍵與K3鍵、K4鍵配合來完成這一功能、K2鍵功能:設(shè)置定時(鬧鐘)時間,即當(dāng)需要電子時鐘進(jìn)行定時(鬧鐘)服務(wù)時,可以通過該鍵的功能來輸入定時(鬧鐘)時間,使用K2鍵與K3鍵、K4鍵配合來完成這一功能。K3調(diào)整鍵功能:分別對時間值的小時十位、小時個位、分十位、分個位、秒十位、秒個位進(jìn)行+1調(diào)整,及該鍵沒按下一次,對應(yīng)的時間調(diào)整位+1。K4確認(rèn)鍵功能:確認(rèn),即對K3調(diào)整位進(jìn)行確認(rèn),該鍵按下時,說明被調(diào)整位的值已經(jīng)確定,轉(zhuǎn)去調(diào)整下一位。3.4蜂鳴器電路3.4.1蜂鳴器介紹蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機(jī)、打印機(jī)、復(fù)印機(jī)、報警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。本設(shè)計使用的是電磁式蜂鳴器。此外,蜂鳴器還有有源蜂鳴器與無源蜂鳴器的區(qū)別。注意這里的“源”不是指電源,而是指震蕩源。也就是說,有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會叫;而無源內(nèi)部不帶震蕩源,所以如果用直流信號無法令其鳴叫,必須用2K-5K的方波去驅(qū)動它。本設(shè)計使用的是有源蜂鳴器如圖3-6是其引腳尺寸圖。圖3-6蜂鳴器引腳尺寸圖3.4.2蜂鳴器電路設(shè)計由于蜂鳴器工作時,需要的電流比較大,單片機(jī)的IO口輸出的電流又比較小,所以這里利用三極管的開關(guān)管功能來控制蜂鳴器發(fā)音,本設(shè)計選用的三極管型號是PNP三極管S8550,而且本設(shè)計選用的蜂鳴器屬于有源蜂鳴器,即在蜂鳴器內(nèi)部已經(jīng)內(nèi)置了震蕩電路,單片機(jī)無需連續(xù)發(fā)出高低電平來驅(qū)動它,而只要輸出高(或低)電平即可,這大大簡化了單片機(jī)程序的設(shè)計。由于選用的是PNP型而單片機(jī)上電IO口默認(rèn)是高電平的,所以上電時蜂鳴器是不會發(fā)出鳴叫的。如圖3-6是蜂鳴器電路。圖3-7蜂鳴器電路4軟件設(shè)計4.1軟件總設(shè)計進(jìn)行應(yīng)用軟件設(shè)計時可采用模塊化程序設(shè)計方法,其優(yōu)點是:每個模塊的程序結(jié)構(gòu)簡單,任務(wù)明確,易于編寫、調(diào)試和修改。程序可讀性好,對程序的修改可局部進(jìn)行,其他部分可以保持不變,便于功能擴(kuò)充和版本升級。對于使用頻繁的子程序可以建立子程序庫,便于多個模塊調(diào)用。根據(jù)設(shè)計要求,首先要確定軟件設(shè)計方案,即確定該軟件應(yīng)該完成哪些功能;其次是規(guī)劃為了完成這些功能需要分成多少個功能模塊,以及每一個程序模塊的具體任務(wù)是什么。模塊的劃分有很大的靈活行,但也不能隨意劃分。劃分模塊時應(yīng)遵循下述原則:每個模塊應(yīng)具有獨立的功能,能產(chǎn)生一個明確的結(jié)果。模塊之間的控制參數(shù)應(yīng)盡量簡單,數(shù)據(jù)參數(shù)應(yīng)盡量少??刂茀?shù)是指模塊進(jìn)入和退出的條件及方式,數(shù)據(jù)參數(shù)是指模塊間的信息交換(傳遞)方式、交換量的多少級交換的頻繁程度。模塊長度適中。模塊語句的長度通常在20~100條較合適。模塊太長時,分析和調(diào)試比較困難,失去了模塊化程序機(jī)構(gòu)的優(yōu)越性;模塊太短則信息交換太頻繁,也不合適。圖4-1主流程圖主流程圖如圖4-1所示。本次的設(shè)計主程序是根據(jù)每個模塊的特性來進(jìn)行編寫,先對各個模塊進(jìn)行初始化,然后再按照各自不同來分模塊編寫,最后得出總的流程圖。進(jìn)入程序后,先將單片機(jī),數(shù)碼管,按鍵等進(jìn)行初始化,數(shù)碼管顯示固定數(shù)值“14-00-00”,程序開始等待按鍵按下,當(dāng)有按鍵按下,單片機(jī)檢測一次,確定按下,單片機(jī)調(diào)用程序,同時數(shù)碼管刷新一次,顯示當(dāng)前操作結(jié)果。完后,程序返回按鍵等待,如此循環(huán)執(zhí)行。核心代碼如下:while(1) { if(timenum2==0) { if(timenum1==0) { if(dec==0) //減鍵按下 { delay(); delay(); if(dec==0) { while(!dec);//松手檢測 alfl=0; speaker=1; } } } }}4.2LED數(shù)碼管顯示程序設(shè)計顯示子程序每次顯示8個連續(xù)內(nèi)存單元的十進(jìn)制BCD碼數(shù)據(jù)。由于采用7段共陽LED數(shù)碼管動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示,顯示十進(jìn)制BCD碼數(shù)據(jù)對應(yīng)段碼存放在ROM中。顯示時取內(nèi)存地址中數(shù)據(jù),然后查表得對應(yīng)顯示段碼從P0口輸出,P2口將為對應(yīng)的數(shù)碼管供電,于是數(shù)碼管就會顯示該地址單元的數(shù)據(jù)。流程圖如圖4-2所示。圖4-2LED數(shù)碼管顯示流程圖核心代碼如下:voiddisplay(void){P0=led[hour/10];//p0口送數(shù)據(jù)拆數(shù)顯示 P2=0xFE; //片選 delay(); //延時 P2=0xff; //片選關(guān) 1 P0=led[hour%10]; P2=0xfd; //2 delay(); P2=0xFF; P0=0x40; P2=0xfb; //3 delay(); P2=0xFF;...}4.3按鍵程序設(shè)計本次設(shè)計采用獨立鍵盤,鍵盤按下時,相應(yīng)的I/O口電平由高變低,一次檢測按鍵是否被按下。具體流程如圖4-3所示。圖4-3按鍵流程圖核心代碼:voidKeykonzhi(){ if(time==0) //鍵盤時間設(shè)定鍵按下 { delay(); delay(); if(time==0) { while(!time); timenum1++; //標(biāo)記++ TR1=0; f2=0; } }...}5電子時鐘的調(diào)試5.1單片機(jī)調(diào)試仿真軟件單片機(jī)開發(fā)及涉及硬件和軟件。本文主要分析軟件調(diào)試所用的工具KeiluVision。該工具版本眾多,本系統(tǒng)軟件選擇的開發(fā)版本是KeiluVision4。,我們現(xiàn)在接觸到的單片機(jī)主要是51/52系統(tǒng)的單片機(jī),這完全適用于KeiluVision4。通過該軟件可以完成代碼的編輯,編譯,調(diào)試和仿真。在進(jìn)行調(diào)試過程中可以斷點調(diào)試,此項功能非常的強(qiáng)大,有助于找到代碼中存在BUG。Keil有兩個開發(fā)平臺,本系統(tǒng)采用的是keilfor51平臺。本系統(tǒng)的軟件調(diào)試環(huán)境如圖5-1所示。圖5-1軟件調(diào)試環(huán)境KeiluVision本文電路仿真調(diào)試采用的是Proteus。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大,是目前世界上最先進(jìn)、最完整的嵌入式系統(tǒng)設(shè)計與仿真平臺,可以實現(xiàn)數(shù)字電路、模擬電路及微控制器系統(tǒng)與外設(shè)的混合電路系統(tǒng)的電路仿真、軟件仿真、系統(tǒng)協(xié)同仿真和PCB設(shè)計等功能,是目前唯一能夠?qū)Ω鞣N處理器進(jìn)行實時仿真、調(diào)試與測試的EDA工具。該軟件支持眾多不同公司的芯片。圖5-2是硬件調(diào)試軟件。圖5-2硬件調(diào)試軟件Proteus7.55.2電子時鐘的仿真及調(diào)試軟件測試工具使用的是KEIL,在完成代碼的編寫后,可以使用KEIL進(jìn)行開展編譯工作。在編寫代碼時,需要進(jìn)行模塊化設(shè)計,這樣有助于對單個子程序進(jìn)行測試。當(dāng)單個模塊子程序完成測試沒有問題以后,就可以開始下一個子程序的調(diào)試。當(dāng)所有的子程序完成測試以后再進(jìn)行主程序的程序,在確定所有程序沒有問題以后,生成能用于仿真軟件使用的源文件。仿真軟件使用的是的ISIS軟件,該軟件是針對單片機(jī)仿真的得力助手。當(dāng)本系統(tǒng)進(jìn)行仿真時,點擊仿真按鈕,整個仿真電路開始運行,此時進(jìn)行每個功能的測試即可。如果點擊按鈕之后仿真電路出現(xiàn)異常,此時再逐一檢查仿真電路設(shè)計正確與否。5.2.1單片機(jī)最小系統(tǒng)調(diào)試對于51系列單片機(jī)的軟件開發(fā),傳統(tǒng)的方法是在PC機(jī)上采用Keil等開發(fā)工具進(jìn)行程序設(shè)計、編譯、調(diào)試,待程序調(diào)試通過之后生成目標(biāo)文件下載至單片機(jī)硬件電路再進(jìn)行硬件調(diào)試。這種方法只有硬件電路完成之后才能進(jìn)行系統(tǒng)功能測試,若此時發(fā)現(xiàn)硬件電路存在設(shè)計問題且必須進(jìn)行修改時就會顯著影響系統(tǒng)開發(fā)的成本和周期。為此,本文采用了系統(tǒng)軟硬件協(xié)同仿真的開發(fā)方法,使得硬件電路實現(xiàn)前的功能測試成為可能。同時硬件電路的軟件化仿真為硬件電路的設(shè)計與實現(xiàn)提供了有力的保障。如圖5-3所示是仿真電路中對單片機(jī)進(jìn)行仿真測試。圖5-3單片機(jī)最小系統(tǒng)調(diào)試5.2.2按鍵控制調(diào)試按鍵電路通過89C51單片機(jī)P1口組成的具有4個按鍵的獨立式鍵盤。從設(shè)計電路中可看出,獨立式鍵盤的各個按鍵之間彼此是相互獨立的,每一個按鍵連接一根I/O口線。獨立式鍵盤電路簡單,調(diào)試也比較方便,只需要對每個按鍵單獨測試就可以。對按鍵模塊程序進(jìn)行調(diào)試,首先采用延時程序來消除按鍵時產(chǎn)生的抖動延時,在設(shè)置延時程序后,調(diào)試如果沒有問題,說明按鍵延時程序添加沒有問題,如果出現(xiàn)問題,再講延時時間修改3-5ms。本系統(tǒng)按鍵共有4個,通過程序檢測每個按鍵的功能,按鍵閉合穩(wěn)態(tài)時間由操作人員的按鍵時間決定,一般為零點幾秒到幾秒之間,然后判斷按鍵功能是否能夠?qū)崿F(xiàn),能夠通過調(diào)節(jié)程序?qū)崿F(xiàn)每個按鍵該有的功能。如圖5-4所示,對“時”進(jìn)行按鍵調(diào)試。圖5-4按鍵控制調(diào)試5.2.3數(shù)碼管顯示模塊調(diào)試數(shù)碼管顯示模塊調(diào)試相對較為復(fù)雜,涉及到其驅(qū)動程序設(shè)計??梢圆捎每刂谱兞康姆椒▉斫鉀Q問題,首先要確定問題出在哪里。之前是否正常工作過?還是從來沒有調(diào)通?從硬件入手分析,電路板是自己焊機(jī)的萬用板還是買的開發(fā)板,如果是自己焊接的,就要測試連線是否到位,開發(fā)板就不用測試了。然后測試程序,先找一個確定可以使用的程序來測試顯示。這樣的程序網(wǎng)上很多。一般要注意的問題就是引腳的物理鏈接和程序里面是否對應(yīng)。還有就是背光部分和對比度,這個調(diào)試不好的,是不能顯示的。數(shù)碼管液晶顯示屏數(shù)據(jù)顯示通過程序來實現(xiàn),查看按下的檔位顯示是否與實際時間相符。如圖5-5所示,對數(shù)碼管模塊進(jìn)行調(diào)試。圖5-5數(shù)碼管顯示模塊調(diào)試5.3整機(jī)的仿真及調(diào)試硬件調(diào)試要比軟件測試費時短一些。硬件調(diào)試一目了然,當(dāng)給電路版上電之后,能直觀的看到電路中各硬件模塊是否正常工作。如果出現(xiàn)異常,根據(jù)原理圖分析異??赡芩诘奈恢茫缓笫褂萌f用表測量可能出現(xiàn)異常的部位。當(dāng)沒有找到問題所在,就其異常相關(guān)的電路進(jìn)行排查。如圖5-6所示是對按鍵及數(shù)碼管顯示的調(diào)試。圖5-6按鍵及數(shù)碼管顯示的調(diào)試硬件電路板進(jìn)行檢查時,首先檢查電路中的正負(fù)極是否存在問題。當(dāng)確定電源的正負(fù)極沒有異常后,再檢查各個引腳的連接線是否有松動或者斷開的情況,特別是各元器件與單片機(jī)連接的引腳要重點檢查。雖然在電路圖或者仿真圖中可以將晶振芯片隨意的擺放,但是在實際的實物焊接過程中需要注意晶振電路要和單片機(jī)緊密的靠近,這樣才不會產(chǎn)生更多的誤差,降低單片機(jī)工作異常的概率。硬件調(diào)試完成實物的重要環(huán)節(jié),因此應(yīng)當(dāng)重視焊接過程,才能獲得滿意的作品。結(jié)論1、實現(xiàn)了的功能通過這次設(shè)計使自己對單片機(jī)的應(yīng)用得到了更深的認(rèn)識,特別是仿真軟件的使用,時鐘程序的開發(fā),數(shù)碼管顯示系統(tǒng)設(shè)計,單片機(jī)接口設(shè)計,如何選型,怎么樣使用單片機(jī)計時功能等都有了更好的提升。知道如何提升自己在單片機(jī)方面欠缺點,有利于日后在單片機(jī)學(xué)習(xí)中查漏補(bǔ)缺。數(shù)字時鐘系統(tǒng)采用C語言編程,用單片機(jī)控制整個數(shù)字時鐘電路,此次設(shè)計困難在于輔助電路的融合,比如說將LED和單片機(jī)怎么才能有效的連接在一起。本次使用時鐘信息的獲取主要依靠單片機(jī)內(nèi)部時鐘,設(shè)計的最終結(jié)果實現(xiàn)了年月日星期時分秒的顯示,并且能設(shè)定鬧鐘。2、已經(jīng)考慮到的問題,由于諸多原因沒有實現(xiàn)的本系統(tǒng)沒有實現(xiàn)掉電保存功能。如果突然斷電,本系統(tǒng)沒有掉電保存功能,重新啟動之后,系統(tǒng)設(shè)定的鬧鐘信息就會丟失。因此在后續(xù)設(shè)計中可以增加24C02芯片,信息會存在該芯片中,即使斷電,鬧鐘信息也不會丟失。參考文獻(xiàn)1潘曉利.基于S3C2440A的多功能電子時鐘的設(shè)計與實現(xiàn)[J].電子技術(shù),2016,45(2).2王磊.無線網(wǎng)絡(luò)電子時鐘軟件設(shè)計與實現(xiàn)[J].無線互聯(lián)科技,2016(4):13-14.3潘曉利.基于ARM9的電子時鐘萬年歷的設(shè)計與實現(xiàn)[J].電子技術(shù),2016(7).4龐斯棉.嵌入式電子時鐘系統(tǒng)的設(shè)計與實現(xiàn)[J].電子測試,2015(6):31-33.5李明娟.基于單片機(jī)和手機(jī)WiFi的遙控電子時鐘設(shè)計[J].濱州學(xué)院學(xué)報,2016,32(4):84-87.6陳啟武,白天蕊.基于Proteus仿真實現(xiàn)數(shù)字電子時鐘的設(shè)計[J].西安職業(yè)技術(shù)學(xué)院學(xué)報,2016(2):46-51.7毛瑋英.多功能電子時鐘設(shè)計[J].科技傳播,2016,8(7).8呂友懿,許建明,陳炯明.基于單片機(jī)的電子時鐘設(shè)計[J].電子世界,2016(9):31-31.9蔣清健,李存永.基于AT89S52單片機(jī)的日歷鐘的設(shè)計與實現(xiàn)[J].科學(xué)導(dǎo)報,2016(4).10黃志勇.基于單片機(jī)技術(shù)的智能化電子時鐘[J].通訊世界,2015(22):223-223.11胡彪,田亞菲.基于MSP430F149單片機(jī)的多功能電子時鐘設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2015(5):180-180.12謝海武,楊菊蘭,海生元,等.基于MSP430系列微處理器的高精度低功耗電子時鐘設(shè)計[J].青海師范大學(xué)學(xué)報(自科版),2015,31(1):36-40.13陳李仁,彭森.基于單片機(jī)的電子時鐘和顯示屏的設(shè)計[J].卷宗,2016(11).14王紅.基于51單片機(jī)的多功能電子時鐘時間校對功能的設(shè)計[J].商,2016(22):233-233.15楊祾.基于89C51時鐘電路的設(shè)計與制作[J].電子世界,2015(13):149-150.附錄A原理圖.附錄B仿真圖.附錄C源代碼#include<reg51.h>#definetl0xba;#defineth0x3c;sbittime=P1^0; //時間設(shè)置sbittimer=P1^1; //鬧鐘設(shè)置sbitadd=P1^2; //加sbitdec=P1^3; //減sbitspeaker=P3^6; //鬧鐘輸出 bitdisp_sd; //數(shù)碼管閃動顯示標(biāo)志位bitdisp_ms; //數(shù)碼管顯示時間/鬧鐘標(biāo)志位bitdisp_sdt; //數(shù)碼管閃動間隔反轉(zhuǎn)標(biāo)志位bit zhengdian=0; //整點報時標(biāo)志位unsignedcharcodeled[]={0xaf,0xa0,0xce,0xea,0xe1,0x6b,0x6f,0xa2,0xef,0xeb};//數(shù)字0-9的編碼unsignedchartime_cc,timer_cc,ml; //調(diào)時計數(shù)器unsignedcharcount0,com,count1,second,minit,hour; //時間時分秒unsignedintsecond1,minit1,hour1,yers,yers2,Months,days,ryears,daydata,Mothdata,dsfl,dsfg; //鬧鐘時分秒unsignedcharhour_zd; //整點小時記錄unsignedchartimenum1,timenum2,timenum3,f1,f2,st; unsignedintdsflg,timeval,timerval,addval,adcval,dayfl,alfl;voiddelay(void){ unsignedinti; for(i=0;i<100;i++);}voiddelay1(unsignedintk){ unsignedintx,y; for(x=0;x<k;x++) for(y=0;y<110;y++);}voiddisplay(void){ P0=led[hour/10];//p0口送數(shù)據(jù)拆數(shù)顯示 P2=0xFE; //片選 delay(); //延時 P2=0xff; //片選關(guān) 1 P0=led[hour%10]; P2=0xfd; //2 delay(); P2=0xFF; P0=0x40; P2=0xfb; //3 delay(); P2=0xFF; P0=led[minit/10]; P2=0x7f; //4 delay(); P2=0xFF; P0=led[minit%10]; P2=0xdf; //5 delay(); P2=0xFF; P0=0x40; P2=0xef; //6 delay(); P2=0xFF; P0=led[second/10]; P2=0xf7; //7 delay(); P2=0xFF; P0=led[second%10]; P2=0xbF; //8 delay(); P2=0xFF; }voidKeykonzhi(){ if(time==0) //鍵盤時間設(shè)定鍵按下 { delay(); delay(); if(time==0) { while(!time); timenum1++; //標(biāo)記++ TR1=0; f2=0; } } if(timenum1==1) //如果timenum1==1調(diào)時 { dsflg=0; st=0; if(add==0) //加鍵按下 { delay(); delay(); if(add==0) { while(!add);//松手檢測 hour++; //小時++ } } if(dec==0) //減鍵按下 { delay(); delay(); if(dec==0) { while(!dec);//松手檢測 hour--; //小時-- } } if(hour>23) //限位 {hour=0;} P0=led[hour/10];//顯示小時函數(shù) P2=0xfe; delay(); P2=0xFF; P0=led[hour%10];//顯示小時函數(shù) P2=0xfd; delay(); P2=0xFF; } if(timenum1==2) ////如果timenum1==2調(diào)分//以下也是和調(diào)時一樣的方法 { dsflg=0; st=0; if(add==0) { delay(); delay(); if(add==0) { while(!add); minit++; } } if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); minit--; } } if(minit>59) {minit=0;} P0=led[minit/10]; P2=0x7f; delay(); P2=0xFF; P0=led[minit%10]; P2=0xdf; delay(); P2=0xFF; } if(timenum1==3) ////如果timenum1==3調(diào)秒 { dsflg=0; st=0; if(add==0) { delay(); delay(); if(add==0) { while(!add); second++; } } if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); second--; } } if(second>59) {second=0;} P0=led[second/10]; P2=0xf7; delay(); P2=0xFF; P0=led[second%10]; P2=0xbf; delay(); P2=0xFF; } if(timenum1==4) ////如果timenum1==4退出 { TR1=1; timenum1=0; dsflg=1; f2=1; st=1; }}voidalmset(){ timenum1=0; if(timer==0)//鍵盤上的鬧鐘鍵按下 { delay(); delay(); if(timer==0) { while(!timer);//松手 timenum2++; //標(biāo)記++ f1=0; } } if(timenum2==1) //如果timenum2=1設(shè)定腦鐘的小時 { dsflg=0; st=0; if(add==0) //加鍵按下 { delay(); delay(); if(add==0) { while(!add);//松手 hour1++; //小時++ } } if(dec==0) //減鍵按下 { delay(); delay(); if(dec==0) { while(!dec);//松手 hour1--;//小時-- } } if(hour1>23)//限位 {hour1=0;} P0=led[hour1/10];//小時顯示 P2=0xFE; delay(); P2=0xFF; P0=led[hour1%10]; P2=0xFD; delay(); P2=0xFF; P0=0xe7; //顯示A P2=0xf7; delay(); P2=0xFF; P0=0x0d; //顯示L P2=0xbf; delay(); P2=0xFF; } if(timenum2==2) //如果timenum2=1設(shè)定腦鐘的分鐘和上面小時一樣 { dsflg=0; st=0; if(add==0) { delay(); delay(); if(add==0) { while(!add); minit1++; } } if(dec==0) { delay(); delay(); if(dec==0) { while(!dec); minit1--; } } if(minit1>59) {minit1=0;} P0=led[minit1/10]; P2=0x7f; delay(); P2=0xFF; P0=led[minit1%10]; P2=0xdf; delay(); P2=0xFF; P0=0xe7; P2=0xf7; delay(); P2=0xFF;

溫馨提示

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

評論

0/150

提交評論