萬年歷單片機(jī)_第1頁
萬年歷單片機(jī)_第2頁
萬年歷單片機(jī)_第3頁
萬年歷單片機(jī)_第4頁
萬年歷單片機(jī)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.z單片機(jī)萬年歷設(shè)計(jì)報(bào)告題目:基于51單片機(jī)萬年歷設(shè)計(jì)院〔系〕:機(jī)械與電子工程學(xué)院班級:09應(yīng)用電子技術(shù)2班學(xué)生名:指導(dǎo)教師:時(shí)間:2011--.z目錄摘要1第一章緒論3第二章設(shè)計(jì)要求與方案論證42.1設(shè)計(jì)要求42.1.1根本要求4發(fā)揮局部42.2系統(tǒng)根本方案選擇和論證52.2.1芯片的選擇52.2.2顯示模塊選擇方案和論證52.2.3時(shí)鐘信號的選擇方案和論證62.3電路設(shè)計(jì)最終方案決定6第三章系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)73.1萬年歷電路設(shè)計(jì)框圖73.2系統(tǒng)硬件概述73.3硬件電路構(gòu)造的設(shè)計(jì)83.3.1單片機(jī)主控制模塊的設(shè)計(jì)83.3.2顯示模塊的設(shè)計(jì)8時(shí)間調(diào)整電路的設(shè)計(jì)103.3.4主控芯片原理及其說明103.3.5復(fù)位電路的選擇13第四章系統(tǒng)的軟件設(shè)計(jì)14第五章系統(tǒng)調(diào)試165.1軟件調(diào)試165.2硬件調(diào)試165.3實(shí)物調(diào)試16結(jié)論17設(shè)備選擇18參考文獻(xiàn)18附錄19-.z摘要萬年歷是對年、月、日、周、時(shí)、分、秒,數(shù)字顯示及到時(shí)提醒的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站,碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的開展和石英晶體振蕩器的廣泛應(yīng)用,使得萬年歷的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便。最常見的數(shù)字鐘通常使用單片機(jī)模塊控制,一種用單片機(jī)原理實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。本次設(shè)計(jì)就是通過用單片機(jī)為主控制,通過電路仿真而實(shí)現(xiàn)。首先使用Proteus7Professional軟件進(jìn)展繪制硬件電路圖,用keil軟件進(jìn)展編程與調(diào)試,最終生成he*文件,傳入單片機(jī)內(nèi)部,從而實(shí)現(xiàn)仿真效果。此次設(shè)計(jì)的萬年歷具有顯示年、月、日、周、時(shí)、分、秒及對各日期與時(shí)間的調(diào)整、校正功能。整個(gè)時(shí)鐘通過簡易的鍵盤來實(shí)現(xiàn)各個(gè)功能,界面簡潔、直觀、易于操作。關(guān)鍵詞:萬年歷、仿真、單片機(jī)、Proteus7Professional、keilAbstractCalendaristheyear,month,day,week,hours,minutes,seconds,digitaldisplayandtoremindthetimingdevice,widelyusedforpersonalfamily,stations,terminalsandotherpublicplaces,theofficehasbeeessentialdailynecessitiesoflife

,becausethedevelopmentofdigitalintegratedcircuitsandthee*tensiveapplicationofquartzcrystaloscillators,makingPrecisionofcalendar,farmorethanold-fashionedclocks,digitalwatchesandlivingtothepeoplehasbroughtgreatconvenience.

Themostmonsinglechipmodulestypicallyusedigitalclockcontrol,atheorywithasinglechiptoachievethehours,minutes,seconds,timingdevices,paredwiththemechanicalclockhasahigheraccuracyandintuitive,andnomechanicaldevices,withmoremore

longlife,ithasbeenwidelyused.

Thedesignisbyusingamicrocontroller-basedcontrol,achievedthroughcircuitsimulation.

Proteus7Professionalsoftwareisthefirsttousethehardwarecircuitdiagramdrawnusingkeilsoftwareprogramminganddebuggingtheresultinghe*file,theininginternalmicrocontroller,inordertoachievesimulationresults.

Thedesignofthecalendarwithshowsyear,month,day,week,hours,minutes,secondsanddateandtimeofeachadjustment,calibration.

