基于單片機的語音報時系統(tǒng)-畢業(yè)論文_第1頁
基于單片機的語音報時系統(tǒng)-畢業(yè)論文_第2頁
基于單片機的語音報時系統(tǒng)-畢業(yè)論文_第3頁
基于單片機的語音報時系統(tǒng)-畢業(yè)論文_第4頁
基于單片機的語音報時系統(tǒng)-畢業(yè)論文_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的語音報時系統(tǒng)中文摘要本文主要介紹了利用凌陽科技公司的 SPCE061A單片機作為主控制器設計的語音報時系統(tǒng)方 案。結合SPCE061A強大的語音功能,語音報時、播報日期的功能。這是一種用新型凌陽單片機 來實現(xiàn)的SPCE061單片機作為控制器制作的語音報時系統(tǒng)。該方案充分利用單片機強大的編程、 語音處理、以及中斷,并且操作簡單、易于修改,是理想的數(shù)字控制系統(tǒng)。本文首先簡介凌陽單片機的發(fā)展,緊接著詳細描述了凌陽單片機 SPCE061A的組成原理及其 功能。根據(jù)它的組成原理及其指令系統(tǒng),設計了語音報時系統(tǒng)的軟件部分,包括主程序,語音播 放程序。此類單片機特別是在數(shù)字處理及語音處理方面有著

2、明顯的優(yōu)越性,所以本次設計中采用凌陽SPCE061單片機,它能夠使所設計的產品更具智能化和先進性。關鍵詞: 電子鐘;SPCE061A語音SCM Production Using digital clockABSTRACTThis paper describes the use of Sun plus Tech no logy, Inc. SPCE061A SCM as the mai n con troller of digital electro nic bell programme. Sun plus SPLC501A use of LCD module, with SPCE061A po

3、werful voice and realized the Gregoria n cale ndar. Lunar New Year, stopwatch, alarm clock and voice broadcast, the broadcast date, and other fun cti ons. This is a New Sun plus microc on troller to achieve the SPCE061A SCM as a controller and LCD module SPLC501A a digital clock. The programme full

4、use of a powerful microc on troller program ming, voice process ing, and multi-f unction in terrupt in put / output and simple, easy to modify,is the ideal digital con trol system.This paper first brief Sun plus the developme nt of SCM, followed by a detailed descripti on of the compositi on of Sun

5、plus SCM SPCE061A prin ciple and fun cti on. Accordi ng to its compositi on and its comma nd system theory and desig n of digital electro nic clock con trol system software, in clud ing the main program, display, voice player. SCM especially in such digital processing and voice processing there are

6、disti net adva ntages, so this desig n in the use of Sun plus SPCE061A SCM, it can make the products more in tellige nt desig n and adva need.KEY WORD: clock; SPCE061A; PRONUNCIATION TIME WATCH TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 第一章前言 1 HYPERLINK l bookmark6 o Current Document 1.

7、1系統(tǒng)功能 2 HYPERLINK l bookmark8 o Current Document 1.2基本參數(shù) 2 HYPERLINK l bookmark10 o Current Document 1.3注意事項 2 HYPERLINK l bookmark12 o Current Document 第二章模塊特性簡介 2 HYPERLINK l bookmark14 o Current Document SPCE061A單片機 3SPCE061A 簡介 3芯片特性 4 HYPERLINK l bookmark16 o Current Document SPCE061A精簡開發(fā)板 4SPL

8、C501A夜晶模組 錯誤!未定義書簽。 HYPERLINK l bookmark18 o Current Document 2.4語音的設計及工作原理 6 HYPERLINK l bookmark20 o Current Document 2.5系統(tǒng)總體方案介紹 6 HYPERLINK l bookmark22 o Current Document 第三章 系統(tǒng)硬件設計 8 HYPERLINK l bookmark24 o Current Document SPCE061A最小系統(tǒng) 8 HYPERLINK l bookmark26 o Current Document 3.2電源模塊 8 HY

9、PERLINK l bookmark28 o Current Document 3.3音頻輸出模塊 93.4液晶顯示模塊 錯誤!未定義書簽。顯示RAM區(qū)映射情況 錯誤!未定義書簽。SPLC501驅動控制器芯片 錯誤!未定義書簽。 HYPERLINK l bookmark30 o Current Document 第四章系統(tǒng)軟件設計 10 HYPERLINK l bookmark32 o Current Document 4.1軟件的結構 10 HYPERLINK l bookmark34 o Current Document 4.2各模塊程序的說明 11概述 11主程序 11中斷服務程序 12

10、時間日期模塊 14SPLC501液晶顯示模組顯示漢字 錯誤!未定義書簽。常用功能函數(shù)介紹(用戶 API) 錯誤!未定義書簽。 HYPERLINK l bookmark36 o Current Document 第五章操作步驟 16 HYPERLINK l bookmark38 o Current Document 5.1軟件的操作步驟 16LCD漢字顯示操作步驟 錯誤!未定義書簽。程序燒入硬件操作步驟 16語音播放操作步驟 錯誤!未定義書簽。5.2操作界面 錯誤!未定義書簽。 HYPERLINK l bookmark40 o Current Document 第六章結論 18 HYPERLIN

