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

下載本文檔

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

文檔簡(jiǎn)介

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