Theclockthroughasimplekeyboardtorealizevariousfunctions,theinterfacesimple,intuitive,easytooperate.Keywords:calendar,simulation,singlechip,Proteus7Professional,keil第一章緒論20世紀(jì)末,單片機(jī)技術(shù)獲得了飛速的開展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透了社會(huì)的各個(gè)領(lǐng)域,有力地推動(dòng)了社會(huì)生產(chǎn)力的開展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來越快。時(shí)間對人們來說總是則珍貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。目前,單片機(jī)正朝著高性能和多品種方向開展趨勢將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面開展。下面是單片機(jī)的主要開展趨勢。單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大局部功能,現(xiàn)在已能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù),是傳統(tǒng)控制技術(shù)的一次革命。單片機(jī)模塊中最常見的是萬年歷,萬年歷是一種用單片機(jī)原理實(shí)現(xiàn)年、月、日、周、時(shí)、分、秒,計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。萬年歷是采用單片機(jī)原理實(shí)現(xiàn)對年、月、日、周、時(shí)、分、秒,數(shù)字顯示及到時(shí)提醒的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站,碼頭辦公室等公共場所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?由于數(shù)字集成電路的開展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)播送、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為根底的。因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。第二章設(shè)計(jì)要求與方案論證2.1設(shè)計(jì)要求根本要求〔1〕在不采用專用時(shí)鐘模塊的前提下,設(shè)計(jì)并制作萬年歷?!?〕準(zhǔn)確顯示:時(shí)、分、秒〔24小時(shí)制〕〔3〕顯示星期〔4〕顯示公歷〔5〕時(shí)間、日期、星期可調(diào)節(jié)〔6〕斷電記憶功能發(fā)揮局部〔1〕鬧鐘功能〔2〕顯示陰歷〔3〕顯示24節(jié)氣〔4〕其他2.2系統(tǒng)根本方案選擇和論證本時(shí)鐘的設(shè)計(jì)具體有兩種方法。一是通過單純的數(shù)字電路來實(shí)現(xiàn);二是使用單片機(jī)來控制實(shí)現(xiàn)。本次設(shè)計(jì)選取了較為簡單的單片機(jī)控制;而選擇這一方法后還要進(jìn)展各個(gè)芯片的選擇。以下是我在這次設(shè)計(jì)中所用的方案。芯片的選擇方案一:采用AT89C51芯片,其為高性能CMOS8位單片機(jī),該芯片內(nèi)含有4kbytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器〔PEROM〕、128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM〕、32位可編程I/O口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、6個(gè)中斷源、可編程串行UART通道及低功耗空閑和掉電模式,但是由于AT89C51芯片可擦寫的空間不夠大,且中斷源提供的較小,為防止運(yùn)行過程中出現(xiàn)不必要的問題,我們不選用AT89C51。方案二:采用AT89C52芯片,它除了具備AT89C51的所有功能與部件外,其最大的優(yōu)勢就是AT89C52提供了8K字節(jié)可擦寫Flash閃速存儲(chǔ)器空間、8個(gè)中斷源、及256*8字節(jié)內(nèi)部存儲(chǔ)器〔RAM〕,解決了我們對可反復(fù)擦寫的Flash閃速存儲(chǔ)器空間大小與中斷源的不夠問題的擔(dān)憂。顯示模塊選擇方案和論證方案一:采用LED數(shù)碼管顯示,顯示較為清楚,且經(jīng)濟(jì)實(shí)惠,直觀易懂,且在軟件實(shí)現(xiàn)上也較容易,為實(shí)現(xiàn)其功能也比擬容易。方案二:采用LCD,電路比擬簡單,雖然在軟件設(shè)計(jì)上也相對簡單,具有低功耗功能,但程序比擬繁瑣,難以設(shè)計(jì)。因此,在設(shè)計(jì)中我采用的顯示模塊是LED數(shù)碼管顯示。時(shí)鐘信號的選擇方案和論證方案一:直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供的秒信號,使用程序?qū)崿F(xiàn)年、月、日、周、時(shí)、分、秒計(jì)數(shù)。采用此種方案可減少芯片的使用,節(jié)約本錢,實(shí)現(xiàn)的時(shí)間誤差較小,在軟件中比擬容易仿真,但程序設(shè)計(jì)較為復(fù)雜。方案二:采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)展計(jì)數(shù),而且精度高,256位的RAM作為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V*圍內(nèi),2.5V時(shí)耗電小于300nA。且硬件電路連接較為簡單,程序設(shè)計(jì)容易實(shí)現(xiàn)。2.3電路設(shè)計(jì)最終方案決定綜上各方案所述,并且經(jīng)過我們隊(duì)友的多番討論,對此次萬年歷的方案選定為:采用AT89C52作為主控制系統(tǒng);并由單片機(jī)定時(shí)計(jì)數(shù)器直接提供時(shí)鐘的秒信號;LED數(shù)碼管作為顯示電路,來實(shí)現(xiàn)本次設(shè)計(jì)的所有功能。第三章系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)3.1萬年歷電路設(shè)計(jì)框圖晶振電路開關(guān)調(diào)整時(shí)間局部單片機(jī)晶振電路開關(guān)調(diào)整時(shí)間局部單片機(jī)AT89C51四位數(shù)碼管顯示局部數(shù)碼管段選局部四位數(shù)碼管顯示局部數(shù)碼管段選局部復(fù)位電路復(fù)位電路三八譯碼器,擴(kuò)展位選局部三八譯碼器,擴(kuò)展位選局部圖〔3-1〕電路設(shè)計(jì)框圖3.2系統(tǒng)硬件概述本設(shè)計(jì)用AT89C51作為核心控制局部,具有在線編程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路也由AT89C52單片機(jī)提供,減少芯片的使用,節(jié)約本錢,它可以對年、月、日、周、日、時(shí)、分、秒進(jìn)展計(jì)時(shí),具有閏年補(bǔ)償功能。外接晶振電路與復(fù)位電路,74LS138作為位選擴(kuò)展電路,P0口接七個(gè)開關(guān)作為時(shí)間調(diào)整局部,以兩個(gè)四位數(shù)碼管作為顯示局部,開關(guān)控制顯示時(shí)間與日期,P2口作為段選,P1口作為位選局部。具體框圖如圖〔3-1〕所示。3.3硬件電路構(gòu)造的設(shè)計(jì)單片機(jī)主控制模塊的設(shè)計(jì)此次單片機(jī)數(shù)字時(shí)鐘的設(shè)計(jì)采用AT89C52為主控制芯片,并由其定時(shí)器提供時(shí)鐘,利用LED數(shù)碼管進(jìn)展時(shí)間按顯示。下列圖為用Proteus軟件畫的總原理圖:圖〔3-3-1〕仿真總電路圖顯示模塊的設(shè)計(jì)LED數(shù)碼管分為共陰和共陽兩種,以利用AT89C51的P2口作為LED顯示的段選局部,以P1口的P1.0、P1.1、P1.2、三個(gè)口作為顯示局部的位選,通過三八譯碼器擴(kuò)展為八位的位選分別接在兩個(gè)四位數(shù)碼管的位選局部。詳細(xì)電路圖如〔3-3-2〕兩圖所示:圖〔3-3-2〕時(shí)間顯示圖〔3-3-2〕月份顯示時(shí)間調(diào)整電路的設(shè)計(jì)采用按鍵設(shè)計(jì),獨(dú)立式按鍵直接與單片機(jī)I/O口相連構(gòu)成鍵盤,每個(gè)按鍵不會(huì)相互影響,按下時(shí)間/星期鍵兩個(gè)四位數(shù)碼管顯示時(shí)間和星期,按下年/月/日鍵兩個(gè)數(shù)碼管顯示日期,按下調(diào)整鍵可以對時(shí)間和日期進(jìn)展調(diào)節(jié),值加鍵表示加,值減鍵表示減,換位表示選擇所要調(diào)節(jié)的位置,確認(rèn)按鍵按下,時(shí)間調(diào)節(jié)完畢。所連線路和單片機(jī)接口仿真圖如圖3所示:圖〔3-3-3〕按鍵電路主控芯片原理及其說明1主控制芯片AT89C52的原理及說明AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8kbytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器〔PEROM〕和藹可親256bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器〔RAM〕,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器〔CPU〕和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場合。圖(3-3-4)AT89C52引腳2主要性能參數(shù):與MCS-51產(chǎn)品指令和引腳完全兼容8k字節(jié)可重擦寫Flash閃速存儲(chǔ)器1000次擦寫周期全靜態(tài)操作:0Hz—24MHz三級加密程序存儲(chǔ)器256×8字節(jié)內(nèi)部RAM32個(gè)可編程I/O口線3個(gè)16位定時(shí)/計(jì)數(shù)器8個(gè)中斷源可編程串行UART通道低功耗空閑和掉電模式3引腳功能Vcc(40):電源電壓GND(20):接地P0口(32-39):P0口是一個(gè)8位雙向I/O接口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對端口P0寫“1”P1口(1-8):P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(dòng)〔吸收或輸出電流〕4個(gè)TTL邏輯門電路,對端口寫“1”通過內(nèi)部的上拉電阻把端口拉到高電平時(shí),此時(shí)可作輸入口。作為輸入品使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,*個(gè)引腳被外部信號拉低時(shí)會(huì)輸出一個(gè)電流。與AT89C51不同之處是,P1.0和P1.1還可以分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2〕P2口(21-28):P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(dòng)〔吸收或輸出電流〕4個(gè)TTL邏輯門電路,對端口P2寫“1”P3口(10-17):P3是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,P3口輸出緩沖級可驅(qū)動(dòng)〔吸收或輸出電流〕4個(gè)TTL邏輯門電路,對端口P3寫“1”端口引腳第二功能P3.0R*D〔串行輸入口〕P3.1T*D〔串行輸出口〕P3.2INT0〔外中斷0〕P3.3INT1〔外中斷1〕P3.4T0〔定時(shí)/計(jì)數(shù)器0〕P3.5T1〔定時(shí)/計(jì)數(shù)器1〕P3.6WR〔外部數(shù)據(jù)存儲(chǔ)器寫通道〕P3.7RD〔外部數(shù)據(jù)存儲(chǔ)器讀通道〕表3-3-4P3口的第二功能RST(9):復(fù)位信號輸入端。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。ALE/PROG(30):地址鎖存有效信號輸出端。當(dāng)片外程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE〔地址鎖存允許〕輸出脈沖用于鎖存地址的低8位字節(jié),一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時(shí)鐘或用于定時(shí)目的,要注意的是:每當(dāng)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。PSEN(29):程序存儲(chǔ)允許輸出端。是片外程序存儲(chǔ)器的讀選通信號,當(dāng)AT89C52由外部程序存儲(chǔ)器取指令〔或數(shù)據(jù)〕時(shí),每個(gè)周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號。EA/VPP(31):外部允許。欲使CPU僅外部程序存儲(chǔ)器〔地址為0000H—FFFFH〕,EA端必須保持低電平〔接地〕,需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖EA端狀態(tài)。如EA端為高電平〔接Vcc端〕,CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。*TAL1(19):振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。*TAL1(18):振蕩器反相放大器的輸出端。通過*TAL1、*TAL2外接晶振后,即可構(gòu)成自激振蕩器,驅(qū)動(dòng)內(nèi)部時(shí)鐘發(fā)生器向主機(jī)提供時(shí)鐘信號。4特殊功能存放器在AT89C52片內(nèi)存儲(chǔ)器中,80H-FFH共128個(gè)單元為特殊功能存放器〔SFR〕,其中包括B存放器、累加器、程序狀態(tài)存放器〔PSW〕、定時(shí)/計(jì)數(shù)器控制、中斷優(yōu)級控制存放器〔IP〕、P3口鎖存存放器、中斷允許控制存放器〔IE〕、串行口控制存放器等。它們可運(yùn)用來設(shè)置片內(nèi)電路的運(yùn)行方式,記錄電路的運(yùn)行狀態(tài),MCS-51單片機(jī)對特殊功能存放器采取與片內(nèi)RAM統(tǒng)一編址的方法,可按字節(jié)地址直接尋址。在已有的根底上AT89C52與AT89C51相比還提供了兩個(gè)定時(shí)/計(jì)數(shù)器。定時(shí)/計(jì)數(shù)器2的控制和狀態(tài)位位于T2CON與T2MOD,該功能的數(shù)在自動(dòng)裝載的情況下可裝入到存放器中,提高了效率。復(fù)位電路的選擇目前為止,單片機(jī)復(fù)位電路主要有四種類型:〔1〕微分型復(fù)位電路;〔2〕積分型復(fù)位電路;〔3〕比擬器型復(fù)位電路:〔4〕看門狗型復(fù)位電路。方案一:采用手動(dòng)復(fù)位,該方法線路簡單。在系統(tǒng)運(yùn)行過程中,有時(shí)可能需要對系統(tǒng)進(jìn)展復(fù)位,以防止對硬件經(jīng)常加電或斷電而造成的傷害,我們可以采用手動(dòng)復(fù)位的方式。如圖3-3-5-1所示:圖3-3-5-1手動(dòng)上電復(fù)位電路方案二:阻容上電自動(dòng)復(fù)位電路,這種電路線路也簡單,它利用電容上電壓不能突變而是按指數(shù)規(guī)律上升或下降的特性,產(chǎn)生所需要的復(fù)位脈沖。優(yōu)點(diǎn):使用最為普遍且本錢低廉的復(fù)位電路。如圖3-3-5-2所示:圖3-3-5-2自動(dòng)復(fù)位電路總結(jié):這兩種方案對設(shè)計(jì)的影響其實(shí)差異不大,根據(jù)實(shí)驗(yàn)需要選擇方案一可手動(dòng)復(fù)位電路。第四章系統(tǒng)的軟件設(shè)計(jì)定時(shí)中斷恢復(fù)初值,保存定時(shí)中斷恢復(fù)初值,保存N開場N開場清顯示緩沖區(qū)中斷50ms加1清顯示緩沖區(qū)中斷50ms加1初始化定時(shí)計(jì)數(shù)器Y秒單元清零,60秒到N秒加1初始化定時(shí)計(jì)數(shù)器Y秒單元清零,60秒到N秒加1NY賦時(shí)鐘初值NY賦時(shí)鐘初值秒單元清零,60分到分加1開定時(shí)器秒單元清零,60分到分加1開定時(shí)器NY調(diào)整時(shí)間NY調(diào)整時(shí)間分單元清零,24小時(shí)到時(shí)加1分單元清零,24小時(shí)到時(shí)加1Y數(shù)碼管顯示當(dāng)前時(shí)鐘值勤Y數(shù)碼管顯示當(dāng)前時(shí)鐘值勤時(shí)單元清零時(shí)單元清零堆棧返回堆棧返回圖4-1程序框圖系統(tǒng)程序采用C語言按模塊化方式進(jìn)展設(shè)計(jì),然后通過KeilC51L軟件開發(fā)平臺(tái)將程序轉(zhuǎn)變成十六進(jìn)制程序語言,得到HE*文件,接著使用Proteous進(jìn)展仿真,得出仿真結(jié)果。系統(tǒng)程序主要包括主程序,讀出時(shí)鐘子程序、計(jì)算時(shí)間子程序、鍵盤掃描子程序和顯示數(shù)據(jù)刷新子程序。主程序流程圖如圖4-1所示。第五章系統(tǒng)調(diào)試5.1軟件調(diào)試翻開程序調(diào)試軟件keiluVision4,在里面新建一個(gè)工程,命名為:萬年歷.Uv2。接著新建文件,編寫相應(yīng)程序。編寫好的各個(gè)程序進(jìn)展編譯與連接。但假設(shè)是在該過程中,看見我們編好的程序有錯(cuò)誤,則就根據(jù)他相應(yīng)的提示來修改錯(cuò)誤,直到該程序能夠正確編譯為止。能夠正常編譯的程序說明沒有什么問題了,此時(shí)我們在點(diǎn)擊相關(guān)欄目,讓它生成我們在硬件仿真時(shí)所需要的.HE*文件。到此步,我們的軟件調(diào)試就完成了。5.2硬件調(diào)試翻開Proteus7Professional軟件,按照方案所選的電路元件來設(shè)計(jì)整體電路,線把個(gè)芯片按一定的位置放好,然后對相應(yīng)的對象進(jìn)展連接,連接時(shí)需仔細(xì),以免調(diào)試時(shí)發(fā)生錯(cuò)誤。做好之后把編程所生成的。HE*文件加載到AT89C52中,運(yùn)行仿真軟件,查看運(yùn)行效果。如果運(yùn)行出錯(cuò)則就根據(jù)他相應(yīng)的提示來修改錯(cuò)誤,直到仿真成功為止。5.3實(shí)物調(diào)試〔1〕按照電路圖在萬能板上焊好電路〔2〕給電路通上電源,翻開總電源開關(guān),LED顯示是否通電;〔3〕電路板上分別有復(fù)位、日期、時(shí)間、調(diào)整、加、減、選位和確定按鍵,可以對時(shí)間和日期進(jìn)展任意的調(diào)整;其中日期或時(shí)間按鍵按下,數(shù)碼管分別顯示日期和時(shí)間;調(diào)整按鍵按下表示對時(shí)間開場進(jìn)展調(diào)整,通過選位來確定所要調(diào)整的位置,分別可以加和減,最后確定按鍵按下表示時(shí)間調(diào)整完成?!?〕用兩個(gè)四位數(shù)碼管通過時(shí)間和日期按鍵來切換,可顯示時(shí)間和日期。結(jié)論通過本次設(shè)計(jì)的制作,我較為全面地回憶了所學(xué)的硬件知識與軟件知識。同時(shí),單片機(jī)原理與應(yīng)用及電子技術(shù)方面的相關(guān)知識,在這次設(shè)計(jì)中得到了較好地實(shí)踐。在本次設(shè)計(jì)中我也學(xué)到了很多東西,比方說:我們更好地掌握了Proteus7Professional軟件進(jìn)展硬件原理圖的繪制、利用KILE軟件對我設(shè)計(jì)的程序的檢查與生成.HE*文件及遇到問題怎么解決等。首先,在這次設(shè)計(jì)中,在我們遇到過很多我們自己不理解的問題及書本上或是我以前沒有看見過的知識點(diǎn)。在面對這些問題時(shí),我們首先采用的是上網(wǎng)搜尋的方法來查看別人是否和我們一樣遇到過相類似的問題,并且查看一下別人是怎樣解決這個(gè)問題的。當(dāng)別人有了解決它問題的方法時(shí),我們在根據(jù)別人的提示,想想自己的問題出在哪里,該怎么解決。當(dāng)我們還是無法想到解決的方法是,我們就帶著自己的問題到圖書館查閱資料,如果我們的問題還是沒有解決,我們就帶著問題去問我們的指導(dǎo)教師,讓他幫我解決。采用這樣的方法,我的很多問題都迎刃而解了!其次,就是在本次設(shè)計(jì)過程中,我不但努力解決自己遇到的問題,還積極幫助同學(xué)解決他們遇到的問題。這樣一來,我的知識得到了進(jìn)一步的穩(wěn)固,同學(xué)的問題也得到了相應(yīng)的解決,我到達(dá)的一舉雙收的效果,我為此而感到快樂。最后,讓我們覺得這次設(shè)計(jì)的最大成果是:我們知道了將理論用到實(shí)際中時(shí),會(huì)遇到很多的問題。因此,在此時(shí)我們一定要先沉著的找出問題出現(xiàn)的原因,在對癥下藥,來解決問題。我相信只要我們面對問題沉著、冷靜,我們的問題都會(huì)被解決。設(shè)備選擇本次實(shí)驗(yàn)所用設(shè)備如下表1所示:序號名稱型號、規(guī)格數(shù)量1四位十進(jìn)制數(shù)碼管*DSM420361K22上拉電阻A103J13電阻1K9個(gè)、10K1個(gè)、100歐2個(gè)124電容20PF、100UF、10UF45按鍵電源按鍵1個(gè)、其它按鍵9個(gè)106晶振12M17三八譯碼器74LS13818單片機(jī)座19單片機(jī)89C52RC110蜂鳴器111NPN112發(fā)光二極管113帶公共端的8電阻排RESPACK-82表1實(shí)驗(yàn)所用材料參考文獻(xiàn)王靜霞主編?單片機(jī)應(yīng)用技術(shù)〔C語言版〕?電子工業(yè)楊欣、王玉鳳?電子設(shè)計(jì)從零開場?清華大學(xué)邊春遠(yuǎn)、王志強(qiáng)?MCS-51單片機(jī)應(yīng)用開發(fā)實(shí)用子程序?人民郵電廖先蕓?電子技術(shù)實(shí)踐與實(shí)訓(xùn)?高等教育附錄主程序:*include<reg52.h>*include<intrins.h>unsignedcharcodeduanma[]={0*3F,0*6,0*5B,0*4F,0*66,0*6D,0*7D,0*7,0*7F,0*6F,0*40};//共陰的數(shù)碼管段選unsignedchardatatianshu[]={31,28,31,30,31,30,31,31,30,31,30,31};//每月的天數(shù)unsignedcharcodeweima[]={0*f8,0*f9,0*fa,0*fb,0*fc,0*fd,0*fe,0*ff};//位碼,控制74hc138unsignedintbdatanian=2011;//初始化時(shí)間unsignedchardatajianzhi=16,yue=05,ri=05,zhou=00,shi=21,fen=59,miao=56;unsignedchartshi=21,tfen=00,tmiao=05,t,t1,t2,t3,nri,nyue; //初始化鬧鐘unsignedchardatahuanwei=0;unsignedcharbdatacishu=0,cishu1=0,cishu2=0,cishu3=0,temp[8]={0}; bitt_or_d=0;//控制顯示時(shí)間還是日期標(biāo)志,只有8個(gè)數(shù)碼管所以只有分開顯示了bittiaozheng=0;//記錄調(diào)整按鈕的狀態(tài)bitkey_up=0;//按鍵抬起標(biāo)志sbitP00=P0^0; //按鍵分配sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitS=P1^3;sbitS1=P1^4;voiddelay();////////////////////主函數(shù)////////////////////////voidmain(){ P3=0*00; while(1) { voiddisplayt(); voidtdatet(); voiddisplayn(); void displayd(); voidnz(); //顯示鬧鐘 voiddisplay();//顯示temp的內(nèi)容;voiddelay();//軟件延時(shí)voiddis_time();//顯示時(shí)間voidcount_week();//計(jì)算*年月日是星期幾voiddis_date();//顯示日期bitrunian(unsignedint);//判斷閏年voidreadkey16();//16鍵盤掃描,鍵值保存在jianzhi中voidmanage_key();//給相應(yīng)按鍵賦予動(dòng)作 IE=0*82;//翻開定時(shí)器0中斷 TMOD=1;//讓定時(shí)器0工作在1方式 TH0=0*3C; TL0=0*1F;//時(shí)間常數(shù)50ms TR0=1; loop: count_week(); manage_key(); if(!t1) if(!t2) { if(t_or_d) dis_date();//顯示日期 else dis_time();//顯示星期和時(shí)間 } if(S==0) { t1=1; nz(); //顯示鬧鐘 } else S=0; if(cishu1==50) t1=0;////////////////////////////////////////////////////////// if(S1==0) { t1=1; tdatet(); } //調(diào)試區(qū) else t2=0;////////////////////////////////////////////////////////// gotoloop; }}///////////////////按鍵管理///////////////////////////////voidmanage_key(){readkey16();//讀取鍵值 if(jianzhi==0) t_or_d=0;if(jianzhi==1) t_or_d=1; if(jianzhi==2) { if(t_or_d==0)//調(diào)整時(shí)間時(shí)才關(guān)閉定時(shí)器 TR0=0; tiaozheng=1; huanwei=0;} if(key_up)//按鍵抬起后才做一次動(dòng)作{ delay(); if(key_up)///////////////////調(diào)整時(shí)間/鬧鐘/星期////////////////////////if(t_or_d==0&&tiaozheng==1)//在顯示時(shí)間狀態(tài)下調(diào)整時(shí)間{ if(jianzhi==15) { huanwei++;//在時(shí)、分、秒之間切換 if(huanwei==4) huanwei=0; }if(S==1&&tiaozheng==1) //在顯示鬧鐘狀態(tài)下調(diào)整鬧鐘 { t3=1; }if(huanwei==0&&S==1&&jianzhi==7) //響應(yīng)鬧鐘時(shí)加調(diào)整 { tshi++; if(tshi>=24) tshi=0; }if(huanwei==0&&S==1&&jianzhi==11) //響應(yīng)鬧鐘時(shí)減調(diào)整{ tshi--; if(tshi==0) tshi=24; } if(huanwei==1&&S==1&&jianzhi==7) //響應(yīng)鬧鐘分加調(diào)整 { tfen++; if(tfen>=60) tfen=0; }if(huanwei==1&&S==1&&jianzhi==11) //響應(yīng)鬧鐘分減調(diào)整 { tfen--; if(tfen==0) tfen=60; }if(huanwei==2&&S==1&&jianzhi==7) //響應(yīng)鬧鐘秒加調(diào)整 { tmiao++; if(tmiao>=60) tmiao=0;} if(huanwei==2&&S==1&&jianzhi==11) //響應(yīng)鬧鐘秒減調(diào)整 { tmiao--; if(tmiao==0) tmiao=60; }///////////////////調(diào)整時(shí)間////////////////////////////// if(!t3){ if(huanwei==0&&jianzhi==7)//響應(yīng)時(shí)加調(diào)整 { shi++; if(shi>=24)shi=0; } if(huanwei==0&&jianzhi==11)//響應(yīng)時(shí)減調(diào)整 { shi--; if(shi==0)shi=24; } if(huanwei==1&&jianzhi==7)//響應(yīng)分加調(diào)整 { fen++; if(fen>=60)fen=0; }if(huanwei==1&&jianzhi==11)//響應(yīng)分減調(diào)整 { fen--; if(fen==0)fen=60; } if(huanwei==2&&jianzhi==7)//響應(yīng)秒加調(diào)整 { miao++; if(miao>=60)miao=0; } if(huanwei==2&&jianzhi==11)//響應(yīng)秒減調(diào)整 { miao--; if(miao==0)miao=60; } if(huanwei==3&&jianzhi==7)//響應(yīng)星期加調(diào)整 { zhou++; if(zhou>=7)zhou=1; } if(huanwei==3&&jianzhi==11)//響應(yīng)星期減調(diào)整 { zhou--; if(zhou==0)zhou=7; } }}////////////////////////調(diào)整日期///////////////////////////// if(t_or_d==1&&tiaozheng==1) //在顯示日期狀態(tài)下調(diào)整日期 { if(jianzhi==15) { huanwei++; if(huanwei==3) huanwei=0; } if(huanwei==0&&jianzhi==7) //響應(yīng)年加調(diào)整 nian++;if(huanwei==0&&jianzhi==11) //響應(yīng)年減調(diào)整 nian--; if(huanwei==1&&jianzhi==7)//響應(yīng)月加調(diào)整 { yue++; if(yue==13) yue=1; } if(huanwei==1&&jianzhi==11) //響應(yīng)月減調(diào)整 { yue--; if(yue==0) yue=12; } if(huanwei==2&&jianzhi==7)//響應(yīng)日加調(diào)整 { ri++; if(ri>tianshu[yue-1]) ri=1; } if(huanwei==2&&jianzhi==11) //響應(yīng)日減調(diào)整 { ri--; if(ri>tianshu[yue-1]) ri=1; }} if(jianzhi==3) { TR0=1; tiaozheng=0; } jianzhi=16; }}/////////////////////計(jì)算*年月日是星期幾///////////////////////voidcount_week(){ unsignedintweek=0; unsignedchari;if(runian(nian)) tianshu[1]=29; //閏年二月天數(shù)是29天 else tianshu[1]=28; //平年二月天數(shù)是28天if(nian==2011) { for(i=1;i<yue;i++) week=tianshu[i-1]%7+week; week=(week+5+ri)%7; } if(nian>2011) { for(i=0;i<nian-2011;i++) { if(runian(2011+i)) week=week+2; //閏年余兩天 else week=week+1; //平年余一天 } for(i=1;i<yue;i++) week=tianshu[i-1]%7+week; week=(week+5+ri)%7; } if(nian<2011) { for(i=1;i<=2011-nian;i++) { if(runian(2011-i)) week=week+2;//閏年余兩天 else week=week+1;//平年余一天 } week=6-(week+2)%7; for(i=1;i<yue;i++) week=tianshu[i-1]%7+week; week=(week+1+ri)%7; } if(week==0) week=7; zhou=week;/////////////////計(jì)算2011年的陰歷////////////////////////////if(nian==2011){if(yue==1){if(ri<=3) //調(diào)試區(qū) {nri=ri+26; nyue=yue+10; } else nri=ri-3; nyue=yue+11; } //調(diào)試區(qū)if(yue==2){if(ri<=2) {nri=ri+28; nyue=yue+10; } else nri=ri-2; //調(diào)試區(qū) nyue=yue-1; }if(yue==3){if(ri<=4) {nri=ri+26; nyue=yue-2; } else //調(diào)試區(qū) nri=ri-4; nyue=yue-1;}if(yue==4){if(ri<=2) {nri=ri+27; nyue=yue-2; } else nri=ri-2; //調(diào)試區(qū) nyue=yue-1; }if(yue==5){if(ri<=2) {nri=ri+28; nyue=yue-2; } else nri=ri-2; nyue=yue-1; } //調(diào)試區(qū)if(yue==6){if(ri<=1) {nri=ri+29; nyue=yue-2; } else nri=ri-1; nyue=yue-1; } //調(diào)試區(qū)if(yue==7){if(ri<=30) {nri=ri; nyue=yue-1; } else nri=ri-30; nyue=yue; }if(yue==8){if(ri<=28) {nri=ri+1; nyue=yue-1; //調(diào)試區(qū) } else nri=ri-28; nyue=yue; }if(yue==9){if(ri<=26) {nri=ri+3; nyue=yue-1; } else nri=ri-26; //調(diào)試區(qū) nyue=yue; }if(yue==10){if(ri<=26) {nri=ri+4; nyue=yue-1; } else nri=ri-26; nyue=yue; }if(yue==11){if(ri<=24) {nri=ri+5; nyue=yue-1; //調(diào)試區(qū) } else nri=ri-24; nyue=yue; }if(yue==12){if(ri<=24) {nri=ri+6; nyue=yue-1; } else nri=ri-24; nyue=yue; }}/////////////////////////////////////////////////////////}/////////////////////鍵盤掃描///////////////////voidreadkey16(){ unsignedchara,RL,i;P0=0*0f; delay();if(P0!=0*0f){ i=0;RL=0*ef;ZERO:P0=RL;if(!P00) { a=0;gotokeyval; }if(!P01) { a=4;gotokeyval; }if(!P02) { a=8;gotokeyval; }if(!P03) { a=12;gotokeyval; }i++;RL=_crol_(RL,1);gotoZERO;keyval: jianzhi=a+i; key_up=0; }else key_up=1;}///////////////////////顯示///////////////////////////voiddis_date()//存儲(chǔ)日期數(shù)據(jù){temp[0]=nian/1000;temp[1]=nian%1000/100;temp[2]=nian%1000%100/10;temp[3]=nian%1000%100%10;temp[4]=yue/10;temp[5]=yue%10;temp[6]=ri/10; temp[7]=ri%10;displayd();} voiddis_time()//存儲(chǔ)時(shí)間數(shù)據(jù){temp[0]=shi/10;temp[1]=shi%10;temp[2]=fen/10;temp[3]=fen%10;temp[4]=miao/10;temp[5]=miao%10; temp[7]=zhou;temp[6]=10;display();}voidnz() //存儲(chǔ)鬧鐘數(shù)據(jù){temp[0]=tshi/10;temp[1]=tshi%10;temp[2]=tfen/10;temp[3]=tfen%10;temp[4]=tmiao/10;temp[5]=tmiao%10;displayn();} voiddisplayd()//顯示日期程序{ unsignedchari; for(i=0;i<=7;i++) {

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論