11、K l bookmark42 o Current Document 參考文獻 19致 謝 錯誤!未定義書簽。 HYPERLINK l bookmark44 o Current Document 附錄一軟件編寫程序 20 HYPERLINK l bookmark46 o Current Document 附錄二主要元器件清單 51 第一章前言20世紀末,電子技術獲得了飛速的發(fā)展,在其推動下,現(xiàn)代電子產品幾乎滲透了社會的各個 領域,有力地推動了社會生產力的發(fā)展和社會信息化程度的提高, 同時也使現(xiàn)代電子產品性能進 一步提高,產品更新?lián)Q代的節(jié)奏也越來越快。時間對人們來說總是那么寶貴,工作的忙碌性和繁雜

12、性容易使人忘記當前的時間。忘記了要 做的事情,當事情不是很重要的時候,這種遺忘無傷大雅。但是,一旦重要事情,一時的耽誤可 能釀成大禍。目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著CMOS化、低功耗、小體積、大容量、高性能、低價格和外圍電路內裝化等幾個方面發(fā)展。 下面是單片機的主要發(fā)展趨勢。單片機應用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設計思想和設計方法。 從 前必須由模擬電路或數(shù)字電路實現(xiàn)的大部分功能,現(xiàn)在已能用單片機通過軟件方法來實現(xiàn)了。 這 種軟件代替硬件的控制技術也稱為微控制技術,是傳統(tǒng)控制技術的一次革命。單片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術

13、實現(xiàn)時、分、秒計時的裝置, 與機械式時鐘相比具有更高的準確性和直觀性, 且無機械裝置,具有更長的使用壽命,因此得到 了廣泛的使用。數(shù)字鐘是采用數(shù)字電路實現(xiàn)對時、分、秒、數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站,碼 頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體 振蕩器的廣泛應用,使得數(shù)字鐘的精度,遠遠超過老式鐘表,鐘表的數(shù)字化給人們生產生活帶來了 極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間 程序自動控制、定時廣播芯片自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各種定時電氣 的自動啟用等,所有這些,都是以數(shù)字電

14、子鐘具有走時準確,一鐘多用等特點,在生活中已經得到了廣泛的應用。隨著科技的發(fā)展,人們對電子產品的應用要求越來越高,數(shù)字電子鐘不但可以 顯示當前的時間,而且可以顯示日期、農歷、以及星期等,給人們的生活帶來了方便。另外數(shù)字 鐘還具備秒表和鬧鐘功能,且鬧鐘鈴聲可自選,使一款電子鐘具備了多媒體的色彩。本方案利用凌陽16位單片機SPCE061A作為主控芯片,充分利用SPCE061A精簡開發(fā)板(簡 稱61板)上面的三個按鍵,完成一個簡易的數(shù)字系統(tǒng) 一一數(shù)字電子鐘。該數(shù)字鐘可以將當前的日期和時間播報出來,以及調時功能,具有較強的可擴展性,滿足了不同人的需要。該方案的主要功能是能通過SPCE061A的音頻通道

15、播報當前的日期和時間。61板上面的三個 按鍵可以控制實現(xiàn)所有的功能,在播報日期和時間狀態(tài)下按Keyl播報年、月、日,再按一下播報時、分長按Keyl鍵達到1.5秒,則進入日期時間調整模式,Key2 -在調整模式下,使年、月、 日、時、分、秒增加,Key3 -在調整模式下,使年、月、日、時、分、秒減小。1.1系統(tǒng)功能本系統(tǒng)利用凌陽科技公司的SPCE061A單片機作為控制器。系統(tǒng)具有以下功能:可以語音播報日期和時間;具有調整日期和時間功能;1.2基本參數(shù)工作電壓:4.5V( 3節(jié)干電池);日期顯示范圍:2001-2100年;時間采用24小時制。1.3注意事項1 .請將61板上的J5跳線選擇3.3V

16、;在安裝電池時注意正負極,否則容易燒壞芯片;在印制電路板上的焊接元器件前要認真對照原理圖,仔細查看印制電路板,找到對應的元器件功能區(qū);在電源測試期間請勿將單片機芯片插入座中,以免電源部分有問題造成芯片燒壞。第二章模塊特性簡介該數(shù)字鐘系統(tǒng)主要由SPCE061精簡開發(fā)板(簡稱61板)構成。系統(tǒng)通過61板上的三個按鍵控 制揚聲器播放語音。所以這里主要介紹 SPCE061精簡開發(fā)板。2.1 SPCE061A 單片機2.1.1 SPCE061A 簡介SPCE061是凌陽科技研發(fā)生產的性價比很高的一款十六位單片機,具有易學易用且效率較高 的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標準C語言,可以實現(xiàn)C

