版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 課程名稱(chēng) 單片機(jī)原理與應(yīng)用 </p><p> 課題名稱(chēng) 音樂(lè)提示定時(shí)器 </p><p> 專(zhuān) 業(yè) 自 動(dòng) 化 </p><p> 班 級(jí) </p&
2、gt;<p> 學(xué) 號(hào) </p><p> 姓 名 </p><p> 指導(dǎo)教師 </p><p> 2013 年 5 月 20 日</p><p><b> 目 錄</b></p><
3、p><b> 第1章 緒論7</b></p><p> 第2章 音樂(lè)基礎(chǔ)知識(shí)8</p><p> 2.1 音樂(lè)基礎(chǔ)8</p><p> 2.2 音頻脈沖和音樂(lè)節(jié)拍的實(shí)現(xiàn)8</p><p> 第3章 總體方案設(shè)計(jì)11</p><p> 3.1設(shè)計(jì)任務(wù)與要求11<
4、;/p><p> 3.2總體系統(tǒng)框圖11</p><p> 3.3 系統(tǒng)組成12</p><p> 第4章 系統(tǒng)硬件設(shè)計(jì)13</p><p> 4.1控制電路設(shè)計(jì)13</p><p> 4.2 AT89C52單片機(jī)介紹14</p><p> 4.3 發(fā)聲驅(qū)動(dòng)電路17<
5、/p><p> 4.4 顯示電路17</p><p> 4.5 控制電路18</p><p> 第5章 軟件設(shè)計(jì)19</p><p> 5.1主程序設(shè)計(jì)19</p><p> 5.2各子程序設(shè)計(jì)20</p><p> 第6章 硬件系統(tǒng)的制作與調(diào)試25</p>
6、<p> 6.1 系統(tǒng)調(diào)試方法25</p><p> 6.2 定時(shí)設(shè)置與時(shí)鐘顯示26</p><p><b> 結(jié) 論28</b></p><p><b> 參考文獻(xiàn)29</b></p><p> 附錄一-源程序30</p><p> 附
7、錄二-實(shí)驗(yàn)原理圖42</p><p><b> 第1章 緒論</b></p><p> 現(xiàn)在各種各樣的音樂(lè)播放器呈現(xiàn)在我們面前,外觀(guān)越來(lái)越精美,功能越來(lái)越多,體積越來(lái)越小,重量也越來(lái)越小、價(jià)格越來(lái)越便宜。同時(shí),隨著當(dāng)代手機(jī)行業(yè)的快速發(fā)展,許多手機(jī)廠(chǎng)商為了能夠吸引廣大的客戶(hù)受到消費(fèi)者的青睞,致此他們開(kāi)始研究在手機(jī)上實(shí)現(xiàn)音樂(lè)和視頻的播放,因此現(xiàn)在的手機(jī)都能夠輕松的播
8、放音樂(lè)了。這樣人們就更很容易攜帶,隨時(shí)隨地都可以聽(tīng),以便來(lái)緩解人們的疲勞、壓抑、愉快人們的心情等,甚至有時(shí)還可以借著音樂(lè)來(lái)抒發(fā)自己的感情,傳達(dá)我們對(duì)朋友的祝福。因此,在不知不覺(jué)中它成為了人們生活的一樣必需品,無(wú)論到哪里、無(wú)論什么時(shí)候都可以聽(tīng)到我們想聽(tīng)的音樂(lè)。</p><p> 通過(guò)控制單片機(jī)定時(shí)器的定時(shí)時(shí)間產(chǎn)生不同頻率的音頻脈沖,經(jīng)放大后驅(qū)動(dòng)蜂鳴器發(fā)出不同音節(jié)的聲音。用軟件延時(shí)來(lái)控制發(fā)音時(shí)間的長(zhǎng)短,控制節(jié)拍。把
9、樂(lè)譜中的音符和相應(yīng)的節(jié)拍變換為定時(shí)常數(shù)和延時(shí)常數(shù),作為數(shù)據(jù)表格存放在存儲(chǔ)器中,由程序查表得到定時(shí)常數(shù)和延時(shí)常數(shù),分別用來(lái)控制定時(shí)器產(chǎn)生的脈沖頻率和發(fā)出該音頻脈沖的持續(xù)時(shí)間。</p><p> 在實(shí)際中參照單片機(jī)相關(guān)資料,就可容易的利用單片機(jī)設(shè)計(jì)出一個(gè)音樂(lè)發(fā)生器。在設(shè)計(jì)過(guò)程中人們還可考慮用多種方法進(jìn)行實(shí)現(xiàn),這樣不但很好的發(fā)揮了人們的創(chuàng)新精神,還提高了動(dòng)手能力、綜合分析能力及專(zhuān)業(yè)知識(shí)運(yùn)用能力。</p>
10、<p> 第2章 音樂(lè)基礎(chǔ)知識(shí)</p><p><b> 2.1 音樂(lè)基礎(chǔ)</b></p><p> 音作為一種物理現(xiàn)象,是由于物體振動(dòng)而產(chǎn)生的,振動(dòng)產(chǎn)生的聲波作用于人耳,聽(tīng)覺(jué)系統(tǒng)將神經(jīng)沖動(dòng)傳達(dá)給大腦,進(jìn)而產(chǎn)生聽(tīng)覺(jué)。人耳能聽(tīng)到的聲音頻率大約在11—20000Hz,而音樂(lè)使用的音一般在27—4100Hz。</p><p> 樂(lè)
11、音體系中各音級(jí)的名稱(chēng)叫做音名,被廣泛采用的是C D E F G A B (do re mi fa so la si則多用于歌唱,稱(chēng)為唱名)。樂(lè)音體系中音高關(guān)系的最小計(jì)量單位叫做半音,兩個(gè)半音構(gòu)成一個(gè)全音。樂(lè)音中有幾十個(gè)高低不同的音,但是最基本只有這七個(gè)音,其他高、低音名都是在這個(gè)基礎(chǔ)上變化出來(lái)的。</p><p> 樂(lè)譜表上用來(lái)表示正在進(jìn)行的音的長(zhǎng)短的符號(hào),叫做音符。不同的音符代表不同的長(zhǎng)度。音符有以下幾種:全
12、音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符、六十四分音符。此外,還有附點(diǎn)音符,它就是指帶附點(diǎn)的音符,所謂附點(diǎn)就是記在音符右邊的小圓點(diǎn),表示增加前面音符時(shí)值的一半。音持續(xù)的長(zhǎng)短即時(shí)值,一般用拍數(shù)表示,休止符表示暫停發(fā)音。</p><p> 一首音樂(lè)就是由許多不同的音符組成的,而每一個(gè)音符對(duì)應(yīng)著不同的頻率,這樣就可以利用不同的頻率的組合,加以拍數(shù)對(duì)應(yīng)的延時(shí)來(lái)構(gòu)成不同的音樂(lè)。</p>
13、<p> 2.2 音頻脈沖和音樂(lè)節(jié)拍的實(shí)現(xiàn)</p><p> 2.2.1 音頻脈沖的產(chǎn)生</p><p> 音樂(lè)的產(chǎn)生需要不同頻率的音頻脈沖,對(duì)于單片機(jī)而言,可以利用它的定時(shí)/計(jì)數(shù)器產(chǎn)生這樣的方波頻率信號(hào)。在本設(shè)計(jì)中,單片機(jī)工作在12MHz時(shí)鐘頻率下,其時(shí)鐘周期為1us,因此可以利用AT89C52的內(nèi)部定時(shí)/計(jì)數(shù)器T0,使其工作模式為1,根據(jù)對(duì)應(yīng)音符的不同頻率求出計(jì)數(shù)器的初
14、值T(即是TH0和TL0的值),則TH0=T/256,TL0=T%256。</p><p> C調(diào)各音符頻率與計(jì)數(shù)值T的對(duì)照如下表2-1所示。</p><p> 2.2.2 音樂(lè)節(jié)拍的產(chǎn)生</p><p> 節(jié)拍是指音樂(lè)持續(xù)的長(zhǎng)短,是除音符之外音樂(lè)的另一關(guān)鍵組成部分,在單片機(jī)系統(tǒng)中可以通過(guò)延時(shí)來(lái)實(shí)現(xiàn)。</p><p> 如果1/4拍的
15、延時(shí)設(shè)為0.2s,則1拍的時(shí)間為0.8s,依次類(lèi)推,可以求出其余節(jié)拍的值,節(jié)拍的延時(shí)時(shí)間與音樂(lè)的曲調(diào)值有相對(duì)應(yīng)的關(guān)系,下面為不同曲調(diào)下的1/4和1/8節(jié)拍的時(shí)間設(shè)定,如下表2-2所示。</p><p> 表2-2 不同曲調(diào)下1/4和1/8節(jié)拍的延時(shí)表</p><p> 2.2.3 “天空之城”曲譜</p><p> 67|1. 7 1 3 |7 - - 3
16、 |6. 5 6 1 |5 - - 33| 4. 3 41. |3 - 3111|7. #4 4 7|7 - - 67| 1. 7 1 3 |7 - - 3 |6. 5 6 1 |5 - - 33| 4 17. 1 |2 31 1- |1766 7 #5 |6- - 12| 3. 2 3 5 |2 - - 5 |1. 7 1 3 |3 - - 0 | 671171 2 |1. 55 - |4 3
17、 2. 1 |3 - - 3 | </p><p> 6 - 5 - |321 - - |2. 1 2 5 |3 - - 3 | 6 - 5 - |321 - - |2. 1 2 7 |6 - - 67|</p><p> 1. 7 1 3 |7 - - 3 |6. 5 6 1 |5 - - 33| 4 17. 1 |2 31 1- |1766 7 #5 |6-
18、- ||</p><p> 第3章 總體方案設(shè)計(jì)</p><p> 3.1設(shè)計(jì)任務(wù)與要求</p><p><b> 3.1.1設(shè)計(jì)任務(wù)</b></p><p> 設(shè)計(jì)一定時(shí)音樂(lè)發(fā)生器:</p><p> ?。?)用單片機(jī)作為開(kāi)發(fā)工具,能自定義倒計(jì)時(shí)時(shí)間、能儲(chǔ)存樂(lè)曲;</p&g
19、t;<p> (2)能按鍵選擇倒計(jì)時(shí)時(shí)間,每按一次加1鍵樂(lè)倒計(jì)時(shí)時(shí)間按照5min10min、20min、30min、60min依次倒計(jì)時(shí);</p><p> ?。?)用LED數(shù)碼管顯示倒計(jì)時(shí)時(shí)間;</p><p> ?。?)能進(jìn)行仿真音樂(lè)發(fā)生器。</p><p> 3.1.2 設(shè)計(jì)要求</p><p> 方案合理、正確,系
20、統(tǒng)穩(wěn)定、可靠。</p><p> 軟件設(shè)計(jì)要求盡可能精練、簡(jiǎn)短和運(yùn)行可靠。</p><p> 硬件電路要求簡(jiǎn)單明了,以節(jié)約成本。</p><p><b> 3.2總體系統(tǒng)框圖</b></p><p> 本系統(tǒng)的設(shè)計(jì)是以80C51單片機(jī)為核心,配以一定的外圍電路和軟件,實(shí)現(xiàn)比賽計(jì)分器的功能。利用了8個(gè)8段共陰級(jí)數(shù)碼
21、管顯示器.其中甲乙兩個(gè)分值各用3個(gè)數(shù)碼管顯示分值,另外兩個(gè)顯示分隔符。采用動(dòng)態(tài)顯示輸出倒計(jì)時(shí)時(shí)間,本系統(tǒng)中使用的是獨(dú)立的鍵盤(pán)。狀態(tài)切換時(shí)候用不同的發(fā)光二極管的對(duì)應(yīng)顯示切換到了不同的分值。系統(tǒng)設(shè)計(jì)方案的硬件電路設(shè)計(jì)框圖如圖2-1所示。</p><p> 圖2-1 硬件電路設(shè)計(jì)</p><p><b> 3.3 系統(tǒng)組成</b></p><p>
22、; 系統(tǒng)由硬件部分和軟件部分組成。硬件電路由復(fù)位按鍵、80C51單片機(jī)、獨(dú)立鍵盤(pán),8個(gè)數(shù)碼管等組成。</p><p> 軟件部分主程序主要由鍵盤(pán)識(shí)別、鍵值處理、8位8段共陰極LED顯示器掃描顯示子程序組成。軟件設(shè)計(jì)主要有四個(gè)部分:信息輸入、信息處理、顯示輸出。信息輸入時(shí)采用鍵盤(pán)來(lái)實(shí)現(xiàn),所以需要檢測(cè)鍵盤(pán)有無(wú)按鍵的子程序;信息處理需要對(duì)用戶(hù)通過(guò)鍵盤(pán)輸入的不同信息進(jìn)行辨別并執(zhí)行相應(yīng)的處理;顯示輸出采用動(dòng)態(tài)輸出,從而
23、達(dá)到設(shè)計(jì)的目的。</p><p> 第4章 系統(tǒng)硬件設(shè)計(jì)</p><p><b> 4.1控制電路設(shè)計(jì)</b></p><p> 4.1.1 控制電路設(shè)置</p><p> 如圖3-1所示,按鈕與單片機(jī)的RST引腳相連,當(dāng)每次按下該按鈕后,系統(tǒng)將通過(guò)軟件實(shí)現(xiàn)對(duì)計(jì)分實(shí)現(xiàn)清零功能。這里我選擇的是使用電平復(fù)位。跳冒是
24、插在1、2端口。復(fù)位電路圖如下圖3-1所示。</p><p> 圖3-1 復(fù)位硬件電路圖</p><p> 4.1.2 工作原理</p><p> 利用單片機(jī)AT89C52直接來(lái)產(chǎn)生音頻脈沖來(lái)驅(qū)動(dòng)喇叭來(lái)完成音樂(lè)的播放 。利用了該單片機(jī)的內(nèi)部定時(shí)器/計(jì)數(shù)器T0來(lái)定進(jìn)行定時(shí),同時(shí)利用定時(shí)器/計(jì)數(shù)器T1用業(yè)計(jì)數(shù),并同時(shí)利用了該單片機(jī)的P2口的P2.0來(lái)作為音頻脈沖的
25、輸出端。</p><p> 4.2 AT89C52單片機(jī)介紹 </p><p> AT89C52是美國(guó)ATMEL公司生產(chǎn)的低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(PEROM)和藹可親256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8052產(chǎn)品引腳兼容,片內(nèi)置
26、通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng)合,如圖4-2所示。</p><p> 圖4-2 AT89C52引腳圖</p><p><b> 1、主要性能參數(shù)</b></p><p> 與MCS-51產(chǎn)品指令和引腳完全兼容</p><p> 8k字節(jié)
27、可重擦寫(xiě)Flash閃速存儲(chǔ)器</p><p><b> 1000次擦寫(xiě)周期</b></p><p> 全靜態(tài)操作:0Hz—24MHz</p><p><b> 三級(jí)加密程序存儲(chǔ)器</b></p><p> 256×8字節(jié)內(nèi)部RAM</p><p> 32個(gè)
28、可編程I/O口線(xiàn)</p><p> 3個(gè)16位定時(shí)/計(jì)數(shù)器</p><p><b> 8個(gè)中斷源</b></p><p> 可編程串行UART通道低功耗空閑和掉電模式</p><p><b> 2、引腳功能</b></p><p><b> Vcc:電源電
29、壓</b></p><p><b> GND:接地</b></p><p> P0口:P0口是一個(gè)8位雙向I/O接口,也即地址/數(shù)據(jù)總線(xiàn)復(fù)用口。在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線(xiàn)分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線(xiàn)復(fù)用。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4
30、個(gè)TTL邏輯門(mén)電路,對(duì)端口寫(xiě)“1”通過(guò)內(nèi)部的上拉電阻把端口拉到高電平時(shí),此時(shí)可作輸入口。</p><p> P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。在訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù)。</p><p> P3口:P3口除了作為一般的I/O口線(xiàn)外,更重要的用途是它的第二功能,如下表4-1所示。</
31、p><p> 表4-1 P3口的第二功能表</p><p> RST:復(fù)位信號(hào)輸入端。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。</p><p> /PROG:地址鎖存有效信號(hào)輸出端。當(dāng)訪(fǎng)問(wèn)片外部存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于位鎖存低8地址</p><p> ?。撼绦虼鎯?chǔ)允許輸出端。是片外程序存儲(chǔ)器的
32、讀選通信號(hào)。</p><p> /Vpp:行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,這必須是該器件是使用12V編程電壓Vpp。</p><p> XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。通過(guò)XTAL1、XTAL2外接晶振后,即可構(gòu)成自激振蕩
33、器,驅(qū)動(dòng)內(nèi)部時(shí)鐘發(fā)生器向主機(jī)提供時(shí)鐘信號(hào)。</p><p> 在A(yíng)T89C52片內(nèi)存儲(chǔ)器中,80H-FFH共128個(gè)單元為特殊功能寄存器(SFR),其中包括B寄存器、累加器、程序狀態(tài)寄存器(PSW)、定時(shí)/計(jì)數(shù)器控制、中斷優(yōu)級(jí)控制寄存器(IP)、P3口鎖存寄存器、中斷允許控制寄存器(IE)、串行口控制寄存器等。它們可運(yùn)用來(lái)設(shè)置片內(nèi)電路的運(yùn)行方式,記錄電路的運(yùn)行狀態(tài),MCS-51單片機(jī)對(duì)特殊功能寄存器采取與片內(nèi)R
34、AM統(tǒng)一編址的方法,可按字節(jié)地址直接尋址。</p><p> 4.3 發(fā)聲驅(qū)動(dòng)電路</p><p> 主要是采用一個(gè)三極管來(lái)驅(qū)動(dòng)揚(yáng)聲器來(lái)產(chǎn)生音樂(lè)。在單片機(jī)的P2口上的P2.0的端子上連接發(fā)聲驅(qū)動(dòng)電路,其中要先連接一個(gè)10k的電阻主要是用業(yè)限制電流過(guò)大,然后連接一個(gè)三極管來(lái)驅(qū)動(dòng)揚(yáng)聲器以致放出的音質(zhì)較好,再連接揚(yáng)聲器,因?yàn)橛玫揭粋€(gè)揚(yáng)聲器所以就可以不能區(qū)分它的正負(fù)極性了,它的電路框圖如4-3
35、圖所示。</p><p> 圖4-3 發(fā)聲驅(qū)動(dòng)電路</p><p><b> 4.4 顯示電路</b></p><p> 顯示部分主要是由一個(gè)共陰極的八段數(shù)碼管和八個(gè)限流電阻共同來(lái)組成的。它們接在A(yíng)T89C52單片機(jī)P1口上,用一組電阻都為220、330或100來(lái)對(duì)P1口輸出的電壓進(jìn)行分流,從而來(lái)確定了八段數(shù)碼管擁有正常的電壓,不會(huì)因電
36、流過(guò)大而被燒壞。這樣數(shù)碼管就可以正常顯示所播放的歌曲的曲目數(shù)了,具體的顯示器電路圖如圖4-4所示。</p><p> 圖 4-4 顯示電路</p><p><b> 4.5 控制電路</b></p><p> 這部分電路主要是用來(lái)控制歌曲的播放/暫停及選擇。采用了三個(gè)按鈕來(lái)進(jìn)行控制來(lái)實(shí)現(xiàn)歌曲播放的上一曲、下一曲及開(kāi)始/暫停的功能,同時(shí)還接
37、一個(gè)上拉電阻,它的阻值一般是5.1k、4.7k、10k三個(gè)阻值,共同實(shí)現(xiàn)了音樂(lè)播放歌曲的控制。如圖4-5所示。</p><p> 圖4-5 控制電路圖</p><p> 第5章 軟件設(shè)計(jì)</p><p><b> 5.1主程序設(shè)計(jì)</b></p><p> 本系統(tǒng)軟件設(shè)計(jì)采用單片機(jī)C語(yǔ)言設(shè)計(jì),主要的語(yǔ)言模塊
38、有:初始化模塊、按鍵判斷模塊、數(shù)碼管顯示模塊、延時(shí)模塊組成。程序設(shè)計(jì)的流程圖如下圖5-1所示。</p><p><b> N</b></p><p><b> Y</b></p><p> 圖5-1 軟件設(shè)計(jì)的流程圖</p><p> 5.2各子程序設(shè)計(jì) </p><p
39、> 5.2.1 初始化子程序</p><p> sbit key1=P3^4;</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><p> sbit key4=P3^7;</p><p> sbit dula=P2^6;</p>
40、<p> sbit wela=P2^7;</p><p> sbit beep=P1^2; //將beep位定義為P1.2</p><p> void init()</p><p><b> {</b></p><p><b> fen=5;</b></p>
41、<p><b> miao=0;</b></p><p><b> num2=1;</b></p><p><b> flag=0;</b></p><p> TMOD=0X11;//設(shè)定定時(shí)器的工作方式</p><p> TH0=(65536-50000)
42、/256;//定時(shí)50ms</p><p> TL0=(65536-50000)%256;</p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p> EA=1;//開(kāi)總中斷</p><p> ET0=1;//開(kāi)定時(shí)中斷&l
43、t;/p><p> //TR0=1;//啟動(dòng)定時(shí)器0</p><p> ET1=1;//開(kāi)定時(shí)中斷</p><p> TR1=0;//啟動(dòng)定時(shí)器0</p><p><b> }</b></p><p> uchar code tabledu[]= //不帶小數(shù)點(diǎn)的數(shù)碼管段</p&g
44、t;<p> {0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71};</p><p> uchar code tabledu1[]= //帶小數(shù)點(diǎn)的
45、數(shù)碼管段</p><p> {0xbf,0x86,0xdb,0xcf,</p><p> 0xe6,0xed,0xfd,0x87,</p><p> 0xff,0xef,0xf7,0xfc,</p><p> 0x39,0x5e,0x79,0x71};</p><p> 初始化程序是用來(lái)對(duì)各定義的變量初始化的
46、,每一次主程序執(zhí)行之前都要先執(zhí)行初始化程序以保證變量的值為初值。</p><p> 5.2.2 延時(shí)子程序</p><p><b> /*延時(shí)函數(shù)*/</b></p><p> /*void delay(unsigned char time)</p><p><b> {</b></p
47、><p> unsigned char t1;</p><p> unsigned long t2;</p><p> for(t1=0;t1<time;t1++) // t or time</p><p><b> {</b></p><p> for(t2=0;t2<80
48、00;t2++)//對(duì)于12MHz的時(shí)鐘,延時(shí)為125ms(1/4節(jié)拍)</p><p><b> {}</b></p><p><b> }</b></p><p><b> }*/</b></p><p> void dingshi_display(uchar fe
49、n,uchar miao);//125ms延時(shí)函數(shù)</p><p> void delay_125()</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=124;x>0;x--)</p><
50、p> for(y=125;y>0;y--);</p><p><b> }</b></p><p> void delay(uint z) //延時(shí)1ms函數(shù)</p><p><b> {</b></p><p><b> uint x,y;</b>&l
51、t;/p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> 這個(gè)延時(shí)程序設(shè)計(jì)是在硬件調(diào)試過(guò)程中更改數(shù)據(jù)得來(lái)的,不同的硬件延時(shí)應(yīng)選擇適合的延時(shí)時(shí)間。延時(shí)程序延時(shí)時(shí)間計(jì)算式:1T+1T+((2T*
52、300 +2T)*10+2T。</p><p> 5.2.3 鍵掃描程序</p><p> uchar key1_scan()//掃描選擇定時(shí)的大小</p><p><b> {</b></p><p> if(key1==0) //有按鍵按下</p><p><b> {
53、</b></p><p> delay(5); //延時(shí)一下去抖</p><p> if(key1==0)//確實(shí)是有按鍵按下</p><p><b> {</b></p><p> while(key1!=1);//松手有效</p><p> delay(5);
54、 //松手延時(shí)去抖</p><p> if(key1==1) //確實(shí)是松手了</p><p><b> num++;</b></p><p><b> }</b></p><p><b> }</b></p><p> return n
55、um;</p><p><b> }</b></p><p> 這里只是按鍵選擇程序,實(shí)際上轉(zhuǎn)移到各自的處理程序中就有按鍵的消抖處理和對(duì)應(yīng)按鍵信號(hào)所要執(zhí)行的處理程序。</p><p> 5.2.4 數(shù)碼管顯示之程序</p><p> void dingshi_display(uchar fen,uchar m
56、iao)</p><p><b> {</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><b> wela=0;</b></p><p><
57、b> P0=0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[fen/10];</p><p><b> dula=0;</b></p><p><b> P0=0xff;</b></
58、p><p><b> wela=1;</b></p><p><b> P0=0xfe;</b></p><p><b> wela=0;</b></p><p><b> delay(1);</b></p><p><
59、b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><b> wela=0;</b></p><p><b> P0=0x00;</b></p><p><b> dula=1;</b&g
60、t;</p><p> P0=tabledu1[fen%10];</p><p> dula=0; </p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfd;&l
61、t;/b></p><p><b> wela=0;</b></p><p><b> delay(1);</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p>&
62、lt;p><b> wela=0;</b></p><p><b> P0=0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[miao/10];</p><p><b> dula=0;<
63、;/b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfb;</b></p><p><b> wela=0;</b></p>&l
64、t;p><b> delay(1);</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><b> wela=0;</b></p><p><b> P0=
65、0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[miao%10];</p><p><b> dula=0;</b></p><p><b> P0=0xff;</b></p>&l
66、t;p><b> wela=1;</b></p><p><b> P0=0xf7;</b></p><p><b> wela=0;</b></p><p> delay(1);</p><p><b> }</b></p&g
67、t;<p> 上面是時(shí)鐘顯示對(duì)應(yīng)數(shù)碼管顯示函數(shù)的代碼,對(duì)段選P0口和位選P2口的處理就可以實(shí)現(xiàn)要顯示的分值。</p><p> 5.2.5音樂(lè)鈴聲之程序</p><p> void song()</p><p><b> {</b></p><p><b> uint i;</b
68、></p><p><b> uchar j;</b></p><p><b> i=0;</b></p><p><b> EX0=1;</b></p><p><b> IT0=1;</b></p><p> w
69、hile(f[i]!=0xff&&flag==0)</p><p><b> {</b></p><p> N=500000/f[i];</p><p> Timer1_H=(65536-N)/256;</p><p> Timer1_L=(65536-N)%256;</p><
70、;p> TH1=Timer1_H;//賦值定時(shí)器時(shí)間,決定頻率</p><p> TL1=Timer1_L;</p><p><b> TR1=1;</b></p><p> 第6章 硬件系統(tǒng)的制作與調(diào)試</p><p> 6.1 系統(tǒng)調(diào)試方法</p><p> ?。?)打開(kāi)電路
71、仿真的應(yīng)用程序ISIS Professional,在其中選擇該設(shè)計(jì)所需的的單片機(jī)或是元件,然后將其放置到要畫(huà)圖的區(qū)域中,你可以雙擊該元件改變它相應(yīng)的屬性及參數(shù)。</p><p> 2、用帶電氣性的連接線(xiàn)來(lái)連接各個(gè)元件,從而構(gòu)成了完整的電路圖并保存在為.DSN為后綴名的文件,放在你所需的地方。</p><p> 3、打開(kāi)程序仿真或調(diào)試應(yīng)用程序Keil uVision2, 首先要建一個(gè)工程
72、,再將程序添加到該工程中,再保存。</p><p> 4、再進(jìn)行程序的編譯與連接,檢查程序是否正確,如果不正確,則進(jìn)行分析直到正確為止;如果正確,則可以生成.hex文件。</p><p> 5、點(diǎn)擊project菜單,選擇options for target項(xiàng)或是直接點(diǎn)擊常用工具欄中的圖標(biāo)打開(kāi)對(duì)話(huà)框進(jìn)行設(shè)置, 則就可以生成.hex文件了。</p><p> 6
73、、再打開(kāi)電路仿真的應(yīng)用程序ISIS Professional,然后雙擊該電路圖中的主的單片機(jī),同時(shí)彈出一個(gè)對(duì)話(huà)框,在對(duì)話(huà)框中進(jìn)行選擇所生成的.hex文件,并還可以進(jìn)行單片機(jī)的頻率設(shè)置,再單擊確定。仿真圖見(jiàn)-附錄二</p><p> 7、點(diǎn)擊運(yùn)行檢查是否可以運(yùn)行正確單片機(jī)語(yǔ)言程序是基于Keil uVision2編程軟件編寫(xiě)的匯編程序。在keil內(nèi)建立工程后建立匯編文件,編寫(xiě)MCS-51程序,進(jìn)過(guò)不斷對(duì)程序的更改和
74、調(diào)試。最后生成我們想要的HEX文件,再用單片機(jī)程序下載軟件STC_ISP_V3.1進(jìn)行對(duì)十六進(jìn)制的可下載文件進(jìn)行下載到單片機(jī)上,將運(yùn)行結(jié)果和實(shí)驗(yàn)現(xiàn)象與預(yù)定效果進(jìn)行比較,再反過(guò)來(lái)對(duì)程序進(jìn)行修改以達(dá)到要求。最后經(jīng)過(guò)不斷的改進(jìn)就可以實(shí)現(xiàn)設(shè)計(jì)的目的。</p><p> 6.2 定時(shí)設(shè)置與時(shí)鐘顯示</p><p> 下圖5-1是進(jìn)入系統(tǒng)所拍攝的硬件顯示圖,用它實(shí)現(xiàn)了定時(shí)音樂(lè)器的時(shí)間設(shè)定功能。&l
75、t;/p><p> 圖6-1 定時(shí)時(shí)間設(shè)置為5分鐘時(shí)的音樂(lè)效果圖</p><p> 圖6-2 正在倒計(jì)時(shí)工作的音樂(lè)器</p><p> 圖6-3 時(shí)鐘顯示為19:54:45</p><p><b> 結(jié) 論</b></p><p> 通過(guò)這次比較完整的單片機(jī)音樂(lè)發(fā)生器的設(shè)計(jì),我擺脫了單純的
76、理論知識(shí)學(xué)習(xí)狀態(tài),和實(shí)際設(shè)計(jì)的結(jié)合鍛煉了我的綜合運(yùn)用所學(xué)的專(zhuān)業(yè)基礎(chǔ)知識(shí),同時(shí)也提高我查閱文獻(xiàn)資料、設(shè)計(jì)規(guī)范以及電腦畫(huà)圖等其他專(zhuān)業(yè)能力水平,而且通過(guò)對(duì)整體的掌控,對(duì)局部的取舍,以及對(duì)細(xì)節(jié)的斟酌處理,都使我的能力得到了鍛煉,經(jīng)驗(yàn)得到了豐富,并且意志品質(zhì)力。這是我們都希望看到的也正是我們進(jìn)行畢業(yè)設(shè)計(jì)的目的所在。</p><p> 在此次設(shè)計(jì)中我學(xué)到了很多東西,包括對(duì)單片機(jī)的更進(jìn)一步的認(rèn)識(shí)、一些關(guān)于音樂(lè)的基礎(chǔ)知識(shí)的了解
77、、匯編語(yǔ)言的應(yīng)用的學(xué)習(xí)等等。</p><p> 首先,在這次設(shè)計(jì)中,通過(guò)上網(wǎng)或、圖書(shū)館或是上書(shū)店翻閱相關(guān)的單片機(jī)資料,同時(shí)也在幫同學(xué)查看和解決一些問(wèn)題(畢業(yè)設(shè)計(jì)中的硬件問(wèn)題)時(shí),更加清楚地認(rèn)識(shí)了單片機(jī),讓在我原來(lái)的硬件基礎(chǔ)知識(shí)的基礎(chǔ)上又認(rèn)識(shí)了解幾款單片機(jī)(AT89S52)及它的原理。</p><p> 其次,就是在此次設(shè)計(jì)中關(guān)系到了音樂(lè)的一些基礎(chǔ)知識(shí),音樂(lè)是由不同的音符組成,不同的音符
78、對(duì)應(yīng)著不同的頻率產(chǎn)生,產(chǎn)生有規(guī)律的頻率樂(lè)音。了解音樂(lè)的產(chǎn)生,音樂(lè)體系中中音高關(guān)系的最小計(jì)量單位及音符的定義,同時(shí)也知道了音符又分為了以下幾種:全音符、二分音符、四分音符、八分音符、十六分音符、三十二分音符、六十四分符。</p><p> 最后,讓我感受最大的是將理論和實(shí)踐相結(jié)是要解決很多問(wèn)題經(jīng)過(guò)一定的挫折才能很好的完成任務(wù),因此在其過(guò)程中考慮問(wèn)題時(shí)一定要謹(jǐn)慎、全面,出現(xiàn)問(wèn)題時(shí)不應(yīng)該氣餒,要沉著思考或是向同學(xué)、老
79、師請(qǐng)求幫忙。</p><p> 感謝授我業(yè)、解我惑的老師。沒(méi)有你們的諄諄教導(dǎo),我就不可能具備扎實(shí)的道路與橋梁工程的專(zhuān)業(yè)知識(shí)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 樊明龍、任麗靜.《單片機(jī)原理與應(yīng)用》.化學(xué)工業(yè)出版社,2001</p><p> [2] 謝嘉奎.《電子線(xiàn)路》.高等教
80、育出版社,2002</p><p> [3] 馬家辰、孫玉德.《MCS-51單片機(jī)原理及接口技術(shù)》. </p><p> 哈爾濱工業(yè)大學(xué)出版社,2001[4] 李華.《MCS-51單片機(jī)接口技術(shù)與運(yùn)用》.</p><p> 北京航天航空大學(xué)出版社,2003[5] 胡漢才.《單片機(jī)接口技術(shù)與運(yùn)用》.清華大學(xué)出版社,2001</p><p&
81、gt; [6] 何立民.《單片機(jī)高級(jí)教程》.北京航空航天大學(xué)出版社,2001 </p><p> [7] 趙曉安.《MCS-51單片機(jī)原理及應(yīng)用》.天津大學(xué)出版社,2001.3 </p><p> [8] 李廣第.《單片機(jī)基礎(chǔ)》.北京航空航天大學(xué)出版社,1999 </p><p> [9] 徐惠民、安德寧.《單片微型計(jì)算機(jī)原理接口與應(yīng)用》. </p&g
82、t;<p> 北京郵電大學(xué)出版社,1996 </p><p> [10] 夏繼強(qiáng).《單片機(jī)實(shí)驗(yàn)與實(shí)踐教程》.北京航空航天大學(xué)出版社,2001 </p><p><b> 附錄一-源程序</b></p><p> #include <REG52.H></p><p> #define u
83、int unsigned int</p><p> #define uchar unsigned char</p><p> sbit key1=P3^4;</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><p> sbit key4=P3^7;&l
84、t;/p><p> sbit dula=P2^6;</p><p> sbit wela=P2^7;</p><p> sbit beep=P1^2; //將beep位定義為P3.7</p><p> uint N; //儲(chǔ)存定時(shí)器的定時(shí)常數(shù)</p><p> uint Timer1_H,Timer1
85、_L;</p><p> uchar hour,min,sec,num,fen,t2;</p><p> uchar fen,miao,num,num1,flag,num2,t1,date;</p><p> uchar key2_scan();</p><p> uchar code tabledu[]= //不帶小數(shù)點(diǎn)的數(shù)碼管段
86、</p><p> {0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f,0x77,0x7c,</p><p> 0x39,0x5e,0x79,0x71};</p><p> uchar code tabledu1[]=
87、 //帶小數(shù)點(diǎn)的數(shù)碼管段</p><p> {0xbf,0x86,0xdb,0xcf,</p><p> 0xe6,0xed,0xfd,0x87,</p><p> 0xff,0xef,0xf7,0xfc,</p><p> 0x39,0x5e,0x79,0x71};</p><p> //以下是C調(diào)低音的音
88、頻宏定義</p><p> #define L1 262 //將"L1"宏定義為低音"1"的頻率262Hz時(shí)間是1/262=3826/2 us 取半周期</p><p> #define L2 286 //將"L2"宏定義為低音"2"的頻率286Hz</p><
89、p> #define L3 311 //將"L3"宏定義為低音"3"的頻率311Hz</p><p> #define L4 349 //將"L4"宏定義為低音"4"的頻率349Hz</p><p> #define L5 392 //將"L5"宏定義為低
90、音"5"的頻率392Hz</p><p> #define L6 440 //將"l_a"宏定義為低音"6"的頻率440Hz</p><p> #define L7 494 //將"L7"宏定義為低音"7"的頻率494Hz</p><p> //
91、以下是C調(diào)中音的音頻宏定義</p><p> #define Z1 523 //將"Z1"宏定義為中音"1"的頻率523Hz</p><p> #define Z2 587 //將"Z2"宏定義為中音"2"的頻率587Hz</p><p> #define Z3
92、 659 //將"Z3"宏定義為中音"3"的頻率659Hz</p><p> #define Z4 698 //將"Z4"宏定義為中音"4"的頻率698Hz</p><p> #define Z5 784 //將"Z5"宏定義為中音"5"
93、的頻率784Hz</p><p> #define Z6 880 //將"Z6"宏定義為中音"6"的頻率880Hz</p><p> #define Z7 987 //將"Z7"宏定義為中音"7"的頻率523H </p><p> //以下是C調(diào)高音的
94、音頻宏定義</p><p> #define H1 1046 //將"H1"宏定義為高音"1"的頻率1046Hz</p><p> #define H2 1174 //將"H2"宏定義為高音"2"的頻率1174Hz</p><p> #define H3 1318
95、 //將"H3"宏定義為高音"3"的頻率1318Hz</p><p> #define H4 1396 //將"H4"宏定義為高音"4"的頻率1396Hz</p><p> #define H5 1567 //將"H5"宏定義為高音"5"的頻率1
96、567Hz</p><p> #define H6 1760 //將"H6"宏定義為高音"6"的頻率1760Hz</p><p> #define H7 1975 //將"H7"宏定義為高音"7"的頻率1975Hz</p><p> uint code f[]= /
97、/音符表</p><p> {/**/ Z6,Z7,/**/H1,Z7,H1,H3,/**/Z7,Z3,Z3,/**/Z6,Z5,Z6,H1,/**/Z5,0x00,Z3,Z3,/**/Z4,Z3,Z4,H1,/**/</p><p> /**/Z3,0x00,H1,H1,H1,/**/Z7,Z4,Z4,Z7,/**/Z7,0,Z6,Z7,/**/H1,Z7,H1,H3,/**/
98、Z7,0,Z3,Z3,/**/Z6,Z5,Z6,H1,/**/</p><p> /**/Z5,0x00,Z3,/**/Z4,H1,Z7,Z7,H1,/**/H2,H2,H3,H1,0,/**/H1,Z7,Z6,Z6,Z7,Z5,/**/Z6,0,H1,H2,/**/H3,H2,H3,H5,/**/</p><p> /**/H2,0,Z5,Z5,/**/H1,Z7,H1,Z3,/**
99、/H3,0,0,/**/Z6,Z7,H1,Z7,H2,H2,/**/H1,Z5,Z5,0,/**/H4,H3,H2,H1,/**/</p><p> /**/H3,/**/H3,0,H3,/**/H6,H5,H5,/**/H3,H2,H1,0,H1,/**/H2,H1,H2,H2,H5,/**/H3,0,H3,/**/</p><p> /**/H6,H5,/**/H3,H2,H1,0
100、,H1,/**/H2,H1,H2,H2,Z7,/**/Z6,0,Z6,Z7,/**/Z6,/**/0Xff</p><p><b> };</b></p><p> uint code jp[]=</p><p> {/**/ 2,2,/**/6,2,4,4,/**/12,2,2,/**/6,2,4,4,/**/8,4,2,
101、2,/**/6,2,2,6,/**/</p><p> /**/8,2,2,2,2,/**/6,2,4,4,/**/8,4,2,2,/**/6,2,4,4,/**/8,4,2,2,/**/6,2,4,4,/**/</p><p> /**/12,2,2,/**/4,2,2,4,4,/**/2,2,2,4,4,/**/4,2,2,2,4,4,/**/8,4,2,2,/**/6,2,4,4
102、,/**/</p><p> /**/8,2,4,4,/**/2,2,4,4,/**/8,4,4,/**/2,2,4,4,2,2,/**/6,2,4,4,/**/4,4,4,4,/**/</p><p> /**/16,/**/8,4,4,/**/8,4,4,/**/2,2,4,2,2,/**/4,2,2,2,4,/**/8,4,4,/**/</p><p>
103、 /**/8,8,/**/2,2,8,2,2,/**/4,2,2,2,4,/**/8,4,2,2,/**/16,</p><p><b> };</b></p><p><b> /*延時(shí)函數(shù)*/</b></p><p> /*void delay(unsigned char time)</p><
104、;p><b> {</b></p><p> unsigned char t1;</p><p> unsigned long t2;</p><p> for(t1=0;t1<time;t1++) // t or time</p><p><b> {</b></p
105、><p> for(t2=0;t2<8000;t2++)//對(duì)于12MHz的時(shí)鐘,延時(shí)為125ms(1/4節(jié)拍)</p><p><b> {}</b></p><p><b> }</b></p><p><b> }*/</b></p><p&
106、gt; void dingshi_display(uchar fen,uchar miao); </p><p> //延時(shí)函數(shù)125ms</p><p> void delay_125()</p><p><b> {</b></p><p><b> ui
107、nt x,y;</b></p><p> for(x=124;x>0;x--)</p><p> for(y=125;y>0;y--);</p><p><b> }</b></p><p> void delay(uint z) //延時(shí)1ms的函數(shù)</p><p&
108、gt;<b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p>
109、<p> void dingshi_display(uchar fen,uchar miao)</p><p><b> {</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><
110、;b> wela=0;</b></p><p><b> P0=0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[fen/10];</p><p><b> dula=0;</b></
111、p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfe;</b></p><p><b> wela=0;</b></p><p><b
112、> delay(1);</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><b> wela=0;</b></p><p><b> P0=0x00;</b&
113、gt;</p><p><b> dula=1;</b></p><p> P0=tabledu1[fen%10];</p><p> dula=0; </p><p><b> P0=0xff;</b></p><p><b> wela=1;<
114、;/b></p><p><b> P0=0xfd;</b></p><p><b> wela=0;</b></p><p><b> delay(1);</b></p><p><b> wela=1;</b></p>&
115、lt;p><b> P0=0xff;</b></p><p><b> wela=0;</b></p><p><b> P0=0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[m
116、iao/10];</p><p><b> dula=0;</b></p><p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xfb;</b></p>&
117、lt;p><b> wela=0;</b></p><p><b> delay(1);</b></p><p><b> wela=1;</b></p><p><b> P0=0xff;</b></p><p><b> we
118、la=0;</b></p><p><b> P0=0x00;</b></p><p><b> dula=1;</b></p><p> P0=tabledu[miao%10];</p><p><b> dula=0;</b></p>&l
119、t;p><b> P0=0xff;</b></p><p><b> wela=1;</b></p><p><b> P0=0xf7;</b></p><p><b> wela=0;</b></p><p> delay(1);&l
120、t;/p><p><b> }</b></p><p> void init()</p><p><b> {</b></p><p><b> dula=0;</b></p><p><b> wela=0;</b><
121、/p><p><b> hour=0;</b></p><p><b> min=0;</b></p><p><b> sec=0;</b></p><p><b> fen=5;</b></p><p><b>
122、 miao=0;</b></p><p><b> num2=1;</b></p><p><b> flag=0;</b></p><p> TMOD=0X11;//設(shè)定定時(shí)器的工作方式</p><p> TH0=(65536-50000)/256;//定時(shí)50ms</p
123、><p> TL0=(65536-50000)%256;</p><p> TH1=(65536-50000)/256;</p><p> TL1=(65536-50000)%256;</p><p> EA=1;//開(kāi)總中斷</p><p> ET0=1;//開(kāi)定時(shí)中斷</p><p>
124、 //TR0=1;//啟動(dòng)定時(shí)器0</p><p> ET1=1;//開(kāi)定時(shí)中斷</p><p> TR1=0;//啟動(dòng)定時(shí)器0</p><p><b> }</b></p><p> void time_1(void) interrupt 3 </p><p><b>
125、{</b></p><p> TR1=0; </p><p> beep=~beep;</p><p> TH1=Timer1_H;</p><p> TL1=Timer1_L;</p><p> TR1=1;</p><p><b> }&l
126、t;/b></p><p> void time0() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b>
127、t1++;</b></p><p> if(t1==20) //當(dāng)?shù)绞?S時(shí),</p><p><b> {</b></p><p> t1=0;//清零,從新開(kāi)始計(jì)算</p><p> if(miao==0&&fen!=0)//當(dāng)?shù)绞?分時(shí),</p><p>
128、<b> {</b></p><p> miao=59;//秒鐘到最大值</p><p> fen--;//分鐘減1</p><p><b> }</b></p><p> else if(miao==0&&fen==0)</p><p><
129、b> {</b></p><p><b> TR0=0; </b></p><p><b> }</b></p><p><b> else</b></p><p> miao--;//秒鐘減1</p><p><b
130、> }</b></p><p><b> }</b></p><p> uchar key1_scan()//掃描選擇定時(shí)的大小</p><p><b> {</b></p><p> if(key1==0) //有按鍵按下</p><p>
131、<b> {</b></p><p> delay(5); //延時(shí)一下去抖</p><p> if(key1==0)//確實(shí)是有按鍵按下</p><p><b> {</b></p><p> while(key1!=1);//松手有效</p><p>
132、delay(5); //松手延時(shí)去抖</p><p> if(key1==1) //確實(shí)是松手了</p><p><b> num++;</b></p><p><b> }</b></p><p><b> }</b></p><p&g
133、t; return num;</p><p><b> }</b></p><p> void scan() //工作掃描</p><p><b> {</b></p><p> if(key2==0) //有按鍵按下</p><p><b>
134、 {</b></p><p> delay(5); //延時(shí)一下去抖</p><p> if(key2==0)//確實(shí)是有按鍵按下</p><p><b> {</b></p><p> while(key2!=1);//松手有效</p><p> delay(5);
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 音樂(lè)提示定時(shí)器--單片機(jī)課程設(shè)計(jì)
- 音樂(lè)倒數(shù)定時(shí)器課程設(shè)計(jì)
- 音樂(lè)提示定時(shí)器單片機(jī)原理與應(yīng)用課程設(shè)計(jì)
- 基于單片機(jī)匯編編程的音樂(lè)提示定時(shí)器課程設(shè)計(jì)報(bào)告
- 30秒定時(shí)器課程設(shè)計(jì)報(bào)告
- 微機(jī)原理課程設(shè)計(jì)—— 定時(shí)器系統(tǒng)
- 可編程定時(shí)器課程設(shè)計(jì)--- 寬范圍可編程定時(shí)器
- 數(shù)顯定時(shí)器課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--秒表定時(shí)器
- 單片機(jī)課程設(shè)計(jì)--定時(shí)器實(shí)驗(yàn)
- 單片機(jī)課程設(shè)計(jì)---加熱定時(shí)器
- 單片機(jī)課程設(shè)計(jì)智能定時(shí)器
- 數(shù)電實(shí)驗(yàn)課程設(shè)計(jì)--數(shù)字定時(shí)器
- 30秒定時(shí)器 非常詳細(xì) 論文 課程設(shè)計(jì)
- 單片機(jī)經(jīng)典數(shù)字定時(shí)器課程設(shè)計(jì)
- 使用定時(shí)器延時(shí)單片機(jī)課程設(shè)計(jì)報(bào)告
- 電子定時(shí)器-單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 課程設(shè)計(jì)說(shuō)明書(shū)-洗衣機(jī)定時(shí)器
- arm課程設(shè)計(jì)報(bào)告--使用中斷定時(shí)器設(shè)計(jì)時(shí)鐘
- 基于單片機(jī)的9h定時(shí)器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論