基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本科論文本科論文目錄摘要 IAbstract II引言 11控制系統(tǒng)設(shè)計(jì) 31.1系統(tǒng)方案設(shè)計(jì) 31.2系統(tǒng)工作原理 41.2.1單片機(jī)的選擇 41.2.2語(yǔ)音芯片的選擇 52硬件電路設(shè)計(jì) 62.1時(shí)鐘電路 62.2復(fù)位電路 62.3顯示電路 72.4電源電路 72.5按鍵模塊電路 82.6LM386功放電路 82.7總電路設(shè)計(jì)圖 93軟件設(shè)計(jì) 103.1編程工具軟件KeilC51 103.2程序設(shè)計(jì)原理 103.3系統(tǒng)主程序設(shè)計(jì) 114系統(tǒng)調(diào)試 134.1硬件調(diào)試 134.2軟件調(diào)試 144.3調(diào)試結(jié)果 144.4調(diào)試結(jié)果展示 15結(jié)論 17參考文獻(xiàn) 18附錄源程序清單 20致謝 33本科論文摘要在人類(lèi)的歷史長(zhǎng)河中,語(yǔ)言的作用尤為重要,人們一直在思考一個(gè)問(wèn)題,那就是如何把語(yǔ)言完全不差的記錄下來(lái)。當(dāng)今智能化的儀表儀器的自動(dòng)控制裝置中,如果能夠添加語(yǔ)言功能,就可以非常好的提升操作便捷度,在日常生活中,人們?cè)诤芏鄨?chǎng)合都需要語(yǔ)言的存儲(chǔ)與回放技術(shù),所以將這種技術(shù)與生活更好的結(jié)合在一起,是現(xiàn)在需要解決的一大難題。傳統(tǒng)的語(yǔ)言記錄裝置體積龐大,使用不方便,在信息處理的過(guò)程中受到許多限制,為了解決這些問(wèn)題,本項(xiàng)目將使用AT89C51單片機(jī)和ISD4004語(yǔ)音芯片來(lái)設(shè)計(jì)一款語(yǔ)音的錄放系統(tǒng)。ISD4004語(yǔ)音芯片不需要數(shù)模轉(zhuǎn)換和壓縮就能夠直接進(jìn)行存儲(chǔ),不僅存儲(chǔ)時(shí)間長(zhǎng),而且沒(méi)有轉(zhuǎn)換誤差,還可以用于多次重復(fù)錄放。外圍核心電路也相對(duì)來(lái)說(shuō)十分簡(jiǎn)單。使用ISD4004語(yǔ)音芯片與單片機(jī)相結(jié)合,通過(guò)軟件與硬件的控制,完全可以實(shí)現(xiàn)數(shù)字化語(yǔ)言的存儲(chǔ)和回放。關(guān)鍵詞:AT89C51單片機(jī);語(yǔ)音存儲(chǔ);語(yǔ)音回放;ISD4004語(yǔ)音芯片