17、語言與匯編語言的互 相調用,并且,提供了語音錄放和語音識別的函數(shù)庫,只要了解庫函數(shù)的使用方法,就可以很容 易完成語音錄放,為軟件開發(fā)提供了方便的條件。SPCE061主要包括輸入/輸出端口、定時器/計數(shù)器、數(shù)/模轉換、模/數(shù)轉換、串行設備輸 入/輸出、通用異步串行接口、低電壓監(jiān)測和復位等電路,并且內置在線仿真電路 ICE接口,使其 能夠快速地處理復雜的數(shù)字信號。SPCE061片內還集成了一個ICE (在線仿真電路)接口,使得對該芯片的編程、仿真變得非常方便,而ICE接口不占用芯片上的硬件資源,結合凌陽科技提供的集成開發(fā)環(huán)境(unSPIDE),用戶可以進行在線調試、仿真;而程序的下載(燒寫)也是通

18、過該接口完成。IOA15-0IOBI&-Q圖1 SPCE061A內部結構圖2.1.2 芯片特性16位叮nS微處理器;工作電壓:內核工作電壓VDD為3.03.6V(CPU), I/O 口工作電壓VDDH為VDD5.5V(I/O);CPU寸鐘:0.32MHz49.152MHz ;內置2K字SRAM ;內置32K閃存ROM ;可編程音頻處理;晶體振蕩器;系統(tǒng)處于備用狀態(tài)下(時鐘處于停止狀態(tài));個16位可編程定時器/計數(shù)器(可自動預置初始計數(shù)值);個10位DAC(數(shù)-模轉換)輸出通道;3位通用可編程輸入/輸出端口;1個中斷源可來自定時器A / B,時基,2個外部時鐘源輸入,鍵喚醒;具備觸鍵喚醒的功能;

19、使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數(shù)據(jù);鎖相環(huán)PLL振蕩器提供系統(tǒng)時鐘信號;3268Hz實時時鐘;通道10位電壓模-數(shù)轉換器(ADC)和單通道聲音模-數(shù)轉換器;聲音模-數(shù)轉換器輸入通道內置麥克風放大器和自動增益控制(AGC)功能;具備串行設備接口;低電壓復位(LVR)功和低電壓監(jiān)測(LVD)功能;內置在線仿真板(ICE, In- Circuit Emulator)。2.2 SPCE061A精簡開發(fā)板SPCE061精簡開發(fā)板(簡稱61板),是以凌陽16位單片機SPCE061為核心的精簡開發(fā)仿真-實驗板,大小相當于一張撲克牌,是“凌陽科技大學計劃”專為大

20、學生、電子愛好者等進行電子實習、課程設計、畢業(yè)設計、電子制作及電子競賽所設計的,也可作為單片機項目初期研發(fā)使 用。61板除了具備單片機最小系統(tǒng)電路外,還包括有電源電路、音頻電路(含Mic輸入部分和DAC音頻輸出部分)、復位電路等,采用電池供電,方便學生隨身攜帶!使學生在掌握軟件的同時, 熟悉單片機硬件的設計制作,鍛煉學生的動手能力,也為單片機學習者和開發(fā)者創(chuàng)造了一個良好 的學習條件和開發(fā)新產品的機會! 61板上有調試器接口( Probe接口)以及下載線(EZ_Probe) 接口,分別可接凌陽科技的在線調試器、簡易下載線,配合un SPIDE,可方便地在板上實現(xiàn)程序的下載、在線仿真調試。61板上

21、的主要功能模塊如下:1.SPCE061A單片機最小系統(tǒng)外圍電路模塊;電源輸入模塊;音頻電路(包含Mic輸入、DAC音頻功放輸出)模塊;按鍵模塊;5.1/0端口接口模塊;6.調試、下載接口模塊;圖2為61板的實物圖:圖2 61板實物圖2.3語音的設計及工作原理本次設計的要求為整個系統(tǒng)在運行時能夠根據(jù)要求及時的發(fā)出聲音,以增加效果。為了配合設計要求,設計了語音模塊。語音是 SPCE061A的一大特點。應用SPCE061A可以方便的實現(xiàn)語音 的錄放,該芯片擁有8路10位精度的AD。其中1路AD為音頻轉化通道,并且內置自動增益電路。 這為語音的錄入提供方便的硬件條件。2路 10位精度的DA,只需外接1

22、個功放即可完成語音播放。 一般都是用C語言作為主程序,用匯編語言編制各種模塊,供主程序調用。凌陽音頻格式常用的 有3種,將壓縮前的數(shù)據(jù)量比上壓縮后的數(shù)據(jù)量即可以得到凌陽不同音頻格式壓縮比:SACM A2000 :壓縮比為 8: 1,8: 1.25,8:1.5;SACM S480:壓縮比為 80:3, 80:4.5;SACM S240:壓縮比為 80:1.5;壓縮比越大,存儲空間越小,更加節(jié)省資源。2.5系統(tǒng)總體方案介紹電子鐘的系統(tǒng)結構如圖3,圖4為電子鐘功能結構圖,61板作為整個系統(tǒng)的控制中心,負責 控制鍵盤掃描;年、月、日、星期以及時間的計算;并根據(jù)按鍵值播報當前的日期或者時間。在 聲音的處

