版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)實(shí)訓(xùn)報(bào)告</b></p><p> 設(shè)計(jì)題目:簡(jiǎn)易電子琴設(shè)計(jì)與制作</p><p><b> 目 錄</b></p><p> 1.實(shí)訓(xùn)課題…………………………………3</p><p> 2.設(shè)計(jì)目的…………………………………3</p>&
2、lt;p> 3.設(shè)計(jì)原理…………………………………3</p><p> 4.硬件電路…………………………………4</p><p> 5.軟件流程…………………………………8</p><p> 6.Proteus 仿真……………………………14</p><p> 7.C 語(yǔ)言源程序…………………………18</p>
3、<p> 8.元件清單…………………………………25</p><p> 9.心得體會(huì)…………………………………26</p><p><b> 一.設(shè)計(jì)的課題:</b></p><p> 簡(jiǎn)易電子琴的設(shè)計(jì)與制作</p><p> 二.課程設(shè)計(jì)的目的:</p><p> 培養(yǎng)和鍛
4、煉在校學(xué)生綜合應(yīng)用所學(xué)理論知識(shí)解決實(shí)際問(wèn)題能力。為了鞏固和運(yùn)用所學(xué)課程,理論聯(lián)系實(shí)際,提高分析、解決實(shí)際問(wèn)題以及團(tuán)隊(duì)的合作能力,旨培養(yǎng)在培養(yǎng)大學(xué)生理論聯(lián)系實(shí)際、敢于動(dòng)手、善于動(dòng)手和獨(dú)立自主解決設(shè)計(jì)實(shí)踐中遇到的各種問(wèn)題能力的一種較好方法。</p><p> 電子琴能夠彈奏出美妙的音符,對(duì)我們充滿了吸引同時(shí)也讓我們充滿了好奇,通過(guò)此次的課程設(shè)計(jì)讓我們親手來(lái)揭開電子琴神秘的面紗。讓我們知道我們也是有能力來(lái)制作出一個(gè)簡(jiǎn)
5、易的電子琴的。</p><p><b> 三、課程設(shè)計(jì)原理:</b></p><p> 電子琴是由4*4個(gè)組成16個(gè)按鈕矩陣,設(shè)計(jì)成16個(gè)音。然后利用三極管放大的原理使聲音變大,可通過(guò)16個(gè)按鈕組成16種不同的音節(jié)。本文的主要內(nèi)容是用AT89S51單片機(jī)為核心控制元件,設(shè)計(jì)一個(gè)電子琴。以單片機(jī)作為主控核心,與鍵盤、揚(yáng)聲器等模塊組成核心主控制模塊,在主控模塊上設(shè)有1
6、6個(gè)按鍵和揚(yáng)聲器。</p><p> 聲音的產(chǎn)生方法:一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。</p><p><b> 四、硬件電路&l
7、t;/b></p><p> ?。ㄒ唬?、系統(tǒng)板硬件連線 </p><p> 系統(tǒng)板硬件連線如圖1-1所示,發(fā)生模塊,鍵盤模塊,及電源模塊連接如下:1.把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0端口用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的SPK IN端口上;2.把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“4X4行列式鍵盤”區(qū)域中的C1-C4 R1-R4端口上;3.把電源電
8、路與揚(yáng)聲器連接,直接對(duì)揚(yáng)聲器供電。</p><p> ?。ǘ⒅饕酒?jiǎn)介1、AT89S51簡(jiǎn)介</p><p> AT89S51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8
9、0C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。 AT89S51具有如下特點(diǎn):40個(gè)引腳(如圖1-2所示),4k Bytes Flash片內(nèi)程序存儲(chǔ)器,128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編
10、程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。 </p><p> 此外,AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以
11、適應(yīng)不同產(chǎn)品的需求。</p><p><b> 主要功能特性</b></p><p> ·兼容MCS-51指令系統(tǒng) </p><p> · 32個(gè)雙向I/O口</p><p> · 2個(gè)16位可編程定時(shí)/計(jì)數(shù)
12、 器 </p><p> · 全雙工UART串行中斷口線</p><p> · 2個(gè)外部中斷源 </p><p> · 中斷喚醒省電模式</p><p> 圖1-2 引腳圖 </p>&l
13、t;p> · 看門狗(WDT)電路 </p><p> · 靈活的ISP字節(jié)和分頁(yè)編程</p><p> · 4k可反復(fù)擦寫ISP Flash ROM</p><p> · 4.5-5.5V工作電壓 </p><p> · 時(shí)鐘頻率0-33MHz
14、60;</p><p> · 128*8bit內(nèi)部RAM</p><p> · 低功耗空閑和省電模式 </p><p><b> · 3級(jí)加密位</b></p><p> · 軟件設(shè)置空閑和省電功能 </p><p>
15、 · 雙數(shù)據(jù)寄存器指針</p><p> 2、7805簡(jiǎn)介: </p><p> 電子產(chǎn)品中,常見的三端穩(wěn)壓集成電路有正電壓輸出的78 ×× 系列和負(fù)電壓輸出的79××系列。顧名思義,三端IC是指這種穩(wěn)壓用的集成電路,只有三條引腳輸出,分別是輸入端、接地端和輸出端。它的樣子象是普通的三極管,TO- 220 的標(biāo)準(zhǔn)封裝,也有9013
16、樣子的TO-92封裝。 </p><p> 用78/79系列三端穩(wěn)壓IC來(lái)組成穩(wěn)壓電源所需的外圍元件極少,電路內(nèi)部還有過(guò)流、過(guò)熱及調(diào)整管的保護(hù)電路,使用起來(lái)可靠、方便,而且價(jià)格便宜。該系列集成穩(wěn)壓IC型號(hào)中的78或79后面的數(shù)字代表該三端集成穩(wěn)壓電路的輸出電壓,如7806表示輸出電壓為正6V,7909表示輸出電壓為負(fù)9V。 </p><p> 因?yàn)槿斯潭煞€(wěn)壓電路的使用方便,電子制
17、作中經(jīng)常采用。</p><p><b> 五、軟件流程</b></p><p> (一)、4X4行列式鍵盤識(shí)別及顯示</p><p> 組成鍵盤的按鍵有機(jī)械式、電容式、導(dǎo)電橡膠式、薄膜式多種,但不管什么形式,其作用都是一個(gè)使電路接通與斷開的開關(guān)。目前微機(jī)系統(tǒng)中使用的鍵盤按其功能不同,通??煞譃榫幋a鍵盤和非編碼鍵盤兩種基本類型。 編
18、碼鍵盤:鍵盤本身帶有實(shí)現(xiàn)接口主要功能所需的硬件電路。不僅能自動(dòng)檢測(cè)被按下的鍵,并完成去抖動(dòng)、防串鍵等功能,而且能提供與被按鍵功能對(duì)應(yīng)的鍵碼(如ASCII碼)送往CPU。所以,編碼鍵盤接口簡(jiǎn)單、使用方便。但由于硬件電路較復(fù)雜,因而價(jià)格較貴。 非編碼鍵盤:鍵盤只簡(jiǎn)單地提供按鍵開關(guān)的行列矩陣。有關(guān)按鍵的識(shí)別、鍵碼的確定與輸入、去抖動(dòng)等功能均由軟件完成。目前微機(jī)系統(tǒng)中,一般為了降低成本大多數(shù)采用非編碼鍵盤。 鍵盤接口必須具有去抖
19、動(dòng)、防串鍵、按鍵識(shí)別和鍵碼產(chǎn)生4個(gè)基本功能: (1)去抖動(dòng):每個(gè)按鍵在按下或松開時(shí),都會(huì)產(chǎn)生短時(shí)間的抖動(dòng)。抖動(dòng)的持續(xù)時(shí)間與鍵的質(zhì)量相關(guān),一般為5—20mm。所謂抖動(dòng)是指在識(shí)別被按鍵是必須避開抖動(dòng)狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識(shí)別正確無(wú)誤。去抖問(wèn)</p><p> 題可通過(guò)軟件延時(shí)或硬件電路解決。 (2)防串鍵:防串鍵是為了解決多個(gè)鍵同時(shí)按下或者前一按鍵沒有釋放又有新的按鍵按下時(shí)產(chǎn)生
20、的問(wèn)題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個(gè)或兩個(gè)以上的按鍵按下時(shí),只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測(cè)到有多個(gè)鍵被按下時(shí),能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。 (3)被按鍵識(shí)別:如何識(shí)別被按鍵是接口解決的主要問(wèn)題,一般可通過(guò)軟硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤逐行掃描,通過(guò)檢測(cè)到的列輸出狀態(tài)來(lái)確定閉合鍵,為此,需要設(shè)置
21、入口、輸出口一個(gè),該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法的基本思想是通過(guò)行列顛倒兩次掃描來(lái)識(shí)別閉合鍵,為此需要提供兩個(gè)可編程的雙向輸入/輸出端口。 (4)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個(gè)鍵盤編碼表,通過(guò)查表獲得被按鍵的鍵碼。</p><p> 用AT89S51的并行口P1接4×4矩陣鍵盤,以P1.0-P1.3作輸入線,以P1.4-P1.7作輸出線。&
22、lt;/p><p> ?。ǘ?、系統(tǒng)板上硬件連線設(shè)計(jì)</p><p> 1、把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0-P1.7端口用8芯排線連接到“4X4行列式鍵盤”區(qū)域中的C1-C4 R1-R4端口上;2、把揚(yáng)聲器的基極輸出接單片機(jī)的P2.0端口;</p><p> 3、在單片機(jī)31腳和9腳接復(fù)位電路;</p><p> 4、在單片機(jī)19腳和1
23、8腳接12MHZ的晶體振蕩電路。</p><p> ?。ㄈ?、程序設(shè)計(jì)內(nèi)容</p><p> 1、4×4矩陣鍵盤識(shí)別處理,每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端(列線)通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。</p>
24、<p> 2、鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。電路圖如下</p><p> ?。ㄋ模⒁魳?lè)產(chǎn)生的方法</p><p> 一首音樂(lè)是許多不同的音階組成的,
25、而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這</p><p> 樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系正確即可。</p><p> 若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時(shí)間。利用定時(shí)器計(jì)時(shí)
26、半周期時(shí)間,每當(dāng)計(jì)時(shí)終止后就將P1.0反相,然后重復(fù)計(jì)時(shí)再反相。就可在P1.0引腳上得到此頻率的脈沖。</p><p> 利用AT89S51的內(nèi)部定時(shí)器使其工作計(jì)數(shù)器模式(MODE1)下,改變計(jì)數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T=1/523=1912μs,因此只要令計(jì)數(shù)器計(jì)時(shí)956μs/1μs=956,每計(jì)數(shù)956次時(shí)將I/O反相,就可得到中音DO(523Hz)
27、。</p><p> 計(jì)數(shù)脈沖值與頻率的關(guān)系式(如式2-1所示)是:</p><p> N=fi÷2÷fr
28、; 2-1</p><p> 式中,N是計(jì)數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時(shí),其頻率為1MHz);fr是想要產(chǎn)生的頻率。</p><p> 其計(jì)數(shù)初值T的求法如下:</p><p> T=65536-N=65536-fi÷2÷fr</p><p> T=65536-N=65536
29、-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr</p><p> 低音DO的T=65536-500000/262=63627</p><p> 中音DO的T=65536-500000/523=64580</p><p> 高音DO的T=65536-500000/1046=65059
30、</p><p> 單片機(jī)12MHZ晶振,高中低音符與計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如表2-2所示</p><p> 表2-2 音符頻率表</p><p> Table 2-2 notes the frequency table</p><p> 我們要為這個(gè)音符建立一個(gè)表格,單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù)
31、60; 低音0-19之間,中音在20-39之間,高音在40-59之間TABLE: DW 0, 63628, 63835, 64021, 64103, 64260, 64400, 64524, 0, 0</p><p> DW 0, 63731, 63928, 0, 64185, 64331, 64463, 0, 0, 0</p><p> DW 0, 64580, 64684, 64
32、777, 64820, 64898, 64968, 65030, 0, 0</p><p> DW 0, 64633, 64732, 0, 64860, 64934, 64994, 0, 0, 0</p><p> DW 0, 65058, 65110,65157, 65178, 65217, 65252, 65283, 0, 0</p><p> DW 0,
33、 65085, 65134, 0, 65198, 65235, 65268, 0, 0, 0</p><p><b> DW 0 </b></p><p> 音樂(lè)的音拍,一個(gè)節(jié)拍為單位(C調(diào))(如表2-3所示)</p><p><b> 表2-3 曲調(diào)值表</b><
34、/p><p> Table 2-3 Tune the value of the table</p><p> 對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。琴鍵處理程序,根據(jù)檢測(cè)到得按鍵值,查詢音律表,給計(jì)時(shí)器賦值,發(fā)出相應(yīng)頻率的聲音。對(duì)音調(diào)的控制:根據(jù)不同的按鍵,對(duì)定時(shí)器T1送入不同的初值,調(diào)節(jié)T1的溢出時(shí)間,這樣就可以輸出不同音調(diào)頻率的方波。不同音調(diào)下各個(gè)音階的定時(shí)器。
35、</p><p> 在這個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成的。其中T0用來(lái)產(chǎn)生音符頻率,T1用來(lái)產(chǎn)生音拍。</p><p> 六、proteus仿真</p><p><b> 七、程序</b></p><p> #include<reg51.h> //包含51單片機(jī)寄存器定義的頭文件</p
36、><p> sbit P14=P1^4; //將P14位定義為P1.4引腳</p><p> sbit P15=P1^5; //將P15位定義為P1.5引腳</p><p> sbit P16=P1^6; //將P16位定義為P1.6引腳</p><p> sbit P17=P1^7; //將P17
37、位定義為P1.7引腳</p><p> unsigned char keyval; //定義變量?jī)?chǔ)存按鍵值</p><p> sbit sound=P2^0; //將sound位定義為P3.7</p><p> unsigned int C; //全局變量,儲(chǔ)存定時(shí)器的定時(shí)常數(shù)</p><p> unsigned
38、int f; //全局變量,儲(chǔ)存音階的頻率</p><p> //以下是C調(diào)低音的音頻宏定義</p><p> #define l_dao 262 //將“l(fā)_dao”宏定義為低音“1”的頻率262Hz</p><p> #define l_re 286 //將“l(fā)_re”宏定義為低音“2”的頻率286Hz</p><p&
39、gt; #define l_mi 311 //將“l(fā)_mi”宏定義為低音“3”的頻率311Hz</p><p> #define l_fa 349 //將“l(fā)_fa”宏定義為低音“4”的頻率349Hz</p><p> #define l_sao 392 //將“l(fā)_sao”宏定義為低音“5”的頻率392Hz</p><p> #define
40、 l_la 440 //將“l(fā)_a”宏定義為低音“6”的頻率440Hz</p><p> #define l_xi 494 //將“l(fā)_xi”宏定義為低音“7”的頻率494Hz</p><p> //以下是C調(diào)中音的音頻宏定義</p><p> #define dao 523 //將“dao”宏定義為中音“1”的頻率523Hz</p&
41、gt;<p> #define re 587 //將“re”宏定義為中音“2”的頻率587Hz</p><p> #define mi 659 //將“mi”宏定義為中音“3”的頻率659Hz</p><p> #define fa 698 //將“fa”宏定義為中音“4”的頻率698Hz</p><p> #de
42、fine sao 784 //將“sao”宏定義為中音“5”的頻率784Hz</p><p> #define la 880 //將“l(fā)a”宏定義為中音“6”的頻率880Hz</p><p> #define xi 987 //將“xi”宏定義為中音“7”的頻率53</p><p> //以下是C調(diào)高音的音頻宏定義</p>
43、;<p> #define h_dao 1046 //將“h_dao”宏定義為高音“1”的頻率1046Hz</p><p> #define h_re 1174 //將“h_re”宏定義為高音“2”的頻率1174Hz</p><p> #define h_mi 1318 //將“h_mi”宏定義為高音“3”的頻率1318Hz</p>
44、;<p> #define h_fa 1396 //將“h_fa”宏定義為高音“4”的頻率1396Hz</p><p> #define h_sao 1567 //將“h_sao”宏定義為高音“5”的頻率1567Hz</p><p> #define h_la 1760 //將“h_la”宏定義為高音“6”的頻率1760Hz</p>
45、<p> #define h_xi 1975 //將“h_xi”宏定義為高音“7”的頻率1975Hz</p><p> /**************************************************************</p><p> 函數(shù)功能:軟件延時(shí)子程序</p><p> ****************
46、**********************************************/</p><p> void delay20ms(void) </p><p><b> {</b></p><p> unsigned char i,j;</p><p> for(i=0;i<100;i++
47、)</p><p> for(j=0;j<60;j++)</p><p><b> ;</b></p><p><b> }</b></p><p> /*******************************************</p><p>
48、函數(shù)功能:節(jié)拍的延時(shí)的基本單位,延時(shí)250ms</p><p> ******************************************/</p><p> void delay() </p><p><b> {</b></p><p> unsigned char i
49、,j;</p><p> for(i=0;i<250;i++)</p><p> for(j=0;j<250;j++)</p><p><b> ;</b></p><p><b> }</b></p><p> /*******************
50、************************</p><p><b> 函數(shù)功能:輸出音頻</b></p><p><b> 入口參數(shù):F</b></p><p> ******************************************/</p><p> void Out
51、put_Sound(void)</p><p><b> {</b></p><p> C=(46083/f)*10; //計(jì)算定時(shí)常數(shù)</p><p> TH0=(8192-C)/32; //可證明這是13位計(jì)數(shù)器TH0高8位的賦初值方法</p><p> TL0=(8192-C)%32;
52、 //可證明這是13位計(jì)數(shù)器TL0低5位的賦初值方法</p><p> TR0=1; //開定時(shí)T0</p><p> delay(); //延時(shí)200ms,播放音頻</p><p> TR0=0; //關(guān)閉定時(shí)器</p><p> sound=1;
53、 //關(guān)閉蜂鳴器</p><p> keyval=0xff; //播放按鍵音頻后,將按鍵值更改,停止播放</p><p><b> }</b></p><p> /*******************************************</p><p><b> 函數(shù)功能:
54、主函數(shù)</b></p><p> ******************************************/</p><p> void main(void)</p><p><b> { </b></p><p> EA=1; //開總中斷</p>&l
55、t;p> ET0=1; //定時(shí)器T0中斷允許</p><p> ET1=1; //定時(shí)器T1中斷允許</p><p> TR1=1; //定時(shí)器T1啟動(dòng),開始鍵盤掃描</p><p> TMOD=0x10; //分別使用定時(shí)器T1的模式1,T0的模式0</p><p> TH
56、1=(65536-500)/256; //定時(shí)器T1的高8位賦初值</p><p> TL1=(65536-500)%256; //定時(shí)器T1的高8位賦初值 </p><p> while(1) //無(wú)限循環(huán)</p><p><b> {</b></p><p>
57、switch(keyval)</p><p><b> {</b></p><p> case 1:f=dao; //如果第1個(gè)鍵按下,將中音1的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p&
58、gt;<p> case 2:f=l_xi;//如果第2個(gè)鍵按下,將低音7的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 3:f=l_la; //如果第3個(gè)鍵按下,將低音6的頻率賦給Output_Sou
59、nd(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 4:f=l_sao; //如果第4個(gè)鍵按下,將低音5的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;<
60、;/b></p><p> case 5:f=sao; //如果第5個(gè)鍵按下,將中音5的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 6:f=fa; //如果第6個(gè)鍵按下,將中音4的頻率
61、賦給f</p><p> Output_Sound();//轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 7:f=mi; //如果第7個(gè)鍵按下,將中音3的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p>
62、<p><b> break; </b></p><p> case 8:f=re; //如果第8個(gè)鍵按下,將中音2的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p>
63、case 9:f=h_re; //如果第9個(gè)鍵按下,將高音2的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 10:f=h_dao; //如果第10個(gè)鍵按下將高音1的頻率賦給f</p><p>
64、 Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 11:f=xi; //如果第11個(gè)鍵按下,將中音7的頻率賦給f</p><p> Output_Sound();//轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> bre
65、ak;</b></p><p> case 12:f=la; //如果第12個(gè)鍵按下,將中音6的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break; </b></p><p> case 13:f=h_la; //如果第13
66、個(gè)鍵按下,將高音6的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 14:f=h_sao;//如果第14個(gè)鍵按下,將高音5的頻率賦給f</p><p> Output_Sound();//轉(zhuǎn)去計(jì)
67、算定時(shí)常數(shù) </p><p><b> break;</b></p><p> case 15:f=h_fa; //如果第15個(gè)鍵按下,將高音4的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break;</b></p&
68、gt;<p> case 16:f=h_mi; //如果第16個(gè)鍵按下,將高音3的頻率賦給f</p><p> Output_Sound(); //轉(zhuǎn)去計(jì)算定時(shí)常數(shù) </p><p><b> break; </b></p><p><b> } </b></p><p>
69、<b> }</b></p><p><b> } </b></p><p> /**************************************************************</p><p> 函數(shù)功能:定時(shí)器T0的中斷服務(wù)子程序,使P2.0引腳輸出音頻方波</p>
70、<p> **************************************************************/ </p><p> void Time0_serve(void ) interrupt 1 using 1 </p><p><b> {</b></p><p> TH0=(8192-C
71、)/32; //可證明這是13位計(jì)數(shù)器TH0高8位的賦初值方法</p><p> TL0=(8192-C)%32; //可證明這是13位計(jì)數(shù)器TL0低5位的賦初值方法 </p><p> sound=!sound; //將P2.0引腳取反,輸出音頻方波</p><p><b> }</b></p><p> /*
72、*************************************************************</p><p> 函數(shù)功能:定時(shí)器T1的中斷服務(wù)子程序,進(jìn)行鍵盤掃描,判斷鍵位</p><p> **************************************************************/ </p><p&g
73、t; void time1_serve(void) interrupt 3 using 2 //定時(shí)器T1的中斷編號(hào)為3,使用第2組寄存器</p><p><b> {</b></p><p> TR1=0; //關(guān)閉定時(shí)器T0</p><p> P1=0xf0; //所有行線置為低電平“0”,所有列線置為高電平“1”</p
74、><p> if((P1&0xf0)!=0xf0) //列線中有一位為低電平“0”,說(shuō)明有鍵按下</p><p><b> {</b></p><p> delay20ms();//延時(shí)一段時(shí)間、軟件消抖</p><p> if((P1&0xf0)!=0xf0) //確實(shí)有鍵按下</p>
75、<p><b> {</b></p><p> P1=0xfe; //第一行置為低電平“0”(P1.0輸出低電平“0”)</p><p> if(P14==0) //如果檢測(cè)到接P1.4引腳的列線為低電平“0”</p><p> keyval=1; //可判斷是S1鍵被按下</p><p> if
76、(P15==0) //如果檢測(cè)到接P1.5引腳的列線為低電平“0”</p><p> keyval=2; //可判斷是S2鍵被按下</p><p> if(P16==0) //如果檢測(cè)到接P1.6引腳的列線為低電平“0”</p><p> keyval=3; //可判斷是S3鍵被按下</p><p> if(P17==0) //如果檢
77、測(cè)到接P1.7引腳的列線為低電平“0”</p><p> keyval=4; //可判斷是S4鍵被按下</p><p> P1=0xfd; //第二行置為低電平“0”(P1.1輸出低電平“0”)</p><p> if(P14==0) //如果檢測(cè)到接P1.4引腳的列線為低電平“0”</p><p> keyval=5; //可判
78、斷是S5鍵被按下</p><p> if(P15==0) //如果檢測(cè)到接P1.5引腳的列線為低電平“0”</p><p> keyval=6; //可判斷是S6鍵被按下</p><p> if(P16==0) //如果檢測(cè)到接P1.6引腳的列線為低電平“0”</p><p> keyval=7; //可判斷是S7鍵被按下</
79、p><p> if(P17==0) //如果檢測(cè)到接P1.7引腳的列線為低電平“0”</p><p> keyval=8; //可判斷是S8鍵被按下</p><p> P1=0xfb; //第三行置為低電平“0”(P1.2輸出低電平“0”)</p><p> if(P14==0) //如果檢測(cè)到接P1.4引腳的列線為低電平“0”<
80、/p><p> keyval=9; //可判斷是S9鍵被按下</p><p> if(P15==0) //如果檢測(cè)到接P1.5引腳的列線為低電平“0”</p><p> keyval=10; //可判斷是S10鍵被按下</p><p> if(P16==0) //如果檢測(cè)到接P1.6引腳的列線為低電平“0”</p><
81、p> keyval=11; //可判斷是S11鍵被按下</p><p> if(P17==0) //如果檢測(cè)到接P1.7引腳的列線為低電平“0”</p><p> keyval=12; //可判斷是S12鍵被按下</p><p> P1=0xf7; //第四行置為低電平“0”(P1.3輸出低電平“0”)</p><p> if
82、(P14==0) //如果檢測(cè)到接P1.4引腳的列線為低電平“0”</p><p> keyval=13; //可判斷是S13鍵被按下</p><p> if(P15==0) //如果檢測(cè)到接P1.5引腳的列線為低電平“0”</p><p> keyval=14; //可判斷是S14鍵被按下</p><p> if(P16==0) /
83、/如果檢測(cè)到接P1.6引腳的列線為低電平“0”</p><p> keyval=15; //可判斷是S15鍵被按下</p><p> if(P17==0) //如果檢測(cè)到接P1.7引腳的列線為低電平“0”</p><p> keyval=16; //可判斷是S16鍵被按下</p><p><b> }</b>&l
84、t;/p><p><b> }</b></p><p> TR1=1; //開啟定時(shí)器T1</p><p> TH1=(65536-500)/256; //定時(shí)器T1的高8位賦初值</p><p> TL1=(65536-500)%256; //定時(shí)器T1的高8位賦初值
85、</p><p><b> }</b></p><p><b> 八、元件清單</b></p><p> 1、220V變12V變壓器 一個(gè)</p><p> 2、電源插頭,連線 一套 </p><p> 3、二極管
86、 四個(gè)</p><p> 4、極性電容470UF/10UF 兩個(gè)/一個(gè)</p><p> 5、電阻1K、4.7K 一個(gè)/一個(gè)</p><p> 6、電容104/30PF 兩個(gè)/兩個(gè)</p><p> 7、 7805 一個(gè)</p&
87、gt;<p> 8、三極管 一個(gè)</p><p> 9、揚(yáng)聲器 一個(gè)</p><p> 10、開關(guān)按鈕 十七個(gè)</p><p> 11、AT89S51單片機(jī) 一個(gè)</p><p><b> 九、心得體會(huì):&l
88、t;/b></p><p> 先要謝謝指導(dǎo)我們以及一周來(lái)一直陪伴我們的毛建東老師和周春燕老師,其次感謝我們組的成員李寶明,韓康康,白楠,楊松良,鄭茂宇。</p><p> 經(jīng)過(guò)一段時(shí)間的查找資料,原理設(shè)計(jì),畫原理圖,再到做pcd版,焊接元件,直到最后的調(diào)試成功。讓我深有體會(huì)。</p><p> 一開始的工作是我們的李保民組長(zhǎng)動(dòng)作的比較多,作為組員的我雖然
89、一直關(guān)心著我們的課程設(shè)計(jì),但還是沒在其中參與多少,只是一直辛苦組長(zhǎng)在忙,我們的組長(zhǎng)很負(fù)責(zé)任,時(shí)時(shí)刻刻在告訴我們課程設(shè)計(jì)的進(jìn)展,讓我們也慢慢的放下了心中的一塊石頭。在最后做版子以及實(shí)物的時(shí)候,我們一起開始了我們最后的課程設(shè)計(jì)的部分。因?yàn)榻M長(zhǎng)的知識(shí)豐富,所以我們大部分的工作都交給了組長(zhǎng),但是我們的組員也沒有偷懶,當(dāng)出現(xiàn)困難的時(shí)候我們集思廣益,查找資料,認(rèn)真檢查。同時(shí)做到了分工明確。韓康康主要負(fù)責(zé)焊電路板,我和鄭茂宇負(fù)責(zé)查找資料,柏南則負(fù)責(zé)查
90、找問(wèn)題。制作的過(guò)程中出現(xiàn)的種種問(wèn)題,讓我們焦頭爛額,但是我們沒有就此灰心,經(jīng)過(guò)我們的共同努力之下,終于我們的課程設(shè)計(jì)是班里面第一個(gè)完成的。</p><p> 這次的課程設(shè)計(jì)讓我感觸很大</p><p> 首先,讓我知道了動(dòng)手能力的重要性,即使我們能把專業(yè)知識(shí)學(xué)的非常的透徹,但是面對(duì)實(shí)物的時(shí)候,很多時(shí)候就會(huì)束手無(wú)策了,由于操作的原因會(huì)出現(xiàn)各種各樣的問(wèn)題。比如說(shuō),不細(xì)心就會(huì)用交流電去測(cè)直流
91、電,焊接技術(shù)不熟練就會(huì)造成短路現(xiàn)象,操作順序不當(dāng)就會(huì)燒壞版子。</p><p> 其次,讓我知道了團(tuán)隊(duì)精神的重要性,如果把這個(gè)事情讓一個(gè)人來(lái)完成,是不可能的事情,因?yàn)樵O(shè)計(jì)電路板的時(shí)候會(huì)出現(xiàn)很多意想不到的問(wèn)題與困難,這些問(wèn)題和困難都是需要一個(gè)團(tuán)隊(duì)共同來(lái)解決與克服的。沒有團(tuán)隊(duì)就沒有課程設(shè)計(jì)的成功。同時(shí)這次課程設(shè)計(jì)也增進(jìn)了與同學(xué)間的友誼。</p><p> 老師對(duì)我們說(shuō),我們完成了這次課程設(shè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 模電課程設(shè)計(jì)——簡(jiǎn)易電子琴制作
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 簡(jiǎn)易電子琴課程設(shè)計(jì)
- 簡(jiǎn)易電子琴課程設(shè)計(jì) (2)
- 課程設(shè)計(jì)報(bào)告--- 簡(jiǎn)易電子琴
- 微機(jī)原理課程設(shè)計(jì)--設(shè)計(jì)簡(jiǎn)易電子琴
- 電子琴課程設(shè)計(jì)---電子琴的設(shè)計(jì)與實(shí)現(xiàn)
- fpga課程設(shè)計(jì)報(bào)告--簡(jiǎn)易電子琴的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 電子電路cad課程設(shè)計(jì)--簡(jiǎn)易電子琴
- 課程設(shè)計(jì)----簡(jiǎn)易單片機(jī)電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)——簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴
- 課程設(shè)計(jì)---簡(jiǎn)易電子琴電路的設(shè)計(jì)仿真與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論