




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
西安建筑科技大學(xué)課程設(shè)計(jì)(論文) 設(shè)計(jì)總說明 單片機(jī)自20世紀(jì)70年代問世以來,以其極高的性能價(jià)格比,受到人們的重視和關(guān)注,應(yīng)用很廣、發(fā)展很快。而51單片機(jī)是各單片機(jī)中最為典型和最有代表性的一種。本設(shè)計(jì)以AT89C51芯片為核心,輔以必要的外圍電路,設(shè)計(jì)了一個(gè)結(jié)構(gòu)簡單,功能齊全的電子時(shí)鐘,它5V直流電源供電。在硬件方面,除了CPU外,使用6個(gè)7段LCD顯示器來進(jìn)行顯示,LCD采用的是動(dòng)態(tài)掃描顯示,使用74LS245芯片進(jìn)行驅(qū)動(dòng)。通過LCD能夠較為準(zhǔn)確地顯示時(shí)、分、秒,利用四個(gè)簡單的按鍵實(shí)現(xiàn)對時(shí)間的調(diào)整。軟件方面采用匯編語言編程,整個(gè)電子鐘系統(tǒng)能完成時(shí)間的顯示、調(diào)時(shí)、校時(shí)和定時(shí)的功能。選用單片機(jī)最小系統(tǒng)應(yīng)用程序,添加比較程序、時(shí)間調(diào)整程序及蜂鳴程序,通過時(shí)間比較程序觸發(fā)蜂鳴,實(shí)現(xiàn)鬧鐘功能,完成設(shè)計(jì)所需求的軟件環(huán)境。介紹并使用Keil單片機(jī)模擬調(diào)試軟件,測試程序的可行性并用Proteus進(jìn)行仿真。關(guān)鍵詞:單片機(jī),LCD,定時(shí)器,鬧鐘目錄1設(shè)計(jì)要求與實(shí)現(xiàn)思路- 1 -1.1設(shè)計(jì)要求- 1 -1.2實(shí)現(xiàn)思路- 1 -2電子時(shí)鐘- 2 -2.1電子時(shí)鐘簡介- 2 -2.2電子時(shí)鐘的基本特點(diǎn)- 2 -3單片機(jī)- 3 -3.1程序存儲(chǔ)器- 3 -3.2 MCS-51內(nèi)部數(shù)據(jù)存儲(chǔ)器- 3 -4控制系統(tǒng)的硬件設(shè)計(jì)- 4 -4.1器件的選擇及功能原理- 4 -4.1.1單片機(jī)型號的選擇- 4 -4.1.2液晶顯示器的選擇- 4 -4.1.3按鍵的選擇- 4 -4.1.4電源的選擇- 5 -4.1.5計(jì)時(shí)部分的選擇- 5 -4.2總體設(shè)計(jì)思想及原理- 6 -4.2.1時(shí)鐘電路的設(shè)計(jì)- 6 -4.2.2鍵盤電路設(shè)計(jì)- 7 -4.2.3鬧鈴功能的實(shí)現(xiàn)- 8 -4.2.4中斷服務(wù)的設(shè)計(jì)- 9 -4.2.5顯示器驅(qū)動(dòng)電路- 9 -4.3整個(gè)電路原理圖- 10 -5控制系統(tǒng)的軟件設(shè)計(jì)- 12 -5.1程序設(shè)計(jì)- 12 -5.2程序流程圖- 12 -5.3仿真圖- 13 -5.4仿真結(jié)果分析- 14 -設(shè)計(jì)總結(jié)- 16 -參考文獻(xiàn)- 17 -程序源代碼- 18 -1設(shè)計(jì)要求與實(shí)現(xiàn)思路1.1設(shè)計(jì)要求1)能顯示時(shí)時(shí)分分秒秒。2)能夠設(shè)定定時(shí)時(shí)間、修改定時(shí)時(shí)間。3)定時(shí)時(shí)間到能發(fā)出報(bào)警聲或者啟動(dòng)繼電器,從而控制電器的啟停。1.2實(shí)現(xiàn)思路電子鐘設(shè)計(jì)與制作既可以采用數(shù)字電路來實(shí)現(xiàn),也可以采用單片機(jī)來完成。方案一:采用數(shù)字電路來實(shí)現(xiàn),所設(shè)計(jì)的電路相當(dāng)復(fù)雜,大概需要十幾片數(shù)字集成塊,其功能主要依賴于數(shù)字電路的各功能模塊的組合來實(shí)現(xiàn),焊接的過程比較復(fù)雜,成本也非常高。方案二:采用單片機(jī)來實(shí)現(xiàn),由于其功能的實(shí)現(xiàn)主要通過軟件編程來完成,不僅降低了硬件電路的復(fù)雜性,而且成本也降低不少。 最終方案:采用單片機(jī)的方式來實(shí)現(xiàn)定時(shí)鬧鐘。電子鬧鐘的系統(tǒng)框圖如下所示:復(fù)位、時(shí)鐘等電路按鈕電路6位數(shù)碼管顯示電路鬧鈴聲指示電路電源系統(tǒng)圖1-1 電子鬧鐘的系統(tǒng)框圖電子鬧鐘的主電路指的是圖1-1中虛線框內(nèi)部分,主要涉及到CPU電路和按鍵按鈕電路。主機(jī)的設(shè)計(jì)具體地說有:1)系統(tǒng)時(shí)鐘電路設(shè)計(jì);2)系統(tǒng)復(fù)位電路設(shè)計(jì);3)按鍵與按鈕電路設(shè)計(jì);4)鬧鈴聲指示電路設(shè)計(jì)。2電子時(shí)鐘 2.1電子時(shí)鐘簡介時(shí)鐘是將小時(shí)、分鐘、秒鐘顯示于人的肉眼的計(jì)時(shí)裝置。而單片機(jī)模塊中最常見的正是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長的使用壽命,因此得到了廣泛的使用。由于時(shí)鐘的實(shí)用性和在人們生活中的重要性,所以嘗試設(shè)計(jì)以單片機(jī)為核心的數(shù)字時(shí)鐘是很有意義的。鐘表原先的報(bào)時(shí)功能已經(jīng)原不能滿足人們?nèi)找嬖鲩L的要求,現(xiàn)代的電子時(shí)鐘多帶有類似自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、自動(dòng)起閉路燈、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等功能,本設(shè)計(jì)中LCD電子時(shí)鐘采用LCD顯示時(shí)間,直觀實(shí)用,而且可以方便的校調(diào)。2.2電子時(shí)鐘的基本特點(diǎn)LCD電子定時(shí)鬧鐘是以單片機(jī)為基礎(chǔ)的數(shù)字電路實(shí)現(xiàn)對時(shí)、分、秒的數(shù)字顯示的數(shù)字計(jì)時(shí)裝置,它的計(jì)時(shí)周期24小時(shí),另外應(yīng)有校時(shí)功能和一些顯示日期、鬧鐘等附加功能。一個(gè)基本的數(shù)字鐘電路主要由計(jì)數(shù)器、校時(shí)電路、報(bào)時(shí)電路、振蕩器和顯示電路組成。目前電子鐘廣泛用于各種私人和公眾場合,成為我們生活、工作和學(xué)習(xí)中不可缺少的好幫手。3單片機(jī)3.1程序存儲(chǔ)器MCS-51單片機(jī)的程序存儲(chǔ)器用于存放應(yīng)用程序和表格之類的固定常數(shù)??蓴U(kuò)充的程序存儲(chǔ)器空間最大為64K字節(jié)。程序存儲(chǔ)器的使用應(yīng)注意以下兩點(diǎn):(1)整個(gè)程序存儲(chǔ)器空間可以分為片內(nèi)和片外兩部分,CPU訪問片內(nèi)和片外程序存儲(chǔ)器,可由引腳所接的電平來確定。EA=1,即引腳接高電平時(shí),程序?qū)钠瑑?nèi)程序存儲(chǔ)器開始執(zhí)行;當(dāng)PC值超出片內(nèi)ROM的容量時(shí),會(huì)自動(dòng)轉(zhuǎn)向片外程序存儲(chǔ)器空間執(zhí)行程序;EA=0,即引腳接低電平時(shí),單片機(jī)只執(zhí)行片外程序存儲(chǔ)器中的程序。(2)各中斷服務(wù)程序的入口地址MCS-51單片機(jī)復(fù)位后,程序存儲(chǔ)器PC的內(nèi)容為0000H,故系統(tǒng)從0000H單元開始取指令,執(zhí)行程序。64K程序存儲(chǔ)器中有5個(gè)單元具有特殊用途,如下:0003H:外部中斷0入口地址。000BH:定時(shí)器0中斷入口地址。0013H:外部中斷1入口地址。001BH:定時(shí)器1中斷入口地址。0023H:串行口中斷入口地址。在系統(tǒng)中斷相應(yīng)之后,將自動(dòng)轉(zhuǎn)各中斷入口地址處執(zhí)行序,而中斷服務(wù)程序一般無法存放于幾個(gè)單元之內(nèi),因此在中斷入口地址處往往存放一條無條件轉(zhuǎn)移指令進(jìn)行跳轉(zhuǎn),以便執(zhí)行中斷服務(wù)程序。3.2 MCS-51內(nèi)部數(shù)據(jù)存儲(chǔ)器MCS-51單片機(jī)的片內(nèi)數(shù)據(jù)存儲(chǔ)器單元共有128個(gè),字節(jié)地址為00H-7FH。 地址為00H-1FH的32個(gè)單元是4組通用工作寄存器區(qū),每個(gè)區(qū)含8個(gè)8位寄存器,編號為R7-R0。地址為20H-2FH的16個(gè)單元可進(jìn)行共128位的位尋址。地址為30H -7FH的單元為用戶RAM區(qū),只能進(jìn)行字節(jié)尋址。4控制系統(tǒng)的硬件設(shè)計(jì)4.1器件的選擇及功能原理4.1.1單片機(jī)型號的選擇由于傳統(tǒng)的8031單片機(jī)內(nèi)部沒有存儲(chǔ)器,需要另擴(kuò)展外部程序存儲(chǔ)器,系統(tǒng)構(gòu)成較為復(fù)雜. 在眾多的51系列單片機(jī)中,要算 ATMEL 公司的AT89C51更實(shí)用,它是低功耗、高性能的CMOS型8位單片機(jī)。AT89C51采用了高性能的處理器結(jié)構(gòu),指令執(zhí)行時(shí)間只需2到4個(gè)時(shí)鐘周期。AT89C51集成了許多系統(tǒng)級的功能,這樣可大大減少元件的數(shù)目和電路板面積并降低系統(tǒng)的成本。另外,AT89C51是一種高效微控制器,而且它與MCS-51兼容,且具有4K字節(jié)可編程序存儲(chǔ)器和1000次擦寫循環(huán),數(shù)據(jù)保留時(shí)間為10年,是最好的選擇。AT89C51單片機(jī)內(nèi)部主要有以下部件:8031CPU、振蕩電路、總線控制部件、中斷控制部件、片內(nèi)Flash存儲(chǔ)器、并行I/O接口、定時(shí)器和串行I/O接口。4.1.2液晶顯示器的選擇 為減少連接線路的復(fù)雜性,在此選用八位一體的共陰數(shù)碼管,八位一體液晶顯示器在內(nèi)部已將段碼相連,位選線則相互獨(dú)立,可以很方便地外接為動(dòng)態(tài)顯示電路。其外部結(jié)構(gòu)如下圖4-1: 圖4-1 LCD液晶顯示器4.1.3按鍵的選擇方案一:44矩陣式鍵盤。如果選擇此方案,那么在修改時(shí)鐘或設(shè)置鬧鈴時(shí)間時(shí)就可以直接從鍵盤輸入,方便、快捷,但程序較為復(fù)雜。 方案二:獨(dú)立式按鍵。如果設(shè)置過多按鍵,將會(huì)占用較多I/O口,而且會(huì)給布線帶來不便,因此,此方案適用于按鍵較少的情況。如果選擇此方案,由于按鍵較少,在修改時(shí)間或設(shè)置鬧鈴時(shí)間時(shí)就不能直接輸入,只能通過加或減完成,稍為麻煩一些,但其程序簡單。 由于并不需要經(jīng)常修改時(shí)間和設(shè)置鬧鈴時(shí)間,而且方案二的程序簡單,按鍵少、成本低,因此,選擇方案二。AT89C5的引腳如下圖4-2:圖4-2 AT89C51引腳4.1.4電源的選擇如果是用電池供電,就比較方便攜帶,但是本系統(tǒng),采用了數(shù)碼管作為顯示器,功耗較大,需要經(jīng)常更換電池。況且,本系統(tǒng)的體積較大,即使使用電池供電也不能隨身攜帶,因此,用電池供電不大合適,所以用5V外部穩(wěn)壓電源來供電。4.1.5計(jì)時(shí)部分的選擇如果使用時(shí)鐘芯片,系統(tǒng)就不怕掉電且時(shí)間精確。但這種芯片比較貴,況且,設(shè)計(jì)本系統(tǒng)主要是為了學(xué)習(xí)單片機(jī)程序的編寫和調(diào)試以及設(shè)計(jì)硬件電路的一些方法,因此采用軟件的方法來計(jì)時(shí)而沒有采用價(jià)格較高的時(shí)鐘芯片。4.2總體設(shè)計(jì)思想及原理設(shè)計(jì)的總思路如圖4-3:圖4-3 設(shè)計(jì)的總流程圖4.2.1時(shí)鐘電路的設(shè)計(jì)AT89C51系列的單片機(jī)的時(shí)鐘方式分為內(nèi)部方式和外部方式。內(nèi)部方式就是在單片機(jī)的XTAL1和XTAL2的兩引腳外接晶振,就夠成了自激振蕩器在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號。外部時(shí)鐘方式是把外部已經(jīng)有的時(shí)鐘信號引入到單片機(jī)內(nèi)部。時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間。本LCD電子鬧鐘設(shè)計(jì)是采用內(nèi)部時(shí)鐘方式,用一個(gè)12MHz晶振和兩個(gè)30Pf瓷片電容組成,為單片機(jī)提供標(biāo)準(zhǔn)時(shí)鐘,其中兩個(gè)瓷片電容起微調(diào)作用。其電路圖見圖4-4。 圖4-4 時(shí)鐘電路單片機(jī)之所以采用高性能的振蕩電路,因?yàn)椋?)單片機(jī)電子鐘的計(jì)時(shí)脈沖基準(zhǔn)是由外部晶振的頻率經(jīng)過12分頻后提供,采用內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)計(jì)時(shí)功能。所以,外接晶振頻率精確度直接影響電子鐘計(jì)時(shí)的準(zhǔn)確性。 2)片機(jī)電子鐘利用內(nèi)部定時(shí)/計(jì)數(shù)器溢出產(chǎn)生中斷(12M晶振一般為50ms)再乘以相應(yīng)的倍率來實(shí)現(xiàn)秒、分、時(shí)的轉(zhuǎn)換。大家都知道從定時(shí)/計(jì)數(shù)器產(chǎn)生中斷請求到響應(yīng)中斷需要3-8個(gè)機(jī)器周期,定時(shí)中斷子程序中的數(shù)據(jù)入棧和重裝定時(shí)/計(jì)數(shù)器的初值還需要占用數(shù)個(gè)機(jī)器周期,還有從中斷入口轉(zhuǎn)到中斷子程序也要占用一定的機(jī)器周期。4.2.2鍵盤電路設(shè)計(jì)鍵盤采用4個(gè)獨(dú)立按鍵配以4個(gè)上拉電阻實(shí)現(xiàn)對時(shí)鐘和鬧鐘的設(shè)定及修改。 圖4-5 獨(dú)立按鍵 圖4-6 鍵盤輸入電路4.2.3鬧鈴功能的實(shí)現(xiàn)鬧鈴功能的實(shí)現(xiàn)涉及到兩個(gè)方面:鬧鈴時(shí)間設(shè)定和是否鬧鈴判別與相應(yīng)處理。鬧鈴時(shí)間設(shè)定模塊的設(shè)計(jì)可參照時(shí)間設(shè)定模塊,這里著重闡述鬧鈴判別與處理模塊的設(shè)計(jì)問題。鬧鈴判別與鬧鈴處理的關(guān)鍵在于判別何時(shí)要進(jìn)行鬧鈴。當(dāng)時(shí)十位、時(shí)個(gè)位、分十位、分個(gè)位中任一位發(fā)生改變(進(jìn)位)時(shí),就必須進(jìn)行鬧鈴判別。譯碼顯示電路將“時(shí)”、“分”、“秒”計(jì)數(shù)器的輸出送到七段顯示譯碼驅(qū)動(dòng)器譯碼驅(qū)動(dòng),通過六個(gè)七段LCD顯示器顯示出來。鬧鈴電路根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生脈沖信號,然后加上一個(gè)高頻或低頻信號送到放大電路驅(qū)動(dòng)蜂鳴器發(fā)聲實(shí)現(xiàn)報(bào)時(shí)。校時(shí)電路是直接加一個(gè)脈沖信號到時(shí)計(jì)數(shù)器或者分計(jì)數(shù)器或者秒計(jì)數(shù)器來對“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。時(shí)十位、個(gè)位或分十位、個(gè)位改變了設(shè)置鬧鈴標(biāo)志是否設(shè)置了鬧鈴清除鬧鈴標(biāo)志判當(dāng)前時(shí)間是設(shè)定時(shí)間中斷返回中斷返回鬧鈴判別處理N 圖4-7 鬧鐘判別流程圖考慮到實(shí)用性,在該電子鐘的設(shè)計(jì)中修改定時(shí)或調(diào)整時(shí)間時(shí)采用了閃爍,而且以定時(shí)20組鬧鐘。在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一組固定單元用來存儲(chǔ)計(jì)數(shù)的秒,分,時(shí)以及定時(shí)時(shí)間的序號等。在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時(shí)器中斷置標(biāo)志位,再與位選相互結(jié)合的方法來控制調(diào)時(shí)或定時(shí)中的閃爍。時(shí), 圖4-8 鬧鐘的實(shí)現(xiàn)流程圖分,秒顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對其計(jì)數(shù),計(jì)數(shù)的同時(shí)采用了定時(shí)器比較的方法,比較當(dāng)前計(jì)數(shù)時(shí)間與定時(shí)時(shí)間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù)。由于定義了定時(shí)鬧鐘組,在這里采用中斷組次,每中斷一次比較一組鬧鐘,避免了一次比較中斷時(shí)間過長,影響下次中斷時(shí)間。顯示之后查詢鬧鈴標(biāo)志位是否與前面所置數(shù)相等,若相等則響鈴。為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈沖,驅(qū)動(dòng)喇叭,不會(huì)影響顯示。之后用查詢方式對按鍵進(jìn)行判斷,若有鍵按下,則進(jìn)行軟件延時(shí)消抖,避免了抖動(dòng)引起的干擾,執(zhí)行相應(yīng)的定時(shí),選時(shí)或調(diào)時(shí)程序段。對當(dāng)前時(shí)間或定時(shí)時(shí)間修改后又返回到最初的顯示程序段,如此循環(huán)下去。4.2.4中斷服務(wù)的設(shè)計(jì)數(shù)字電子鐘設(shè)計(jì)中主要使用定時(shí)器T0中斷ET0,利用ET0中斷進(jìn)行計(jì)時(shí)時(shí)間的自增,從而實(shí)現(xiàn)計(jì)時(shí)功能。AT89C51有兩個(gè)通用定時(shí)/計(jì)數(shù)器。兩者均可配置為定時(shí)器或事件計(jì)數(shù)器。另外增加了定時(shí)器T0/T1,溢出時(shí)T0/T1腳自動(dòng)翻轉(zhuǎn)的功能選項(xiàng)。用作“定時(shí)器”功能時(shí),每經(jīng)過一個(gè)機(jī)器周期,寄存器值加1。用作“計(jì)數(shù)器”功能時(shí),寄存器在對應(yīng)的外部輸入管腳T0/T1上每發(fā)生一次1到0的跳變時(shí)加1。使用該功能時(shí),外部輸入每個(gè)機(jī)器周期被采樣一次。 設(shè)計(jì)中采用了中斷方式1作為定時(shí)中斷,其定時(shí)計(jì)數(shù)初值的設(shè)置可由以下公式計(jì)算得到,中斷服務(wù)流程圖如下圖4-9。 圖4-9 中斷處理流程圖 4.2.5顯示器驅(qū)動(dòng)電路由于通過數(shù)碼管公共及的電流較大且避免過多地使用分立元件,采用了一片74LS245來驅(qū)動(dòng)段碼,用P0口作位碼驅(qū)動(dòng)。74LS245是我們常用的芯片,用來驅(qū)動(dòng)LCD或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)8051單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。 由于P2口始終輸出地址的高8位,接口時(shí)74LS245的三態(tài)控制端1G和2G接地,P2口與驅(qū)動(dòng)器輸入線對應(yīng)相連。P0口與74LS245輸入端相連,E端接地,保證數(shù)據(jù)線暢通。因此,可以用來作為驅(qū)動(dòng)裝置。圖4-10 74LS245引腳圖4.3整個(gè)電路原理圖圖4-11 總電路圖定時(shí)鬧鐘以單片機(jī)AT89C51為核心來完成,使用12MHZ晶振與單片機(jī)AT89C51相連接,通過軟件編程的方法實(shí)現(xiàn)了以24小時(shí)為一個(gè)周期同時(shí)顯示小時(shí)、分鐘和秒的要求,并在計(jì)時(shí)過程中具有報(bào)時(shí)功能,當(dāng)時(shí)間到達(dá)整點(diǎn)進(jìn)行蜂鳴報(bào)時(shí)。在硬件電路中采用P0口作為6位LCD顯示器的驅(qū)動(dòng)接口,這是由于P0口輸出驅(qū)動(dòng)電路工作處于開漏狀態(tài),它的驅(qū)動(dòng)能力強(qiáng),故只需外接上拉電阻便可以把LCD顯示器點(diǎn)亮。因?yàn)楣碴幍腖CD顯示器它的驅(qū)動(dòng)電流是分開的,在單片機(jī)進(jìn)行動(dòng)態(tài)掃描的時(shí)候不會(huì)影響彼此的電流,故該電路中的LCD顯示器采用共陰極的顯示器。6位LCD顯示器的位選線分別由相應(yīng)的P2.0P2.5控制,相應(yīng)的段選線由8位的I/O口控制,即P0口。該電子鐘設(shè)有四個(gè)按鍵: S1、S2、S3和S4鍵(由上至下依次為S1、S2、S3、S4),他們分別與單片機(jī)的P1.1、P1.2、P1.3和P1.4口相連接。S1、S2、S3和S4鍵Proteus仿真圖如下:圖4-12 安裝控制圖5控制系統(tǒng)的軟件設(shè)計(jì) 5.1程序設(shè)計(jì) 考慮到實(shí)用性,在該電子鐘的設(shè)計(jì)中修改定時(shí)或調(diào)整時(shí)間時(shí)采用了閃爍。在編程上,首先進(jìn)行了初始化定義了程序的入口地址以及中斷的入口地址,在主程序的開始定義了一個(gè)固定單元用來存儲(chǔ)計(jì)數(shù)的秒、分、時(shí)。在顯示程序段中主要進(jìn)行了閃爍的處理,采用定時(shí)器中斷置標(biāo)志位,再與位選相互結(jié)合的方法來控制調(diào)時(shí)或定時(shí)中的閃爍。時(shí)、分、秒的顯示則是用了軟件譯碼(查表)的方式,再用了一段固定的程序段進(jìn)行進(jìn)制轉(zhuǎn)化。初始化之后,用中斷方式對其計(jì)數(shù),計(jì)數(shù)的同時(shí)采用了定時(shí)器比較的方法,比較當(dāng)前計(jì)數(shù)時(shí)間與定時(shí)時(shí)間是否相等,若相等則將鬧鈴標(biāo)志位置數(shù)。為了避免響鈴影響顯示,采用了每顯示幾屏以后在顯示程序中出現(xiàn)脈 圖5-1 設(shè)計(jì)主線沖,驅(qū)動(dòng)喇叭,不會(huì)影響顯示。之后用查詢方式對按鍵進(jìn)行判斷,若有鍵按下,則進(jìn)行軟件延時(shí)消抖,避免了抖動(dòng)引起的干擾,執(zhí)行相應(yīng)的定時(shí),選時(shí)或調(diào)時(shí)程序段。對當(dāng)前時(shí)間或定時(shí)時(shí)間修改后又返回到最初的顯示程序段,如此循環(huán)下去。 5.2程序流程圖 圖5-2 主函數(shù)流程圖5.3仿真圖Proteus仿真圖如下:1)按S2鍵開始對響鈴時(shí)間設(shè)置:圖5-3 開始設(shè)置響鈴時(shí)間2)按鍵3對分設(shè)置,安鍵1對秒設(shè)置:圖5-4 定時(shí)時(shí)間為6:073)按S4鍵回到鬧鐘運(yùn)行模式 圖5-5 返回正常運(yùn)行5.4仿真結(jié)果分析該電子鐘有三個(gè)按鍵: K1、 K2、K3和K4鍵。按K1鍵進(jìn)行校時(shí),可以分別對時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間,操作位就閃爍;按K2鍵是對閃爍位進(jìn)行加一或返回的操作;按K3鍵調(diào)整定時(shí)時(shí)間和定時(shí)組數(shù),調(diào)整位就閃爍,該電子鐘最多可定時(shí)20組鬧鐘。經(jīng)測試該電子鐘在一天的累計(jì)誤差約為0. 1秒;K4用于返回正常計(jì)時(shí)功能。該電子鐘的誤差主要由晶振自身的誤差所造成,晶振的誤差約為0.00010.000001。在軟件的編程過程中所產(chǎn)生的誤差比較小,在重裝初值的過程中大概需要約8個(gè)機(jī)器周期,但在程序開始對定時(shí)器賦初值時(shí),多加了8個(gè)機(jī)器周期,減小了這方面的誤差。另外在中斷的過程中,只會(huì)在第一次計(jì)時(shí)中產(chǎn)生時(shí)間的偏移,而它所產(chǎn)生累計(jì)誤差很小,可以忽略。結(jié)構(gòu)化軟件程序的調(diào)試一般可以將重點(diǎn)放在分模塊調(diào)試上,統(tǒng)調(diào)是最后一環(huán)。軟件調(diào)試可以采取離線調(diào)試和在線調(diào)試兩種方式。前者不需要硬件仿真器,可借助于軟件仿真器即可;后者一般需要仿真系統(tǒng)的支持。本次課設(shè),采用keil集成調(diào)試軟件來調(diào)試程序,通過各個(gè)模塊程序的單步或跟蹤調(diào)試,使程序逐漸趨于正確,最后統(tǒng)調(diào)程序。仿真部分采用proteus 7professional軟件,此軟件功能強(qiáng)大且操作較為簡單,可以很容易的實(shí)現(xiàn)各種系統(tǒng)的仿真。首先打開proteus7professional軟件,在元件庫中找到要選用的所有元件,然后進(jìn)行原理圖的繪制;繪制好后再選擇keil已經(jīng)編譯好的*.hex文件,選擇運(yùn)行,觀察顯示結(jié)果,根據(jù)顯示的結(jié)果和課設(shè)的要求再修改程序,再運(yùn)行查,直到滿足要求。 設(shè)計(jì)總結(jié)通過這次一個(gè)禮拜的課程設(shè)計(jì),使我對所學(xué)的知識進(jìn)行了系統(tǒng)的復(fù)習(xí)與鞏固,在以前的學(xué)習(xí)中不夠清晰的概念得到了更好地理解。這段時(shí)間的學(xué)習(xí),使我了解到了理論和實(shí)際之間的差別,第一次真正接觸到了實(shí)際中的問題,并通過和老師,同學(xué)交流,加強(qiáng)了自身的分析問題,解決問題的能力。同時(shí),我也發(fā)現(xiàn)了自己在某寫方面的不足,這是我以后要加以改進(jìn)的方面。課程設(shè)計(jì)過程也使我了解了自己能力的不足,不過通過資料收集和文獻(xiàn)查詢等方法,找出了設(shè)計(jì)過程中的一些問題以及解決問題的方法,從而比較順利的完成了這個(gè)設(shè)計(jì)任務(wù)。這次自己所做的設(shè)計(jì)取得了一些寶貴的經(jīng)驗(yàn),提高了自己的動(dòng)手能力,為將來的學(xué)習(xí)和工作很有好處??傊碚摫仨毢蛯?shí)際結(jié)合才有威力,知識必須通過應(yīng)用才能實(shí)現(xiàn)其價(jià)值!所學(xué)的東西最終是要面向社會(huì),是在以后的工作能夠更好的應(yīng)用,此時(shí)的知識積累是為以后的工作做好堅(jiān)實(shí)的基礎(chǔ)。這個(gè)設(shè)計(jì)總體上不算完美,但是在這個(gè)課程設(shè)計(jì)的經(jīng)歷的好處是不可估量的。參考文獻(xiàn)1張毅剛,MCS-51單片機(jī)應(yīng)用設(shè)計(jì)M,哈爾賓:哈爾賓工業(yè)大學(xué)出版社,1997 2王幸之、鐘愛琴、王雷、王閃,AT89系列單片機(jī)原理與接口技術(shù)M,北京:北京航空航天大學(xué)出版社,20043ATMEL.8-bit Microcontroller with 32K Bytes Flash AT89C51RC.20004莫健.基于89系列單片機(jī)的電子鬧鐘的設(shè)計(jì),南京工程學(xué)院自動(dòng)化學(xué)院,2010程序源代碼 ORG 0000H ;開辟代碼首地址 LJMP MAIN ORG 000BH ;定時(shí)器/計(jì)數(shù)器T0溢出中斷服務(wù)子程序入口地址 LJMP TIME ORG 0100H MAIN:MOV SP,#50H ;設(shè)置堆棧指針首地址 MOV 20H,#00H ;十六進(jìn)制轉(zhuǎn)化時(shí)分秒 MOV 21H,#00H MOV 22H,#00H MOV 23H,#01H ;鬧鈴設(shè)置時(shí)分位 MOV 24H,#01H MOV 25H,#00H ;定義一個(gè)標(biāo)志位 MOV 30H,#00H ;時(shí)分秒十進(jìn)制轉(zhuǎn)化 MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H MOV 35H,#00H MOV 36H,#01H ;鬧鈴十進(jìn)制轉(zhuǎn)化 MOV 37H,#00H MOV 38H,#01H MOV 39H,#00H MOV TMOD,#01H ;選用16位計(jì)數(shù)器 T0,方式1 MOV TH0,#03CH ;賦初值 MOV TL0,#0B0H MOV IE,#10000111B ;開中斷T0,EA=1 SETB TR0 ;T0啟動(dòng)計(jì)數(shù) MOV R2,#14H ;計(jì)數(shù)器 MOV P2,#0FFH LOOP:LCALL TIMEPRO ;調(diào)用現(xiàn)在時(shí)間與鬧鈴時(shí)間比較程序 LCALL DISPLAY1 ;調(diào)用現(xiàn)在時(shí)間顯示子程序 JB K1,M1 ;判斷按鍵是否按下 LCALL XIAOZHEN1 ;調(diào)用消抖程序 MOV C,25H.0 JC A1 A1:CLR 25H.0 LCALL SETTIME ;調(diào)用設(shè)置現(xiàn)在時(shí)間子程序 LJMP LOOP M1:JB K2,M2 LCALL XIAOZHEN2 MOV C,25H.0 JC A2 A2:CLR 25H.0 LCALL SETATIME ;調(diào)用鬧鐘設(shè)置程序 LJMP LOOP M2:JB K4,M3 A3:LCALL XIAOZHEN3 MOV C,25H.0 JC A4 A4:CLR 25H.0 M3:LJMP LOOPSETTIME: L0:LCALL DISPLAY1 ;鬧鐘設(shè)置子程序 JB K2,L1 LCALL XIAOZHEN4 MOV C,25H.0 JC A5 A5:CLR 25H.0 INC 22H MOV A,22H CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0 L1:JB K3,L2 LCALL XIAOZHEN5 MOV C,25H.0 JC A6 A6:CLR 25H.0 INC 21H MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11:MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A LJMP L0 GO12:MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A LJMP L0 L2:JB K4,L0 LCALL XIAOZHEN3 MOV C,25H.0 JC AX AX:CLR 25H.0 RETSETATIME:LCALL DISPLAY2 ;調(diào)用鬧鐘設(shè)置,鬧鈴響時(shí)的顯示程序 N0:LCALL DISPLAY2 JB K3,N1 LCALL XIAOZHEN6 MOV C,25H.0 JC A7 A7:CLR 25H.0 INC 24H MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB K1,N2 LCALL XIAOZHEN7 MOV C,25H.0 JC A8 A8:CLR 25H.0 INC 23H MOV A,23H CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV B,#0AH DIV AB MOV 36H,B MOV 37H,A LJMP N0 GO22:MOV B,#0AH DIV AB MOV 38H,B MOV 39H,A LJMP N0 N2:JB K4,N0 LCALL XIAOZHEN3 MOV C,25H.0 JC A9 A9:CLR 25H.0 RETTIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX XX:LCALL TIMEOUT BK:RET TIMEOUT: X1:LCALL BZ LCALL DISPLAY2 CLR 25H.0 JB K4, X1 RET BZ:CLR P3.7 MOV R7,#250 T2:MOV R6,#124 T3:DJNZ R6,T3 DJNZ R7,T2 SETB P3.7 JB K4,XY LCALL XIAOZHEN3 MOV C,25H.0 JC XY1 XY:RET XY1:LJMP LOOPXIAOZHEN1:LCALL DISPLAY1 ;鬧鐘的設(shè)定值與現(xiàn)行時(shí)間的對比及響應(yīng) JB K1,XIAOZHEN1 MOV C,K1 JC XIAOZHEN1 LCALL DELAY MOV C,K1 JC XIAOZHEN1 STOP1:MOV C,K1 JNC STOP1 LCALL DELAY MOV C,K1 JNC STOP1 SETB 25H.0 RET XIAOZHEN2:LCALL DISPLAY2 JB K2,XIAOZHEN2 MOV C,K2 JC XIAOZHEN2 LCALL DELAY MOV C,K2 JC XIAOZHEN2 STOP2:MOV C,K2 JNC STOP2 LCALL DELAY MOV C,K2 JNC STOP2 SETB 25H.0 RET XIAOZHEN3:LCALL DISPLAY1 JB K4,XIAOZHEN3 MOV C,K4 JC XIAOZHEN3 LCALL DELAY MOV C,K4 JC XIAOZHEN3 STOP3:MOV C,K4 JNC STOP3 LCALL DELAY MOV C,K4 JNC STOP3 SETB 25H.0 RET XIAOZHEN4:LCALL DISPLAY1 JB K2,XIAOZHEN4 MOV C,K2 JC XIAOZHEN4 LCALL DELAY MOV C,K2 JC XIAOZHEN4 STOP4:MOV C,K2 JNC STOP4 LCALL DELAY MOV C,K2 JNC STOP4 SETB 25H.0 RET XIAOZHEN5:LCALL DISPLAY1 JB K3,XIAOZHEN5 MOV C,K3 JC XIAOZHEN5 LCALL DELAY MOV C,K3 JC XIAOZHEN5 STOP5:MOV C,K3 JNC STOP5 LCALL DELAY MOV C,K3 JNC STOP5 SETB 25H.0 RET XIAOZHEN6:LCALL DISPLAY2 JB K3,XIAOZHEN6 MOV C,K3 JC XIAOZHEN6 LCALL DELAY MOV C,K3 JC XIAOZHEN6 STOP6:MOV C,K3 JNC STOP6 LCALL DELAY MOV C,K3 JNC STOP6 SETB 25H.0 RET XIAOZHEN7:LCALL DISPLAY2 JB K1,XIAOZHEN7 MOV C,K1 JC XIAOZHEN7 LCALL DELAY MOV C,K1 JC XIAOZHEN7 STOP7
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中美術(shù)結(jié)業(yè)考試題目及答案
- 2025年信息系統(tǒng)項(xiàng)目管理考試題及答案
- 四川瀘州科一試題及答案
- java軟件研發(fā)面試題及答案
- 股票投資策略與實(shí)戰(zhàn)試題
- 電子競技賽事組織作業(yè)指導(dǎo)書
- 機(jī)電工程實(shí)操練習(xí)試題及答案
- 項(xiàng)目資源優(yōu)化配置策略試題及答案
- 西方政治考試的技能提升路徑試題及答案
- 機(jī)電工程考試試題及答案解析分享
- 部編版語文六年級下冊第五單元教材解讀大單元集體備課
- 乒乓球的起源與發(fā)展
- 工程造價(jià)咨詢服務(wù)入圍供應(yīng)商招標(biāo)文件模板
- 服裝表演音樂游戲課程設(shè)計(jì)
- 理工英語3-01-國開機(jī)考參考資料
- 頭顱常見病影像
- 漫畫解讀非煤地采礦山重大事故隱患判定標(biāo)準(zhǔn)
- 2024年建筑業(yè)10項(xiàng)新技術(shù)
- 《客艙安全與應(yīng)急處置》-課件:顛簸的原因及種類
- 《養(yǎng)老護(hù)理員》-課件:老年人衛(wèi)生、環(huán)境、食品安全防護(hù)知識
- 健康體檢科(中心)規(guī)章制度匯編
評論
0/150
提交評論