23、理上主要采用凌陽科技的語音壓縮格式,將需要播放的聲音壓縮存在SPF模組里面,然后通過61板將語音資源取出播放出來。本系統(tǒng)采用了語音的錄入和輸出播放。圖3系統(tǒng)結構框圖圖4功能結構圖用61板控制數(shù)字鐘系統(tǒng),使用了 IOA 口的IOA0 IOA2位連接SPCE061A上的三個按鍵,另夕卜 使用了 61板的語音輸出模塊;以及61板上的三個按鍵,電路連接如圖5。第三章系統(tǒng)硬件設計3.1 SPCE061A最小系統(tǒng)SPCE061A最小系統(tǒng)包括SPCE061A芯片及其外圍的基本模塊,其中外圍的基本模塊有:晶 振輸入模塊(OSC)、鎖相環(huán)外圍電路(PLL)、復位電路(RESET)、指示燈(LED )等,如 圖7

24、所示。aacc o-zcOSC 320JTTKTLrTDDLiNCNGNGNCNC 卜+- toon OBifC17.iDCmVSSvd口14X1CE X1GECLK KJ匚赳!3 口既VS5Ail :JAC2 VRF2 VSSAOCOP1 WCOUTUICN=FU5BKGWTKMI&Ad22A /L :- *31F =KjSLEE?VSSCMI4 g佶 3門 Crtll 3DICA95OE1;5GE 1353DE 1454:E 15虻5LZE.JSA2曲5Q“ h57IQA13=EOK115EA1C343#、r i:;-圖5 SPCE061A最小系統(tǒng)3.2電源模塊J10接入,其中前后兩組電容

25、用來去耦濾波,SPCE061A板采用3節(jié)5號電池進行供電,由使其供給芯片的電源更加干凈平滑。為了獲得標準的3.3伏電壓,在電路上加入SPY0029三端穩(wěn)壓器和兩個二極管,是為了防止誤將電源接反造成不必要損失而設置的。在操作過程中千萬不要 將電源接反,因為反向電壓超過一定值,二極管將會被損壞,達不到保護的目的。后面的零電阻 及其電源分成不同的幾路是為了減少電磁干擾設置的。圖6是電源部分的電路,4.5V直流電壓經過SPY0029后產生3.3V給整個系統(tǒng)供電。SPY0029是凌陽公司設計的電壓調整IC,采用CMOS工藝。SPY0029具有靜態(tài)電流低、驅動能力強、線性調整出色等特點。4.2圖中的VDD

26、H3 為SPCE061A的I/O電平參考,接 SPCE061A的51腳,這種接法使得I/O輸出高電平為3.3V ; VDDP為PLL鎖相環(huán)電源,接SPCE061A的7腳;VDD和VDDA分別為數(shù)字電源與模擬電源, 分別接SPCE061A的15腳和36腳;AVSS1是模擬地,接SPCE061A的24腳;VSS是數(shù)字地, 接SPCE061A的38腳;AVSS2接音頻輸出電路的 AVSS2。61板電源模塊電路如圖8,SPCE061A的內核供電為3.3V,而I/O端口可接3.3V5V,所以在 電源模塊(61板上)中有一個端口電平選擇跳線,如圖中的J5。本系統(tǒng)需要的端口高電平為3.3V, 所以圖8中的J

27、5跳線需要跳到2和3上。圖6 電源模塊3.3音頻輸出模塊音頻輸出(D/A)部分的原理圖如圖7所示,可以直接聽喇叭輸出的聲音。圖中的 SPY0030 也是凌陽公司的產品。它的詳細說明可以參見 SPY0030 data sheet和LM386相比,SPY0030還具 有下述優(yōu)勢,比如LM386工作電壓需在4V以上,SPY0030&需2.4V即可工作(兩顆電池即可工作); LM386輸出功率100mW以下,SPY0030約700mW。芯片將聲音處理后輸出(J2),經SPY0030音 頻放大輸出(J3)通過揚聲器還原為聲音。SPY0030A是凌陽公司開發(fā)的專門用于語音放大的芯 片。SPY0030的輸入

28、電壓的范圍是2.4 6.0伏,該電路中采用的電壓是3.3伏。SPCE061A內置2路10位 DAC,只需要外接功放電路即可完成語音的播放第四章 系統(tǒng)軟件設計4.1軟件的結構下圖中可以看出各文件之間的調用關系圖8軟件結構數(shù)字鐘主要還是軟件實現(xiàn)的,數(shù)字鐘的軟件設計由以下程序構成:1、main.c:實現(xiàn)系統(tǒng)的初始化、鍵盤掃描和語音播報;2、system.c包含工程中大部分的功能函數(shù),包括時間和日期的調整等;3、key.c:鍵盤掃描文件,文件中定義了鍵盤掃描函數(shù)、延時函數(shù)、用來實現(xiàn)對鍵盤的掃描等 功能、鍵盤掃描采用查詢方式;4、isr.asm中斷服務函數(shù)文件,實現(xiàn)語音解碼以及時間、日期的修改;5、sp

