基于單片機(jī)的簡易電子琴設(shè)計課程設(shè)計_第1頁
基于單片機(jī)的簡易電子琴設(shè)計課程設(shè)計_第2頁
基于單片機(jī)的簡易電子琴設(shè)計課程設(shè)計_第3頁
基于單片機(jī)的簡易電子琴設(shè)計課程設(shè)計_第4頁
基于單片機(jī)的簡易電子琴設(shè)計課程設(shè)計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、湖南文理學(xué)院課程設(shè)計報告課程名稱: 單片機(jī)課程設(shè)計 專業(yè)班級: 自動化10102班17號 學(xué)生姓名: 肖 葵 指導(dǎo)教師: 王南蘭 完成時間: 2013年 6 月 13 日 報告成績: 評閱意見: 評閱教師 日期 2013.6.20 湖南文理學(xué)院制摘 要隨著社會的發(fā)展進(jìn)步,音樂逐漸成為人們生活中很重要的一部分,有人曾說喜歡音樂的人不會向惡。我們都會抽空欣賞世界名曲,作為對精神的洗禮。本論文設(shè)計一個基于單片機(jī)的簡易電子琴。人們對于電子琴如何實現(xiàn)其功能,如音色選擇、聲音強(qiáng)弱控制、節(jié)拍器、自動放音功能等等也很好奇。電子琴是現(xiàn)代電子科技與音樂結(jié)合的產(chǎn)物,是一種新型的鍵盤樂器。它在現(xiàn)代音樂扮演著重要的角色

2、,單片機(jī)具有強(qiáng)大的控制功能和靈活的編程實現(xiàn)特性,它已經(jīng)溶入現(xiàn)代人們的生活中,成為不可替代的一部分。本文的主要內(nèi)容是用at89s52單片機(jī)為核心控制元件,設(shè)計一個電子琴。以單片機(jī)作為主控核心,與鍵盤、揚聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有16個按鍵和揚聲器。本系統(tǒng)運行穩(wěn)定,其優(yōu)點是硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等,具有一定的實用和參考價值。關(guān)鍵詞:at89s51; 音色節(jié)拍器;電子琴abstractwith the development of our society, music has become an important part of life. the

3、res a saying goes that people who likes music cannot be an evil. during our life, we often enjoy all kinds of music in the world to baptize our spirits. this thesis has designed a simple microcontroller-based electronic key board. we are curious about the foundation of electronic keyboard, such as t

4、he choice of timber, the control of volume, the metrononme and automatic playback. the keyboard is a product of modern electronic technology combined with music, it is a new type of keyboard instruments. and it plays an important role in modern music. single chip has a powerful control functions and

5、 flexible programming characteristics. it has converged with modern peoples lives, become an irreplaceable part. the main content is at89s51 control of the core components, design of an electronic organ, single chip as a host to the core, with the keyboard, speakers and other core modules main contr

6、ol module, in the main control module has 16 keys and speakers. stability of the system, its advantages are simple hardware circuits, software functions, control system reliability, high cost performance and have certain practical and reference value.key words : single chipmcu keyboard speaker elect

7、ronic organ目 錄第一章 設(shè)計方案分析11.1設(shè)計背景11.2 設(shè)計任務(wù)12.1總體設(shè)計1第二章 電子琴總體電路圖設(shè)計32.1單片機(jī)最小系統(tǒng)32.1.1 at89s52簡介32.1.2 時鐘電路與復(fù)位電路72.2顯示部分設(shè)計72.2.1數(shù)碼顯示方式72.2.2八位數(shù)碼管的結(jié)構(gòu)82.3按鍵模塊設(shè)計82.3.1按鍵選取92.3.2鍵盤設(shè)計92.4 發(fā)音模塊設(shè)計10第三章 程序設(shè)計123.1 系統(tǒng)總體功能流程圖123.2 參數(shù)計算123.3判斷音階(高中低音)子程序143.4 播放子程序15第四章 proteus軟件仿真174.1編程環(huán)境proteus174.2用proteus isis進(jìn)

8、行硬件電路繪制174.3下載hex文件194.4軟件調(diào)試20心得體會22參考文獻(xiàn)23附錄一 原理圖24附錄二 源代碼25第一章 設(shè)計方案分析1.1設(shè)計背景隨著電子科學(xué)技術(shù)的飛速發(fā)展,電子技術(shù)正在逐漸改善著人們的學(xué)習(xí)、生活、工作,因此開發(fā)本系統(tǒng)希望能夠給人們帶來更多的生活樂趣?;诋?dāng)前市場上的玩具需求量增大,其中電子琴就是一個很好的應(yīng)用方面。單片機(jī)技術(shù)使我們可以利用軟硬件來實現(xiàn)電子琴的功能,從而可以實現(xiàn)電子琴的微型化,可以用作玩具琴、音樂轉(zhuǎn)盤以及音樂童車等等。并且可以進(jìn)行一定的功能擴(kuò)展。鑒于傳統(tǒng)電子琴可以用鍵盤上的“1”到“a”鍵演奏從低so到高do等11個音,從而也可以通過單片機(jī)實現(xiàn)對十個按鍵