AbstractInthelonghistoryofhumanbeings,languageplaysaveryimportantrole.Peoplehavebeenthinkingaboutaproblem,thatis,howtorecordtheperfectlanguage.Presentautomaticcontroldeviceofintelligentinstrument,ifcanaddlanguagefunctions,canbeverygoodimproveeaseofoperation,indailylife,peopleonmanyoccasionsrequirelanguageofstorageandplaybacktechnology,sothiskindoftechnologyandabetterlifetogether,isnowabigproblemtosolve.Thetraditionallanguagerecordingdeviceisbulky,inconvenienttouse,andislimitedintheprocessofinformationprocessing.Inordertosolvetheseproblems,thisprojectwilluseAT89C51microcontrollerandISD4004voicechiptodesignavoicerecordingsystem.ISD4004voicechipdoesnotneeddigitaltoanalogconversionandcompressiontobeabletodirectlystore,notonlythestoragetimeislong,andnoconversionerror,butalsocanbeusedforrepeatedrecordingandplayback.Theperipheralcorecircuitisalsorelativelysimple.WiththecombinationofISD4004voicechipandsinglechipmicrocomputer,thestorageandplaybackofdigitallanguagecanberealizedcompletelythroughthecontrolofsoftwareandhardware.Keywords:AT89C51microcomputer;pronunciation;Audioplayback;ISD4004引言人們生活節(jié)奏無(wú)時(shí)無(wú)刻都在加快,對(duì)于平時(shí)日常生活中使用的產(chǎn)品要求也在日益提高,智能化產(chǎn)品也開(kāi)始普及。將語(yǔ)音錄放功能添加到各種智能儀器儀表和工業(yè)控制系統(tǒng)中也成為了普遍的現(xiàn)象,在智能化的一期醫(yī)療中添加此項(xiàng)功能,不僅可以使這些儀器操作更便捷,同時(shí)也方便了一些同時(shí)也方便了一些對(duì)某些操作有障礙的人,而且是生活節(jié)奏,再一次加快,進(jìn)而使每個(gè)人都得到非常多的利益。語(yǔ)言服務(wù)行業(yè)正在變得越來(lái)越廣泛,例如衛(wèi)星導(dǎo)航系統(tǒng)、語(yǔ)音萬(wàn)用表和語(yǔ)音警報(bào)系統(tǒng)??梢哉f(shuō)語(yǔ)言系統(tǒng)是社會(huì)生活中必不可少的東西,它的發(fā)展也將促進(jìn)社會(huì)進(jìn)步。由于產(chǎn)生了光學(xué)錄音和磁帶才結(jié)束了機(jī)械錄音的時(shí)代,隨著時(shí)代的發(fā)展,語(yǔ)音芯片也相應(yīng)產(chǎn)生,這種方法不但需要軟件的控制指令,還需要硬件的支持。語(yǔ)音的采集技術(shù)、存儲(chǔ)技術(shù)、回放技術(shù)三個(gè)部分組成了云存儲(chǔ)與回放系統(tǒng),任何一個(gè)部分都是不可或缺的。那我們的問(wèn)題也隨之而來(lái),怎樣去存儲(chǔ)語(yǔ)音,存儲(chǔ)之后又怎么將其取出呢?所以本次項(xiàng)目中選用了AT89C51單片機(jī)和ISD4004語(yǔ)音芯片。單片機(jī)的體積小、功耗低,但我們不能因此小看它的功能。原本準(zhǔn)備采用A/D轉(zhuǎn)換、D/A轉(zhuǎn)換的方式來(lái)轉(zhuǎn)換語(yǔ)音信號(hào),這種方法十分的簡(jiǎn)單,但是這種方法有很多弊病,比如說(shuō)操作復(fù)雜,語(yǔ)音信號(hào)也非常容易失真,在調(diào)試的過(guò)程中也非常不方便。所以選擇了ISD4004語(yǔ)音芯片。ISD4004語(yǔ)音芯片包含了模擬輸入輸出,所以不需要再使用A/D和D/A轉(zhuǎn)換器,在本次項(xiàng)目中,起初也是想通過(guò)先后轉(zhuǎn)換的房子來(lái)完成,但由于現(xiàn)在的語(yǔ)音芯片已經(jīng)可以完成信號(hào)轉(zhuǎn)換的操作,所以還是選擇了更加先進(jìn)的語(yǔ)音芯片。而且語(yǔ)音芯片記錄聲音沒(méi)有長(zhǎng)度的限制,不需要接入電源就可以存儲(chǔ)100年。ISD語(yǔ)音芯片具有外圍電路非常簡(jiǎn)單的優(yōu)點(diǎn),它可以和單片機(jī)完美相結(jié)合,而且它的重量和體積也非常小,可以通過(guò)單片機(jī)對(duì)他的控制完美的進(jìn)行對(duì)語(yǔ)音的錄制和放出。單片機(jī)主要起到對(duì)語(yǔ)音芯片的控制作用。所以基于單片機(jī)和語(yǔ)音芯片的語(yǔ)音系統(tǒng)也就相應(yīng)的產(chǎn)生了。雖然目前的語(yǔ)音存儲(chǔ)與回放技術(shù)已經(jīng)很成熟了,但是我認(rèn)為該項(xiàng)技術(shù),還有很大的發(fā)展空間,比如說(shuō)更快的速度和更高的質(zhì)量以及加密方式?;蛘呷绾蝺?yōu)化處理來(lái)進(jìn)一步減少存儲(chǔ)空間。而且智能語(yǔ)言將會(huì)是未來(lái)發(fā)展的主要路線(xiàn)。語(yǔ)言語(yǔ)音存儲(chǔ)與回放系統(tǒng)與數(shù)學(xué)理論相結(jié)合,這些技術(shù),在很多個(gè)領(lǐng)域隨處可見(jiàn),我們?cè)谏钪芯涂梢钥吹秸Z(yǔ)言存儲(chǔ)和回放技術(shù)的重要性,這種技術(shù)提高了我們生活的質(zhì)量,也推動(dòng)了社會(huì)的發(fā)展,所以此次研究是很有必要的。215951控制系統(tǒng)設(shè)計(jì)79481.1系統(tǒng)方案設(shè)計(jì)方案1:使用AT89C51單片機(jī)通過(guò)對(duì)語(yǔ)音信號(hào)的各種轉(zhuǎn)換,來(lái)完成對(duì)語(yǔ)音的采集與回放。它的原理如圖1-1所示。在錄音的時(shí)候,單片機(jī)先將模擬信號(hào)轉(zhuǎn)換為電信號(hào),再通過(guò)音頻的放大器將信號(hào)放大,通過(guò)濾波器進(jìn)行濾波再由轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字信號(hào),送回到單片機(jī)中,然后將其存儲(chǔ)。在需要放音的時(shí)候,相當(dāng)于進(jìn)行一次反向操作,首先讀取出數(shù)字信號(hào),然后經(jīng)過(guò)模數(shù)轉(zhuǎn)換,將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),經(jīng)過(guò)放大器進(jìn)行放大再變成聲音播放出來(lái)。這種方法雖然過(guò)程簡(jiǎn)單,但是語(yǔ)言信號(hào)非常容易受到外界的干擾,而且信號(hào)壓縮也比較復(fù)雜,硬件電路的調(diào)試也非常困難。圖1-1方案1系統(tǒng)原理圖方案2:使用AT89C51單片機(jī)來(lái)控制整個(gè)系統(tǒng),配合ISD語(yǔ)音芯片完成語(yǔ)言的錄放,系統(tǒng)原理圖如圖1-2所示。通過(guò)按鍵控制單片機(jī),并將指令發(fā)送到語(yǔ)音芯片以完成錄音和播放。當(dāng)前的操作狀態(tài)顯示在顯示屏上。這種處理方法不但使其抗干擾的能力更強(qiáng),而且存儲(chǔ)也更加方便,調(diào)試也更加簡(jiǎn)單。圖1-2方案2系統(tǒng)原理圖147621.2系統(tǒng)工作原理本次項(xiàng)目使用單片機(jī)作為控制核心為基礎(chǔ),通過(guò)單片機(jī)來(lái)完成對(duì)按鍵和液晶顯示屏等模塊的響應(yīng),再控制語(yǔ)音芯片來(lái)存儲(chǔ)和讀取語(yǔ)音。系統(tǒng)結(jié)構(gòu)如圖1-3所示。圖1-3系統(tǒng)結(jié)構(gòu)框圖1.2.1單片機(jī)的選擇MCU的類(lèi)型很多,例如PICMCU,MCS-51MCU和AVRATmega128MCU。因?yàn)槟壳按蠖鄶?shù)公司都已經(jīng)推出了51系列單片機(jī)的兼容機(jī)型,所以它們固然會(huì)在很長(zhǎng)一段時(shí)間內(nèi)占領(lǐng)大量市場(chǎng)。由于在單個(gè)芯片中結(jié)合了多功能8位CTO和閃存,ATMEL的AT89C51和AT89C2051是高級(jí)微控制器。兩個(gè)單片機(jī)的性能對(duì)比如1-1所示。表1-1AT89C51和AT89C2051主要性能對(duì)比單片機(jī)型號(hào)對(duì)比項(xiàng)目AT89C51AT89C2051存儲(chǔ)器4KB可編程Flash存儲(chǔ)器2KB可編程Flash存儲(chǔ)器存儲(chǔ)器保密三級(jí)程序存儲(chǔ)器保密兩級(jí)程序存儲(chǔ)器保密內(nèi)部RAM128字節(jié)128字節(jié)靜態(tài)工作頻率0Hz~24MHz0Hz~24MHz定時(shí)/計(jì)數(shù)器2個(gè)16位定時(shí)/計(jì)數(shù)器2個(gè)16位定時(shí)/計(jì)數(shù)器串行通訊口1個(gè)串行通訊口1個(gè)串行通訊口中斷源6個(gè)中斷源6個(gè)中斷源I/O引線(xiàn)32條I/O引線(xiàn)15條I/O引線(xiàn)通過(guò)此表格可以看出,兩個(gè)單片機(jī)性能基本上是相同的,但AT89C2051的IO口線(xiàn)較少,所以沒(méi)有辦法增添ROM和RAM,在這里,考慮到將來(lái)的擴(kuò)展和其他設(shè)計(jì),可以選擇更多的擴(kuò)展接口??梢栽谛枰獣r(shí)升級(jí)AT89C51,同時(shí)擴(kuò)展其他功能,因此我選擇了AT89C51微控制器。1.2.2語(yǔ)音芯片的選擇ISD系列芯片在處理音頻信號(hào)時(shí)不需要數(shù)模轉(zhuǎn)換和編碼壓縮。這種存儲(chǔ)技術(shù)沒(méi)有A/D轉(zhuǎn)換錯(cuò)誤。因?yàn)樗梢詫⒉蓸又抵苯哟鎯?chǔ),所以在還原真實(shí)場(chǎng)景的聲音時(shí)顯得更加完美。它避免了電路引起的噪聲、金屬聲音和音頻失真。ISD4004語(yǔ)音芯片比ISD系列芯片需要更長(zhǎng)的時(shí)間來(lái)記錄聲音,因此該項(xiàng)目選擇了ISD4004語(yǔ)音芯片。ISD4004語(yǔ)音芯片的引腳如圖1-4所示。圖1-4ISD4004引腳圖片3502硬件電路設(shè)計(jì)該系統(tǒng)可分為三個(gè)部分:微控制器控制部分、語(yǔ)音記錄和回放部分,功率放大器部分。采用51單片機(jī)為控制核心,采用ISD4004進(jìn)行錄音和播放。P0連接按鈕用于記錄和播放,并連接到LED,顯示當(dāng)前的記錄和播放狀態(tài)。265842.1時(shí)鐘電路時(shí)鐘電路由晶體振蕩器和電容器組成,時(shí)鐘電路就像平時(shí)家里用的時(shí)鐘一樣控制著任何工作的時(shí)間。時(shí)鐘電路的用途很多,時(shí)鐘電路被廣泛使用,它的主要工作是產(chǎn)生與時(shí)鐘一樣精確的振蕩器電路。任何工作都按時(shí)間順序排列。產(chǎn)生該時(shí)間的電路是時(shí)鐘電路,如圖2-1所示。圖2-1時(shí)鐘電路321532.2復(fù)位電路復(fù)位電路在微型計(jì)算機(jī)系統(tǒng)中是非常簡(jiǎn)單的電路,但它非常重要。其主要功能是上電復(fù)位,以確保在打開(kāi)電源后可以正確啟動(dòng)系統(tǒng)。當(dāng)系統(tǒng)遭受導(dǎo)致系統(tǒng)故障的某些外部原因時(shí),可以通過(guò)“重置”按鈕將系統(tǒng)重置為正常工作狀態(tài)。復(fù)位電路的電路圖如圖2-2所示。打開(kāi)電源時(shí),僅當(dāng)VCC超過(guò)4.75V且低于5.25V時(shí),復(fù)位信號(hào)才被清除,晶體振蕩器穩(wěn)定工作,微機(jī)電路開(kāi)始正常工作。圖2-2復(fù)位電路2.3顯示電路本次項(xiàng)目使用的是LCD1602顯示模塊,它可以同時(shí)顯示32個(gè)字符。1602通過(guò)D0?D7的8位數(shù)據(jù)端子發(fā)送數(shù)據(jù)和命令。該端口連接到微控制器的P0端口。V0端口用于調(diào)整顯示器的對(duì)比度。一個(gè)10K可變電阻器連接到此端口,可以通過(guò)調(diào)整電阻的大小來(lái)控制顯示屏的亮度。RS是寄存器選擇的控制端子。該端口連接到微控制器的P2^4引腳。該端口連接到微控制器的P2^5引腳。圖2-3給出了電路原理圖。圖2-3LCD1602電路原理圖90182.4電源電路系統(tǒng)電源設(shè)計(jì)也是系統(tǒng)的重要組成部分。由于該系統(tǒng)的芯片主要由5VUSB電源供電,為了獲得穩(wěn)定的DC電壓信號(hào),考慮到經(jīng)濟(jì)性和耐用性,該系統(tǒng)使用三端穩(wěn)壓器W7805輸出+5V電壓,并使用電容器用于減小輸出紋波波形電壓,如圖2-4所示。圖2-4電源電路302922.5按鍵模塊電路該項(xiàng)目中的按鈕模塊使用多個(gè)獨(dú)立的按鈕,按鈕的一端接地,另一端連接到IO端口。由于微控制器的IO端口具有內(nèi)部上拉,因此當(dāng)不按下按鈕時(shí),將在高功率下檢測(cè)到IO。當(dāng)按下按鈕時(shí),Ping等效于IO接地短路。因此,此時(shí)微控制器檢測(cè)到的電平較低,可以通過(guò)在不同時(shí)間檢測(cè)IO端口的狀態(tài)來(lái)判斷按下的按鈕。這四個(gè)按鈕代表以下功能,可用于控制MCU的記錄、暫停、選擇和播放操作。第一個(gè)是播放按鈕,第二個(gè)是暫停按鈕,第三個(gè)是錄制按鈕,第四個(gè)是選擇按鈕。如圖2-5所示。圖2-5按鍵模塊電路2.6LM386功放電路在很多情況下,主機(jī)不能夠通過(guò)自己的額定功率來(lái)維持整個(gè)系統(tǒng)的驅(qū)動(dòng)。那么這個(gè)時(shí)候,就需要通過(guò)功率放大器來(lái)將功率進(jìn)行放大,將不足的功率補(bǔ)充完整。該產(chǎn)品中使用的LM386芯片具有很好的音頻放大的功能,增益可以達(dá)到200,并且聲音質(zhì)量純凈且無(wú)噪音。LM386可以使用電池作為電源。輸入電壓范圍為4V到12V之間。LM386的內(nèi)部電路圖如圖2-6所示。圖2-6LM386芯片電路圖2.7總電路設(shè)計(jì)圖將以上各個(gè)電路圖進(jìn)行組合后為本次設(shè)計(jì)的最終設(shè)計(jì)電路圖(利用NationalInstruments中的Multiuse繪制)。如圖2-7所示。圖2-7總電路圖3503軟件設(shè)計(jì)該軟件的設(shè)計(jì)基于硬件,并且要由該軟件實(shí)現(xiàn)的功能基于常規(guī)硬件。如果硬件不能正常工作,則意味著沒(méi)有好的軟件可以實(shí)現(xiàn)任何功能。如果沒(méi)有軟件,那用再好的硬件也是毫無(wú)作用的。將需要實(shí)現(xiàn)的功能確定之后,如果調(diào)試正確,就會(huì)可以開(kāi)始設(shè)計(jì)本次項(xiàng)目需要的軟件模塊了。本次項(xiàng)目使用51單片機(jī)作為開(kāi)發(fā)的基礎(chǔ),軟件格式采用KeilC51來(lái)進(jìn)行匯編語(yǔ)言的編譯。3.1編程工具軟件KeilC51KeilC51集成開(kāi)發(fā)環(huán)境是基于80C51內(nèi)核的微處理器軟件開(kāi)發(fā)平臺(tái)。他可以獨(dú)立完成整個(gè)項(xiàng)目的建立,也就是完成整個(gè)開(kāi)發(fā)過(guò)程。用于單片機(jī)應(yīng)用系統(tǒng)的常用軟件編寫(xiě)語(yǔ)言是匯編、C、BASIC、C++等。對(duì)于51單片機(jī)而言,使用最廣泛的是匯編語(yǔ)言和C語(yǔ)言。使用KeilC需要以下五個(gè)步驟來(lái)開(kāi)發(fā)單片機(jī)程序:(1)選擇創(chuàng)建一個(gè)全新的項(xiàng)目,然后選擇本次項(xiàng)目中使用的單片機(jī)機(jī)型。(2)μVision3中的文件編輯器功能,可以用來(lái)編寫(xiě)源程序文件,并且需要將此文件添加到新建的這個(gè)項(xiàng)目中去。(3)通過(guò)μVision3的各種選項(xiàng),配置Cx51編譯器、Ax51宏匯編器、BL51/Lx51連接定位器以及Debug調(diào)試器的功能。(4)使用μVision3軟件,將編寫(xiě)后的源程序?qū)⒕帉?xiě)后的源程序代碼進(jìn)行編譯,然后生成HEX格式的可執(zhí)行文件,如果在編譯過(guò)程中出現(xiàn)錯(cuò)誤,那么就返回到第2步對(duì)源程序代碼進(jìn)行修改。(5)如果編譯沒(méi)有錯(cuò)誤,那么就證明源程序代碼沒(méi)有錯(cuò)誤,這時(shí)就可以將源程序代碼導(dǎo)入仿真軟件中進(jìn)行仿真操作。本次項(xiàng)目中選用的匯編語(yǔ)言可以直接與計(jì)算機(jī)的底層軟件進(jìn)行交互,它可以直接訪(fǎng)問(wèn)硬件的存儲(chǔ)器或者端口,并且沒(méi)有局限性,能夠?qū)ΧM(jìn)制代碼進(jìn)行完美的操控,很好的發(fā)揮出硬件的優(yōu)勢(shì),運(yùn)行速度也會(huì)大大提高,所以本次項(xiàng)目我選用了匯編語(yǔ)言對(duì)這個(gè)項(xiàng)目進(jìn)行調(diào)試。3.2程序設(shè)計(jì)原理對(duì)軟件的設(shè)計(jì)可以和硬件的設(shè)計(jì)相結(jié)合,因?yàn)椴还苣膫€(gè)功能是由硬件完成的,哪個(gè)任務(wù)是由軟件完成的,基本都可以在硬件設(shè)計(jì)完成后確定。軟件的總體設(shè)計(jì)思路可以分為兩類(lèi):其中一類(lèi)是執(zhí)行軟件,這一類(lèi)軟件可以完成計(jì)算測(cè)量、顯示、打印、輸出等非常實(shí)質(zhì)性操作,另一類(lèi)是起到執(zhí)行協(xié)調(diào)作用的監(jiān)視軟件,這是用來(lái)起到協(xié)調(diào)作用的,在整個(gè)軟件系統(tǒng)中充當(dāng)調(diào)度員的角色。所以軟件的設(shè)計(jì)有兩類(lèi),他們各具特色,并且軟件的設(shè)計(jì)很偏重算法,還與硬件之間有很大的聯(lián)系。在進(jìn)行軟件的設(shè)計(jì)時(shí),應(yīng)該將所有的模塊列舉出來(lái),然后通過(guò)數(shù)據(jù)結(jié)構(gòu)規(guī)劃好,所有的模塊規(guī)劃好之后,就可以進(jìn)行監(jiān)控了,編程比較容易,但是監(jiān)控就比較難了,這就像是當(dāng)一名員工容易,但是當(dāng)一名領(lǐng)導(dǎo)就比較困難。213003.3系統(tǒng)主程序設(shè)計(jì)主程序的設(shè)計(jì)思路,是考慮到4個(gè)按鍵的接口,通過(guò)單片機(jī)循環(huán)掃描來(lái)檢測(cè)是否有按鍵被按下去,當(dāng)任何一個(gè)按鍵被按下后,都會(huì)去執(zhí)行該按鍵的這個(gè)子程序。例如當(dāng)單片機(jī)掃描識(shí)別到按鍵被按下時(shí),這個(gè)時(shí)候單片機(jī)就會(huì)去執(zhí)行錄音的程序,當(dāng)單片機(jī)掃描識(shí)別到放音按鍵被按下時(shí),單片機(jī)就會(huì)停止錄音程序,去運(yùn)行放音的子程序,每個(gè)狀態(tài)在執(zhí)行時(shí)切換下一個(gè)狀態(tài)時(shí)都需要按下停止按鍵清除狀態(tài)標(biāo)志。流程圖如圖3-1所示。圖3-1按鍵檢測(cè)流程圖單片機(jī)依次判斷用戶(hù)按下的按鍵,因?yàn)椴煌存I在不同的界面有不同的功能,因此系統(tǒng)采用了一個(gè)FunctionCount來(lái)記錄當(dāng)前屬于哪個(gè)界面,根據(jù)不同的界面下用戶(hù)按下的不同按鍵執(zhí)行對(duì)應(yīng)的操作。語(yǔ)音播放流程圖如圖3-2所示。圖3-2語(yǔ)音播放流程圖當(dāng)系統(tǒng)處于播放模式下,單片機(jī)會(huì)根據(jù)當(dāng)前語(yǔ)音的序號(hào)播放對(duì)應(yīng)地址的語(yǔ)音。4系統(tǒng)調(diào)試4.1硬件調(diào)試通過(guò)單片機(jī)控制語(yǔ)音芯片完成的語(yǔ)音存儲(chǔ)與回訪(fǎng)系統(tǒng)的電路比較大,而且回涉及到很多的模塊電路,比如會(huì)涉及到單片機(jī)的最小系統(tǒng)、時(shí)鐘電路、液晶顯示模塊等等,所以在焊接時(shí)要十分注意,涉及到多種模塊的這種電路,哪怕只要存在一處的焊接錯(cuò)誤,就會(huì)導(dǎo)致整個(gè)系統(tǒng)的檢測(cè)無(wú)法完成,因?yàn)殡娐分薪徊娴木€(xiàn)路非常多,所以在焊接過(guò)程中避免焊接錯(cuò)誤和短路現(xiàn)象,如果電路連接錯(cuò)誤,將給檢測(cè)帶來(lái)極大的不便,并且該電路具有更多的交叉線(xiàn)。請(qǐng)注意處理各種尖銳的針腳,否則會(huì)刺破被覆的電線(xiàn)并導(dǎo)致短路。檢查正確性后,我們開(kāi)始在通用板上焊接。PCB圖如圖4-1所示。圖4-1PCB圖在系統(tǒng)的硬件調(diào)試中遇到了許多問(wèn)題?;叵胍幌?,只要仔細(xì)考慮,就可以避免這些問(wèn)題。以下是主要問(wèn)題:一開(kāi)始,我認(rèn)為微控制器無(wú)法正常驅(qū)動(dòng)ISD4004,因此無(wú)法進(jìn)行記錄和播放。解決方案:搜索相關(guān)信息后,必須在微控制器的P0端口上添加一個(gè)上拉電阻,以正常驅(qū)動(dòng)外部芯片。4.2軟件調(diào)試該系統(tǒng)是一個(gè)相對(duì)復(fù)雜的數(shù)字系統(tǒng),因此其程序也相對(duì)復(fù)雜,因此在編寫(xiě)程序和調(diào)試過(guò)程中存在許多問(wèn)題。首先,為了更好地測(cè)試效果,在確認(rèn)沒(méi)有錯(cuò)誤之后,我直接在PROTUES軟件下啟動(dòng)了仿真,然后將程序刻錄到實(shí)際環(huán)境中運(yùn)行。最終,在對(duì)模塊子例程進(jìn)行了許多修改之后,它逐漸完成并最終解決了軟件中的各種問(wèn)題。在軟件調(diào)試過(guò)程中遇到的主要問(wèn)題如下:1.程序刻錄后,LCD屏幕閃爍并且亮度不均勻。解決方案:首先,逐步修改呼叫延遲,以解決顯示閃爍的問(wèn)題。其次,由于這項(xiàng)工作使用的是在動(dòng)態(tài)掃描模式下顯示的數(shù)字,因此動(dòng)態(tài)掃描速度非???,人眼看不到它,但是當(dāng)調(diào)用顯示程序時(shí),如果返回時(shí)未屏蔽最后一個(gè)值,則它將它將看起來(lái)非常明亮?,F(xiàn)象,因此將屏蔽子命令添加到了顯示器的背面,從而最終解決了該問(wèn)題。2.當(dāng)用戶(hù)按下按鈕時(shí),微控制器讀取的值與設(shè)置值不同。解決方案:檢查一下鍵盤(pán)的連接,并建立新的連接。4.3調(diào)試結(jié)果測(cè)試中如果未顯示LCD液晶,需要先使用測(cè)試儀測(cè)試電路,以觀察是否存在漏焊,虛焊或組件損壞。搜索了一系列問(wèn)題后,系統(tǒng)最終可以正常工作并完成所有功能。4.4調(diào)試結(jié)果展示圖4-2實(shí)物圖圖4-3開(kāi)機(jī)后畫(huà)面圖4-4錄音狀態(tài)圖4-5停止?fàn)顟B(tài)圖4-6模式選擇圖4-7放音狀態(tài)結(jié)論通過(guò)以上分析,此次項(xiàng)目使用單片機(jī)作為控制器,實(shí)現(xiàn)了設(shè)計(jì)的所有功能,傳統(tǒng)的語(yǔ)言錄放設(shè)備,要將接收到的語(yǔ)音信號(hào)轉(zhuǎn)換為電信號(hào),再將這個(gè)信號(hào)放大,然后再經(jīng)過(guò)模數(shù)轉(zhuǎn)換轉(zhuǎn)換為數(shù)字信號(hào),最后再進(jìn)行處理和存儲(chǔ),放音時(shí)還需要數(shù)模轉(zhuǎn)換轉(zhuǎn)換成模擬信號(hào),才能夠達(dá)到放音的目的,這種方法聽(tīng)起來(lái)就非常復(fù)雜,在實(shí)際的制作過(guò)程中,還會(huì)使聲音失真。所以此次項(xiàng)目采用51單片機(jī)來(lái)控制語(yǔ)音芯片的方法,也熟悉了ISD4004的基本應(yīng)用,整個(gè)系統(tǒng)是采用51單片機(jī)對(duì)語(yǔ)音芯片的控制,完成了語(yǔ)音的錄制和播放,并且描述了整個(gè)系統(tǒng)工作流程,各個(gè)部件的性能。這個(gè)系統(tǒng)不但成本非常低,而且使用起來(lái)靈活多變,抗干擾能力十分強(qiáng),使用起來(lái)效果也十分優(yōu)秀。本課題的重點(diǎn)、難點(diǎn)總結(jié):(1)初次接觸語(yǔ)音芯片,在使用過(guò)程中對(duì)各種寄存器的操作不太熟悉;(2)在播放電路中,語(yǔ)音擴(kuò)展,抗干擾分析過(guò)程應(yīng)熟悉;(3)注意調(diào)節(jié)電路的實(shí)現(xiàn)和程序的穩(wěn)定性。通過(guò)本設(shè)計(jì),我已經(jīng)掌握了一些常用的基礎(chǔ)理論知識(shí),并對(duì)微控制器和PC編程控制的開(kāi)發(fā)和應(yīng)用有了更深入的了解。參考文獻(xiàn)[1]彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例[J].電子工業(yè)出版社.2009[2]金俊甫,陳伯亨.淺談單片機(jī)原理及應(yīng)用[J].風(fēng)景名勝,2019,(10)[3]吳運(yùn)昌.模擬電子線(xiàn)路基礎(chǔ)[M].廣州:華南理工大學(xué)出版社,2004[4]高銘陽(yáng).單片機(jī)的原理及接口技術(shù)[J].電子技術(shù)與軟件工程,2017,(4)[5]閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社,1997[6]張曉麗等.數(shù)據(jù)結(jié)構(gòu)與算法[J].北京:機(jī)械工業(yè)出版社,2002[7]譚文娣,梁德堅(jiān),劉玉瓊.ISD4004系列語(yǔ)音芯片批量錄音實(shí)現(xiàn)[J].企業(yè)科技與發(fā)展,2009,(20)[8]胡玉慶,舒朝君,陳紅.基于ISD4004的電子錄放系統(tǒng)設(shè)計(jì)[J].北京電力高等專(zhuān)科學(xué)校學(xué)報(bào),2009,(4)[9]李建忠.單片機(jī)原理及應(yīng)用[J].西安:西安電子科技大學(xué),2002[10]汪惠毅,馬民康.AT89C51單片機(jī)的應(yīng)用[J].工業(yè)計(jì)量,1997,(6)[11]韓志軍等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].機(jī)械工業(yè)出版社,2004[12]周潤(rùn)景等.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例[M].電子工業(yè)出版社,2006[13]韋君玉,謝超,莫韋蓬,樊晉杰,柏亞萌,楊揚(yáng).基于LM386的應(yīng)用設(shè)計(jì)電路[J].通訊世界,2016,(1)[14]帥江華,李志宜.淺談LM386功放電路在實(shí)踐教學(xué)中的應(yīng)用[J].無(wú)線(xiàn)互聯(lián)科技,2016,(24)[15]劉樹(shù)中,孫書(shū)膺,王春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007[16]閻志寬.LM386功放IC的使用方法[J].家庭電子,2003,(8)[17]陳海峰,丁麗麗.基于CPLD的LCD1602顯示系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2015,(10)[18]豈興明.51單片機(jī)編程基礎(chǔ)與開(kāi)發(fā)實(shí)例詳解[M].北京:人民郵電出版社,2008[19]馬忠梅等.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006[20]童詩(shī)白,華成英.模擬電子技術(shù)基礎(chǔ)[M].北京:高等教育社,2006附錄源程序清單/////////ISD4004語(yǔ)音播放部分/////////////////////////////#include<reg52.h>#include"LCD1602.h"#include"ISD4004.h"#include"key.h"unsignedinta,b;unsignedcharflag=0;voidmain(void){ LCDInit(); LCDDispString(1,1,"No1Recording"); flag=0; EX0=1; //開(kāi)外部中斷0 IT0=1; //觸發(fā)方式設(shè)置為下降沿 IE0=1; //開(kāi)外部中斷0 EA=1;//開(kāi)總中斷 while(1) { key_scan(); }}voidtimer0(void)interrupt0//計(jì)數(shù)器0中斷 { if(FunctionCount==5&&ModeCount==1)//單個(gè)曲循環(huán) { if(NowRec==0)//第一首歌曲 { LCDDispString(1,2,"Record1");play(ADDR1STR);} if(NowRec==1)//第2首歌曲 { LCDDispString(1,2,"Record2");play(ADDR2STR);} if(NowRec==2)//第3首歌曲 { LCDDispString(1,2,"Record3");play(ADDR3STR);} if(NowRec==3)//第4首歌曲 { LCDDispString(1,2,"Record4");play(ADDR4STR);} } elseif(FunctionCount==5&&ModeCount==2)//全循環(huán) { if(NowRec==0)//第一首歌曲 { LCDDispString(1,2,"Record1");NowRec=1;play(ADDR1STR);} for(a=2000;a>0;a--) for(b=110;b>0;b--); if(NowRec==1)//第2首歌曲 { LCDDispString(1,2,"Record2");NowRec=2;play(ADDR2STR);} for(a=2000;a>0;a--) for(b=110;b>0;b--); if(NowRec==2)//第3首歌曲 { LCDDispString(1,2,"Record3");NowRec=3;play(ADDR3STR);} for(a=2000;a>0;a--) for(b=110;b>0;b--); if(NowRec==3)//第4首歌曲 { LCDDispString(1,2,"Record4");NowRec=0;play(ADDR4STR);} for(a=2000;a>0;a--) for(b=110;b>0;b--); } }#include"ISD4004.h"#include<intrins.h>voiddelayms(unsignedcharms)//延時(shí)子程序{ unsignedcharj; while(ms--) { for(j=0;j<120;j++); }}voidplay(unsignedintaddr){ unsignedinty; SS=0; MOSI=0;//發(fā)送開(kāi)始 SCLK=0; for(y=0;y<8;y++)//上電 { SCLK=0; if((ISDPOWERUP>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); }//發(fā)送結(jié)束 SS=1;//上電結(jié)束 delayms(50); SS=0; MOSI=0;//發(fā)送地址 SCLK=0; for(y=0;y<16;y++) { SCLK=0; if((addr>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); }//發(fā)送地址結(jié)束 MOSI=0;//放音 SCLK=0; for(y=0;y<8;y++)//從指定地址開(kāi)始放音 { SCLK=0; if((PLAYSET>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1; SS=0; MOSI=0;//放音 SCLK=0; for(y=0;y<8;y++)//從當(dāng)前地址開(kāi)始放音 { SCLK=0; if((PLAYCUR>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1;}voidrec(unsignedintaddr){ unsignedinty; SS=0; MOSI=0;//發(fā)送開(kāi)始 SCLK=0; for(y=0;y<8;y++) { SCLK=0; if((ISDPOWERUP>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1;//上電結(jié)束 delayms(50); SS=0; MOSI=0;//發(fā)送開(kāi)始 SCLK=0; for(y=0;y<8;y++) { SCLK=0; if((ISDPOWERUP>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); }//發(fā)送結(jié)束 SS=1;//上電結(jié)束 delayms(50); delayms(50); SS=0; MOSI=0;//發(fā)送地址 SCLK=0; for(y=0;y<16;y++) { SCLK=0; if((addr>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); }//發(fā)送地址結(jié)束 MOSI=0; SCLK=0; for(y=0;y<8;y++)//從指定地址開(kāi)始錄音 { SCLK=0; if((0xa0>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1; SS=0; MOSI=0; SCLK=0; for(y=0;y<8;y++)//從當(dāng)前地址開(kāi)始錄音 { SCLK=0; if((0xb0>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1;}////////////////////////////////////////////////////////////////////voidstop(){ unsignedchary; SS=1; SS=0; MOSI=0; SCLK=0; for(y=0;y<8;y++)//停止當(dāng)前操作 { SCLK=0; if((OPERSTOP>>y)&0x01)MOSI=1; elseMOSI=0; _nop_(); _nop_(); _nop_(); SCLK=1; _nop_(); _nop_(); _nop_(); } SS=1;}#include<reg52.h>#include"key.h"#include"lcd1602.h"#include"ISD4004.h"unsignedcharFunctionCount=0;unsignedcharRecordCount=0;unsignedcharModeCount=0;unsignedcharNowRec=0;unsignedintCountRed[4]={0};//毫秒延時(shí)函數(shù)voidKeydelay(unsignedintz){ unsignedintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidkey_scan(void){ if(key_1==0) //判斷第一個(gè)按鍵情況 { Keydelay(10); if(key_1==0) //按鍵一 { FunctionCount++; if(FunctionCount==1) {LCDDispString(1,1,"No2Recording");LCDDispString(1,2,"");} elseif(FunctionCount==2) {LCDDispString(1,1,"No3Recording");LCDDispString(1,2,"");} elseif(FunctionCount==3) {LCDDispString(1,1,"No4Recording");LCDDispString(1,2,"");} elseif(FunctionCount==4) {LCDDispString(1,1,"PlayMode"); if(ModeCount==0) LCDDispString(1,2,"ModeA"); elseif(ModeCount==1) LCDDispString(1,2,"ModeB"); elseif(ModeCount==2) LCDDispString(1,2,"ModeC"); } elseif(FunctionCount==5) { LCDDispString(1,1,"Play");LCDDispString(1,2,""); } elseif(FunctionCount==6) { FunctionCount=0;LCDDispString(1,1,"No1Recording");LCDDispString(1,2,""); } while(!key_1); } } if(key_2==0) //按鍵2 { Keydelay(10); if(key_2==0) { if(FunctionCount==0) { LCDDispString(1,2,"Start"); rec(ADDR1STR); } elseif(FunctionCount==1) { LCDDispString(1,2,"Start"); rec(ADDR2STR); } elseif(FunctionCount==2) { LCDDispString(1,2,"Start"); rec(ADDR3STR); } elseif(FunctionCount==3) { LCDDispString(1,2,"Start"); rec(ADDR4STR); } elseif(FunctionCount==4) { ModeCount++; if(ModeCount==1) LCDDispString(1,2,"ModeB"); elseif(ModeCount==2) LCDDispString(1,2,"ModeC"); elseif(ModeCount==3) {ModeCount=0;LCDDispString(1,2,"ModeA");} } elseif(FunctionCount==5) { LCDDispString(1,2,"Record1"); play(ADDR1STR); NowRec=0; if(ModeCount==1)//單曲循環(huán) { } } while(!key_2); } } if(key_3==0) //按鍵3 { Keydelay(10); if(key_3==0) { stop(); if(FunctionCount==0) {LCDDispString(1,2,"Stop");} elseif(FunctionCount==1) {LCDDispString(1,2,"Stop");} elseif(FunctionCount==2) {LCDDispString(1,2,"Stop");} elseif(FunctionCount==3) {LCDDispString(1,2,"Stop");} elseif(FunctionCount==5) {LCDDispString(1,2,"Stop");} while(!key_3); } } if(key_4==0) //按鍵4 { Keydelay(10); if(key_4==0) { if(FunctionCount==5)//單曲播放 { NowRec++; if(NowRec==1) {LCDDispString(1,2,"Record2");play(ADDR2STR);} elseif(NowRec==2) {LCDDispString(1,2,"Record3");play(ADDR3STR);} elseif(NowRec==3) {LCDDispString(1,2,"Record4");play(ADDR4STR);} elseif(NowRec==4) {NowRec=0;LCDDispString(1,2,"Record1");play(ADDR1STR);} } while(!key_4); } }} #include<reg52.h>#include"lcd1602.h"/*********************************************************Function:voidDelayN40us(unsignedintn)Description:延時(shí)函數(shù),延時(shí)40us的整數(shù)倍,傳入值n代表延時(shí) 時(shí)間到n*40us,不能實(shí)現(xiàn)準(zhǔn)確延時(shí),只能實(shí)現(xiàn)大 概時(shí)間的延時(shí),利用的是指令實(shí)現(xiàn)延時(shí)功能。Calls:沒(méi)有調(diào)用其它函數(shù)CalledBy:voidLCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);Input:unsignedintn用于延時(shí)時(shí)間的確定,取值、 為1~65535Output:無(wú)Return:無(wú)***********************************************************/voidDelayN40us(unsignedintn){ unsignedinti; unsignedcharj; for(i=n;i>0;i--) for(j=0;j<2;j++);}/*********************************************************Function:voidLCDInit(void);Description:液晶初始化函數(shù),對(duì)LCD1602進(jìn)行初始化操作, 在每一次實(shí)用液晶前必須用到的,外部可調(diào)用 函數(shù)。Calls:voidLCDWriteCommand(unsignedchardat); DelayN40us(unsignedintn);CalledBy:main();或其他Input:無(wú)Output:無(wú)Return:無(wú)***********************************************************/voidLCDInit(void) { LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7*/ LCDWriteCommand(0x38);/*設(shè)置8位格式,2行,5x7,有的液晶做的不好,寫(xiě)三遍保險(xiǎn)?。。。?/ LCDWriteCommand(0x0c);/*整體顯示,關(guān)光標(biāo),不閃爍*/ LCDWriteCommand(0x06);/*設(shè)定輸入方式,增量不移位*/ LCDWriteCommand(0x01);/*清除屏幕顯示*/ DelayN40us(100); /*清屏延時(shí)*/}/*********************************************************Function:voidLCDWriteCommand(unsignedchardat);Description:Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫(xiě)入的命令Output:無(wú)Return:無(wú)***********************************************************/voidLCDWriteCommand(unsignedchardat){ LCD_DB=dat; LCD_RS=0;/*選擇寫(xiě)指令*/ LCD_RW=0;/*寫(xiě)入指令值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫(xiě)命令延時(shí)*/}/*********************************************************Function:voidLCDWriteData(unsignedchardat);Description:寫(xiě)數(shù)據(jù)函數(shù),將數(shù)據(jù)寫(xiě)入LCD1602中。Calls:DelayN40us(unsignedintn);CalledBy:voidLCDInit(void); voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat); voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat); Input:unsignedchardat寫(xiě)入的數(shù)據(jù)Output:無(wú)Return:無(wú)***********************************************************/voidLCDWriteData(unsignedchardat) { LCD_DB=dat; LCD_RS=1;/*選擇寫(xiě)數(shù)據(jù)*/ LCD_RW=0;/*寫(xiě)入數(shù)據(jù)值*/ LCD_E=1;/*使能LCD1602*/ LCD_E=0; DelayN40us(1);/*寫(xiě)數(shù)據(jù)延時(shí)*/}/*********************************************************Function:voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat);Description:Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X(0-15),y(1-2),dat為顯示字符‘a(chǎn)’形式。Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispChar(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; else address=0xc0+x; LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat); /*輸入數(shù)據(jù)*/}/*********************************************************Function:voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat);Description:Calls:LCDWriteCommand(unsignedchardat); voidLCDWriteData(unsignedchardat);CalledBy:main();及其他Input:X(0-15),y(1-2),dat(0-9)。Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispNum(unsignedcharx,unsignedchary,unsignedchardat){ unsignedcharaddress; if(y==1) address=0x80+x; else address=0xc0+x; LCDWriteCommand(address); /*輸入地址*/ LCDWriteData(dat+48); /*輸入數(shù)據(jù)*/}/*********************************************************CalledBy:main();及其他Input:X(0-15),y(1-2)Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispString(unsignedcharx,unsignedchary,unsignedchar*string){ while(*string!=0) /*沒(méi)有檢測(cè)到字符串結(jié)尾時(shí)*/ { LCDDispChar(x,y,*string++);/*逐個(gè)顯示字符串*/ x++; /*行地址加1*/ }}/*********************************************************Function:voidLCDDispNumInt(unsignedcharx,unsignedchary,unsignedintdat);Description:在某個(gè)屏幕位置上(x,y)位置顯示一個(gè)無(wú)符號(hào)整形數(shù)字,可外部調(diào)用。Calls:LCDDispNum(unsignedcharx,unsignedchary,unsignedchardat);CalledBy:main();及其他Input:X(0-15),y(1-2),dat(0-65536)。Output:無(wú)Return:無(wú)***********************************************************/voidLCDDispNumInt(unsignedcharx,unsignedchary,unsignedintdat){ unsignedchartemp[5],i=0,j=0;/*分離萬(wàn)千百十個(gè)各個(gè)位臨時(shí)存儲(chǔ)*/ temp[0]=dat/10000%10; temp[1]=dat/1000%10; temp[2]=dat/100%10; temp[3]=dat/10%10; temp[4]=dat%10; while((temp[i]==0)&&(i!=4)) i++; for(j=0;j<5-i;j++) /*依次顯示各個(gè)數(shù)*/ LCDDispNum(x+j,y,temp[j+i]);}致謝在本次畢業(yè)設(shè)計(jì)當(dāng)中,首先要感謝的就是李作紀(jì)老師和陳乃周老師,二位老師在我畢業(yè)設(shè)計(jì)階段給予我的幫助不計(jì)其數(shù),從最開(kāi)始的選題,到如何收集資料、如何讓作品達(dá)到要求,再到哪里書(shū)寫(xiě)有錯(cuò)誤,如何修改,和最后的論文初稿、終稿,兩位老師給了我很多很多耐心的指導(dǎo)以及無(wú)私的幫助。在這段時(shí)間里,尤其當(dāng)下這種疫情的關(guān)鍵時(shí)期,我真正的體會(huì)到了“春蠶到死絲方盡,蠟炬成灰淚始干”這種無(wú)私奉獻(xiàn)的敬業(yè)精神。為了指導(dǎo)我們完成此次畢業(yè)論文,李作紀(jì)老師和陳乃周老師幾乎放棄了自己所有的休息時(shí)間,在此我向二位老師表達(dá)我最誠(chéng)摯的謝意。在這四年的大學(xué)時(shí)光里,老師和同學(xué)們給予我不計(jì)其數(shù)的幫助,是他們教會(huì)了我專(zhuān)業(yè)知識(shí),教會(huì)了我如何做人,教會(huì)我學(xué)習(xí)方法,在此也要感謝所有的科任老師和所有同學(xué),沒(méi)有他們就沒(méi)有我的進(jìn)步。向他們表示我由衷的謝意,最后祝愿所有老師培養(yǎng)出越來(lái)越多的優(yōu)秀的人才,桃李滿(mǎn)天下,也希望各位老師多注意休息,在以后的日子里每天都健康快樂(lè)。