29、eak.c語音播報函數(shù),實現(xiàn)語音播報日期、時間。4.2各模塊程序的說明4.2.1概述由于凌陽SPCEA061A,使得外圍電路變的更簡單。制作好系統(tǒng)的硬件電路后,整個系統(tǒng)的 主體任務主要落在了程序的編寫上。SPCE061A是凌陽科技研發(fā)生產的性價比很高的一款十六位 單片機,具有易學易用且效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標準C語言,可以實現(xiàn)C語言與匯編語言的互相調用,并且,提供了語音錄放和語音識別的函數(shù)庫, 只要了解庫函數(shù)的使用方法,就可以很容易完成語音錄放,為軟件開發(fā)提供了方便的條件。此次 系統(tǒng)采用了模塊程序結構,模塊程序結構包括了初始化,系統(tǒng)主程序模塊,語音播放模塊,顯示

30、 模塊。C語言屬于高級語言,有著匯編語言無法比擬的優(yōu)點,而SPCE061A開發(fā)系統(tǒng)抓住了這個 關鍵,兩者結合,充分發(fā)揮各自的優(yōu)勢。在用到語音的時候,一般都是用C語言作為主程序,用匯編語言編制各種模塊,供主程序調用。本系統(tǒng)采用了這種編制方法使得相互調用非常簡單。4.2.2主程序主程序流程如圖9所示,在主程序中初始化了整個工程中用到的變量,初始化了液晶顯 示模塊。開2Hz中斷實現(xiàn)計時。在主程序中調用了鍵盤掃描程序,對IOA 口的低三位進行掃描,如果有 鍵按下,就把相應的鍵值存入到一個變量中, 通過主程序來判斷是哪個鍵按下, 并執(zhí)行相應的功 能:按Key1播報年、月、日,再按一下播報時、分長按 Ke

31、y1鍵達到1.5秒,則進入日期時間調整 模式,Key2 -在調整模式下,使年、月、日、時、分、秒增加,Key3 -在調整模式下,使年、月、日、時、分、秒減小。423中斷服務程序中斷服務程序有三個:一個是2Hz中斷服務程序,用來計時;一個是1KHz中斷服務程序, 用于秒表計時;另外一個是FIQ中斷服務程序,用來播放語音。程序的流程分別如圖 10、圖11、 圖12。圖10 IRQ5時基中斷流程圖另外一個是FIQ中斷服務程序,用來播放語音424時間日期模塊時間日期程序模塊的流程圖如圖13所示,該模塊用到了 2Hz的時基中斷,用來實現(xiàn)計時,同 時實現(xiàn)了日期的更新。圖13時間日期模塊流程圖第五章操作步驟

32、5.1軟件的操作步驟5.1.1程序燒入硬件操作步驟步驟一:根據(jù)圖5數(shù)字鐘連接示意圖連接硬件,并連接好下載線步驟二:打開電池盒電源步驟三:啟動u nSRDE。打開數(shù)字鐘應用實例程序(路徑:數(shù)字電子鐘禮包 參考源代碼monthdayclock monthdayclock.sp),編譯、鏈接確認沒有錯誤。如圖 14所示:圖14打開數(shù)字鐘應用實例程序步驟四:下載程序代碼到61板上。步驟五:下載成功后會有幾秒鐘的開機畫面,隨后會進入時間日期顯示界面,初始時間設定為:00: 00: 00,日期為2006年8月1日。按Keyl播報年、月、日,再按一下播報時、分長按 Keyl鍵達到1.5秒,則進入日期時間調整

33、 模式,Key2 -在調整模式下,使年、月、日、時、分、秒增加,Key3 -在調整模式下,使年、月、日、時、分、秒減小。具體操作流程圖如圖15:圖15具體操作流程圖第六章結論SPCE061A芯片強大的語音處理功能,為本系統(tǒng)的設計提供了便利條件;32個可編程I/O 口,使得擴展外圍設備非常方便;CPU可工作在0.32MHz49MHz的主頻范圍,并且擁有豐富的中斷 源,使得系統(tǒng)在語音播放、數(shù)據(jù)顯示等方面游刃有余,擴展性強。根據(jù)硬件的選擇和電路的搭配 進行了軟件的設計和編程,在實現(xiàn)硬件功能時,我們曾遇到一些問題,在參閱了許多資料結合實際 條件選擇了一種全面和簡單的數(shù)字鐘系統(tǒng),其次在焊接中和元器件的購

34、買都是在胡老師的指導下 購買的。在這次畢業(yè)設計中鍛煉了我的分析能力、解決問題和動手能力。顯然,這是一個比較簡單的數(shù)字鐘,在這個基礎上,稍微改動,或者擴展其他模塊可以設計 出一個更加完善的數(shù)字鐘系統(tǒng)。 比如,擴展外部存儲器可以增加鈴聲的數(shù)目、 可以改變鈴聲的播 放格式使鈴聲更加動聽、增加掉電保護功能等等,以此來提高同學們的對單片機的興趣。本次設 計中,我從基礎做起,做好每一個程序模塊,在最后的硬件調試中,取得成功,實現(xiàn)了數(shù)字鐘的基本 功能,達到了我們預期的設計目的。系統(tǒng)實物照片如圖 16。圖16系統(tǒng)實物照片參考文獻1李全利,遲榮強單片機原理及接口技術M,北京:高等教育出版社,2004.1.2黃智

