freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的電子音樂盒畢業(yè)論文-資料下載頁

2025-08-16 14:27本頁面

【導(dǎo)讀】單片機的易用性與多功能性使它廣泛應(yīng)用于各種微控制系統(tǒng)。本文介紹了一種基。器件,采用匯編語言編寫程序,實現(xiàn)音樂播放功能。并在音樂盒基礎(chǔ)上利用單片機閑。置P1口拓展了LED點陣移位顯示功能。整個系統(tǒng)電路結(jié)構(gòu)簡單,可靠性能高,測試結(jié)。果滿足設(shè)計要求。本文著重介紹了該系統(tǒng)的設(shè)計原理,硬件設(shè)計方法與軟件編程思路。

  

【正文】 _ H QA~ QH輸出無效 L QA~ QH輸出有效 L 清空移位寄存器 L ↑ H 第 1個移位寄存器變?yōu)?L, 其余移位寄存器變?yōu)槠淝耙粋€移位寄存器的上一狀態(tài) H ↑ H 第 1個移位寄存器變?yōu)?H,其余移位寄存器變?yōu)槠淝耙粋€移位寄存器的上一狀態(tài) ↑ 移位寄存器的數(shù)據(jù)存入存儲器 ↓ 存儲器狀態(tài)不改變 ? H-高電平; L-低電平; -任意電平 ? ↑-低到高電平跳變;↓-高到低電平跳變 LED 點陣驅(qū)動設(shè)計電路 74HC595 的 高 7 位輸出端與 7 5LED 點陣的 7 根 行線連接。 74HC595 的第 14 腳 SI 是串行數(shù)據(jù)輸入線, 11 腳 SCK 為串行輸入時鐘控制線,當(dāng) SCK 從低電平跳到高電平時, SI 的一個數(shù)據(jù)移入輸入級移位寄存器。 12 腳 RCK 為輸出級鎖存器的時鐘控制線,當(dāng) RCK 從低電平跳到高電平時,輸入級移位寄存器的數(shù)據(jù)轉(zhuǎn)移到輸出級。 電路中 8 位串入并出移位寄存器 74LS164 的 低 5 位輸出端與點陣列線連接。編程中設(shè)計成將數(shù)據(jù)送至列的形式, 即 每次刷新列數(shù)據(jù)時只須對 8 位的串行移位寄存器74LS164 移入 5 位數(shù)據(jù)即可。 以上三個器件連接好后,除了正 5V 和對地的電源線外,另外 5 根線中有一根行數(shù)據(jù)輸入線 SI 和一根列數(shù)據(jù)輸入線 B,兩根時鐘控制線 74HC595 的 SCK 和 74LS164的 CLK,以及 74HC595 的輸出轉(zhuǎn)移控制線 RCK。根據(jù)編程思想將這 5 根線與單片機相應(yīng)的輸出端口相連。 LED 點陣驅(qū)動電路的實際設(shè)計電路圖見圖 315。 硬件設(shè)計 26 圖 315 LED點陣驅(qū)動電路設(shè)計圖 小結(jié) 通過以上分析,我們得出了完整的硬件電路設(shè)計方案,因此可利用 PROTEL 軟件畫出 PCB 原理圖,并完成布線得到 PCB 電路圖,通過制板,元器件采購,焊接完成硬件電路板的制作。 基于單片機的電子音樂盒 27 第 4 章 軟件設(shè)計 在進行微機控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實際需要設(shè)計應(yīng)用程序。因此,軟 件設(shè)計在微機控制系統(tǒng)設(shè)計中占重要地位。對于本系統(tǒng),軟件更為重要。 在進行軟件設(shè)計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實質(zhì)上就是所完成一定功能,相對獨立的程序段,這種程序設(shè)計方法叫模塊程序設(shè)計法。 模塊程序設(shè)計法的主要優(yōu)點是: 1)單個模塊比起一個完整的程序易編寫及調(diào)試; 2)模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用; 3)模塊程序允許設(shè)計者分割任務(wù)和利用已有程序,為設(shè)計者提供方便。 本系統(tǒng)軟件設(shè)計采用模塊化結(jié)構(gòu),由主程序﹑幀掃描子程序、列發(fā)送子程序﹑行發(fā)送子程序、音頻節(jié)拍讀取子程序、 T0 中斷服務(wù)子程序、節(jié)拍延時子程序。 上述子程序按其功能可分為兩大部分: LED 移位顯示部分和音樂盒功能部分, 將兩部分功能程序順序執(zhí)行便是完整程序的主程序。其總體框圖如 41 所示。 圖 41 總體框圖 LED 移位顯示程序 LED 移位顯示程序部分主要包括 LED 移位顯示主程序、幀掃描子程序、列發(fā)送子程序、行發(fā)送子程序。 軟件設(shè)計 28 上一章末尾中圖 315 給出了 LED 驅(qū)動電路與單片機連接的方案。根據(jù)這種連接形式, 在此介紹在 LED 點陣上實現(xiàn)字符移動顯示的原理。此方案是在 7 5LED 點陣上顯示自下向上漂移的字母或圖案。由于電路板的尺寸大小限制,只有 35 只發(fā)光三極管,像素太少,不宜顯示漢字,雖然顯示效果不好看,但工作原理相同。若將點陣擴大,就能夠顯示漢字。 在如圖 42 所示的 LED 移位顯示主程序中,使用 DPTR 地址寄存器作為地址指針,開始時指向數(shù)據(jù)表首地址。第一次循環(huán)時, DPTR 指向第一列,在循環(huán)體中 DPTR 加 1,第二次循環(huán)時,地址指針后移一列。幀掃描子程序每次掃描 LED 點陣 7行數(shù)據(jù)。數(shù)據(jù)串行送至 74LS164 輸出端連 接的 5 根列線。行線作控制開關(guān)使用,由74HC595 輸出端提供控制信號。第一次送出第一個字符最上一行 5 位列數(shù)據(jù)時,行掃描開關(guān)除了置第一行為低外,其余行置高,即打開第一行,關(guān)閉其余行。第二次送出第一個字符第二行 5 位列數(shù)據(jù),行掃描開關(guān)置第二行為低,其余行置高,打開第二行,關(guān)閉其余行,以后類推。用這樣方式完成一幀掃描。 數(shù)據(jù)表按顯示要求編碼。每一個字節(jié)為 LED 點陣板一行中 5 位相應(yīng)的顯示數(shù)據(jù)。由于只發(fā)送 5 次,所以有效數(shù)據(jù)只在一個字節(jié)的低 5 位。當(dāng)列線為 0 時與行線相交點的發(fā)光二極管關(guān),列線為 1 時開。數(shù)據(jù)表中一行的 7 個字節(jié) 數(shù)據(jù)為一個字符的編碼信息。 DPTR 在幀掃描子程序外置數(shù)據(jù)表地址的基值, R1 作地址偏移量,以兩者之和對數(shù)據(jù)尋址。 R1 的初值為 0,當(dāng) DPTR 為表首地址時,在子程序的循環(huán)中 R1 從 0 增加到 6,取出第一個顯示字符的全部 7 個字節(jié)并與行開關(guān)配合依次逐行顯示,完成一幀掃描操作。 DPTR 在每次循環(huán)后加 1,使得它所指向的數(shù)據(jù)表地址后移。此后調(diào)用幀掃描子程序時,每幀顯示的字符地址將向后移。例如第二次調(diào)用幀掃描子程序, DPTR 的值為表首地址加 1,此時當(dāng) R1 再從 0 增加到 6 時,取出的是第一個顯示字符后 6個字節(jié)和第二個顯示字符的第 一個字節(jié),并與行開關(guān)配合依次逐行顯示,完成一幀掃描操作。此時看到的顯示效果為第一個顯示字符向上移動了一行,原第一行從上端移出了屏幕,而第二個顯示字符的第一行從下端進入了屏幕。隨著 DPTR 在每次循環(huán)后加一次次地加 1,每幀顯示都將當(dāng)前顯示字符的一行從上端移出,將 后續(xù)顯示字符的一行從下端移入,形成了所有設(shè)置字符的流水顯示。 基于單片機的電子音樂盒 29 圖 42 LED移位顯示主程序 軟件設(shè)計 30 圖 43 LED點陣幀掃描主程序 DPTR 能增加的最大數(shù)是循環(huán)計數(shù)器 R3 的初值,因此 R3 的初值應(yīng)比數(shù)據(jù)表中數(shù)據(jù)總數(shù)少 7,否則 DPTR與 R1 相加后將指到表外。為了保證最后一個字也能移動顯示,DPTR 又要能指向最后一個顯示字符的最后一個編碼字節(jié)。因此將數(shù)據(jù)表最后一行用了全 0 數(shù)據(jù),結(jié)果以黑屏顯示效果結(jié)束全部字符一場移動顯示。 基于單片機的電子音樂盒 31 每幀反復(fù)循環(huán)掃描的次數(shù),決定顯示移動速度。在主程序中,移動速度由幀掃描次數(shù)計數(shù)器 R2 中的初值決定。該值要根據(jù)不同晶振的頻率和個人的喜好決定。 在圖 44 所示的列數(shù)據(jù)發(fā)送子程序中, CPU 通過 端口的 5 次串行移位操作,將數(shù) 據(jù)送到 74LS164 的輸出端及 LED 點陣板的 5 根列線。 圖 44 列發(fā)送子程序 LED 點陣按重合法方式顯示,可將數(shù)據(jù)同時送到 5 條列線,然后開啟這 5 列數(shù)據(jù)應(yīng)出現(xiàn)的行線,關(guān)閉其它行。由于只有 7 根行線與 74HC595 的第 0 到 6 位連接,第一次調(diào)用字掃描子程序, CPU 通過 端口的 8 次串行移位操作,將控制字 10111111B送到 74HC595 的輸出端及 LED 點陣的 7 根列線??刂谱?10111111B 中的數(shù)據(jù) 0 處于輸出端第 6 位,點亮 LED 點陣頂端第一行,其余行關(guān)閉。以后控制字循環(huán)經(jīng)過循環(huán)移位后發(fā)送至 74HC595 輸出端,依次點亮第二行、第三行等等,實現(xiàn)了幀掃描操作。由于 LED 點陣板只有 7 位,所以有一次操作將 0 移出 LED 點陣板,此時屏幕全關(guān)。行發(fā)送子程序如圖 45 所示。 軟件設(shè)計 32 圖 45 行發(fā)送子程序 音樂盒功能程序 音樂盒功能程序部分主要包括音樂盒功能主程序、音頻節(jié)拍讀取子程序、 T0 中斷服務(wù)子程序、節(jié)拍延時子程序。 在建立了音符編碼和節(jié)拍編碼后,編程時,每個音符占用一個字節(jié),高 4 位是音符編碼,低 4 位是節(jié)拍編碼。根據(jù)上述原則建立樂譜編碼表,以及按照音符順序?qū)?yīng)的 THTL 值表。例如:在《生日快樂歌》中,第一個音 符“ 5”的音符編碼為“ 8” ,對應(yīng)的 THTL 值為 64900,見表 22。第一個音符“ 5”的節(jié)拍是 2/4 拍,節(jié)拍編碼為“ 2”,見表 23。則定義該音符編碼為“ 82H” 。為了聽好兩個同音符,在兩者之間空 1/4 拍,即在 5 5 見加入“ 01H”編碼。同理,整首歌的樂譜編碼表舅可以得出。在程序運行過程中順序取出樂譜編碼,然后查表找到對應(yīng)的 THTL 值。 首先通過對 TMOD 控制字將定時器 0 初始化為工作方式 1,通過控制字 IE 允許基于單片機的電子音樂盒 33 定時器 0 中斷。接著等待選擇按鍵的按下,經(jīng)過按鍵去抖程序確認(rèn)按下之后為按鍵次數(shù)賦初值 0。之后到第一 首歌曲的簡譜碼取簡譜碼。經(jīng)過音頻節(jié)拍讀取子程序?qū)⒐?jié)拍、音頻分別讀取后空音符則直接將定時器 0 暫停,非空音符則通過對音符表的查詢提取T 值后,經(jīng)中斷服務(wù)子程序發(fā)出音頻,后都經(jīng)音頻節(jié)拍子程序完成一個音樂節(jié)拍的輸出。之后將提取簡譜碼的指針加 1,再次循環(huán)上述步驟。音樂盒功能主程序如圖 46所示。 在音頻節(jié)拍讀取子程序中其核心功能為從簡譜碼中將低 4 位的節(jié)拍編碼與高 4 位的音頻編碼分別讀取并存入相應(yīng)寄存器中供后使用。在該子程序中還將完成對一首簡譜碼的結(jié)束標(biāo)志 00H的識別及對是第幾首歌曲的結(jié)束進行判斷以及其后程序步驟的設(shè)計。當(dāng) 判別為 00H 時,停止定時器 0,之后判別按鍵次數(shù)為 1 還是 2,若是其中之一,則等待再次按鍵后將簡譜碼指針指向下一首,并循環(huán)上述音頻節(jié)拍讀取的程序。若按鍵次數(shù)既不是 1 也不是 2,則比為 3,因此三首歌曲全部播放完畢,程序返回至 LED驅(qū)動程序開始再次循環(huán)執(zhí)行。音頻節(jié)拍讀取子程序如圖 47 所示。 圖 46 音樂盒功能主程序 軟件設(shè)計 34 圖 47 音頻節(jié)拍讀取子程序 口輸出音頻,主要通過中斷服務(wù)子程序?qū)Χ〞r器 0 設(shè)置計數(shù)初值,定時對 口取反,形成相應(yīng)頻率的音頻。該子程序先將 A 和 PSW 的值暫存于堆棧以保護現(xiàn)場,之后將 在此前讀取的 T 值裝高地位裝入 TH0 和 TL0,再取回 A 和 PSW 以恢復(fù)現(xiàn)場。最后從中斷返回主程序。如圖 48 所示。 圖 48 T0中斷服務(wù)子程序 基于單片機的電子音樂盒 35 產(chǎn)生的音頻還需要再根據(jù)節(jié)拍持續(xù)相應(yīng)的時間,而節(jié)拍的控制通過延時來完成。在節(jié)拍延時子程序中,設(shè)計了一個 4/4 節(jié)拍的 1/4 拍的單位時間 125ms 的延時程序,之后根據(jù)對存入節(jié)拍編碼的 R5中的值進行減 1判 0 進行循環(huán)以完成一個音節(jié)的節(jié)拍。見圖 49。 圖 49 節(jié)拍延時子程序 小結(jié) 經(jīng)過以上的程序設(shè)計當(dāng)將表中的所有簡譜碼都執(zhí)行之后,音樂盒的功能即完成。并循環(huán)返回至 LED 移位顯示部分的程序中。實現(xiàn)音樂和畫面交相輝映的效果。 按照上文所說的思路,利用匯編語言進行編程,通過 KEIL 軟件調(diào)試編譯后用TOP851 編程器將程序燒錄到單片機內(nèi),再結(jié)合電路板進行調(diào)試,即可完成程序設(shè)計。 軟硬件調(diào)試 36 第 5 章 軟硬件調(diào)試 在進行方案論證和軟硬件設(shè)計之后,做出的成品要進行系統(tǒng)調(diào)試和測試,并對調(diào)試中產(chǎn)生的問題加以解決和改進。本章介紹軟硬件的調(diào)試。 硬件調(diào)試 系統(tǒng)的硬件調(diào)試主要是排查 PCB 上的連接問題。硬件調(diào)試中主要產(chǎn)生工藝性和設(shè)計性兩類錯誤或缺陷。調(diào)試方法為:首先檢查電路板上元器件的焊接情況,有無虛焊、漏焊或者連焊。然后用萬用表檢查電源,芯片 I/O 口與地有無短路,接著不加芯片接通電源,檢查各焊點的電壓是否正常,最后接上芯片,接通電源,觀測工作電流是否過大。 軟件調(diào)試 軟件調(diào)試主要以程序調(diào)試為主,排查其錯誤。程序錯誤主要有語法錯誤、邏輯錯誤和功能錯誤。本系統(tǒng)的軟件調(diào)試主要用 KEIL 軟件進行程序調(diào)試與用編程器將程序燒錄進 AT89C2051,并將之插入電路板查看工作情況相結(jié)合來進行,并逐步改正各類錯誤。 當(dāng)程序仿真無錯誤,電路板能正常移位顯示字符后,通過按鍵依次播放三首樂曲,并最終循環(huán)上述功能,即可視為調(diào)試成功。 軟件調(diào)試中出現(xiàn)的錯誤及解決方法: 1)有時會出現(xiàn)程序一點錯誤也沒有,但就是不能正常運行的現(xiàn)象,最后發(fā)現(xiàn)是因為程序中有的指令書寫得不規(guī)范導(dǎo)致的,例如有的 RET 返回指令 一定要按正確格式書寫或在兩行指令間最好不要留空行。 2)程序中的跳轉(zhuǎn)指令的運用很重要,一般都用 LJMP。但是對于 AT89C2051 而言,由于其存儲器空間為 2k字節(jié), LJMP、 LCALL、 ACALL、 AJUMP、 SJMP、 JUM @A+DPTR 這些分支指令的目的地址必須在程序存儲器大小的物理范圍( 000H~ 7FFH)內(nèi),超過物理空間的閑置會出現(xiàn)不可預(yù)知的程序錯誤。我們就遇 到過跳轉(zhuǎn)指令用錯程序無法正常運行的現(xiàn)象。 3)與上面的原因相同, CJNE[?? ]、 DJNZ[?? ]、 JB、 JNB、 JC、 JNC、 JBC、JZ、 JNZ 等條件轉(zhuǎn)移指令的使用也不能超出物理空間的限制。 4)因為 AT89C2051 的內(nèi)部數(shù)據(jù)存儲器空間為 128 字節(jié),
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1