9、的擴(kuò)展,實現(xiàn)七個音符鍵的高、中、低21個音調(diào)的顯示播放和任意音樂的自動播放。該設(shè)計將十個音鍵制作成獨立鍵盤,其中七個為音符鍵,三個為控制鍵,并用數(shù)碼管進(jìn)行顯示,使電子琴的功能更加完美。不但可以實現(xiàn)對按鍵的顯示,而且可以實現(xiàn)對音樂的自動存儲和播放,使該設(shè)計功能更加完善。1.2 設(shè)計任務(wù) 實現(xiàn)電子琴發(fā)聲控制系統(tǒng);要求電路實現(xiàn)如下功能:利用蜂鳴器作為發(fā)聲部件,兩個數(shù)碼管作為顯示部件,設(shè)置10個按鍵,實現(xiàn)高音、中音、低音的1、2、3、4、5、6、7的發(fā)音。并在存儲一首歌曲的內(nèi)容,可以實現(xiàn)自動播放。 用proteus實現(xiàn)的電子琴仿真設(shè)計,通過protel繪制原理圖。2.1總體設(shè)計實現(xiàn)本次設(shè)計的方案有多種

10、,下面比較說明一下最佳方案的選擇。方案一:采用單個的邏輯器件組合音樂是有由不同的音階組成的,而不同的音階又是由不同的頻率發(fā)出的,那么利用不同的頻率,就可以發(fā)出不同的音樂了。我們知道計數(shù)器8253可以產(chǎn)生任意頻率的方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率與計數(shù)器的頻率對應(yīng)起來就可通過計數(shù)器產(chǎn)生音樂了。根據(jù)本實驗要求,采用8279將鍵掃得到的鍵值通過查表得到相應(yīng)的8253的頻率值,將從8253得到相對應(yīng)的按鍵彈奏信號經(jīng)過lm386進(jìn)行放大,再用喇叭輸出,就實現(xiàn)了簡易電子琴的基本功能,也就完成了實驗的要求。方案二:采用at89s51單片機(jī)作為主控芯片,設(shè)置鍵盤、蜂鳴器等外圍器件,另外還用

11、到一些簡單器件如:兩位數(shù)碼管,和npn型三極管及電阻等。利用按鍵實現(xiàn)音符和音調(diào)的輸入;兩位的數(shù)碼管進(jìn)行被操作的按鍵顯示;用npn型三極管8550實現(xiàn)低音頻功率放大;最后用蜂鳴器發(fā)音。方案一采用單個的邏輯器件組合實現(xiàn)。這樣雖然比較直觀,邏輯器件分工鮮明,思路也比清晰,一目了然,但是由于元器件種類、個數(shù)繁多,而過于復(fù)雜的硬件電路也容易引起系統(tǒng)的精度不高、體積過大等不利因素。例如七個不同的音符是由七個不同的頻率來控制發(fā)出的,所用儀器之多顯而易見。方案二與方案三相比,主控芯片采用at89s51單片機(jī),它是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,具有高性能、高速度、體積小、價格低廉、穩(wěn)定可靠、應(yīng)用廣泛的特點。同時

12、具有強(qiáng)大的控制功能和靈活的編程實現(xiàn)特性,由于本設(shè)計主要用于人們娛樂方面,因此在設(shè)計上盡量使其安全以及簡單易操作。而第三種方案具有經(jīng)濟(jì)可行性、技術(shù)可行性、實物應(yīng)用性。綜上所述,本次課程設(shè)計采用第二種方案。第二章 電子琴總體電路圖設(shè)計電子琴總體電路分別由單片機(jī)最小系統(tǒng)模塊、顯示模塊、按鍵模塊、發(fā)音模塊四個模塊組成。如下圖所示。2.1單片機(jī)最小系統(tǒng) 圖2.1 單片機(jī)引腳圖2.1.1 at89s52簡介本系統(tǒng)采用的是美國atmel公司生產(chǎn)的at89c51單片機(jī),首先我們來熟悉一下at89s52單片機(jī)的外部引腳和內(nèi)部結(jié)構(gòu)。其引腳圖如圖2.1所示。1.單片機(jī)的引腳功能at89s52單片機(jī)有40個引腳。l

13、vcc:電源電壓+5vl gnd:接地l p0口:p0口是一組8位漏極開路型雙向i/o口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能驅(qū)動8個ttl邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線服用,在訪問期間激活內(nèi)部上拉電阻。在flash編程時,p0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時要求外接上拉電阻。l p1口:p1口是一個帶內(nèi)部上拉電阻的8位雙向i/o,p1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使

14、用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。 flash 編程和程序校驗期間,p1接收低8位地址。l p2口:p2口是一個帶內(nèi)部上拉電阻的8位雙向i/o,p2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movxdptr指令)時,p2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(movx ri指令)時,p2口線上的內(nèi)容(也即特殊功能寄存器(sfr)區(qū)

15、中p2寄存器的內(nèi)容),在整個訪問期間不改變。flash 編程和程序校驗期間,p2亦接收低高位地址和其他控制信號。l p3口:p3口是一組帶內(nèi)部上拉電阻的8位雙向i/o,p3的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對p3口寫入“1”時,它們被內(nèi)部的上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的p3口將用上拉電阻輸出電流。p3口除了作為一般的i/o口線外,更重要的用途是它的第二功能,見表2-1所示:p3口還接收一些用于flash閃速存儲器編程和程序校驗的控制信號。表2-1 p3口的第二功能圖端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2i