35、偉.全國大學生電子設計競賽系統(tǒng)設計M,北京:北京航空航天大學出版社,2006.6.3黃智偉.凌陽單片機課程設計指導M,北京:北京航空航天大學出版社,2006.11.4李廣弟,朱月秀,王秀山.單片機基礎M,北京:北京航空航天大學出版社,2001.7. 趙曙光,郭萬有,楊頌華.可編程邏輯器件原理開發(fā)與應用M,西安:西安電子科技大學, 2000. 候伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設計M,西安:西安電子科技大學出版社, 1999.7康華光.模擬電子技術基礎(第四版)M,武漢:華中理工大學出版社,1999.8譚浩強.C語言程序設計(第二版)M,北京:清華大學出版社,1991.9陳小忠,黃寧.單

36、片機接口技術實用子程序M,北京:北京人民郵電出版社,2005.10歐偉明,周春臨,瞿遂春.電子信息系統(tǒng)設計M,西安電子科技大學出版社,2005.9.11賈立新,王涌.電子系統(tǒng)設計與實踐M,北京:清華大學出版社,2007.12羅亞非.凌陽16位單片機應用基礎M,北京:北京航空航天大學出版社,2003.13SPLC501A液晶顯示模塊產品說明書Z.凌陽大學計劃網站().14雷思孝.凌陽單片機原理及實用技術M,西安電子科技大學,2004.附錄一軟件編寫程序主程序:/ 工程名稱:61_SpeechClock/功能描述:61展程序示例-具有語音播報功能的電子鐘/涉及的庫:使用61板上的三個按鍵控制報時和

37、時間調整:Keyl -按一下播報年、月、日,再按一下播報時、分長按Keyl鍵達到1.5秒,則進入日期時間調整模式 Key2 -在調整模式下,使年、月、日、時、分、秒增加 Key3 -在調整模式下,使年、月、日、時、分、秒減小CMacro1016.lib/SacmV26e.lib/ 組成文件:main.c, Soun d.c, Clock.c, Clock_Speech.c, Clock_Adjust.c/ 硬件連接:Key.asm, hardware.asm, ISR.asmA2000.h, Sou nd.h, Clock.h, Clock_Speech.h, Clock_Adjust.h,

38、Key.h, SPCE061A.h, 61板自帶的三個按鍵已經連接在IOAOIOA2上/ 維護記錄: 2006-8-30 v1.0/=/=/文件名稱:main.c/功能描述:主程序/維護記錄:2006-08-30v1.0/=#in clude spce061a.h#in clude Sou nd.h#i nclude Key.h#i nclude Clock.h#i nclude Clock_Speech.h#i nclude Clock_Adjust.h/:/:int mai n() un sig ned int KeyCode; un sig ned int Flag = 0;語法格式:i

39、nt mai n(void);實現(xiàn)功能:主函數(shù)參數(shù):無返回值:無Key_I ni t();Clock_Start();/初始化按鍵掃描程序/初始化計時程序while(1)KeyCode = Key_Get(); switch(KeyCode) case KEY_1: if(Flag=O) PlayDate(); Flag = 1; elsePlayTime(); Flag = 0; break;case KEY_LONG_1: Adjust。; break;default: break;*P_Watchdog_Clear = 0 x01; *P_SystemClock = 0 x001F;II

40、獲取按鍵值/ Key1鍵,播放日期/時間II Key1鍵長按,調整日期和時間/清看門狗II進入睡眠模式子程序:1/= II文件名稱:Clock.cII功能描述:計時模塊,使用2Hz時基中斷II 維護記錄:2006-08-30v1.0/=II定義時鐘結構體#in clude spce061a.h typedef struct STR_CLOCK -un sig ned int Year; un sig ned int Mon; un sig ned int Day;un sig ned int Hour; un sig ned int Min;un sig ned int Sec; un sig

41、 ned int HalfSec; CLOCK;CLOCK Clock = 2006, 1, 1,0, 0, 0, 0;II時鐘初始值2006年1月1日0點0分const un sig ned int Mon th_Day12 = 31,28, 31,30, 31,30, 31,31, 30, 31,30, 31;II每月包含的天數(shù)/:/:void Clock_ISR() 語法格式: 實現(xiàn)功能: 參數(shù): 返回值:void Clock_ISR(void);計時模塊的2Hz中斷服務程序,應在IRQ5_2Hz中斷中調用 無無if(Clock.HalfSec=0)Clock.HalfSec = 1;

