




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于單片機(jī)的語音報(bào)時(shí)系統(tǒng)中文摘要本文主要介紹了利用凌陽科技公司的SPCE061A單片機(jī)作為主控制器設(shè)計(jì)的語音報(bào)時(shí)系統(tǒng)方案。結(jié)合SPCE061A強(qiáng)大的語音功能,語音報(bào)時(shí)、播報(bào)日期的功能。這是一種用新型凌陽單片機(jī)來實(shí)現(xiàn)的SPCE061A單片機(jī)作為控制器制作的語音報(bào)時(shí)系統(tǒng)。該方案充分利用單片機(jī)強(qiáng)大的編程、語音處理、以及中斷,并且操作簡(jiǎn)單、易于修改,是理想的數(shù)字控制系統(tǒng)。本文首先簡(jiǎn)介凌陽單片機(jī)的開展,緊接著詳細(xì)描述了凌陽單片機(jī)SPCE061A的組成原理及其功能。根據(jù)它的組成原理及其指令系統(tǒng),設(shè)計(jì)了語音報(bào)時(shí)系統(tǒng)的軟件局部,包括主程序,語音播放程序。此類單片機(jī)特別是在數(shù)字處理及語音處理方面有著明顯的優(yōu)越性,所以本次設(shè)計(jì)中采用凌陽SPCE061A單片機(jī),它能夠使所設(shè)計(jì)的產(chǎn)品更具智能化和先進(jìn)性。關(guān)鍵詞:電子鐘;SPCE061A;語音SCMProductionUsingdigitalclockABSTRACTThispaperdescribestheuseofSunplusTechnology,Inc.SPCE061ASCMasthemaincontrollerofdigitalelectronicbellprogramme.SunplusSPLC501AuseofLCDmodule,withSPCE061ApowerfulvoiceandrealizedtheGregoriancalendar,LunarNewYear,stopwatch,alarmclockandvoicebroadcast,thebroadcastdate,andotherfunctions.ThisisaNewSunplusmicrocontrollertoachievetheSPCE061ASCMasacontrollerandLCDmoduleSPLC501Aadigitalclock.Theprogrammefulluseofapowerfulmicrocontrollerprogramming,voiceprocessing,andmulti-functioninterruptinput/outputandsimple,easytomodify,istheidealdigitalcontrolsystem.ThispaperfirstbriefSunplusthedevelopmentofSCM,followedbyadetaileddescriptionofthecompositionofSunplusSCMSPCE061Aprincipleandfunction.Accordingtoitscompositionanditscommandsystemtheoryanddesignofdigitalelectronicclockcontrolsystemsoftware,includingthemainprogram,display,voiceplayer.SCMespeciallyinsuchdigitalprocessingandvoiceprocessingtherearedistinctadvantages,sothisdesignintheuseofSunplusSPCE061ASCM,itcanmaketheproductsmoreintelligentdesignandadvanced.KEYWORD:clock;SPCE061A;PRONUNCIATIONTIMEWATCH目錄第一章前言 11.1系統(tǒng)功能 21.2根本參數(shù) 21.3考前須知 2第二章模塊特性簡(jiǎn)介 32.1SPCE061A單片機(jī) 32.1.1SPCE061A簡(jiǎn)介 32.1.2芯片特性 42.2SPCE061A精簡(jiǎn)開發(fā)板 52.3SPLC501A液晶模組 62.4語音的設(shè)計(jì)及工作原理 72.5系統(tǒng)總體方案介紹 8第三章系統(tǒng)硬件設(shè)計(jì) 113.1SPCE061A最小系統(tǒng) 113.2電源模塊 113.3音頻輸出模塊 123.4液晶顯示模塊 133.4.1顯示RAM區(qū)映射情況 133.4.2SPLC501驅(qū)動(dòng)控制器芯片 15第四章系統(tǒng)軟件設(shè)計(jì) 174.1軟件的結(jié)構(gòu) 174.2各模塊程序的說明 18概述 18主程序 18中斷效勞程序 19時(shí)間日期模塊 214.2.5SPLC501液晶顯示模組顯示漢字 22常用功能函數(shù)介紹〔用戶API〕 24第五章操作步驟 285.1軟件的操作步驟 285.1.1LCD漢字顯示操作步驟 28程序燒入硬件操作步驟 31語音播放操作步驟 335.2操作界面 34第六章結(jié)論 37參考文獻(xiàn) 38致謝 39附錄一軟件編寫程序 40附錄二主要元器件清單 48第一章前言20世紀(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í)間對(duì)人們來說總是那么珍貴,工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)間。忘記了要做的事情,當(dāng)事情不是很重要的時(shí)候,這種遺忘無傷大雅。但是,一旦重要事情,一時(shí)的耽誤可能釀成大禍。目前,單片機(jī)正朝著高性能和多品種方向開展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面開展。下面是單片機(jī)的主要開展趨勢(shì)。單片機(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ī)模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無機(jī)械裝置,具有更長(zhǎng)的使用壽命,因此得到了廣泛的使用。數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí)、分、秒、數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭,車站,碼頭辦公室等公共場(chǎng)所,成為人們?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í)準(zhǔn)確,一鐘多用等特點(diǎn),在生活中已經(jīng)得到了廣泛的應(yīng)用。隨著科技的開展,人們對(duì)電子產(chǎn)品的應(yīng)用要求越來越高,數(shù)字電子鐘不但可以顯示當(dāng)前的時(shí)間,而且可以顯示日期、農(nóng)歷、以及星期等,給人們的生活帶來了方便。另外數(shù)字鐘還具備秒表和鬧鐘功能,且鬧鐘鈴聲可自選,使一款電子鐘具備了多媒體的色彩。本方案利用凌陽16位單片機(jī)SPCE061A作為主控芯片,充分利用SPCE061A精簡(jiǎn)開發(fā)板〔簡(jiǎn)稱61板〕上面的三個(gè)按鍵,完成一個(gè)簡(jiǎn)易的數(shù)字系統(tǒng)——數(shù)字電子鐘。該數(shù)字鐘可以將當(dāng)前的日期和時(shí)間播報(bào)出來,以及調(diào)時(shí)功能,具有較強(qiáng)的可擴(kuò)展性,滿足了不同人的需要。該方案的主要功能是能通過SPCE061A的音頻通道播報(bào)當(dāng)前的日期和時(shí)間。61板上面的三個(gè)按鍵可以控制實(shí)現(xiàn)所有的功能,在播報(bào)日期和時(shí)間狀態(tài)下按Key1播報(bào)年、月、日,再按一下播報(bào)時(shí)、分長(zhǎng)按Key1鍵到達(dá)1.5秒,那么進(jìn)入日期時(shí)間調(diào)整模式,Key2-在調(diào)整模式下,使年、月、日、時(shí)、分、秒增加,Key3-在調(diào)整模式下,使年、月、日、時(shí)、分、秒減小。1.1系統(tǒng)功能本系統(tǒng)利用凌陽科技公司的SPCE061A單片機(jī)作為控制器。系統(tǒng)具有以下功能:1.可以語音播報(bào)日期和時(shí)間;2.具有調(diào)整日期和時(shí)間功能;1.2根本參數(shù)1.工作電壓:4.5V〔3節(jié)干電池〕;2.日期顯示范圍:2001-2100年;3.時(shí)間采用24小時(shí)制。1.3考前須知1.請(qǐng)將61板上的J5跳線選擇3.3V;2.在安裝電池時(shí)注意正負(fù)極,否那么容易燒壞芯片;3.在印制電路板上的焊接元器件前要認(rèn)真對(duì)照原理圖,仔細(xì)查看印制電路板,找到對(duì)應(yīng)的元器件功能區(qū);4.在電源測(cè)試期間請(qǐng)勿將單片機(jī)芯片插入座中,以免電源局部有問題造成芯片燒壞。第二章模塊特性簡(jiǎn)介該數(shù)字鐘系統(tǒng)主要由SPCE061A精簡(jiǎn)開發(fā)板〔簡(jiǎn)稱61板〕構(gòu)成。系統(tǒng)通過61板上的三個(gè)按鍵控制揚(yáng)聲器播放語音。所以這里主要介紹SPCE061A精簡(jiǎn)開發(fā)板。2.1SPCE061A單片機(jī)2.1.1SPCE061A簡(jiǎn)介SPCE061A是凌陽科技研發(fā)生產(chǎn)的性價(jià)比很高的一款十六位單片機(jī),具有易學(xué)易用且效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標(biāo)準(zhǔn)C語言,可以實(shí)現(xiàn)C語言與匯編語言的互相調(diào)用,并且,提供了語音錄放和語音識(shí)別的函數(shù)庫,只要了解庫函數(shù)的使用方法,就可以很容易完成語音錄放,為軟件開發(fā)提供了方便的條件。SPCE061A主要包括輸入/輸出端口、定時(shí)器/計(jì)數(shù)器、數(shù)/模轉(zhuǎn)換、模/數(shù)轉(zhuǎn)換、串行設(shè)備輸入/輸出、通用異步串行接口、低電壓監(jiān)測(cè)和復(fù)位等電路,并且內(nèi)置在線仿真電路ICE接口,使其能夠快速地處理復(fù)雜的數(shù)字信號(hào)。SPCE061A片內(nèi)還集成了一個(gè)ICE〔在線仿真電路〕接口,使得對(duì)該芯片的編程、仿真變得非常方便,而ICE接口不占用芯片上的硬件資源,結(jié)合凌陽科技提供的集成開發(fā)環(huán)境〔unSPIDE〕,用戶可以進(jìn)行在線調(diào)試、仿真;而程序的下載〔燒寫〕也是通過該接口完成。圖1SPCE061A內(nèi)部結(jié)構(gòu)圖2.1.2芯片特性●16位μ'nSP微處理器;●工作電壓:內(nèi)核工作電壓VDD為3.0~3.6V(CPU),I/O口工作電壓VDDH為VDD~5.5V(I/O);●CPU時(shí)鐘:0.32MHz~49.152MHz;●內(nèi)置2K字SRAM;●內(nèi)置32K閃存ROM;●可編程音頻處理;●晶體振蕩器;●系統(tǒng)處于備用狀態(tài)下(時(shí)鐘處于停止?fàn)顟B(tài));●2個(gè)16位可編程定時(shí)器/計(jì)數(shù)器(可自動(dòng)預(yù)置初始計(jì)數(shù)值);●2個(gè)10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道;●32位通用可編程輸入/輸出端口;●14個(gè)中斷源可來自定時(shí)器A/B,時(shí)基,2個(gè)外部時(shí)鐘源輸入,鍵喚醒;●具備觸鍵喚醒的功能;●使用凌陽音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語音數(shù)據(jù);●鎖相環(huán)PLL振蕩器提供系統(tǒng)時(shí)鐘信號(hào);●32768Hz實(shí)時(shí)時(shí)鐘;●7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道聲音模-數(shù)轉(zhuǎn)換器;●聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動(dòng)增益控制(AGC)功能;●具備串行設(shè)備接口;●低電壓復(fù)位(LVR)功和低電壓監(jiān)測(cè)(LVD)功能;●內(nèi)置在線仿真板(ICE,In-CircuitEmulator)。2.2SPCE061A精簡(jiǎn)開發(fā)板SPCE061A精簡(jiǎn)開發(fā)板〔簡(jiǎn)稱61板〕,是以凌陽16位單片機(jī)SPCE061A為核心的精簡(jiǎn)開發(fā)-仿真-實(shí)驗(yàn)板,大小相當(dāng)于一張撲克牌,是“凌陽科技大學(xué)方案〞專為大學(xué)生、電子愛好者等進(jìn)行電子實(shí)習(xí)、課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、電子制作及電子競(jìng)賽所設(shè)計(jì)的,也可作為單片機(jī)工程初期研發(fā)使用。61板除了具備單片機(jī)最小系統(tǒng)電路外,還包括有電源電路、音頻電路〔含Mic輸入局部和DAC音頻輸出局部〕、復(fù)位電路等,采用電池供電,方便學(xué)生隨身攜帶!使學(xué)生在掌握軟件的同時(shí),熟悉單片機(jī)硬件的設(shè)計(jì)制作,鍛煉學(xué)生的動(dòng)手能力,也為單片機(jī)學(xué)習(xí)者和開發(fā)者創(chuàng)造了一個(gè)良好的學(xué)習(xí)條件和開發(fā)新產(chǎn)品的時(shí)機(jī)!61板上有調(diào)試器接口〔Probe接口〕以及下載線〔EZ_Probe〕接口,分別可接凌陽科技的在線調(diào)試器、簡(jiǎn)易下載線,配合unSPIDE,可方便地在板上實(shí)現(xiàn)程序的下載、在線仿真調(diào)試。61板上的主要功能模塊如下:1.SPCE061A單片機(jī)最小系統(tǒng)外圍電路模塊;2.電源輸入模塊;3.音頻電路〔包含Mic輸入、DAC音頻功放輸出〕模塊;4.按鍵模塊;5.I/O端口接口模塊;6.調(diào)試、下載接口模塊;圖2為61板的實(shí)物圖:圖261板實(shí)物圖2.3語音的設(shè)計(jì)及工作原理本次設(shè)計(jì)的要求為整個(gè)系統(tǒng)在運(yùn)行時(shí)能夠根據(jù)要求及時(shí)的發(fā)出聲音,以增加效果。為了配合設(shè)計(jì)要求,設(shè)計(jì)了語音模塊。語音是SPCE061A的一大特點(diǎn)。應(yīng)用SPCE061A可以方便的實(shí)現(xiàn)語音的錄放,該芯片擁有8路10位精度的AD。其中1路AD為音頻轉(zhuǎn)化通道,并且內(nèi)置自動(dòng)增益電路。這為語音的錄入提供方便的硬件條件。2路10位精度的DA,只需外接1個(gè)功放即可完成語音播放。一般都是用C語言作為主程序,用匯編語言編制各種模塊,供主程序調(diào)用。凌陽音頻格式常用的有3種,將壓縮前的數(shù)據(jù)量比上壓縮后的數(shù)據(jù)量即可以得到凌陽不同音頻格式壓縮比:SACMA2000:壓縮比為8:1,8:1.25,8:1.5;SACMS480:壓縮比為80:3,80:4.5;SACMS240:壓縮比為80:1.5;壓縮比越大,存儲(chǔ)空間越小,更加節(jié)省資源。2.5系統(tǒng)總體方案介紹電子鐘的系統(tǒng)結(jié)構(gòu)如圖3,圖4為電子鐘功能結(jié)構(gòu)圖,61板作為整個(gè)系統(tǒng)的控制中心,負(fù)責(zé)控制鍵盤掃描;年、月、日、星期以及時(shí)間的計(jì)算;并根據(jù)按鍵值播報(bào)當(dāng)前的日期或者時(shí)間。在聲音的處理上主要采用凌陽科技的語音壓縮格式,將需要播放的聲音壓縮存在SPR模組里面,然后通過61板將語音資源取出播放出來。本系統(tǒng)采用了語音的錄入和輸出播放。圖3系統(tǒng)結(jié)構(gòu)框圖圖4功能結(jié)構(gòu)圖用61板控制數(shù)字鐘系統(tǒng),使用了IOA口的IOA0—IOA2位連接SPCE061A上的三個(gè)按鍵,另外使用了61板的語音輸出模塊;以及61板上的三個(gè)按鍵,電路連接如圖5。第三章系統(tǒng)硬件設(shè)計(jì)3.1SPCE061A最小系統(tǒng)SPCE061A最小系統(tǒng)包括SPCE061A芯片及其外圍的根本模塊,其中外圍的根本模塊有:晶振輸入模塊〔OSC〕、鎖相環(huán)外圍電路〔PLL〕、復(fù)位電路〔RESET〕、指示燈〔LED〕等,如圖7所示。圖5SPCE061A最小系統(tǒng) 3.2電源模塊SPCE061A板采用3節(jié)5號(hào)電池進(jìn)行供電,由J10接入,其中前后兩組電容用來去耦濾波,使其供應(yīng)芯片的電源更加干凈平滑。為了獲得標(biāo)準(zhǔn)的3.3伏電壓,在電路上參加SPY0029三端穩(wěn)壓器和兩個(gè)二極管,是為了防止誤將電源接反造成不必要損失而設(shè)置的。在操作過程中千萬不要將電源接反,因?yàn)榉聪螂妷撼^一定值,二極管將會(huì)被損壞,達(dá)不到保護(hù)的目的。后面的零電阻及其電源分成不同的幾路是為了減少電磁干擾設(shè)置的。圖6是電源局部的電路,4.5V直流電壓經(jīng)過SPY0029后產(chǎn)生3.3V給整個(gè)系統(tǒng)供電。SPY0029是凌陽公司設(shè)計(jì)的電壓調(diào)整IC,采用CMOS工藝。SPY0029具有靜態(tài)電流低、驅(qū)動(dòng)能力強(qiáng)、線性調(diào)整出色等特點(diǎn)。4.2圖中的VDDH3為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的內(nèi)核供電為3.3V,而I/O端口可接3.3V~5V,所以在電源模塊〔61板上〕中有一個(gè)端口電平選擇跳線,如圖中的J5。本系統(tǒng)需要的端口高電平為3.3V,所以圖8中的J5跳線需要跳到2和3上。圖6電源模塊3.3音頻輸出模塊音頻輸出〔D/A〕局部的原理圖如圖7所示,可以直接聽喇叭輸出的聲音。圖中的SPY0030也是凌陽公司的產(chǎn)品。它的詳細(xì)說明可以參見SPY0030datasheet。和LM386相比,SPY0030還具有下述優(yōu)勢(shì),比方LM386工作電壓需在4V以上,SPY0030僅需2.4V即可工作(兩顆電池即可工作);LM386輸出功率100mW以下,SPY0030約700mW。芯片將聲音處理后輸出〔J2〕,經(jīng)SPY0030音頻放大輸出〔J3〕通過揚(yáng)聲器復(fù)原為聲音。SPY0030A是凌陽公司開發(fā)的專門用于語音放大的芯片。SPY0030的輸入電壓的范圍是2.4——6.0伏,該電路中采用的電壓是3.3伏。SPCE061A內(nèi)置2路10位DAC,只需要外接功放電路即可完成語音的播放。圖7音頻輸出電路圖第四章系統(tǒng)軟件設(shè)計(jì)4.1軟件的結(jié)構(gòu)下列圖中可以看出各文件之間的調(diào)用關(guān)系。圖8軟件結(jié)構(gòu)數(shù)字鐘主要還是軟件實(shí)現(xiàn)的,數(shù)字鐘的軟件設(shè)計(jì)由以下程序構(gòu)成:1、main.c:實(shí)現(xiàn)系統(tǒng)的初始化、鍵盤掃描和語音播報(bào);2、system.c:包含工程中大局部的功能函數(shù),包括時(shí)間和日期的調(diào)整等;3、key.c:鍵盤掃描文件,文件中定義了鍵盤掃描函數(shù)、延時(shí)函數(shù)、用來實(shí)現(xiàn)對(duì)鍵盤的掃描等功能、鍵盤掃描采用查詢方式;4、isr.asm:中斷效勞函數(shù)文件,實(shí)現(xiàn)語音解碼以及時(shí)間、日期的修改;5、speak.c:語音播報(bào)函數(shù),實(shí)現(xiàn)語音播報(bào)日期、時(shí)間。4.2各模塊程序的說明4.2.1概述由于凌陽SPCEA061A,使得外圍電路變的更簡(jiǎn)單。制作好系統(tǒng)的硬件電路后,整個(gè)系統(tǒng)的主體任務(wù)主要落在了程序的編寫上。SPCE061A是凌陽科技研發(fā)生產(chǎn)的性價(jià)比很高的一款十六位單片機(jī),具有易學(xué)易用且效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標(biāo)準(zhǔn)C語言,可以實(shí)現(xiàn)C語言與匯編語言的互相調(diào)用,并且,提供了語音錄放和語音識(shí)別的函數(shù)庫,只要了解庫函數(shù)的使用方法,就可以很容易完成語音錄放,為軟件開發(fā)提供了方便的條件。此次系統(tǒng)采用了模塊程序結(jié)構(gòu),模塊程序結(jié)構(gòu)包括了初始化,系統(tǒng)主程序模塊,語音播放模塊,顯示模塊。C語言屬于高級(jí)語言,有著匯編語言無法比較的優(yōu)點(diǎn),而SPCE061A開發(fā)系統(tǒng)抓住了這個(gè)關(guān)鍵,兩者結(jié)合,充分發(fā)揮各自的優(yōu)勢(shì)。在用到語音的時(shí)候,一般都是用C語言作為主程序,用匯編語言編制各種模塊,供主程序調(diào)用。本系統(tǒng)采用了這種編制方法使得相互調(diào)用非常簡(jiǎn)單。4.2.2主程序主程序流程如圖9所示,在主程序中初始化了整個(gè)工程中用到的變量,初始化了液晶顯示模塊。開2Hz中斷實(shí)現(xiàn)計(jì)時(shí)。在主程序中調(diào)用了鍵盤掃描程序,對(duì)IOA口的低三位進(jìn)行掃描,如果有鍵按下,就把相應(yīng)的鍵值存入到一個(gè)變量中,通過主程序來判斷是哪個(gè)鍵按下,并執(zhí)行相應(yīng)的功能:按Key1播報(bào)年、月、日,再按一下播報(bào)時(shí)、分長(zhǎng)按Key1鍵到達(dá)1.5秒,那么進(jìn)入日期時(shí)間調(diào)整模式,Key2-在調(diào)整模式下,使年、月、日、時(shí)、分、秒增加,Key3-在調(diào)整模式下,使年、月、日、時(shí)、分、秒減小。圖9主程序流程圖4.2.3中斷效勞程序中斷效勞程序有三個(gè):一個(gè)是2Hz中斷效勞程序,用來計(jì)時(shí);一個(gè)是1KHz中斷效勞程序,用于秒表計(jì)時(shí);另外一個(gè)是FIQ中斷效勞程序,用來播放語音。程序的流程分別如圖10、圖11、圖12。圖10IRQ5時(shí)基中斷流程圖另外一個(gè)是FIQ中斷效勞程序,用來播放語音。圖11IRQ4時(shí)基中斷流程圖圖12FIQ中斷程序4.2.4時(shí)間日期模塊時(shí)間日期程序模塊的流程圖如圖13所示,該模塊用到了2Hz的時(shí)基中斷,用來實(shí)現(xiàn)計(jì)時(shí),同時(shí)實(shí)現(xiàn)了日期的更新。圖13時(shí)間日期模塊流程圖 第五章操作步驟5.1軟件的操作步驟程序燒入硬件操作步驟步驟一:根據(jù)圖5數(shù)字鐘連接示意圖連接硬件,并連接好下載線。步驟二:翻開電池盒電源。步驟三:?jiǎn)?dòng)u’nSPIDE。翻開數(shù)字鐘應(yīng)用實(shí)例程序〔路徑:\\數(shù)字電子鐘禮包\參考源代碼\monthdayclock\monthdayclock.sp〕,編譯、鏈接確認(rèn)沒有錯(cuò)誤。如圖14所示:圖14翻開數(shù)字鐘應(yīng)用實(shí)例程序步驟四:下載程序代碼到61板上。步驟五:下載成功后會(huì)有幾秒鐘的開機(jī)畫面,隨后會(huì)進(jìn)入時(shí)間日期顯示界面,初始時(shí)間設(shè)定為:00:00:00,日期為2006年8月1日。按Key1播報(bào)年、月、日,再按一下播報(bào)時(shí)、分長(zhǎng)按Key1鍵到達(dá)1.5秒,那么進(jìn)入日期時(shí)間調(diào)整模式,Key2-在調(diào)整模式下,使年、月、日、時(shí)、分、秒增加,Key3-在調(diào)整模式下,使年、月、日、時(shí)、分、秒減小。具體操作流程圖如圖15:圖15具體操作流程圖第六章結(jié)論SPCE061A芯片強(qiáng)大的語音處理功能,為本系統(tǒng)的設(shè)計(jì)提供了便利條件;32個(gè)可編程I/O口,使得擴(kuò)展外圍設(shè)備非常方便;CPU可工作在0.32MHz~49MHz的主頻范圍,并且擁有豐富的中斷源,使得系統(tǒng)在語音播放、數(shù)據(jù)顯示等方面游刃有余,擴(kuò)展性強(qiáng)。根據(jù)硬件的選擇和電路的搭配進(jìn)行了軟件的設(shè)計(jì)和編程,在實(shí)現(xiàn)硬件功能時(shí),我們?cè)龅揭恍﹩栴},在參閱了許多資料結(jié)合實(shí)際條件選擇了一種全面和簡(jiǎn)單的數(shù)字鐘系統(tǒng),其次在焊接中和元器件的購置都是在胡老師的指導(dǎo)下購置的。在這次畢業(yè)設(shè)計(jì)中鍛煉了我的分析能力、解決問題和動(dòng)手能力。顯然,這是一個(gè)比較簡(jiǎn)單的數(shù)字鐘,在這個(gè)根底上,稍微改動(dòng),或者擴(kuò)展其他模塊可以設(shè)計(jì)出一個(gè)更加完善的數(shù)字鐘系統(tǒng)。比方,擴(kuò)展外部存儲(chǔ)器可以增加鈴聲的數(shù)目、可以改變鈴聲的播放格式使鈴聲更加動(dòng)聽、增加掉電保護(hù)功能等等,以此來提高同學(xué)們的對(duì)單片機(jī)的興趣。本次設(shè)計(jì)中,我從根底做起,做好每一個(gè)程序模塊,在最后的硬件調(diào)試中,取得成功,實(shí)現(xiàn)了數(shù)字鐘的根本功能,到達(dá)了我們預(yù)期的設(shè)計(jì)目的。系統(tǒng)實(shí)物照片如圖16。圖16系統(tǒng)實(shí)物照片參考文獻(xiàn)[1]李全利,遲榮強(qiáng).單片機(jī)原理及接口技術(shù)[M],北京:高等教育出版社,2004.1.[2]黃智偉.全國大學(xué)生電子設(shè)計(jì)競(jìng)賽系統(tǒng)設(shè)計(jì)[M],北京:北京航空航天大學(xué)出版社,2006.6.[3]黃智偉.凌陽單片機(jī)課程設(shè)計(jì)指導(dǎo)[M],北京:北京航空航天大學(xué)出版社,2006.11.[4]李廣弟,朱月秀,王秀山.單片機(jī)根底[M],北京:北京航空航天大學(xué)出版社,2001.7.[5]趙曙光,郭萬有,楊頌華.可編程邏輯器件原理開發(fā)與應(yīng)用[M],西安:西安電子科技大學(xué),2000.[6]候伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M],西安:西安電子科技大學(xué)出版社,1999.[7]康華光.模擬電子技術(shù)根底(第四版)[M],武漢:華中理工大學(xué)出版社,1999.[8]譚浩強(qiáng).C語言程序設(shè)計(jì)〔第二版〕[M],北京:清華大學(xué)出版社,1991.[9]陳小忠,黃寧.單片機(jī)接口技術(shù)實(shí)用子程序[M],北京:北京人民郵電出版社,2005.[10]歐偉明,周春臨,瞿遂春.電子信息系統(tǒng)設(shè)計(jì)[M],西安電子科技大學(xué)出版社,2005.9.[11]賈立新,王涌.電子系統(tǒng)設(shè)計(jì)與實(shí)踐[M],北京:清華大學(xué)出版社,2007.[12]羅亞非.凌陽16位單片機(jī)應(yīng)用根底[M],北京:北京航空航天大學(xué)出版社,2003.[13]SPLC501A液晶顯示模塊產(chǎn)品說明書[Z].凌陽大學(xué)方案網(wǎng)站〔〕.[14]雷思孝.凌陽單片機(jī)原理及實(shí)用技術(shù)[M],西安電子科技大學(xué),2004.附錄一軟件編寫程序主程序://工程名稱: 61_SpeechClock//功能描述: 61板程序例如--具有語音播報(bào)功能的電子鐘// 使用61板上的三個(gè)按鍵控制報(bào)時(shí)和時(shí)間調(diào)整:// Key1-按一下播報(bào)年、月、日,再按一下播報(bào)時(shí)、分// 長(zhǎng)按Key1鍵到達(dá)1.5秒,那么進(jìn)入日期時(shí)間調(diào)整模式// Key2-在調(diào)整模式下,使年、月、日、時(shí)、分、秒增加// Key3-在調(diào)整模式下,使年、月、日、時(shí)、分、秒減小//涉及的庫: CMacro1016.lib// SacmV26e.lib//組成文件: main.c,Sound.c,Clock.c,Clock_Speech.c,Clock_Adjust.c// Key.asm,hardware.asm,ISR.asm// A2000.h,Sound.h,Clock.h,Clock_Speech.h,Clock_Adjust.h,Key.h,SPCE061A.h,// 硬件連接: 61板自帶的三個(gè)按鍵已經(jīng)連接在IOA0~IOA2上// 維護(hù)記錄: 2006-8-30v1.0//===============================================//======================================================//文件名稱: main.c//功能描述: 主程序//維護(hù)記錄: 2006-08-30 v1.0//======================================================#include"spce061a.h"#include"Sound.h"#include"Key.h"#include"Clock.h"#include"Clock_Speech.h"#include"Clock_Adjust.h"http://=============================================================//語法格式: intmain(void);//實(shí)現(xiàn)功能: 主函數(shù)//參數(shù): 無//返回值: 無//=============================================================intmain(){ unsignedintKeyCode; unsignedintFlag=0; Key_Init(); //初始化按鍵掃描程序 Clock_Start(); //初始化計(jì)時(shí)程序 while(1) { KeyCode=Key_Get(); //獲取按鍵值 switch(KeyCode) { caseKEY_1: //Key1鍵,播放日期/時(shí)間 if(Flag==0) { PlayDate(); Flag=1; } else { PlayTime(); Flag=0; } break; caseKEY_LONG_1: //Key1鍵長(zhǎng)按,調(diào)整日期和時(shí)間 Adjust(); break; default: break; } *P_Watchdog_Clear=0x01; //清看門狗 *P_SystemClock=0x001F; //進(jìn)入睡眠模式 }}子程序:1//======================================================//文件名稱: Clock.c//功能描述: 計(jì)時(shí)模塊,使用2Hz時(shí)基中斷//維護(hù)記錄: 2006-08-30 v1.0//======================================================#include"spce061a.h"typedefstructSTR_CLOCK //定義時(shí)鐘結(jié)構(gòu)體{ unsignedintYear; unsignedintMon; unsignedintDay; unsignedintHour; unsignedintMin; unsignedintSec; unsignedintHalfSec;}CLOCK;CLOCKClock={2006,1,1,0,0,0,0}; //時(shí)鐘初始值2006年1月1日0點(diǎn)0分constunsignedintMonth_Day[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //每月包含的天數(shù)//=============================================================//語法格式: voidClock_ISR(void);//實(shí)現(xiàn)功能: 計(jì)時(shí)模塊的2Hz中斷效勞程序,應(yīng)在IRQ5_2Hz中斷中調(diào)用//參數(shù): 無//返回值: 無//=============================================================voidClock_ISR(){ if(Clock.HalfSec==0) //0.5秒 Clock.HalfSec=1; else { Clock.HalfSec=0; Clock.Sec+=1; if(Clock.Sec==60) //處理秒進(jìn)位 { Clock.Sec=0; Clock.Min+=1; if(Clock.Min==60) //處理分進(jìn)位 { Clock.Min=0; Clock.Hour+=1; if(Clock.Hour==24) //處理小時(shí)進(jìn)位 { Clock.Hour=0; Clock.Day+=1; //處理天進(jìn)位 if(Clock.Day>Month_Day[Clock.Mon-1]) { if(Clock.Mon!=2||(Clock.Year&0x03)!=0||Clock.Day>29) { //如果是閏年那么2月29日不進(jìn)位 Clock.Day=1; Clock.Mon+=1; if(Clock.Mon>12) //處理月進(jìn)位 { Clock.Mon=1; Clock.Year+=1; } } } } } } }}//=============================================================//語法格式: voidClock_Start(void);//實(shí)現(xiàn)功能: 開始計(jì)時(shí)//參數(shù): 無//返回值: 無//=============================================================voidClock_Start(){ *P_INT_Ctrl_New|=C_IRQ5_2Hz; __asm("IRQON");}//=============================================================//語法格式: unsignedintClock_GetYear();//實(shí)現(xiàn)功能: 查詢當(dāng)前年//參數(shù): 無//返回值: 當(dāng)前年//=============================================================unsignedintClock_GetYear(){ returnClock.Year;}//=============================================================//語法格式: unsignedintClock_GetMon(void);//實(shí)現(xiàn)功能: 查詢當(dāng)前月//參數(shù): 無//返回值: 當(dāng)前月//=============================================================unsignedintClock_GetMon(){ returnClock.Mon;}//=============================================================//語法格式: unsignedintClock_GetDay(void);//實(shí)現(xiàn)功能: 查詢當(dāng)前日//參數(shù): 無//返回值: 當(dāng)前日//=============================================================unsignedintClock_GetDay(){ returnClock.Day;}//=============================================================//語法格式: unsignedintClock_GetHour(void);//實(shí)現(xiàn)功能: 查詢當(dāng)前小時(shí)//參數(shù): 無//返回值: 當(dāng)前時(shí)//=============================================================unsignedintClock_GetHour(){ returnClock.Hour;}//=============================================================//語法格式: unsignedintClock_GetMin(void);//實(shí)現(xiàn)功能: 查詢當(dāng)前分//參數(shù): 無//返回值: 當(dāng)前分//=============================================================unsignedintClock_GetMin(){ returnClock.Min;}//=============================================================//語法格式: unsignedintClock_GetSec(void);//實(shí)現(xiàn)功能: 查詢當(dāng)前秒//參數(shù): 無//返回值: 當(dāng)前秒//=============================================================unsignedintClock_GetSec(){ returnClock.Sec;}//=============================================================//語法格式: voidClock_SetYear(unsignedintYear);//實(shí)現(xiàn)功能: 設(shè)置年//參數(shù): Year-年//返回值: 無//=============================================================voidClock_SetYear(unsignedintYear){ Clock.Year=Year;}//=============================================================//語法格式: voidClock_SetMon(unsignedintMon);//實(shí)現(xiàn)功能: 設(shè)置月//參數(shù): Mon-月//返回值: 無//=============================================================voidClock_SetMon(unsignedintMon){ Clock.Mon=Mon;}//=============================================================//語法格式: voidClock_SetDay(unsignedintDay);//實(shí)現(xiàn)功能: 設(shè)置日//參數(shù): Day-日//返回值: 無//=============================================================voidClock_SetDay(unsignedintDay){ Clock.Day=Day;}//=============================================================//語法格式: voidClock_SetHour(unsignedintHour);//實(shí)現(xiàn)功能: 設(shè)置小時(shí)//參數(shù): Hour-時(shí)//返回值: 無//=============================================================voidClock_SetHour(unsignedintHour){ Clock.Hour=Hour;}//=============================================================//語法格式: voidClock_SetMin(unsignedintMin);//實(shí)現(xiàn)功能: 設(shè)置分//參數(shù): Min-分//返回值: 無//=============================================================voidClock_SetMin(unsignedintMin){ Clock.Min=Min;}//=============================================================//語法格式: voidClock_SetSec(unsignedintSec);//實(shí)現(xiàn)功能: 設(shè)置秒//參數(shù): Sec-秒//返回值: 無//=============================================================voidClock_SetSec(unsignedintSec){ *P_TimeBase_Clear=0x01; //時(shí)基計(jì)數(shù)器清零 Clock.Sec=Sec; Clock.HalfSec=0; //半秒計(jì)數(shù)清零}子程序:2//======================================================//文件名稱: Clock_Adjust.c//功能描述: 調(diào)整日期和時(shí)間的函數(shù)集//維護(hù)記錄: 2006-08-30 v1.0//======================================================#include"spce061a.h"#include"Sound.h"#include"Clock.h"#include"Clock_Speech.h"#include"Key.h"http://=============================================================//語法格式: unsignedintAdjustYear(unsignedintYear);//實(shí)現(xiàn)功能: 調(diào)整年//參數(shù): Year-調(diào)整前的年//返回值: 調(diào)整后的年//=============================================================unsignedintAdjustYear(unsignedintYear){ unsignedintKeyCode; unsignedintTempYear=Year; PlayYear(TempYear); //播放當(dāng)前年 while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); //獲取按鍵 switch(KeyCode) { caseKEY_1: returnTempYear; //按Key1鍵返回調(diào)整后的年 caseKEY_2: TempYear++; //按Key2鍵,年數(shù)加1 PlayYear(TempYear); break; caseKEY_3: TempYear--; //按Key3鍵,年數(shù)減1 PlayYear(TempYear); break; default: break; } }}//=============================================================//語法格式: unsignedintAdjustMon(unsignedintMon);//實(shí)現(xiàn)功能: 調(diào)整月//參數(shù): Mon-調(diào)整前的月//返回值: 調(diào)整后的月//=============================================================unsignedintAdjustMon(unsignedintMon){ unsignedintKeyCode; unsignedintTempMon=Mon; PlayMon(TempMon); //播報(bào)調(diào)整前的月 while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); switch(KeyCode) { caseKEY_1: //Key1,返回調(diào)整后的月 returnTempMon; caseKEY_2: TempMon++; //Key2,月數(shù)加1,到12后回復(fù)為1 if(TempMon>12)TempMon=1; PlayMon(TempMon); break; caseKEY_3: TempMon--; //Key3,月數(shù)減1,到1后變?yōu)?2 if(TempMon<1)TempMon=12; PlayMon(TempMon); break; default: break; } } }//=============================================================//語法格式: unsignedintAdjustDay(unsignedintYear,unsignedintMon,unsignedintDay);//實(shí)現(xiàn)功能: 調(diào)整日//參數(shù): Year-調(diào)整后的年// Mon-調(diào)整后的月// Day-調(diào)整前的日//返回值: 調(diào)整后的日//=============================================================unsignedintAdjustDay(unsignedintYear,unsignedintMon,unsignedintDay){ unsignedintKeyCode; unsignedintTempDay=Day; if(TempDay>Month_Day[Mon-1]) //如果當(dāng)前的日期已經(jīng)超過調(diào)整后月的最大天數(shù)那么日期置為1 { if(TempDay==29) //處理閏年 { if((Year&0x03)!=0)TempDay=1; } elseTempDay=1; } PlayDay(TempDay); //播放調(diào)整前日 while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); switch(KeyCode) { caseKEY_1: returnTempDay; //Key1,返回調(diào)整后日 caseKEY_2: TempDay++; //Key2,日數(shù)加1,到達(dá)當(dāng)月最大日之后回復(fù)為1 if(TempDay>Month_Day[Mon-1]) { if(TempDay==29) //處理閏年 { if((Year&0x03)!=0)TempDay=1; } elseTempDay=1; } PlayDay(TempDay); break; caseKEY_3: TempDay--; //Key3,日數(shù)減1,減到0時(shí)轉(zhuǎn)為當(dāng)月最大日 if(TempDay<1) { if(Mon==2&&(Year&0x03)==0)TempDay=29; elseTempDay=Month_Day[Mon-1]; } PlayDay(TempDay); break; default: break; } } }//=============================================================//語法格式: unsignedintAdjustHour(unsignedintHour);//實(shí)現(xiàn)功能: 調(diào)整小時(shí)//參數(shù): Hour-調(diào)整前的時(shí)//返回值: 調(diào)整后的時(shí)//=============================================================unsignedintAdjustHour(unsignedintHour){ unsignedintKeyCode; unsignedintTempHour=Hour; PlayHour(TempHour); //播報(bào)整前小時(shí)數(shù) while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); switch(KeyCode) { caseKEY_1: returnTempHour; //Key1,返回調(diào)整后的小時(shí) caseKEY_2: TempHour++; //Key2,時(shí)數(shù)加1,到23后回復(fù)為0 if(TempHour>23)TempHour=0; PlayHour(TempHour); break; caseKEY_3: if(TempHour==0)TempHour=23; //Key3,時(shí)數(shù)減1,到0后回復(fù)為23 elseTempHour--; PlayHour(TempHour); break; default: break; } } }//=============================================================//語法格式: unsignedintAdjustMin(unsignedintMin);//實(shí)現(xiàn)功能: 調(diào)整分//參數(shù): Min-調(diào)整前的分//返回值: 調(diào)整后的分//=============================================================unsignedintAdjustMin(unsignedintMin){ unsignedintKeyCode; unsignedintTempMin=Min; PlayNum(TempMin); //播報(bào)調(diào)整前的分鐘數(shù) PlaySnd(S_Fen); while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); switch(KeyCode) { caseKEY_1: returnTempMin; //Key1,返回調(diào)整后的分 caseKEY_2: TempMin++; //Key2,分鐘數(shù)加1,到59后變?yōu)? if(TempMin>59)TempMin=0; PlayNum(TempMin); PlaySnd(S_Fen); break; caseKEY_3: if(TempMin==0)TempMin=59; //Key3,分鐘數(shù)減1,到0后變?yōu)?9 elseTempMin--; PlayNum(TempMin); PlaySnd(S_Fen); break; default: break; } } }//=============================================================//語法格式: unsignedintAdjustSec(unsignedintSec);//實(shí)現(xiàn)功能: 調(diào)整秒//參數(shù): Sec-調(diào)整前的秒//返回值: 調(diào)整后的秒//=============================================================unsignedintAdjustSec(unsignedintSec){ unsignedintKeyCode; unsignedintTempSec=Sec; PlaySec(TempSec); //播報(bào)調(diào)整前的秒數(shù) while(1) { *P_Watchdog_Clear=0x01; KeyCode=Key_Get(); switch(KeyCode) { caseKEY_1: returnTempSec; //Key1,返回調(diào)整后的秒 caseKEY_2: TempSec++; //Key2,秒加1,到59后變?yōu)? if(TempSec>59)TempSec=0; PlaySec(TempSec); break; caseKEY_3: if(TempSec==0)TempSec=59; //Key3,秒減1,到0后變?yōu)?9 elseTempSec--; PlaySec(TempSec); break; default: break; } } }//=============================================================//語法格式: voidAdjust(void);//實(shí)現(xiàn)功能: 調(diào)整日期時(shí)間//參數(shù): 無//返回值: 無//=============================================================voidAdjust(){ unsignedintTempYear,TempMon,TempDay,TempHour,TempMin,TempSec; TempYear=AdjustYear(Clock_GetYear()); //調(diào)整年 TempMon=AdjustMon(Clock_GetMon()); //調(diào)整月 TempDay=AdjustDay(TempYear,TempMon,Clock_GetDay()); //調(diào)整日 TempHour=AdjustHour(Clock_GetHour()); //調(diào)整時(shí) TempMin=AdjustMin(Clock_GetMin()); //調(diào)整分 TempSec=AdjustSec(Clock_GetSec()); //調(diào)整秒 Clock_SetYear(TempYear); //保存調(diào)整后的日期時(shí)間 Clock_SetMon(TempMon); Clock_SetDay(TempDay); Clock_SetHour(TempHour); Clock_SetMin(TempMin); Clock_SetSec(TempSec); PlaySnd(S_DING); //播報(bào)調(diào)整后的日期時(shí)間 PlayYear(TempYear); PlayMon(TempMon); PlayDay(TempDay); PlayHour(TempHour); PlayMin(TempMin); }子程序:3//======================================================//文件名稱: Clock_Speech.c//功能描述: 語音播報(bào)日期和時(shí)間的函數(shù)集//維護(hù)記錄: 2006-08-30 v1.0//======================================================#include"Clock.h"#include"Sound.h"http://=============================================================//語法格式: voidPlayNum(unsignedintNum);//實(shí)現(xiàn)功能: 播放100以內(nèi)的數(shù)字//參數(shù): Num-待播報(bào)的數(shù)字//返回值: 無//=============================================================voidPlayNum(unsignedintNum){ unsignedintTempNum=Num; if(TempNum==0) //數(shù)字為0那么直接播報(bào)0 PlaySnd(S_0); else { if(TempNum>=20)PlaySnd(TempNum/10); //十位 if(TempNum>=10)PlaySnd(S_10); //"十" TempNum=TempNum%10; if(TempNum>0)PlaySnd(TempNum); //個(gè)位 }}//=============================================================//語法格式: voidPlayYear(unsignedintYear);//實(shí)現(xiàn)功能: 播報(bào)年//參數(shù): Year-待播報(bào)的年//返回值: 無//=============================================================voidPlayYear(unsignedintYear){ unsignedintTempYear=Year; PlaySnd(TempYear/1000); //千位 TempYear=TempYear%1000; PlaySnd(TempYear/100); //百位 TempYear=TempYear%100; PlaySnd(TempYear/10); //十位 TempYear=TempYear%10; PlaySnd(TempYear); //個(gè)位 PlaySnd(S_Nian); //"年"}//=============================================================//語法格式: voidPlayMon(unsignedintMon);//實(shí)現(xiàn)功能: 播報(bào)月//參數(shù): Mon-待播報(bào)的月//返回值: 無//=============================================================voidPlayMon(unsignedintMon){ PlaySnd(Mon); PlaySnd(S_Yue);}//=============================================================//語法格式: voidPlayDay(unsignedintDay);//實(shí)現(xiàn)功能: 播報(bào)日//參數(shù): Day-待播報(bào)的日//返回值: 無//=============================================================voidPlayDay(unsignedintDay){ PlayNum(Day); PlaySnd(S_Ri);}//=============================================================//語法格式: voidPlayHour(unsignedintHour);//實(shí)現(xiàn)功能: 播報(bào)小時(shí)//參數(shù): Hour-待播報(bào)的時(shí)//返回值: 無//=============================================================voidPlayHour(unsignedintHour){ if(Hour<=5)PlaySnd(S_LC); //凌晨(0~5點(diǎn)) elseif(Hour<=11)PlaySnd(S_SW); //上午(6~11點(diǎn)) elseif(Hour<=17)PlaySnd(S_XW); //下午(12~17點(diǎn)) elsePlaySnd(S_WS); //晚上(18~23點(diǎn)) if(Hour==2||Hour==14)PlaySnd(S_Liang); //2點(diǎn)和14點(diǎn)播報(bào)"兩" elseif(Hour>12)PlaySnd(Hour-12); //12小時(shí)制 elsePlaySnd(Hour); PlaySnd(S_Dian); //"點(diǎn)"}//=============================================================//語法格式: voidPlayMin(unsignedintMin);//實(shí)現(xiàn)功能: 播報(bào)分//參數(shù): Min-待播報(bào)的分//返回值: 無//=================
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度學(xué)生傷害賠償協(xié)議書(校園意外)
- 二零二五年度道路運(yùn)輸企業(yè)司機(jī)薪酬管理合同
- 2025年度物業(yè)保潔項(xiàng)目管理勞動(dòng)合同
- 二零二五年度業(yè)主委員會(huì)與物業(yè)服務(wù)社區(qū)停車管理合同
- 2025年度門面房出租與租賃合同爭(zhēng)議解決協(xié)議
- 典當(dāng)與拍賣服務(wù)作業(yè)指導(dǎo)書
- 2025年IT服務(wù)管理培訓(xùn)課件
- 二手住房出售協(xié)議
- 網(wǎng)絡(luò)直播行業(yè)主播言論免責(zé)協(xié)議
- 客戶關(guān)系管理軟件開發(fā)外包合同書
- 四年級(jí)美術(shù)素養(yǎng)附答案
- 2021年全國中學(xué)生天文奧林匹克競(jìng)賽預(yù)賽試題及答案
- 四年級(jí)下冊(cè)音樂教案-2.2我們美麗的祖國 |接力版
- Quantum軟件培訓(xùn)手冊(cè)
- 走近人工智能
- 服裝市場(chǎng)營銷項(xiàng)目2服裝市場(chǎng)營銷環(huán)境分析課件
- 中國傳媒大學(xué)《當(dāng)代電視播音主持教程》課件
- 制造業(yè)信息化管理系統(tǒng)架構(gòu)規(guī)劃
- 《納米復(fù)合材料》第2章 納米復(fù)合材料概論
- 建設(shè)工程圍擋標(biāo)準(zhǔn)化管理圖集(2022年版)
- 2022新教科版六年級(jí)科學(xué)下冊(cè)全一冊(cè)全部教案(共28節(jié))
評(píng)論
0/150
提交評(píng)論