16、nt0(外中斷0)p3.3int1(外中斷1)p3.4t0(定時/計時器0外部輸入)p3.5t1(定時/計時器1外部輸入)p3.6wr(外部數(shù)據(jù)存儲器寫選通)p3.7rd(外部數(shù)據(jù)存儲器讀選通)l rst:復(fù)位輸入。當(dāng)振蕩器工作時,rst引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位。wdt溢出將使引腳輸出高電平,設(shè)置sfr auxr的disrt0(地址8eh)可打開或關(guān)閉該功能。disrt0位缺省為reset輸出高電平打開狀態(tài)。l ale/prog:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ale仍以時鐘振蕩頻率的1/6

17、輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ale脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過多特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置,可禁止ale操作。該位置后,只有一條movx和movc指令ale才會被激活。另外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ale無效。l psen:程序存儲允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng)at89c51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次psen有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,沒有兩次有效的

18、psen信號。l ea/vpp:外部訪問允許。欲使cpu僅訪問外部程序存儲器(地址為0000hffffh),ea端必須保持低電平(接地)。需要注意的是:如果加密位lb1被編程,復(fù)位時內(nèi)部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器中的指令。flash存儲器編程時,該引腳加上+12v的變成電壓vpp.l xtal1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。l xtal2:振蕩器反相放大器的輸出端。at89c51單片機(jī)內(nèi)部結(jié)構(gòu)2.at89c51單片機(jī)與mcs-51完全兼容 l 看門狗(wdt):wdt是一種需要軟件控制的復(fù)位方式。wdt 由13位計數(shù)器和特殊功能寄

19、存器中的看門狗定時器復(fù)位存儲器(wdtrst)構(gòu)成。wdt 在默認(rèn)情況下無法工作;為了激活wdt,用戶必須往wdtrst 寄存器(地址:0a6h)中依次寫入01eh 和0e1h。當(dāng)wdt激活后,晶振工作,wdt在每個機(jī)器周期都會增加。wdt計時周期依賴于外部時鐘頻率。除了復(fù)位(硬件復(fù)位或wdt溢出復(fù)位),沒有辦法停止wdt工作。當(dāng)wdt溢出,它將驅(qū)動rsr引腳輸出一個高電平。l 可編程串口(uart)在at89c51中,uart 的操作與at89c51 和at89c52 一樣。at89c51系列單片機(jī)的串行通信口可以工作于同步和異步通信方式。當(dāng)工作于異步方式時,它具有全雙工的操作功能,也就是說

20、,它可以同時進(jìn)行數(shù)據(jù)的發(fā)送和接收。串行口內(nèi)的接收器采用的是雙緩沖結(jié)構(gòu),能夠在接收到的第一個字節(jié)從接收寄存器讀走之前就開始接收第二個字節(jié)(當(dāng)然,如果第二個字節(jié)接收完畢,而第一個字節(jié)仍然沒有被讀走,那將會丟掉一個字節(jié))。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器sbuf進(jìn)行的,但在sbuf的內(nèi)部,接收寄存器和發(fā)送寄存器在物理結(jié)構(gòu)上是完全獨立的。如果將數(shù)據(jù)寫入sbuf,數(shù)據(jù)會被送入發(fā)送寄存器準(zhǔn)備發(fā)送。如果執(zhí)行sbuf指令,則讀出的數(shù)據(jù)一定來自接收緩存器。因此,cpu對sbuf的讀寫,實際上是分別訪問2個不同的寄存器。這2個寄存器的功能決不能混淆。l 振蕩電路:at89c51系列單

21、片機(jī)的內(nèi)部振蕩器,由一個單極反相器組成。xtal1反相器的輸入,xtal2為反相器的輸出。可以利用它內(nèi)部的振蕩器產(chǎn)生時鐘,只要xtal1和xtal2引腳上一個晶體及電容組成的并聯(lián)諧振電路,便構(gòu)成一個完整的振蕩信號發(fā)生器,此方式稱為內(nèi)部方式。另一種方式由外部時鐘源提供一個時鐘信號到xtal1端輸入,而xtal2端浮空。在組成一個單片機(jī)應(yīng)用系統(tǒng)時,多數(shù)采用這種方式,這種方式結(jié)構(gòu)緊湊,成本低廉,可靠性高。在電路中,對電容c1和c2的值要求不是很嚴(yán)格,如果使用高質(zhì)的晶振,則不管頻率為多少,c1、c2通常都選擇30pf。l 定時/計數(shù)器:at89c51單片機(jī)內(nèi)含有2個16位的定時器/計數(shù)器。當(dāng)用于定時器

