版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2013年小學(xué)期單片機(jī)設(shè)計實驗報告 題目:樂動時鐘班級:2011211118班內(nèi)序號:12姓名:楊帆實驗組號:35實驗摘要本次實驗我們制作的樂動鬧鐘總體上來說是一款懶人鬧鐘,可以隨時通過電子琴錄制一段音樂,到鬧鐘時間時便會重復(fù)響起這一段音樂,直到再次彈出這段音樂才可以關(guān)閉鬧鐘。平時關(guān)閉錄音模式時也可以當(dāng)作普通的電子琴彈奏。系統(tǒng)采用16F877作為微處理器,使用了,作為普通數(shù)字0腳,端口的模塊的脈寬調(diào)制輸出功能和串行輸出功能。時間模塊使用了1中斷,每500中斷一次,同時進(jìn)行模式檢測。每中斷兩次秒數(shù)加一。時間各位的數(shù)據(jù)存放在寄存器中,通過串行輸出,同時利用74164驅(qū)動數(shù)碼管顯示時間。電子琴發(fā)聲模塊是通過模塊的脈寬調(diào)制輸出功能,產(chǎn)生不同頻率的方波,產(chǎn)生不同音高的聲音。錄音模塊是將按鍵情況存在寄存器中。關(guān)鍵詞:鬧鐘,1中斷,,模式??a,a.,,.16F877,,I/0,.1,500,..,74164.,,..:,1,,一.實驗論證1、時鐘模塊時鐘分為三個模式,一為普通計時模式,二為調(diào)時間模式,三為調(diào)鬧鐘模式。每按一次模式鍵改變一次模式,即模式寄存器該模式位置位,其他位置零。計時部分由1計數(shù)器來實現(xiàn),每500中斷一次,在中斷子程序中檢測當(dāng)前模式以決定輸出。同時在中斷子程序中檢測中斷次數(shù)以決定是否秒加一,隨后判斷是否向前進(jìn)位。秒數(shù)到60后歸零,分?jǐn)?shù)加一,分?jǐn)?shù)到60后歸零,小時加一,小時到24后歸零。有五個按鍵,一為模式鍵;二為調(diào)秒鍵,三為調(diào)分鍵,四為調(diào)小時鍵,可通過上述三個鍵在模式一中調(diào)節(jié)當(dāng)前時間或是在模式二中調(diào)節(jié)鬧鐘時間。第五個是帶鎖開關(guān),為鬧鐘的開關(guān)鍵。時間的八位的數(shù)據(jù)存儲在八個寄存器中,通過串行輸出方式輸出信息。時鐘由八個74164驅(qū)動八個共陰數(shù)碼管進(jìn)行顯示。5輸出74164的時鐘信號,3口輸出寄存器信息。八個74164逐步移位顯示時鐘各位的信號。在秒加一中斷子程序里比較所設(shè)定鬧鐘時間和當(dāng)前時間的每一位,若完全相同則將鬧鐘控制寄存器置位,以控制鬧鐘開啟。2、電子琴模塊電子琴模塊由模塊的脈寬調(diào)制輸出功能實現(xiàn)。當(dāng)工作于模式時,相應(yīng)的引腳可以輸出分辨率高達(dá)10位的信號波形。由于引腳和端口引腳是復(fù)用的,因此必須事先將清0寄存器的1和2以設(shè)置引腳為輸出狀態(tài)。設(shè)定好2預(yù)分頻比后,根據(jù)按鍵的不同賦予2不同的值,便可得到不同頻率的方波,發(fā)出不同音高的聲音。將所賦予2的值右移兩位輸入1L寄存器,可使不同周期方波的占空比皆為1/8,保證所發(fā)出的不同音高的聲音強(qiáng)度相等。3、錄音模塊設(shè)置一定的寄存器為錄音寄存器,存儲錄音時的按鍵情況,實際上存儲按鍵發(fā)音所輸入的2值。使用間接尋址,逐步加一,所指寄存器不斷下移,實現(xiàn)不斷存儲功能。同時設(shè)置一計數(shù)寄存器,計數(shù)錄音時按鍵個數(shù)。每次開啟錄音功能將錄音寄存器和計數(shù)寄存器初始化。4、鬧鐘模塊鬧鐘開啟后,讀取錄音寄存器內(nèi)數(shù)據(jù),并傳入2寄存器,通過模式輸出所錄制聲音。同時每播放一個音符,計數(shù)寄存器數(shù)據(jù)減一,并使鬧鐘反復(fù)播放。按電子琴模塊任意鍵進(jìn)入鬧鐘比對模塊,將用戶按鍵信息和錄音寄存器中數(shù)據(jù)比較,若有不同則返回鬧鐘模塊,重新響起鬧鐘。若按下后沒有按完,則在秒數(shù)第二次由個位進(jìn)到十位時鬧鐘再次響起。二.系統(tǒng)總體設(shè)計硬件框圖復(fù)位電路復(fù)位電路16F87777時鐘電路鬧鐘電路音樂電路按鍵輸入顯示電路圖主要模塊流程主程序流程圖開始啟動定時器開始啟動定時器按鍵檢測時間顯示在主程序中首先對所用到的寄存器進(jìn)行了初始化,包括:設(shè)置,等普通數(shù)字口的方向,使后六位和所有的八位全為輸入;設(shè)置模塊相關(guān)寄存器的值,使為全0,的四五位為1,從而使C口實現(xiàn)主控輸出;實現(xiàn)對鬧鐘信號寄存器和時間信號寄存器的初始化;打開全局中斷,并設(shè)置1初始值,開啟1定時器,并使1每500中斷一次;設(shè)置錄音寄存器和計數(shù)寄存器的初始值,使默認(rèn)鬧鐘鈴聲為小星星。之后進(jìn)入鍵盤掃描子程序,掃描時鐘模塊和電子琴模塊的14個按鍵是否按下以及鬧鐘控制寄存器是否置位,以完成調(diào)節(jié)當(dāng)前時間,調(diào)節(jié)鬧鐘時間,彈琴,開啟鬧鐘等功能。(2)時間調(diào)整模塊NNYNYNY時加1顯示時間結(jié)束開始秒按鍵按下?秒加1分按鍵按下?分加1時按鍵按下?NN24小時到?分單元清零,時單元加1NNNYY時單元清零時間顯示中斷返回開始。1秒時間到?60秒時間到?60分鐘到?秒單元加1秒單元清零,分單元加1YY時鐘調(diào)整模塊有三個按鍵,可在模式一或模式二下分別調(diào)節(jié)當(dāng)前時間或鬧鐘時間的時,分,秒。調(diào)整分和秒由同一個子程序?qū)崿F(xiàn):秒個位到九則個位歸零,十位加一,十位到五個位到九則置<7>為1,向分鐘進(jìn)位(調(diào)整時間則沒有進(jìn)位);分鐘進(jìn)位方式和其相同。小時的進(jìn)位調(diào)用子程序,十位沒到2則個位到9進(jìn)位,十位到二則個位到4則兩位均歸零。(3)電子琴發(fā)聲模塊鍵盤掃描子程序掃描是否有按鍵按下。按下琴鍵后,備份,將按鍵對應(yīng)2值傳入寄存器,進(jìn)入發(fā)聲程序,開啟模式。信號有兩個基本參數(shù):一個是周期(高電平和低電平持續(xù)時間之和);另一個是占空比(高電平持續(xù)時間)。其中周期決定了所發(fā)聲音的音高,占空比決定了所發(fā)聲音的強(qiáng)度。PWM輸出信號的周期=[PR2+1]×4×Tosc×(TMR2預(yù)分頻比),設(shè)定好2預(yù)分頻比后,根據(jù)按鍵的不同賦予2不同的值,便可得到不同周期,即不同頻率的方波,通過揚聲器發(fā)出不同音高的聲音(從中音C到高音C)。占空比由1L寄存器和1(4)錄音模塊使用者隨時可以按錄音鍵,指針備份后指向40H寄存器,開始存儲的按鍵情況,實際上存儲按鍵所對應(yīng)的2值,實現(xiàn)存儲用戶的個性鬧鐘音樂。本程序只為錄音寄存器預(yù)留16位寄存器,故只能存儲16個音,可進(jìn)行擴(kuò)展,翻頁存儲更多的音符。每按下一個鍵,計數(shù)寄存器加一。(5)鬧鐘模塊在秒加一中斷子程序里判斷是否到所設(shè)定鬧鐘時間,若到則置位鬧鐘控制寄存器。在鍵盤掃描子程序里掃描鬧鐘控制寄存器,若置位則進(jìn)入鬧鐘程序。鬧鐘開啟后,通過間接尋址按順序讀取錄音寄存器內(nèi)數(shù)據(jù),并傳入2寄存器,通過模式輸出所錄制聲音。同時每播放一個音符,計數(shù)寄存器數(shù)據(jù)減一,到零后重置和計數(shù)寄存器為鬧鐘開啟時狀態(tài),使鬧鐘反復(fù)播放。按電子琴模塊任意鍵進(jìn)入鬧鐘比對模塊,每按下一個鍵和當(dāng)前所指向寄存器中所存數(shù)據(jù)比較,若有不同則返回鬧鐘模塊,重新響起鬧鐘;若相同,則加一,重新比較。若按下后沒有按完,則在秒數(shù)第二次由個位進(jìn)到十位時鬧鐘再次響起(此功能在分秒加一子程序中實現(xiàn))。(4)輸出模塊使用八個74164移位寄存器驅(qū)動八個共陰數(shù)碼管串行輸出,設(shè)置60H到67H八個寄存器作為顯示寄存器(60H、61H為秒,63H、64H為分,66H、67H為小時)。使用主從模式向74164發(fā)送信息,輸出時指向67H,開始發(fā)送寄存器內(nèi)數(shù)據(jù),每發(fā)送一個數(shù)據(jù)減一,直到<3>為1時停止發(fā)送。三.分工情況軟件部分:我負(fù)責(zé)電子琴和鬧鐘響應(yīng)部分的編寫,包括使彈奏電子琴發(fā)聲,錄制鬧鐘聲音,鬧鐘到時的響聲,鬧鐘時按鍵對比關(guān)鬧鐘的響應(yīng)。搭檔負(fù)責(zé)時鐘部分編寫,包括計時,顯示,調(diào)時間,調(diào)鬧鐘,判定鬧鐘是否到時間。兩人都用進(jìn)行了仿真。硬件部分:我去中發(fā)買了元件,焊了部分電路。搭檔搭了面包板,焊了部分電路。四.調(diào)試方法(1)使用的軟仿真功能,通過觀察窗(包括,,),觀察不同地址和名稱寄存器中的數(shù)據(jù)。調(diào)試時有時使用單步運行方式,不斷按F7;或者使用方式(自動單步運行,可使用模擬按鍵),觀察各個觀察窗的數(shù)據(jù),查看程序運行過程,看程序是否會卡住或跑飛等。還使用了斷點調(diào)試,在語句前右擊添加斷點,可以檢查在對準(zhǔn)確性不確定的語句上各寄存器的情況。但軟仿真方式無法對中斷程序進(jìn)行調(diào)試,方式運行時也不易準(zhǔn)確按鍵。(2)使用硬仿真功能,將程序燒入單片機(jī)中。在學(xué)習(xí)過程中將單片機(jī)放置在實驗箱上,調(diào)試按鍵操作。在之后測試自己所焊電路時也使用了硬仿真,通過在程序特定位置設(shè)置輸出信號,用發(fā)光二極管檢測是否發(fā)光的方式檢測程序是否正確運行。(3)使用軟件進(jìn)行仿真。在中畫好電路圖,導(dǎo)入代碼,進(jìn)行仿真。一方面通過調(diào)用觀察窗的方式,觀察不同地址和名稱寄存器,尤其是中的數(shù)據(jù),來推測代碼中可能存在的問題。另一方面觀察元件兩端的信號標(biāo)志,紅色說明有信號,藍(lán)色則說明無信號,以此檢測各部分電路是否工作正常。仿真過程中還可以暫停仿真,觀察電路中每一點的電壓以檢測各部分電路是否工作正常。此外,在調(diào)試電子琴發(fā)音模塊時,在1輸出腳還連接了頻率計和示波器等虛擬儀器,觀察輸出信號的頻率和波形。不過仿真時一些默認(rèn)和忽略的地方也給我們帶來了不少麻煩,而且由于仿真時時鐘頻率有時和晶振頻率不同,也帶來了一些困擾。五.遇到的問題在實驗過程中,我們遇到了很多很多的問題。在老師和百度的幫助下都得到了解決。不過也就是在這些問題中,我們逐漸學(xué)會了的使用,匯編語言的編程,的使用和電路的相關(guān)知識。在此,列舉幾個調(diào)試過程中比較典型的問題。在上進(jìn)行軟仿真時,發(fā)現(xiàn)程序總是會跑飛,進(jìn)入不該進(jìn)入的子程序。通過觀察窗逐步觀察各個寄存器,尤其是2和的數(shù)據(jù),發(fā)現(xiàn)在按鍵之后沒有恢復(fù)到按鍵前的狀態(tài),對之后的寄存器產(chǎn)生影響。在按鍵前備份,按鍵后恢復(fù)數(shù)據(jù)后,程序不再跑飛。和中的指針類似,使用間接尋址修改寄存器數(shù)據(jù)時必須注意所指位置,一不留神就會出現(xiàn)各種錯誤。轉(zhuǎn)到上進(jìn)行仿真后,在正常模式下時鐘走的正常,按電子琴鍵可以發(fā)出所需要的音符。但打開錄音模式后按電子琴鍵,時鐘就會卡住,但此時按電子琴鍵還可以發(fā)出聲音。在上添設(shè)觀察窗,發(fā)現(xiàn)按一次鍵,值變化和預(yù)期不同(預(yù)期中每按一次電子琴鍵,加一)。懷疑是調(diào)用出現(xiàn)了問題,但查代碼沒有查出錯誤,在上軟仿真也是正常。之后無意中按住電子琴鍵沒有松開,發(fā)現(xiàn)值不斷變化。我們錯在在鍵盤掃描時,只檢測按鍵是否按下,這樣在按鍵按下的時間內(nèi)程序進(jìn)行了好多次,超出錄音寄存器的范圍,對時鐘所需寄存器產(chǎn)生了影響。我們將代碼改為檢測到按鍵按下后繼續(xù)掃描,一直掃到按鍵松開時才執(zhí)行相應(yīng)代碼,這樣在按鍵時按預(yù)期每次加一,對時鐘不再產(chǎn)生影響。將代碼改為按鍵松開后執(zhí)行相應(yīng)代碼后,發(fā)現(xiàn)按鍵后不再發(fā)聲。在中1輸出管腳上加上頻率計和示波器等虛擬儀器,發(fā)現(xiàn)按鍵后頻率只有很小的增長,幾乎為保持0。然后在發(fā)聲程序中將關(guān)閉模式的代碼注釋掉。結(jié)果出現(xiàn)聲音且一直響,觀察頻率計發(fā)現(xiàn)按鍵之后延時一段時間后頻率才增加到預(yù)定值,因此在發(fā)聲程序中開啟后增加了延時時間,然后再按鍵就成功發(fā)出了聲音。面包板是搭檔搭好的,一開始由于在上已經(jīng)仿真通過,認(rèn)為電路沒有問題了,就一次性把整個電路都搭好了。結(jié)果插電后電路完全沒有反應(yīng),和沒插單片機(jī)效果一樣。后來將電路拆開一步步搭。又在百度上發(fā)現(xiàn)單片機(jī)1口會低電平復(fù)位,搭好復(fù)位電路后在小面包板上搭了個簡單電路,只有單片機(jī),復(fù)位電路,電源電路,晶振,和一個數(shù)碼管,一個74164,其中數(shù)碼管顯示秒的低位。這樣電路出現(xiàn)正確結(jié)果。然后轉(zhuǎn)移到大面包板上繼續(xù)搭,結(jié)果又是什么都沒有。然后我們將數(shù)碼管換了個位置重搭,這樣便成功了。我們又加了一個數(shù)碼管顯示秒的高位,結(jié)果還是成功。面包板的穩(wěn)定性較差,在面包板上搭電路除了保證電路正確,還是需要一定的運氣。焊電路時吸取了之前大面包板時的教訓(xùn),一步步,一個數(shù)碼管一個數(shù)碼管的焊。焊完第三個第四個后發(fā)現(xiàn)只有秒鐘的兩位正常,第三位第四位結(jié)果74164各位輸出都是全為1。用數(shù)字萬用表測電路上各個焊點的電壓和電阻,以為是有哪里虛焊或是兩個焊點連在一起了。檢測到第三位的74164的輸入正確,輸出有問題,便一點點檢測第三位74164的各個管腳,最終發(fā)現(xiàn)第三個74164的8口,即處,本來該在內(nèi)部相連的兩個孔其實沒連上,第三個74164其實沒有時鐘信號驅(qū)動。將兩個點連上后就正常了。焊接完時鐘模塊后調(diào)試時,按模式鍵時總是時靈時不靈,用數(shù)字萬用表測該輸入口電壓變化,和預(yù)計變化相同。于是我們認(rèn)為是程序出了問題,但仿真正常,查看代碼也沒有找到錯誤。后來,我們向其他同學(xué)借了個單片機(jī)運行,結(jié)果一切正常,時靈時不靈的情況沒有發(fā)生。電路焊完之后,時鐘顯示、調(diào)節(jié)時間、彈奏電子琴等功能都可以正常運行了,但到了鬧鐘的時間時鬧鐘不響,但再按電子琴鍵時也會無效,這證明進(jìn)入了鬧鐘程序,鬧鐘程序出現(xiàn)了問題。由于在中仿真正常,一開始認(rèn)為電路焊接有問題,錄音鍵沒有焊好,于是重新焊接了錄音鍵,又給鬧鐘增加了預(yù)置音樂,結(jié)果還是不響。于是我們開始尋找軟件的原因。我們采用了類似中“大法”的方法,在程序中設(shè)置一條使一閑置口輸出高電平的命令,在該口接發(fā)光二極管看是否會亮的方法看是否進(jìn)入該語句所在程序。經(jīng)過逐步排查,發(fā)現(xiàn)程序進(jìn)入了不該進(jìn)入的子程序,在鬧鐘狀態(tài)下的鍵盤掃描時,按鍵沒按下卻被識別成1,經(jīng)萬用表測量,一到鬧鐘時刻,各個管腳電壓突然升到1.27V左右,意識到這是口上拉電阻的影響,在程序中禁用上拉電阻后,電路恢復(fù)正常,所有功能可以正常使用。六.心得體會這次實驗是大學(xué)以來第一次完全自己動手,從零開始自己學(xué)習(xí)軟硬件知識并完成一項具體作品的過程。這兩周學(xué)到了很多,不僅是單片機(jī)的知識或是匯編語言的語法,更多的是和之前所學(xué)知識的融會貫通和自學(xué)能力、自己解決問題的能力的提高。比如在的基礎(chǔ)上學(xué)習(xí)匯編語言,二者雖然語法不同,但本質(zhì)的思想是相同的,算法也是類似。調(diào)試單片機(jī)程序的過程也類似于調(diào)試時的程序。模電和數(shù)電的學(xué)習(xí),尤其是模電的綜合性實驗也為電路的設(shè)計打下了基礎(chǔ),像復(fù)位電路、按鍵電路的設(shè)計,對電路各點的測量和調(diào)試等。大一小學(xué)期時的編程算是自己動手編的第一個比較大的程序,但當(dāng)時有教材,教材上把程序的大體框架和關(guān)鍵算法已經(jīng)都給出了,自己編的并不是很多,而且不是核心內(nèi)容。這次小學(xué)期從選題到編程到焊接電路完全都是自己的想法。像電子琴的發(fā)聲程序,絕大部分組都是控制某個管腳的高低電平不斷變化以產(chǎn)生固定頻率的方波,但我在看了模塊的介紹之后便在考慮能否用模式輸出發(fā)聲所需要的方波,于是認(rèn)真鉆研了模塊的各種功能,模式的特點之后成功地用模式輸出所需方波,而且這樣得到的方波不受其他語句或是中斷的影響,頻率始終不變,得到的聲音音色也更純粹,發(fā)聲程序也更加簡潔。錄音模塊和鬧鐘響應(yīng)模塊更是我們的獨創(chuàng),這是完全找不到參考的。這兩個程序,尤其是鬧鐘響應(yīng)模塊從初步構(gòu)想到一步步完善,耗費了很大的精力,在編寫過程和調(diào)試過程中遇到了很大的麻煩,耗費了我們很多時間。雖然很困難,但這種獨創(chuàng)的東西做出來后的成就感是比做出普通的東西要大得多的。在實驗過程中,我們遇到了很多困難,軟硬件方面出現(xiàn)了各種各樣的問題,這些問題也給了我們不小的挫敗感。尤其是第一次搭電路之后完全沒有結(jié)果時,感覺前途一片灰暗。這兩周每天早上八點半到晚上九點,每天在實驗室里待10個多小時,有時一個問題要花費半天甚至接近一天的時間解決。由于我還在上另
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年撰寫:中國短信息軟件行業(yè)發(fā)展趨勢及競爭調(diào)研分析報告
- 2024-2030年撰寫:中國大型儲膠式吹瓶機(jī)項目風(fēng)險評估報告
- 2024-2030年多孔硝銨公司技術(shù)改造及擴(kuò)產(chǎn)項目可行性研究報告
- 2024-2030年國家甲級資質(zhì):中國皮帶機(jī)托輥融資商業(yè)計劃書
- 2024-2030年國家甲級資質(zhì):中國水質(zhì)處理器融資商業(yè)計劃書
- 2024-2030年雙線路穩(wěn)壓電源搬遷改造項目可行性研究報告
- 2024-2030年冶金機(jī)械設(shè)搬遷改造項目可行性研究報告
- 智能生態(tài)系統(tǒng)課程設(shè)計
- 2024-2030年全球及中國電氣設(shè)備監(jiān)測行業(yè)前景動態(tài)及投資戰(zhàn)略研究報告
- 2024-2030年全球及中國炸雞行業(yè)競爭情況及營銷趨勢預(yù)測報告
- 電影短片《路怒》分鏡表
- 天津市河北區(qū)2022-2023學(xué)年七年級上學(xué)期期末地理試題
- 電動叉車充電間(區(qū)域)方面的標(biāo)準(zhǔn)要求
- 國際戰(zhàn)略環(huán)境概述
- 趣味可拓學(xué)智慧樹知到期末考試答案章節(jié)答案2024年廣東工業(yè)大學(xué)
- (高清版)JTGT 5190-2019 農(nóng)村公路養(yǎng)護(hù)技術(shù)規(guī)范
- 體育初中學(xué)生學(xué)情分析總結(jié)報告
- 幕墻工程安裝施工施工管理人員配備及分工
- 國開一體化平臺01588《西方行政學(xué)說》章節(jié)自測(1-23)試題及答案
- 年產(chǎn)5億粒藿香正氣膠囊車間工藝設(shè)計.文檔
- 第17課《昆明的雨》課件(共35張)
評論
0/150
提交評論