電子時鐘的設(shè)計畢業(yè)論文.doc_第1頁
電子時鐘的設(shè)計畢業(yè)論文.doc_第2頁
電子時鐘的設(shè)計畢業(yè)論文.doc_第3頁
電子時鐘的設(shè)計畢業(yè)論文.doc_第4頁
電子時鐘的設(shè)計畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

濰坊工商職業(yè)學(xué)院畢業(yè)論文 電子時鐘的設(shè)計電子鐘的設(shè)計1.序言1.1 系統(tǒng)開發(fā)背景隨著電子科技的不斷發(fā)展,傳統(tǒng)的時鐘已被一些高檔的電子時鐘所取代,與傳統(tǒng)的時鐘相比,電子時鐘融合了掛歷和時鐘的優(yōu)點,能晝夜清晰顯示,集年、月、日、時、分、秒、日期、農(nóng)歷、氣溫于一體,外觀新穎,造型別具一格。除此之外由于掛歷以及一些傳統(tǒng)電子表的制作成本相對較高,其銷售價格也大多在530元之間,而一個電子時鐘的價格也在這之間,但是掛歷只能用一年,傳統(tǒng)電子表又不能顯示年、月、日,而電子時鐘則不一樣,由于它可以自動識別閏年、公歷、農(nóng)歷、大小月份、農(nóng)歷,星期能自動對應(yīng)公歷無須調(diào)整。對若干年前后的日期都可以查詢,但考慮到其壽命原因,至少也可用58年。在價格相差不大的情況下,電子時鐘的性價比顯然要高的多,就其閱讀功能而言,電子時鐘閱讀起來更加方便,同時他還有鬧鈴和顯示溫度的功能,這比傳統(tǒng)的掛歷以及電子表要強大的多。其實現(xiàn)的方法也很簡單,用一個單片機和數(shù)個數(shù)碼管就可以實現(xiàn),由此可見,電子時鐘的市場經(jīng)濟開發(fā)價值要比掛歷以及電子表要高的多,電子時鐘取代傳統(tǒng)的掛歷以及傳統(tǒng)電子表已成為不可抵擋的趨勢。因此開發(fā)一個電子時鐘就必須要了解單片機和數(shù)碼管的原理和功能等,下面一節(jié)我們將簡單介紹一下單片機和數(shù)碼管。1.2 系統(tǒng)開發(fā)工具介紹與安裝1.2.1 PIC系列單片機開發(fā)工具MPLAB的組成 MPLAB是一個集成了多種單片機應(yīng)用開發(fā)工具軟件于一體的、功能完備的軟件包,是PIC單片機編程開發(fā)的重要工具。在此僅對其中的5種工具軟件簡要介紹如下: Project Manager(工程項目管理器)工程項目管理器是MPLAB的核心部分,用于創(chuàng)建和管理工程項目,為開發(fā)人員提供自動化程度高、操作簡便的符號化(屏幕上的指令、指令地址、常數(shù)、變量、寄存器等均用表義性和可讀性很強的符號代表和標(biāo)識)調(diào)試工作平臺。 MPLAB Editor(源程序編輯器)源程序編輯器是一個全屏幕文本編輯器,用于創(chuàng)建和修改匯編語言源程序文件。源程序文件以純文本格式保存,其文件擴展名為“.asm”。 MPASM Assembler(匯編器)用于將匯編語言源程序文件(.asm)匯編成機器語言目標(biāo)程序文件(.hex),并負責(zé)查找語法錯誤和格式錯誤等一些淺層次簡單錯誤。 MPLAB-SIM Software Simulator(軟件模擬器)軟件模擬器是一種代替價格較貴的Hardware Emulstor(硬件仿真器)的調(diào)試工具,也是一種非實時、非在線的純軟件的調(diào)試工具。借助這個在微機系統(tǒng)上運行的工具軟件,我們可以不需要任何額外的附加硬件,僅用軟件的手段,來模仿PIC系列單片機的指令的執(zhí)行和信號的輸入/輸出,從而實現(xiàn)對用戶自編單片機源程序的模擬運行、功能調(diào)試和深層次邏輯錯誤查找。因此可以說,這為學(xué)習(xí)和應(yīng)用PIC系列單片機的人們提供一種虛擬的實戰(zhàn)環(huán)境。對于單片機初學(xué)者來說,不用花錢也可以實現(xiàn)邊學(xué)邊練的夢想;對單片機開發(fā)者來說,可以縮短開發(fā)周期和降低成本 。總之,它是一種許多其他型號系列單片機很少配備的、性能價格比較高的程序調(diào)試工具。不過,它也存在一定的局限性:一是它還不能模擬PIC16F87X片內(nèi)少數(shù)功能特殊的外圍模塊;二是它不能幫我們查找目標(biāo)板上的電路錯誤;三是它執(zhí)行速度慢而只能適合調(diào)試那些實時性要求不高的程序。 MPLAB-ICD Debugger(在線調(diào)試工具ICD的支持程序)這是一種專門與ICD配合使用的支持程序。ICD是Microchip公司專為PIC16F87X設(shè)計的一種廉價的在線調(diào)試工具套件。另外,還包含一些其他工具軟件。例如:程序模塊連接器、庫程序管理器、C語言編譯器、硬件在線仿真器的支持程序、目標(biāo)程序燒錄器的支持程序、在DOS操作系統(tǒng)下運行的匯編器等等。1.2.2 MPLAB的安裝為了使MPLAB能夠順利安裝和可靠地運行,對于所用的微機系統(tǒng)有一個起碼地要求。既安裝和運行MPLAB所需的最小計算機配置為: CPU為Intel486或型號更先進的處理器; 操作系統(tǒng)為Microsoft Windows98/2000或WindowsXP;顯示器為VGA(建議使用SVGA);內(nèi)存容量應(yīng)不小于8MB(建議32MB);可利用的硬盤空間不小于20MB; 配有鼠標(biāo)。下面我們介紹在WindowsXP操作系統(tǒng)之下,安裝MPLAB的過程。首先將Microchip公司提供的光盤放入光驅(qū)內(nèi),點擊“我的電腦”會出現(xiàn)光盤的標(biāo)志符 ,右擊此標(biāo)志符一次,再點擊“打開”,找到了文件夾“tools”,右擊此文件夾,點擊打開,找到“download”的文件夾,右擊打開此文件夾,找到mplab-ide的文件夾,同樣右擊打開此文件夾,會出現(xiàn)MPLV5XX的文件夾,再打開這個MPLV5XX的文件夾,就出現(xiàn)了Mp57full的安裝文件,打開文件就進入了如圖1.2.1的安裝對話框。圖1.1 進入MPLAB安裝的對話框 點擊Next兩次,進入了如圖1.2.2所示的對話框,用鼠標(biāo)點擊去掉一些暫時用不到的程序左邊的鉤號。點擊兩次“Next”,就出現(xiàn)了圖1.2.3的對話框,在這里點擊“Browse”鍵即可選擇你想安裝MPLAB的地方,選擇好后就點擊“Next”,直到出現(xiàn)圖1.2.4的準(zhǔn)備好安裝MPLAB的對話框,點擊“Next”就開始安裝了。 圖1.2 MPLAB組件選擇對話框 圖1.3 選擇安裝MPLAB的路徑 圖1.4 準(zhǔn)備好安裝MPLAB的對話框安裝完成后,MPLAB會自動在WindowsXP“開始”按鈕的“程序”組中,建立一個“Microchip MPLAB”程序組。至此MPLAB的系統(tǒng)文件已經(jīng)安裝完畢。用戶可在硬盤驅(qū)動器C:Program FilesMplab目錄下,建立一個新的子目錄Work作為我們的工作目錄,存放我們在學(xué)習(xí)和操作過程中產(chǎn)生的各種文件。如果日后不打算使用MPLAB,想清除其占用的硬盤空間,MPLAB自帶了卸載程序C:Program FilesMplabunwise32.exe,運行它即可將MPLAB全部徹底地自動刪除干凈。1.2.3 MPLAB-ICD在線調(diào)試工具套件及其應(yīng)用MPLAB-ICD是Microchip公司針對其PIC系列單片機中,近期推出的具有片內(nèi)FLASH程序存儲器的PIC16F87X系列單片機,所研制的一套廉價的學(xué)習(xí)和開發(fā)工具套件。MPLAB-ICD可以用于實驗階段的評估和輔助調(diào)試。它既是一個編程器(即程序燒寫器),又是一個實時在線調(diào)試器。用它可以代替在單片機應(yīng)用項目的開發(fā)過程中常用的兩種工具硬件在線實時仿真器和程序燒寫器。它利用了PIC16F87X片內(nèi)集成的在線調(diào)試器(in-circuit debugger)能力和Microchip公司的在線串行編程技術(shù)(in-circuit serial programming)。MPLAB-ICD工作于MPLAB集成開發(fā)環(huán)境軟件包之下,其仿真頭直接連接到目標(biāo)電路板上,如同將一片PIC16F87X插入到目標(biāo)板內(nèi)一樣去運行用戶編制的程序。MPLAB-ICD套件中包括的部件有:MPLAB-ICD仿真頭;MPLAB-ICD模塊;及MPLAB-ICD演示板;RS-232串行通信電纜;連接插針:2條14腳插針和2條20腳插針;20cm長的6芯電纜;包含所有MPLAB軟件包和文檔資料的光盤;MPLAB-ICD用戶指南的中文翻譯版本;還有直流電源適配器。那么它的功能特點則有: 能以實時或單步方式運行用戶程序; 斷點設(shè)置功能; 在線調(diào)試功能; 在線編程功能; 工作電壓范圍為3.05.5 V; 可從目標(biāo)板上獲取工作電源; 工作頻率范圍為32kHz20kHz; 可對源程序直接進行代碼級的調(diào)試; 可以工作于MPLAB集成開發(fā)環(huán)境下; 以RS-232串行接口方式與微機系統(tǒng)相連。借助于MPLAB-ICD工具套件,用戶可以實現(xiàn):在自己設(shè)計的PIC16F87X的應(yīng)用電路中實時運行和調(diào)試自己的源程序軟件調(diào)試。用自己編制的程序來調(diào)試和檢驗自制目標(biāo)板上的電路硬件調(diào)試;利用在線串行編程技術(shù)將自己設(shè)計的目標(biāo)程序燒寫到插在目標(biāo)板上的PIC16F87X單片機(又稱目標(biāo)單片機)中程序固化。對于這套小巧廉價的、電路簡潔的MPLAB-ICD的開發(fā)工具套件,由于在實現(xiàn)在線調(diào)試和在線編程的過程中,采用了PIC16F87X集成在片內(nèi)的在線調(diào)試功能和Microchip公司的在線串行編程協(xié)議,因此在用MPLAB-ICD仿真目標(biāo)單片機時一定會存在一定的局限性。具體地說,MPLAB-ICD工作過程中將會占用目標(biāo)單片機的片內(nèi)和引腳中的部分資源。這部分資源用戶就不能再使用了。不過,對于一般的項目開發(fā)沒有太大的影響,并且與價格昂貴的專業(yè)級全功能在線實時仿真器相比,用它來調(diào)試和燒寫PIC16F87X系列單片機,仍然是一套具有極高性能價格比的開發(fā)工具套件,所以它非常適合初級開發(fā)者的學(xué)習(xí)和實踐。我們通過使用此套工具就可以很好的進行單片機的應(yīng)用。 1.2.4 其他所用外圍模塊、電路及器件的簡要介紹:這個系統(tǒng)中使用了在32768Hz的自備晶振支持下的PIC單片機內(nèi)部TMR1定時計數(shù)器。由于本系統(tǒng)意在實現(xiàn)外部的電池提供電源,為了節(jié)省能源,需要單片機進入睡眠模式,但同時又不能影響計數(shù)器的計時工作,由于TMR1能夠在睡眠模式下工作,所以我們用TMR1作為計時器,32768 晶振則是給TMR1提供振蕩信號的 ,由于TMR1是一個雙字節(jié)計數(shù)器,總的計數(shù)次數(shù)是2的16次方計即327682次。所以它可以方便地由TMR1產(chǎn)生精確的秒信號,在此基礎(chǔ)上,再進一步由軟件計數(shù)器形成分、小時、日以至月、年的數(shù)值。在此次設(shè)計中,我們也加上了+9V的電壓,當(dāng)然還需要一個穩(wěn)壓模塊,我們采用7805來實現(xiàn)穩(wěn)壓的功能。除此之外還有各種值的電阻和電容。2系統(tǒng)總體分析與設(shè)計2.1 系統(tǒng)的開發(fā)目標(biāo)本系統(tǒng)的基本任務(wù)和目標(biāo)就是利用PIC16F877單片機中的計時器TMR1所自帶的低頻時基振蕩器(32768晶振),用來實現(xiàn)記錄和計算真實的年、月、日、時、分、秒、的時鐘功能。然后將所記錄的數(shù)據(jù)轉(zhuǎn)換成數(shù)碼管顯示,同時通過單片機的相應(yīng)引腳輸出的控制信號來控制時間信號所顯示的位置及光標(biāo)的形態(tài)等。從而達到將所計時間顯示在數(shù)碼管上面。(注:由于實驗設(shè)備和環(huán)境的原因,不能實現(xiàn)顯示節(jié)假日、農(nóng)歷、節(jié)氣以及鬧鈴等功能)實現(xiàn)以上的任務(wù)需要幾大模塊: 實現(xiàn)自動識別閏年,大小月份天數(shù)的算法。 如何實現(xiàn)將所計的數(shù)字轉(zhuǎn)換成數(shù)碼管顯示。 怎樣實現(xiàn)對電子時鐘的時間調(diào)節(jié)。2.2 關(guān)于此系統(tǒng)的背景知識2.2.1 相關(guān)的單片機知識簡介TMR1和TMR0一樣,既可作為時間定時器又可當(dāng)作事件計數(shù)器。但它是一個16位寬的上升沿觸發(fā)的累加計數(shù)“寄存器對”即TMR1HH和TMR1L。與它相關(guān)的寄存器有6個如表2.1所示 寄存器名稱寄存器符號寄存器地址 寄存器內(nèi)容BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0 中斷控制寄存器INTCON0B/8B/10B/18BGIEPIE1T0 I 1INTERBIET0IFINTFRBIF第一外設(shè)中斷控制寄存器PIR10CHPSPIFADIFRCIFTXIFSSPIFCCP1IFTMR2IFTMR1IF第一外設(shè)中斷屏蔽寄存器 PIE1 8CHPSPIEADIERCIETXIESSPIECCP1IETMR2IETMR1IETMR1低字節(jié)TMR1L 0EH 16位TMR1計數(shù)寄存器低字節(jié)寄存器TMR1高字節(jié)TMR1H 0FH 16位TMR1計數(shù)寄存器高字節(jié)寄存器TMR1控制寄存器T1CON 10HT1CK PS1T1CK PS0T1OS CENT1SYNCTMR1 CSTMR1ON 表2.1:與TMR1模塊相關(guān)的寄存器(陰影部分表示沒有用到的寄存器) Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0T1CKPS1T1CKPS0T1OSCENT1SYNCTMR1CSTMR1ON表2.2:TRMR1控制寄存器T1CON其中TMR1控制寄存器T1CON是一個只用到低6位的可讀/寫寄存器。最高2外位未用,讀出是返回0,其余各位的含義如下: TICKPS1T1CKPS0:分頻器分頻比選擇位,如表2.3 表2. 3:分頻器分頻比 T1CKPS1T1CKPS2分 頻 比 0 0 1 :1 0 1 1 :2 1 0 1 :4 1 1 1 :8 T1OSCEN:TMR1自帶振蕩器使能位 1允許TMR1振蕩器起振; 0禁止TMR1振蕩器起振,令非門的輸出端成高阻態(tài)。 T1SYNC:TMR1外部輸入時鐘與系統(tǒng)時鐘同步控制位。 TMR1工作于計數(shù)器方式(TMR1CS=1時): 1=TMR1外部輸入時鐘于系統(tǒng)時鐘不保持同步; 0= TMR1外部輸入時鐘于系統(tǒng)時鐘保持同步; TMR1工作于定時器方式(TMR1CS=0時): 該位不起作用。 TMR1CS:時鐘源選擇位。 1=選擇外部時鐘源,即時鐘信號來源于外部引腳或自帶振蕩器; 0=選擇內(nèi)部時鐘源(fosc/4=TCYC指令周期). TMR1ON: TMR1使能控制位 1=開啟TMR1,使TMR1進入活動狀態(tài); 0=關(guān)閉TMR1,使TMR1退出活動狀態(tài),以節(jié)省能耗.2.2.2相關(guān)的數(shù)碼管知識(A)數(shù)碼管的外部結(jié)構(gòu)數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。(實物參照圖片)。 圖2.1:數(shù)碼管的實物圖(B)數(shù)碼管的分類 數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。(C)數(shù)碼管的驅(qū)動數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。 靜態(tài)顯示驅(qū)動:靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅(qū)動,或者使用如BCD碼二-十進制譯碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5840根I/O端口來驅(qū)動,要知道一個89S51單片機可用的I/O端口才32個呢:),實際應(yīng)用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復(fù)雜性。 動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。(D)數(shù)碼管參數(shù)8字高度:8字上沿與下沿的距離。比外型高度小。通常用英寸來表示。范圍一般為0.25-20英寸。長*寬*高:長數(shù)碼管正放時,水平方向的長度;寬數(shù)碼管正放時,垂直方向上的長度;高數(shù)碼管的厚度。時鐘點:四位數(shù)碼管中,第二位8與第三位8字中間的二個點。一般用于顯示時鐘中的秒。(E)數(shù)碼管應(yīng)用數(shù)碼管使用的電流與電壓電流:靜態(tài)時,推薦使用10-15mA;動態(tài)時,16/1動態(tài)掃描時,平均電流為4-5mA,峰值電流50-60mA。電壓:查引腳排布圖,看一下每段的芯片數(shù)量是多少?當(dāng)紅色時,使用1.9V乘以每段的芯片串聯(lián)的個數(shù);當(dāng)綠色時,使用2.1V乘以每段的芯片串聯(lián)的個數(shù)。恒流驅(qū)動與非恒流驅(qū)動對數(shù)碼管的影響 顯示效果由于發(fā)光二極管基本上屬于電流敏感器件,其正向壓降的分散性很大, 并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度,就需要使其具有恒定的工作電流,且不能受溫度及其它因素的影響。另外,當(dāng)溫度變化時驅(qū)動芯片還要能夠自動調(diào)節(jié)輸出電流 的大小以實現(xiàn)色差平衡溫度補償。 安全性:即使是短時間的電流過載也可能對發(fā)光管造成永久性的損壞,采用恒流驅(qū)動電路后可防止由于電流故障所引起的數(shù)碼管的大面積損壞。另外,我們所采用的超大規(guī)模集成電路還具有級聯(lián)延時開關(guān)特性,可防止反向尖峰電壓對發(fā)光二極管的損害。超大規(guī)模集成電路還具有熱保護功能,當(dāng)任何一片的溫度超過一定值時可自動關(guān)斷,并且可在控制室內(nèi)看到故障顯示。3.系統(tǒng)結(jié)構(gòu)及功能的實現(xiàn)3.1系統(tǒng)的基本結(jié)構(gòu)電子時鐘是用于計算時間并顯示時間的一種計時器,時間的值是不斷變化的。所以它最起碼的結(jié)構(gòu)應(yīng)有時間計數(shù)器、顯示器、以及一些外部電路所需元件。這里的時間計數(shù)器我們用PIC16F877單片機代替,同時兼作信號輸入輸出控制器,顯示器用數(shù)碼管顯示。其電路圖如下:圖3.1:系統(tǒng)結(jié)構(gòu)電路圖3.2系統(tǒng)功能的實現(xiàn)電子時鐘是一種自動計時器,但它必須的按照相應(yīng)的歷法規(guī)則來計時。規(guī)則如下:i. 一年12個月閏年366天,平年365天;ii. 一月31天,平年二月28天(閏年二月29天),三月31天,四月30天,五月31天,六月30天,七月31天,八月31天,九月30天,十月31天,十一月30天,十二月31天;iii. 當(dāng)年數(shù)為四的倍數(shù),且不是一百的倍數(shù)時,當(dāng)年為閏年,全年366天,二月為29天,其余各月不變。否則為平年。iv. 當(dāng)年數(shù)為一百的倍數(shù),且不是四百的倍數(shù)時,當(dāng)年為平年,否則為閏年。v. 一天24個小時,每小時60分鐘,每分60秒。以上是最基本的歷法,由于條件和時間有限,至于節(jié)氣、禮拜天等我們不考慮在內(nèi),系統(tǒng)完全是自動計算時、分、秒、日期、月份及年份。中間不需要人工去完成,因此,我們就必須做出相應(yīng)的算法來控制數(shù)碼管顯示對應(yīng)的碼段。設(shè)計步驟如下:步驟一:選擇芯片根據(jù)實際情況和設(shè)計要求選取合適的單片機,這里選用Microchip公司的P16F877芯片(PIC單片機可以在MPLAB-ICD演示板上實現(xiàn)),因為它的定時器1可以用作實時時鐘RTC。步驟二:確定時間的調(diào)整方法按鍵分別用RB0和RB7口,采用中斷方式RB0:用來選擇調(diào)整對象,并用指示燈作出相應(yīng)指示RB7:對選擇的對象進行調(diào)整使用方法:在初始狀態(tài),RD7指示燈點亮,此時沒有選擇調(diào)整對象。當(dāng)按一次RB0后,RD6指示燈點亮,此時可以用RB7對年份進行調(diào)整;同理,可以用RB0依次選中月,日,星期,時,分和秒,指示燈也會依次指示步驟三:定義寄存器 秒寄存器: SECOND 六十進制 有0狀態(tài) 分寄存器 : MINUTE 六十進制 有0狀態(tài) 時寄存器 : HOUR 二十四進制 有0狀態(tài) 星期寄存器 :WEEK 八進制 無0狀態(tài) 日寄存器 : DAY 根據(jù)年月確定進制(進制寄存器COUNT_D) 無0狀態(tài)月寄存器 : MONTH 十三進制 無0狀態(tài)年寄存器 : YEAR 一百進制(設(shè)計時間100年) 有0狀態(tài)初始默認(rèn)時間為2004/01/02 FRI 00:00:00及SECOND=0,MINUTE=0,HOUR=0,WEEK=5,DAY=2,MONTH=1,YEAR=4,COUNT_D=32進位寄存器 :CARRYBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Bit4:月進位標(biāo)志位 Bit3:日進位標(biāo)志位Bit2:時進位標(biāo)志位 Bit1:分進位標(biāo)志位Bit0:秒進位標(biāo)志位當(dāng)有進位時在相應(yīng)位上置1確定一個月的天數(shù)的寄存器:CARRY_DAYBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0 Bit3:當(dāng)月份(MONTH)為1,3,5,7,8,10或12時該位置1,1,2位置0 Bit2:當(dāng)月份(MONTH)為4,6,9或11時該位置1,1,3位置0 Bit1:當(dāng)月份(MONTH)為2時該位置1,2,3位置0 Bit0:當(dāng)為閏年(能被四整除)時該位置1,(只要YEAR的0,1位為0,便能整除) 閏年2月為29天,平年2月為28天 1,3,5,7,8,10,12月為31天; 4,6,9,11月為30天對象標(biāo)志寄存器:CON_OBJ 它是用來標(biāo)記所要調(diào)整的對象的Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Bit7:表示沒有選擇任何對象 Bit3:把星期作為當(dāng)前調(diào)整對象Bit6:把年作為當(dāng)前調(diào)整對象 Bit2:把時作為當(dāng)前調(diào)整對象Bit5:把月作為當(dāng)前調(diào)整對象 Bit1:把分作為當(dāng)前調(diào)整對象 Bit4:把日作為當(dāng)前調(diào)整對象 Bit0:把秒作為當(dāng)前調(diào)整對象步驟四:設(shè)置TMR1,產(chǎn)生1s脈沖 利用定時器1自帶的振蕩器,在外加上32768Hz的晶振,設(shè)預(yù)分頻比為1:1,TMR1H初始值設(shè)為80H,TMR1L初始值設(shè)為0H,此時便能產(chǎn)生1s鐘的實時時鐘脈沖初始化TMR1循環(huán)等待中斷開中斷,開定時器11主程序步驟五:畫框圖設(shè)置各口的I/O狀態(tài)設(shè)置默認(rèn)時間和默認(rèn)寄存器第47頁 共47頁調(diào)用液晶初始化子程序2時間中斷服務(wù)子程序(COUNT_TIME)關(guān)定時器1清中斷標(biāo)志,重裝初始值開定時器1SECOND+1SECOND=60 否 秒 N Y置秒進位標(biāo)志位,清SECOND秒進位標(biāo)志位置位否 N Y MINUTE+1置分進位標(biāo)志位,清MINUTEMINUTE=60 否 分 N Y置時進位標(biāo)志位,清HOURHOUR=24 否 HOUR+1分進位標(biāo)志位置位否 N Y時 N YDAY+1時進位標(biāo)志位置位否 N YWEEK+1WEEK=8否 N 星期 Y1WEEKSECOND+6,進行時間修正DAY=COUNT_D 否 N 日 Y置日進位標(biāo)志位,1DAY置月進位標(biāo)志位,1HOURMONTH=12否 MONTH+1日進位標(biāo)志位置位否 N Y N 月 Y調(diào)查月份置CARRY_DAY標(biāo)志寄存器子程序調(diào)對COUONT_D賦值子程序月進位標(biāo)志位置位否 N YYEAR+1YEAR=100 否 年 N Y置月進位標(biāo)志位,清YEAR調(diào)查閏年子程序調(diào)翻譯子程序調(diào)LCD時間顯示子程序返回查閏年子程序(LEAP_YEAR) 3YEAR的0位為0否 N YYEAR的1位為0否 N Y確定為平年,將CARRY_DAY0位置0確定為閏年,將CARRY_DAY0位置1返回4查月份置CARRY_DAY標(biāo)志寄存器子程序(EXAM_MONTH) MONTH=2否 Y NMONTH=2否 Y 把CARRY_DAY的1位置1,2,3位置0 NMONTH=2否 Y NMONTH=2否 Y NMONTH=2否 Y N把CARRY_DAY的3位置1,1,2位置0把CARRY_DAY的2位置1,1,3位置0返回556年翻譯子程序(TRAN_Y)翻譯子程序(TRANSLATE)調(diào)BCD轉(zhuǎn)換子程序調(diào)年翻譯子程序調(diào)數(shù)字ASCII翻譯子程序序調(diào)月翻譯子程序返回調(diào)日翻譯子程序 入口:YEAR 出口:YEAR_H,YEAR_L雕星期翻譯子程序 7 調(diào)時翻譯子程序返回調(diào)數(shù)字ASCII翻譯子程序序調(diào)BCD轉(zhuǎn)換子程序月翻譯子程序(TRAN_MO)調(diào)分翻譯子程序調(diào)秒翻譯子程序返回 入口:MONTH 出口:MONTH_H,MONTH_L返回調(diào)數(shù)字ASCII翻譯子程序序調(diào)BCD轉(zhuǎn)換子程序時翻譯子程(TRAN_HOUR)89返回返回調(diào)數(shù)字ASCII翻譯子程序序調(diào)BCD轉(zhuǎn)換子程序日翻譯子程序(TRAN_DAY)入口:DAY 出口:DAY_H,DAY_L 入口:HOUR 出口:HOUR_H,HOUR_L11返回調(diào)數(shù)字ASCII翻譯子程序序調(diào)BCD轉(zhuǎn)換子程序秒翻譯子程序(TRAN_S)返回10返回返回調(diào)數(shù)字ASCII翻譯子程序序調(diào)BCD轉(zhuǎn)換子程序分翻譯子程序(TRAN_M) 入口:MINUTE 出口:MINUTE_H,MINUTE_L 入口:SECOND 出口:SECOND_H,SECOND_L1312星期翻譯子程序(TRAN_W)數(shù)字ASCII翻譯子程序(ASCII_F)調(diào)數(shù)字ASCII查表子程序(查BCD_H)調(diào)WEEK1字母表子程序序調(diào)數(shù)字ASCII查表子程序(查BCD_L)調(diào)WEEK2字母表子程序序返回調(diào)WEEK3字母表子程序序返回 入口:BCD_H , BCD_L 出口:ASCII_H , ASCII_L15入口:WEEK 出口:WEEK1,WEEK2,WEEK3 1412WEEK1字母表子程序(TRAN_W1)查表返回以W內(nèi)容為偏移量修改PC當(dāng)前值數(shù)字ASCII查表子程序(TAB_F)以W內(nèi)容為偏移量修改PC當(dāng)前值查表返回 入口:W 出口:W 入口:W 出口:W1716查表返回以W內(nèi)容為偏移量修改PC當(dāng)前值W

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論