22、方式時,定時器的輸入來自內(nèi)部時鐘發(fā)生電路,每過一個機(jī)器周期,定時器加1,而一個機(jī)器周期包含有12個振蕩周期,所以,定時器的技術(shù)頻率為晶振頻率的1/12,而計數(shù)頻率最高為晶振頻率的1/24。為了實現(xiàn)定時和計數(shù)功能,定時器中含有3種基本的寄存器:控制寄存器、方式寄存器和定時器/計數(shù)器??刂萍拇嫫魇且粋€8位的寄存器,用于控制定時器的工作狀態(tài),方式寄存器是一個8位的寄存器,用于確定定時器的工作方式,定時器/計數(shù)器是16位的計數(shù)器,分為高字節(jié)和低字節(jié)兩部分。l ram:高于7fh內(nèi)部數(shù)據(jù)存儲器的地址是8位的,也就是說其地址空間只有256字節(jié),但內(nèi)部ram的尋址方式實際上可提供384字節(jié)。的直接地址訪問同

23、一個存儲空間,高于7fh的間接地址訪問另一個存儲空間。這樣,雖然高128字節(jié)區(qū)分與專用寄器 ,即特殊功能寄存器區(qū)的地址是重合的,但實際上它們是分開的。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。l sfr:sfr是具有特殊功能的所有寄存器的集合,共含有22個不同寄存器,它們的地址分配在80hffh中。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的。如對這些單元進(jìn)行讀操作,得到的是一些隨機(jī)數(shù),而寫入則無效,所以在編程時不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元中,特殊功能寄存器主要有累加器acc、b寄存器、程序狀態(tài)字寄存器psw、堆棧指針sp、數(shù)據(jù)指針dptr、

24、i/o端口、串行口數(shù)據(jù)緩沖器sbuf、定時器寄存器、捕捉寄存器、控制寄存器。l 中斷系統(tǒng):at89c51單片機(jī)有6個中斷源,中斷系統(tǒng)主要由中斷允許寄存器ie、中斷優(yōu)先級寄存器ip、優(yōu)先級結(jié)構(gòu)和一些邏輯門組成。ie寄存器用于允許或禁止中斷;ip寄存器用于確定中斷源的優(yōu)先級別;優(yōu)先級結(jié)構(gòu)用于執(zhí)行中斷源的優(yōu)先排序;有關(guān)邏輯門用于輸入中斷請求信號。在整個中斷響應(yīng)過程中cpu所執(zhí)行的操作步驟如下:(1)完成當(dāng)前指令的操作(2)將pc內(nèi)容壓入堆棧(3)保存當(dāng)前的中斷狀態(tài)(4)阻止同級的中斷請求(5)將中斷程序入口地址送pc寄存器(6)執(zhí)行中斷服務(wù)程序(7)返回此外,at89s52設(shè)計和配置了振蕩頻率可為0

25、hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有pdip、tqfp和plcc等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。2.1.2 時鐘電路與復(fù)位電路單片機(jī)內(nèi)部具有一個高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳xtall和xtal2跨接石英晶體和兩個補(bǔ)償電容構(gòu)成自激振蕩器,結(jié)構(gòu)如下圖 中cy1、c2、c3。可以根據(jù)情況選擇6mhz、12mhz或24mhz等頻率的石英晶體,補(bǔ)償電容通常選擇30pf左右的瓷片電容。單片機(jī)小系統(tǒng)常采用上電自動復(fù)位和手

26、動按鍵復(fù)位兩種方式實現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動實現(xiàn)復(fù)位操作。手動復(fù)位要求在電源接通的條件下,在單片機(jī)運行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位。其結(jié)構(gòu)如下圖。上電自動復(fù)位通過電容c1充電來實現(xiàn)。手動按鍵復(fù)位是通過按鍵將電阻r19與vcc接通來實現(xiàn)。圖2.3 復(fù)位電路2.2顯示部分設(shè)計2.2.1數(shù)碼顯示方式數(shù)碼顯示有靜態(tài)顯示方式與動態(tài)顯示方式兩種。工作在靜態(tài)顯示方式時,數(shù)碼管的位線與電源一直相連,數(shù)碼管中的二極管均處于通電狀態(tài),即在靜態(tài)工作方式下,顯示電路中數(shù)碼管的位選線是同時選通,而數(shù)碼管的段選線是獨立輸入。工作在動態(tài)顯示方式時,數(shù)碼管的位線在掃描控制電路的控制下按設(shè)定順序?qū)ǎ?/p>

27、即電路中的數(shù)碼管是逐個接通電源,數(shù)碼管的段選線以并聯(lián)方式與譯碼電路聯(lián)接,即在動態(tài)工作方式下,數(shù)碼管不是同時導(dǎo)通顯示而是按照設(shè)定順序分時導(dǎo)通顯示。七段led顯示器內(nèi)部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的極管的接線形式,可分成共陰極型和共陽極型。 led數(shù)碼管的ga七個發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,下面給出共陰極的字形碼表(如表3-1所示)表3-1 數(shù)碼管真值表“0”3fh“8”7fh“1”06h“9”6fh“2”5bh“a”77h“3”4fh“b”7ch“4”66h“c”39h“5”6dh“d”5e