HYPERLINK電腦快捷知識(shí)大全編輯本段一、常見(jiàn)用法F1顯示當(dāng)前程序或者windows的幫助內(nèi)容。F2當(dāng)你選中一個(gè)文件的話(huà),這意味著“重命名”F3當(dāng)你在桌面上的時(shí)候是打開(kāi)“查找:所有文件”對(duì)話(huà)框F10或ALT激活當(dāng)前程序的菜單欄windows鍵或CTRL+ESC打開(kāi)開(kāi)始菜單CTRL+ALT+DELETE在win9x中打開(kāi)關(guān)閉程序?qū)υ?huà)框DELETE刪除被選擇的選擇項(xiàng)目,如果是文件,將被放入回收站SHIFT+DELETE刪除被選擇的選擇項(xiàng)目,如果是文件,將被直接刪除而不是放入回收站CTRL+N新建一個(gè)新的文件CTRL+O打開(kāi)“打開(kāi)文件”對(duì)話(huà)框CTRL+P打開(kāi)“打印”對(duì)話(huà)框CTRL+S保存當(dāng)前操作的文件CTRL+X剪切被選擇的項(xiàng)目到剪貼板CTRL+INSERT或CTRL+C復(fù)制被選擇的項(xiàng)目到剪貼板SHIFT+INSERT或CTRL+V粘貼剪貼板中的內(nèi)容到當(dāng)前位置ALT+BACKSPACE或CTRL+Z撤銷(xiāo)上一步的操作ALT+SHIFT+BACKSPACE重做上一步被撤銷(xiāo)的操作Windows鍵+L鎖屏鍵Windows鍵+M最小化所有被打開(kāi)的窗口。Windows鍵+SHIFT+M重新將恢復(fù)上一項(xiàng)操作前窗口的大小和位置Windows鍵+E打開(kāi)資源管理器Windows鍵+F打開(kāi)“查找:所有文件”對(duì)話(huà)框Windows鍵+R打開(kāi)“運(yùn)行”對(duì)話(huà)框Windows鍵+BREAK打開(kāi)“系統(tǒng)屬性”對(duì)話(huà)框Windows鍵+CTRL+F打開(kāi)“查找:計(jì)算機(jī)”對(duì)話(huà)框SHIFT+F10或鼠標(biāo)右擊打開(kāi)當(dāng)前活動(dòng)項(xiàng)目的快捷菜單SHIFT在放入CD的時(shí)候按下不放,可以跳過(guò)自動(dòng)播放CD。在打開(kāi)word的時(shí)候按下不放,可以跳過(guò)自啟動(dòng)的宏ALT+F4關(guān)閉當(dāng)前應(yīng)用程序ALT+SPACEBAR打開(kāi)程序最左上角的菜單ALT+TAB切換當(dāng)前程序ALT+ESC切換當(dāng)前程序ALT+ENTER將windows下運(yùn)行的MSDOS窗口在窗口和全屏幕狀態(tài)間切換PRINTSCREEN將當(dāng)前屏幕以圖象方式拷貝到剪貼板ALT+PRINTSCREEN將當(dāng)前活動(dòng)程序窗口以圖象方式拷貝到剪貼板CTRL+F4關(guān)閉當(dāng)前應(yīng)用程序中的當(dāng)前文本(如word中)CTRL+F6切換到當(dāng)前應(yīng)用程序中的下一個(gè)文本(加shift可以跳到前一個(gè)窗口)在IE中:ALT+RIGHTARROW顯示前一頁(yè)(前進(jìn)鍵)ALT+LEFTARROW顯示后一頁(yè)(后退鍵)CTRL+TAB在頁(yè)面上的各框架中切換(加shift反向)F5刷新CTRL+F5強(qiáng)行刷新目的快捷鍵激活程序中的菜單欄F10執(zhí)行菜單上相應(yīng)的命令A(yù)LT+菜單上帶下劃線(xiàn)的字母關(guān)閉多文檔界面程序中的當(dāng)前窗口CTRL+F4關(guān)閉當(dāng)前窗口或退出程序ALT+F4復(fù)制CTRL+C剪切CTRL+X刪除DELETE顯示所選對(duì)話(huà)框項(xiàng)目的幫助F1顯示當(dāng)前窗口的系統(tǒng)菜單ALT+空格鍵顯示所選項(xiàng)目的快捷菜單SHIFT+F10顯示“開(kāi)始”菜單CTRL+ESC顯示多文檔界面程序的系統(tǒng)菜單ALT+連字號(hào)(-)粘貼CTRL+V切換到上次使用的窗口或者按住ALT然后重復(fù)按TAB,切換到另一個(gè)窗口ALT+TAB撤消CTRL+Z編輯本段二、使用“Windows資源管理器”的快捷鍵目的快捷鍵如果當(dāng)前選擇展開(kāi)了,要折疊或者選擇父文件夾左箭頭折疊所選的文件夾NUMLOCK+負(fù)號(hào)(-)如果當(dāng)前選擇折疊了,要展開(kāi)或者選擇第一個(gè)子文件夾右箭頭展開(kāi)當(dāng)前選擇下的所有文件夾NUMLOCK+*展開(kāi)所選的文件夾NUMLOCK+加號(hào)(+)在左右窗格間切換F6編輯本段三、使用WINDOWS鍵可以使用Microsoft自然鍵盤(pán)或含有Windows徽標(biāo)鍵的其他任何兼容鍵盤(pán)的以下快捷鍵。目的快捷鍵在任務(wù)欄上的按鈕間循環(huán)WINDOWS+TAB顯示“查找:所有文件”WINDOWS+F顯示“查找:計(jì)算機(jī)”CTRL+WINDOWS+F顯示“幫助”WINDOWS+F1顯示“運(yùn)行”命令WINDOWS+R顯示“開(kāi)始”菜單WINDOWS顯示“系統(tǒng)屬性”對(duì)話(huà)框WINDOWS+BREAK顯示“Windows資源管理器”WINDOWS+E最小化或還原所有窗口WINDOWS+D撤消最小化所有窗口SHIFT+WINDOWS+M編輯本段四、“我的電腦”和“資源管理器”的快捷鍵目的快捷鍵關(guān)閉所選文件夾及其所有父文件夾按住SHIFT鍵再單擊“關(guān)閉按鈕(僅適用于“我的電腦”)向后移動(dòng)到上一個(gè)視圖ALT+左箭頭向前移動(dòng)到上一個(gè)視圖ALT+右箭頭查看上一級(jí)文件夾BACKSPACE編輯本段五、使用對(duì)話(huà)框中的快捷鍵目的快捷鍵取消當(dāng)前任務(wù)ESC如果當(dāng)前控件是個(gè)按鈕,要單擊該按鈕或者如果當(dāng)前控件是個(gè)復(fù)選框,要選擇或清除該復(fù)選框或者如果當(dāng)前控件是個(gè)選項(xiàng)按鈕,要單擊該選項(xiàng)空格鍵單擊相應(yīng)的命令A(yù)LT+帶下劃線(xiàn)的字母單擊所選按鈕ENTER在選項(xiàng)上向后移動(dòng)SHIFT+TAB在選項(xiàng)卡上向后移動(dòng)CTRL+SHIFT+TAB在選項(xiàng)上向前移動(dòng)TAB在選項(xiàng)卡上向前移動(dòng)CTRL+TAB如果在“另存為”或“打開(kāi)”對(duì)話(huà)框中選擇了某文件夾,要打開(kāi)上一級(jí)文件夾BACKSPACE在“另存為”或“打開(kāi)”對(duì)話(huà)框中打開(kāi)“保存到”或“查閱”F4刷新“另存為”或“打開(kāi)”對(duì)話(huà)框F5編輯本段六、桌面、我的電腦和“資源管理器”快捷鍵選擇項(xiàng)目時(shí),可以使用以下快捷鍵。目的快捷鍵插入光盤(pán)時(shí)不用“自動(dòng)播放”功能按住SHIFT插入CD-ROM復(fù)制文件按住CTRL拖動(dòng)文件創(chuàng)建快捷方式按住CTRL+SHIFT拖動(dòng)文件立即刪除某項(xiàng)目而不將其放入SHIFT+DELETE“回收站”顯示“查找:所有文件”F3顯示項(xiàng)目的快捷菜單APPLICATION鍵刷新窗口的內(nèi)容F5重命名項(xiàng)目F2選擇所有項(xiàng)目CTRL+A查看項(xiàng)目的屬性ALT+ENTER或ALT+雙擊可將APPLICATION鍵用于Microsoft自然鍵盤(pán)或含有APPLICATION鍵的其他兼容鍵編輯本段七、Microsoft放大程序的快捷鍵這里運(yùn)用Windows徽標(biāo)鍵和其他鍵的組合??旖萱I目的Windows徽標(biāo)+PRINTSCREEN將屏幕復(fù)制到剪貼板(包括鼠標(biāo)光標(biāo))Windows徽標(biāo)+SCROLLLOCK將屏幕復(fù)制到剪貼板(不包括鼠標(biāo)光標(biāo))Windows徽標(biāo)+PAGEUP切換反色。Windows徽標(biāo)+PAGEDOWN切換跟隨鼠標(biāo)光標(biāo)Windows徽標(biāo)+向上箭頭增加放大率Windows徽標(biāo)+向下箭頭減小放大率編輯本段八、使用輔助選項(xiàng)快捷鍵目的快捷鍵切換篩選鍵開(kāi)關(guān)右SHIFT八秒切換高對(duì)比度開(kāi)關(guān)左ALT+左SHIFT+PRINTSCREEN切換鼠標(biāo)鍵開(kāi)關(guān)左ALT+左SHIFT+NUMLOCK切換粘滯鍵開(kāi)關(guān)SHIFT鍵五次切換切換鍵開(kāi)關(guān)NUMLOCK五秒QQ快捷鍵,玩QQ更方便Alt+S快速回復(fù)Alt+C關(guān)閉當(dāng)前窗口Alt+H打開(kāi)聊天記錄Alt+T更改消息模式Ait+J打開(kāi)聊天紀(jì)錄Ctrl+A全選當(dāng)前對(duì)話(huà)框里的內(nèi)容Ctrl+FQQ里直接顯示字體設(shè)置工具條Ctrl+J輸入框里回車(chē)(跟回車(chē)一個(gè)效果)Ctrl+M輸入框里回車(chē)(跟回車(chē)一個(gè)效果)Ctrl+L對(duì)輸入框里當(dāng)前行的文字左對(duì)齊Ctrl+R對(duì)輸入框里當(dāng)前行的文字右對(duì)齊Ctrl+E對(duì)輸入框里當(dāng)前行的文字居中Ctrl+V在qq對(duì)話(huà)框里實(shí)行粘貼Ctrl+Z清空/恢復(fù)輸入框里的文字Ctrl+回車(chē)快速回復(fù)這個(gè)可能是聊QQ時(shí)最常用到的了Ctrl+Alt+Z快速提取消息Ctrl+Alt+A捕捉屏幕最常用的快捷鍵F5刷新DELETE刪除TAB改變焦點(diǎn)CTRL+C復(fù)制CTRL+X剪切CTRL+V粘貼CTRL+A全選CTRL+Z撤銷(xiāo)CTRL+S保存ALT+F4關(guān)閉CTRL+Y恢復(fù)ALT+TAB切換CTRL+F5強(qiáng)制刷新CTRL+W關(guān)閉CTRL+F查找SHIFT+DELETE永久刪除CTRL+ALT+DEL任務(wù)管理SHIFT+TAB-反向切換CTRL+空格--中英文輸入切換CTRL+Shift輸入法切換CTRL+ESC--開(kāi)始菜單CTRL+ALT+ZQQ快速提取消息CTRL+ALT+AQQ截圖工具CTRL+ENTER

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論