42、else/ 0.5 秒Clock.HalfSec = 0;Clock.Sec += 1; if(Clock.Sec=60) Clock.Sec = 0; Clock.Min += 1; if(Clock.Mi n=60) Clock.Min = 0; Clock.Hour += 1; if(Clock.Hour=24) /處理秒進位/處理分進位/處理小時進位Clock.Hour = 0;Clock.Day += 1;if(Clock.Day Mon th_DayClock.Mo n-1) -/處理天進位if(Clock.Mon!=2 | (Clock.Year&0 x03)!=0 | Cloc

43、k.Day29) Clock.Day = 1; Clock.M on += 1; if(Clock.Mon 12) Clock.M on = 1;Clock.Year += 1;II如果是閏年則2月29日不進位/處理月進位/=/ 語法格式: void Clock_Start(void);/實現(xiàn)功能:開始計時-/參數(shù):無/返回值:無/=void Clock_Start() -*P_INT_Ctrl_New |= C_IRQ5_2H z; _asm(IRQ ON);/=/ 語法格式: unsigned int Clock_GetYear();/實現(xiàn)功能:查詢當前年/參數(shù):無/返回值:當前年/= u

44、n sig ned int Clock_GetYear() -retur n Clock.Year;/=/ 語法格式:un sig ned int Clock_GetM on (void);/實現(xiàn)功能:查詢當前月/參數(shù):無/返回值:當前月/= un sig ned int Clock_GetMo n() -return Clock.M on; /=/ 語法格式: unsigned int Clock_GetDay(void);/實現(xiàn)功能:查詢當前日/參數(shù):無/返回值:當前日/= un sig ned int Clock_GetDay() -return Clock.Day; /=/ 語法格式:

45、 unsigned int Clock_GetHour(void);/實現(xiàn)功能:查詢當前小時/參數(shù):無/返回值:當前時/= un sig ned int Clock_GetHour() -retur n Clock.Hour;/=/ 語法格式:unsigned int Clock_GetMin(void);/實現(xiàn)功能:查詢當前分/參數(shù):無/返回值:當前分/= un sig ned int Clock_GetMi n() -return Clock.Mi n;/=/ 語法格式:unsigned int Clock_GetSec(void);/實現(xiàn)功能:查詢當前秒/參數(shù):無/返回值:當前秒/= u

46、n sig ned int Clock_GetSec() -return Clock.Sec; /=/ 語法格式:void Clock_SetYear(unsigned int Year);/實現(xiàn)功能:設置年/參數(shù):Year -年/返回值:無/= void Clock_SetYear( un sig ned int Year) -Clock.Year = Year;/=/語法格式:void Clock_SetMo n(un sig ned int Mon);/實現(xiàn)功能:設置月/參數(shù):Mon -月/返回值:無/= void Clock_SetMo n(u nsig ned int Mon) -C

47、lock.Mon = Mon;/=/語法格式:void Clock_SetDay (un sig ned int Day);/實現(xiàn)功能:設置日/參數(shù):Day -日/返回值:無/= void Clock_SetDay (un sig ned int Day)Clock.Day = Day;/=/ 語法格式:void Clock_SetHour(unsigned int Hour);/實現(xiàn)功能:設置小時-/參數(shù):Hour -時/返回值:無/= void Clock_SetHour( un sig ned int Hour) -Clock.Hour = Hour;/=/語法格式:void Clock

48、_SetMin(unsigned int Min);/實現(xiàn)功能:設置分/參數(shù):Min -分/返回值:無/= void Clock_SetMi n(u nsig ned int Min) -Clock.Min = Mi n;/=/ 語法格式:void Clock_SetSec(unsigned int Sec);/實現(xiàn)功能:設置秒/參數(shù):Sec -秒/返回值:無/= void Clock_SetSec( un sig ned int Sec) -*P_TimeBase_Clear = 0 x01;/ 時基計數(shù)器清零Clock.Sec = Sec;Clock.HalfSec = 0;/半秒計數(shù)清零

49、子程序:2/=/文件名稱:Clock_Adjust.c/功能描述:調整日期和時間的函數(shù)集/維護記錄:2006-08-30v1.0/=#in elude spce061a.h#in elude Sou nd.h#i nclude Clock.h#i nclude Clock_Speech.h#i nclude Key.h/=/語法格式:un sig ned int AdjustYear( un sig ned int Year);/實現(xiàn)功能:調整年/參數(shù):Year - 調整前的年/返回值:調整后的年/:un sig ned int AdjustYear( un sig ned int Year)

50、 un sig ned int KeyCode;un sig ned int TempYear = Year;PlayYear(TempYear);while(1)*P_Watchdog_Clear = 0 x01;KeyCode = Key_Get(); switch(KeyCode)case KEY_1:return TempYear;case KEY_2:/播放當前年/獲取按鍵/按Key1鍵返回調整后的年TempYear+;/按Key2鍵,年數(shù)加1PlayYear(TempYear);break;case KEY_3:TempYear-;/ 按 Key3 鍵,年數(shù)減 1PlayYear(

51、TempYear);break;default:break;/=/語法格式:un sig ned int AdjustM on(un sig ned int Mon);/實現(xiàn)功能:調整月/參數(shù):Mon -調整前的月/返回值:調整后的月/:un sig ned int AdjustM on(un sig ned int Mon) un sig ned int KeyCode;un sig ned int TempM on = Mon;/播報調整前的月PlayMo n(TempMo n); while(1)*P_Watchdog_Clear = 0 x01;KeyCode = Key_Get();