28、h“6”7dh“e”79h“7”07h“f”71h2.2.2八位數(shù)碼管的結(jié)構(gòu)系統(tǒng)采用兩個字符顯示的數(shù)碼管進(jìn)行動態(tài)顯示。如下圖所示利用單片機(jī)的p0端口的p0.0p0.7連接到一個七段數(shù)碼管的ag的筆段上以及小數(shù)點dp。其中和2為片選端口。為了顯示字符,要為 led 顯示器段碼,除了組成8字形的字符的 7段,另加上1個小數(shù)點位,共計8段, 因此提供給 led 顯示器的顯示段碼為1個字節(jié)2.3按鍵模塊設(shè)計2.3.1按鍵選取常用的按鍵有三種:機(jī)械觸點式按鍵、導(dǎo)電橡膠式和柔性按鍵(又稱觸摸式鍵盤)。機(jī)械觸點式按鍵是利用機(jī)械彈性使鍵復(fù)位,手感明顯,連線清晰,工藝簡單,適合單件制造。但是觸點處易侵入灰塵而導(dǎo)

29、致接觸不良,體積相對較大。導(dǎo)電橡膠按鍵是利用橡膠的彈性來復(fù)位,通過壓制的方法把面板上所有的按鍵制成一塊,體積小,裝配方便,適合批量生產(chǎn)。但是時間長了,橡膠老化而使彈力下降,同時易侵入灰塵。柔性按鍵是近年來迅速發(fā)展的一種新型按鍵,可以分為凸球型和平面型兩種。柔性按鍵最大特點是防塵、防潮、耐蝕,外形美觀,裝嵌方便。而且外形和面板的布局、色彩、鍵距可按照整機(jī)的要求來設(shè)計。但是由于客觀條件與經(jīng)濟(jì)能力有限,本系統(tǒng)采用機(jī)械觸點式按鍵。2.3.2鍵盤設(shè)計鍵盤在單片機(jī)應(yīng)用系統(tǒng)中是一個關(guān)鍵的部件,它能實現(xiàn)向計算機(jī)輸入數(shù)據(jù),傳送命令等功能,是人工干預(yù)計算機(jī)的主要手段。鍵盤可以分為2類:獨立連接式鍵盤和矩陣式鍵盤。

30、(1)矩陣式鍵盤單片機(jī)系統(tǒng)中,若按鍵較多時,通常采用矩陣式(也稱行列式)鍵盤。矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上。顯然,在按鍵數(shù)量較多時,矩陣式鍵盤較之獨立式按鍵鍵盤要節(jié)省很多i/o口。矩陣式鍵盤中,行、列線分別連接到按鍵開關(guān)的兩端,行線通過上拉電阻接到+5v上當(dāng)無鍵按下時,行線處于高電平狀態(tài);當(dāng)有鍵按下時,行、列線將導(dǎo)通,此時,行線電平將由與此行線相連的列線電平?jīng)Q定。這是識別按鍵是否按下的關(guān)鍵。(2)獨立連接式鍵盤獨立式按鍵是直接用i/o口線構(gòu)成的單個按鍵電路,其特點是每個按鍵單獨占用一根i/o口線,每個按鍵的工作不會影響其它i/o口線的狀態(tài)。獨立式按鍵電路配置靈活,軟件

31、結(jié)構(gòu)簡單,但每個按鍵必須占用一根i/o口線,然而,在按鍵較多時,i/o口線浪費較大,不宜采用。獨立式按鍵軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根i/o口線的輸入狀態(tài),如某一根i/o口線輸入為低電平,則可確認(rèn)該i/o口線所對應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。由于本程序較為簡單,為了使用方便及節(jié)省資源,選擇獨立式鍵盤。下圖為獨立式鍵盤電路圖:鍵盤編程中主要考慮去抖動的問題。當(dāng)測試表明有鍵被按下之后,緊接著就進(jìn)行去抖動處理。因為鍵是機(jī)械開關(guān)結(jié)構(gòu),由于機(jī)械觸點的彈性及電壓突跳等原因,在觸點閉合或斷開的瞬間會出現(xiàn)電壓抖動。為保證鍵識別的準(zhǔn)確,在電壓信號抖動的情況下不能進(jìn)行行狀態(tài)輸入。為此需進(jìn)行

32、去抖動處理。去抖動有硬件和軟件兩種方法。硬件方法就是加去抖動電路,從根本上避免抖動的產(chǎn)生。軟件消抖,在第一次檢測到有鍵按下時,執(zhí)行一段延時程序之后,再檢測此按鍵,如果第二次檢測結(jié)果仍為按下狀態(tài),cpu便確認(rèn)此按鍵己按下,消除了抖動。2.4 發(fā)音模塊設(shè)計如下圖所示,發(fā)音電路是由蜂鳴器、三極管、上拉電阻構(gòu)成。由三極管來驅(qū)動揚聲器發(fā)音的,同時加上拉電阻增強(qiáng)驅(qū)動電流,提高驅(qū)動能力。一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器t0來產(chǎn)生這樣方波頻率信號,

33、因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系正確即可。第三章 程序設(shè)計3.1 系統(tǒng)總體功能流程圖 (1)鍵盤掃描程序:檢測是否有按鍵按下,有按鍵按下則記錄按下鍵的鍵值,并跳轉(zhuǎn)至功能轉(zhuǎn)移程序;無按鍵按下,則返回鍵盤掃描程序繼續(xù)檢測。(2)功能轉(zhuǎn)移程序:對檢測到的按鍵值進(jìn)行判斷,是琴鍵則跳轉(zhuǎn)至琴鍵處理程序,是功能鍵則跳轉(zhuǎn)至相應(yīng)的功能程序,我們設(shè)計的功能程序有兩種,即音色調(diào)節(jié)功能和自動播放樂曲的功能。(3)琴鍵處理程序:根據(jù)檢測到的按鍵值,查詢音調(diào)表,給計時器賦值,使發(fā)出相應(yīng)頻率的聲音。(4)自動播放歌曲程序:檢測到按鍵按下的是自動播放歌曲功能鍵后執(zhí)行該程序,電子琴會自動播放事先已經(jīng)存放的歌曲,歌曲播

34、放完畢之后自動返回至鍵盤掃描程序,繼續(xù)等待是否有按鍵按下3.2 參數(shù)計算 利用單片機(jī)的內(nèi)部定時器使其工作計數(shù)器模式(mode1)下,改變計數(shù)值th0及tl0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階。例如,頻率為523hz,其周期t1/5231912s,因此只要令計數(shù)器計時956s/1s956,每計數(shù)956次時將i/o反相,就可得到中音do(523hz)。計數(shù)脈沖值與頻率的關(guān)系式(如式2-1所示)是:nfi2fr 2-1式中,n是計數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12mhz時,其頻率為1mhz);fr是想要產(chǎn)生的頻率。其計數(shù)初值t的求法如下:t65536n65536fi2fr例如:設(shè)k65536,fi

35、1mhz,求低音do(261hz)、中音do(523hz)、高音do(1046hz)的計數(shù)值。t65536n65536fi2fr6553610000002fr65536500000/fr低音do的t65536500000/26263627中音do的t65536500000/52364580 高音do的t65536500000/104665059表4-2 音符頻率表音符頻率(hz)簡譜碼(t值)音符頻率(hz)簡譜碼(t值)低1do26263628# 4 fa#74064860#1do#27763731中 5 so78464898低2re29463835# 5 so#83164934#2 re#

36、31163928中 6 la88064968低 3 m33064021# 693264994低 4 fa34964103中 7 si98865030# 4 fa#37064185高 1 do104665058低 5 so39264260# 1 do#110965085# 5 so#41564331高 2 re117565110低 6 la44064400# 2 re#124565134# 646664463高 3 m131865157低 7 si49464524高 4 fa139765178中 1 do52364580# 4 fa#148065198# 1 do#55464633高 5 so1

37、56865217中 2 re58764684# 5 so#166165235# 2 re#62264732高 6 la176065252中 3 m65964777# 6186565268中 4 fa69864820高 7 si196765283單片機(jī)12mhz晶振,高中低音符與計數(shù)t0相關(guān)的計數(shù)值如表4-2所示對于不同的曲調(diào)我們也可以用單片機(jī)的另外一個定時/計數(shù)器來完成。琴鍵處理程序,根據(jù)檢測到得按鍵值,查詢音律表,給計時器賦值,發(fā)出相應(yīng)頻率的聲音。在這個程序中用到了兩個定時/計數(shù)器來完成的。其中t0用來產(chǎn)生音符頻率,t1用來產(chǎn)生音拍。采用查表程序進(jìn)行查表時,可以為這個音符建立一個表格,有助于

38、單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù):低音019之間,中音在2039之間,高音在4059之間。用單片機(jī)播放音樂,或者彈奏電子琴,實際上是按照特定的頻率,輸出一連串的方波。為了輸出合適的方波,首先應(yīng)該知道音符與頻率的關(guān)系。3.3判斷音階(高中低音)子程序 在軟件設(shè)計中采用yinjie代表音階,如下表所示音階yinjie值高2中1低0初始化狀態(tài)為中音(yinjie=1),電路中設(shè)計高、低兩個音階鍵。上電后,若無按鍵按下,則為中音模式。若音階鍵被按下,則如下流程圖所示,初始化后進(jìn)行按鍵掃描,在高音鍵按下,若初始yinjie不為2,則另yinjie=2,進(jìn)入高音工作模式,若初始yinjie為2,則對y

39、injie進(jìn)行初始化,即另yinjie=1,重新進(jìn)入進(jìn)入中音工作模式,這樣即實現(xiàn)了高音鍵切換高、中音方式的轉(zhuǎn)換。同理,用低音鍵實現(xiàn)中、低音的切換。3.4 播放子程序本設(shè)計共兩種播放模式,包括自動播放存儲音樂和按鍵發(fā)音。上電后,首先開中斷并設(shè)定定時器0為工作方式1,當(dāng)自動播放鍵按下時,進(jìn)入中斷,根據(jù)樂譜在定義的音頻數(shù)組中查找相應(yīng)音律,然后給定時器賦初值,即開始播放音樂。當(dāng)do、re、mi、fa、so、la、si七種音符鍵按下時,根據(jù)音階值(如3.3.1中高中低對應(yīng))和音符值在定義的音頻數(shù)組中查找相應(yīng)音律,然后給定時器賦初值,即按鍵發(fā)音。第四章 proteus軟件仿真4.1編程環(huán)境proteusp