52、switch(KeyCode)case KEY_1:return TempM on;case KEY_2:TempM on+;if(TempMon12) TempMon = 1;PlayMo n(TempMo n);break;case KEY_3:TempM on-;if(TempM o*1) TempMon = 12;PlayMo n(TempMo n);break;default:break;/ Key1 ,返回調整后的月/ Key2 ,月數(shù)加1,至U 12后回復為1II Key3,月數(shù)減1,至U 1后變?yōu)?2/=II語法格式:un sig ned int AdjustDay (un s

53、ig ned int Year, un sig ned int Mon, un sig ned int Day);II實現(xiàn)功能:調整日II參數(shù):Year -調整后的年IIMon -調整后的月IIDay -調整前的日II返回值:調整后的日/= un sig ned int AdjustDay (un sig ned int Year, un sig ned int Mon, un sig ned int Day) un sig ned int KeyCode;un sig ned int TempDay = Day;if(TempDay Mon th_DayMo n-1)數(shù)則日期置為1if(Te

54、mpDay=29)if(Year&0 x03)!=0) TempDay = 1;else TempDay = 1;PlayDay(TempDay);while(1)*P_Watchdog_Clear = 0 x01;KeyCode = Key_Get();switch(KeyCode)case KEY_1:retur n TempDay;case KEY_2:TempDay+;1if(TempDay Mon th_DayMo n-1)/如果當前的日期已經超過調整后月的最大天/處理閏年/播放調整前日/ Key1 ,返回調整后日/ Key2,日數(shù)加1,達到當月最大日之后回復為/處理閏年/=/語法格

55、式:/實現(xiàn)功能:/參數(shù):if(TempDay=29) if(Year&0 x03)!=0) TempDay = 1;else TempDay = 1;PlayDay(TempDay);break;case KEY_3:TempDay-;/ Key3,日數(shù)減1,減到0時轉為當月最大日if(TempDay23) TempHour = 0;PlayHour(TempHour);break;case KEY_3:if(TempHour=0) TempHour = 23;else TempHour-;PlayHour(TempHour);break;default:break;/播報整前小時數(shù)/ Key

56、1 ,返回調整后的小時/ Key2 ,時數(shù)加1,至U 23后回復為0/ Key3,時數(shù)減1,至U 0后回復為23/=/語法格式:un sig ned int AdjustM in(un sig ned int Min);/實現(xiàn)功能:調整分/參數(shù):Min -調整前的分/返回值:調整后的分/:un sig ned int AdjustM in(un sig ned int Min) un sig ned int KeyCode;un sig ned int TempM in = Min;PlayNum(TempMi n);PlayS nd(S_Fe n);while(1)*P_Watchdog_C

57、lear = 0 x01;KeyCode = Key_Get(); switch(KeyCode)case KEY_1:return TempMi n;case KEY_2:TempM in+;/播報調整前的分鐘數(shù)/ Key1 ,返回調整后的分/ Key2,分鐘數(shù)加1,到59后變?yōu)?if(TempMi n59) TempMin = 0;PlayNum(TempMi n);PlayS nd(S_Fe n);break;case KEY_3:if(TempMin=0) TempMin = 59;/ Key3,分鐘數(shù)減 1,至U 0 后變?yōu)?59else TempMi n-;PlayNum(Temp

58、Mi n);PlayS nd(S_Fe n);break;default:break;/=/語法格式:un sig ned int AdjustSec( un sig ned int Sec);/實現(xiàn)功能:調整秒/參數(shù):Sec -調整前的秒/返回值:調整后的秒/=un sig ned int AdjustSec( un sig ned int Sec)un sig ned int KeyCode;un sig ned int TempSec = Sec;PlaySec(TempSec);/播報調整前的秒數(shù)while(1)*P_Watchdog_Clear = 0 x01;KeyCode = K

59、ey_Get();switch(KeyCode)case KEY_1:return TempSec;case KEY_2:TempSec+;if(TempSec59) TempSec = 0;PlaySec(TempSec);break;case KEY_3:if(TempSec=0) TempSec = 59;else TempSec-;PlaySec(TempSec);break;default:break;/ Key1 ,返回調整后的秒/ Key2,秒加1,到59后變?yōu)?/ Key3,秒減1,到0后變?yōu)?9/:/語法格式:/實現(xiàn)功能:/參數(shù):/返回值:void Adjust(void);

60、調整日期時間無無/:void Adjust()un sig ned int TempYear, TempM on, TempDay, TempHour, TempMi n, TempSec;TempYear = AdjustYear(Clock_GetYear();/調整年TempMon = AdjustMo n( Clock_GetM on ();/調整月TempDay = AdjustDay(TempYear, TempM on, Clock_GetDay(); /調整日TempHour = AdjustHour(Clock_GetHour();/ 調整時TempMin = AdjustM

溫馨提示

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

評論

0/150

提交評論