40、roteus軟件是由英國labcenter electronics 公司開發(fā)的eda工具軟件,由isis和ares兩個軟件構(gòu)成,其中isis是一款便捷的電子系統(tǒng)仿真平臺軟件,ares是一款高級的布線編輯軟件,它集成了高級原理布線圖、混合模式spice電路仿真、pcb設(shè)計以及自動布線來實現(xiàn)一個完整的電子設(shè)計。4.2用proteus isis進(jìn)行硬件電路繪制通過proteus isis軟件的vsm(虛擬仿真技術(shù)),用戶可以對模擬電路、數(shù)字電路、模數(shù)混合電路,以及基于微控制器的系統(tǒng)連同所有外圍接口電子元器件一起仿真。用proteus isis設(shè)計硬件電路的過程 選擇設(shè)計圖紙根據(jù)設(shè)計所使用到元器件的多

41、少,選擇合適大小的設(shè)計圖紙,操作是單擊菜單欄上的systemset sheet size ,然后彈出如圖5-1所示的對話框,從中選擇合適大小的圖紙,也可以選擇user進(jìn)行圖紙的自定義設(shè)置。在設(shè)計過程中也可以通過此方法調(diào)整圖紙的大小。圖 5-1 選取仿真所需的元器件 選取元器件的方式是,單擊如圖5-2所示的按鈕“p”。會彈出如圖5-3所示的窗口。從此窗口的左上角的“keywords”中輸入電子萬年歷設(shè)計用到的器件,如輸入“at89c51”,在中間會列出帶有輸入關(guān)鍵字的元器件,選擇合適的元器件并雙擊它,則已經(jīng)選擇好了該元器件。然后再在“keywords”中輸入其他所需的元器件,用同樣的方法進(jìn)行操作

42、。 把元器件放到圖紙的合適位置,進(jìn)行布線。單擊如圖5-4所示的元器件at89c51,再在右邊圖紙上單擊,就把元器件放入到了圖紙上。再用同樣的方法把ds1302放入到圖紙的合適位置。如果元器件放置錯誤,這可通過兩次右擊刪除所放置的元器件,如果位置放得不理想,可以先右擊該器件,然后按住左鍵進(jìn)行移動。在布線之前,如果覺得元器件的引腳的方向不好布線,則可以通過單擊這四個按鈕進(jìn)行調(diào)整,這四按鈕的意思分別是:順時針旋轉(zhuǎn)90,逆時針旋轉(zhuǎn)90,沿y軸對稱,沿x軸對稱。通過這樣的調(diào)整,可以使整個布局合理一些。接著進(jìn)行布線,由于proteus isis有自動布線的功能。isis還提供了網(wǎng)絡(luò)布線,即不使用線連接也可

43、以把兩個引腳虛擬的連接了起來。具體操作是:單擊要連線的一個引腳,連出適當(dāng)?shù)木嚯x后雙擊,另一個引腳也同樣操作,在單擊如圖6-5所示的“l(fā)bl”按鈕,再在圖中p0.1引腳的a處單擊,在彈出的窗口中的“string”中填入名稱,如“a” ,對out7引腳進(jìn)行同樣的操作,在“string”中也填入名稱“a”,這樣就完成了p3.4引腳與res引腳的網(wǎng)絡(luò)連接,這個好處避免兩個距離比較遠(yuǎn)的器件進(jìn)行真實線的連接,使布線美觀。 編輯窗口連接端子要讓最后的設(shè)計成功仿真時,必須放置并連接端子。選擇,從中可以選擇電路原理中的兩個通用的端子,一個是接地,一個是電源。如圖5-6所示。在proteus isis中的最終設(shè)計

44、圖如圖5-7所示最后分別對各元器件的屬性值進(jìn)行設(shè)置,單擊按鈕,進(jìn)行電氣檢測,查看接線是否合理,說明硬件電路已經(jīng)順利的完成。4.3下載hex文件 添加keil中編寫的代碼文件單擊工具欄中的sourceadd/remove source files.,彈出一個對話框,分別單擊“new” ,然后選擇在keil中編寫的數(shù)字電壓表.asm匯編語言程序,單擊“ok” ,完成添加代碼文件。 編譯源程序,生成.hex目標(biāo)代碼文件單擊sourcebuild all。如果編譯結(jié)果沒有錯誤,會出現(xiàn)如圖5-8所示的結(jié)果。圖5-8 加載.hex目標(biāo)代碼文件通過如圖5-9所示的對話框,選擇剛才編譯生成的.hex文件。設(shè)置

45、使單片機(jī)的運行頻率為6mhz 。圖5-9 單擊按鈕,進(jìn)行對電子萬年歷的仿真測試,運行結(jié)果如圖5-10所示。 proteus的調(diào)試功能由于使用的是匯編語言編寫的程序,如果在測量的時候測量值顯示錯誤,說明程序中存在問題,這個問題只用在仿真測量的時候才能被發(fā)現(xiàn),這時可以使用proteus對程序進(jìn)行調(diào)試。單擊按鈕,再單擊菜單欄中的debug,可以在最下面選擇打開內(nèi)存觀察窗口,寄存器值觀察窗口,匯編語言源代碼窗口等等。在匯編語言源代碼窗口中,也可以在所需要設(shè)置斷點的語句前雙擊設(shè)置斷點,當(dāng)設(shè)置斷點的時候,程序運行到所設(shè)斷點處停止,從而可以在內(nèi)存、寄存器等的值的變化,從而找出程序出錯的地方。4.4軟件調(diào)試調(diào)

46、試主要方法和技巧:通常一個調(diào)試程序應(yīng)該具備至少四種性能:跟蹤、斷點、查看變量、更改數(shù)值。整個程序是一個主程序調(diào)用各個子程序?qū)崿F(xiàn)功能的過程,要使主程序和整個程序都能平穩(wěn)運行,各個模塊的子程序的正確與平穩(wěn)運行必不可少,所以在軟件調(diào)試的最初階段就是把各個子程序模塊進(jìn)行分別調(diào)試。如下圖所示。按下do按鍵時,蜂鳴器開始工作數(shù)碼管顯示a1。根據(jù)仿真結(jié)果可知,本次課程設(shè)計能夠準(zhǔn)確并徹底的完成設(shè)計要求。左側(cè)數(shù)碼管可以顯示a、b、c三種結(jié)果,分別代表低音、中音和高音。右側(cè)數(shù)碼管可以顯示1、2、3、4、5、6、7七個數(shù)字,分別代表do、re、mi、fa、so、la、si七種音符。下面以4.3為例具體進(jìn)行分析:當(dāng)系

47、統(tǒng)上電后,若按下低音鍵(如圖p3.6),,則選定工作方式為低音模式,圖中a即代表低音。p0口連接數(shù)碼管段選端,右側(cè)數(shù)碼管顯示的1即代表do。兩位數(shù)碼代表低音do。心得體會總體來說,此次單片機(jī)課程設(shè)計使我們收獲良多,雖然課程設(shè)計的過程中遇到了很多困難與問題,但我們最終還是完成了設(shè)計的任務(wù)及要求。具體來說可以分為以下幾點:第一,不夠細(xì)心,不夠嚴(yán)謹(jǐn);第二,因?qū)φn本理論的掌握度不夠?qū)е戮幊坛霈F(xiàn)錯誤;第三,硬件方面,剛開始有的程序模塊不能實現(xiàn)預(yù)期的效果,對于有的硬件,在實物制作過程中焊了比較多的排線,同時對于整體各元器件的布局都有很高的要求。不過在向同學(xué)請教,各方面都有了不同程度的改善;第四,在做人方面

48、,我認(rèn)識到,無論做什么事情,只要你足夠堅強(qiáng),有足夠的毅力和決心,有足夠的挑戰(zhàn)困難的勇氣,就沒有什么辦不到的。這次課程設(shè)計中,經(jīng)過我們的努力,在仿真軟件和實物上都實現(xiàn)了高、中、低21個音符的發(fā)聲和音樂的自動播放,使我們有了一定的成就感,也使我們進(jìn)一步熟悉和掌握了單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,了解了單片機(jī)應(yīng)用系統(tǒng)設(shè)計的基本方法和步驟, 掌握了單片機(jī)仿真軟件proteus的使用方法和鍵盤、顯示器在的單片機(jī)控制系統(tǒng)中的應(yīng)用,同時也掌握了撰寫課程設(shè)計報告的方法。總之,通過這次課程設(shè)計,我們都清楚明白了自己的能力有多深,想提高還得歸于多鍛煉,多動手,多向別人學(xué)習(xí)。參考文獻(xiàn)1 陳明熒8051單片機(jī)課程設(shè)計實訓(xùn)

49、教材m北京:清華大學(xué)出版社,2003年9月2 徐新艷單片機(jī)原理、應(yīng)用與實踐m北京:高等教育出版社,2005年3月3 吳金戌,沈慶陽,郭庭吉8051單片機(jī)實踐與應(yīng)用m第一版北京:清華大學(xué)出版社,2002年4 吳金戌,沈慶陽,郭庭吉,8051單片機(jī)實踐與應(yīng)用m清華大學(xué)出版社,20015 馮博琴,微型計算機(jī)原理與接口技術(shù)m清華大學(xué)出版社,20046 張毅剛,mcs-51單片機(jī)應(yīng)用設(shè)計m哈爾濱工業(yè)大學(xué)出版社,20047 張淑清,姜萬錄等,單片微型計算機(jī)接口技術(shù)及應(yīng)用m國防工業(yè)出版社,20038 吳金戌,沈慶陽,郭庭吉,8051單片機(jī)實踐與應(yīng)用m清華大學(xué)出版社,20019 馮博琴,微型計算機(jī)原理與接口技

50、術(shù)m清華大學(xué)出版社,2004附錄一 原理圖附錄二 源代碼#include #define keyport p1#define uchar unsigned char#define uint unsigned intuchar high,low; /定時器預(yù)裝值的高8位和低8位sbit speak=p30;sbit gao=p35;sbit di=p36;sbit zdbf=p37;uchar yinjie=1;uchar time;uchar n=0;uchar bo=0;uchar code fre2= 0x8c,0xf8,0x5b,0xf9,0x15,0xfa,0x67,0xfa,0x90,0xfb,0xa

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論