[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc

上傳人:good****022 文檔編號(hào):116411331 上傳時(shí)間:2022-07-05 格式:DOC 頁數(shù):33 大小:847.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc_第1頁
第1頁 / 共33頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc_第2頁
第2頁 / 共33頁
[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc_第3頁
第3頁 / 共33頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)硬件及網(wǎng)絡(luò)]電子琴設(shè)計(jì)基于STC89C51單片機(jī).doc(33頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、 摘要 隨著科學(xué)技術(shù)的不斷發(fā)展,單片機(jī)的應(yīng)用日益成熟。單片機(jī)集成度高、處理功能 強(qiáng)大、價(jià)格低廉使其在各個(gè)領(lǐng)域得到廣泛應(yīng)用。同時(shí)電子琴作科學(xué)技術(shù)與音樂共同 發(fā)展的產(chǎn)物,在這個(gè)電子信息化的時(shí)代,為音樂的大眾化做出了不可代替的貢獻(xiàn)。 本文主要介紹一種基于 51 單片機(jī)的簡易電子琴設(shè)計(jì)方案。它采用了STC 公 司出品的一款低功耗、高性能單片機(jī)STC89C52 芯片作為主控單元, 與 4*4 矩陣 鍵盤、復(fù)位電路、LED 雙位數(shù)碼顯示器、揚(yáng)聲器等組成主控核心模塊。文章詳細(xì)論 述了電子琴硬件設(shè)計(jì)和軟件結(jié)構(gòu)設(shè)計(jì)流程,采用了Altium Designer 09 畫出原理圖、 PCB 圖,通過 Keil 編程軟

2、件對電子琴進(jìn)行軟件編程,然后進(jìn)行軟硬件的調(diào)試運(yùn)行并 將程序燒錄到 STC89C52 芯片中。此系統(tǒng)運(yùn)行比較穩(wěn)定,具有硬件設(shè)計(jì)電路簡單、清 晰,成本低,軟件功能完善,控制系統(tǒng)牢靠,性價(jià)比高等優(yōu)點(diǎn),具有一定的實(shí)用和參 考價(jià)值。 關(guān)鍵詞:STC89C52;電子琴;矩陣鍵盤 基于單片機(jī)的簡易電子琴設(shè)計(jì) II Abstract Along with the development of science and technology, the application of SCM increasingly mature. Single chip microcomputer high level of in

3、tegration, processing powerful, low prices make it is widely used in various fields. At the same time the keyboards for science and technology and music common development of the product, in the electronic information era, for musics popular do cant replace contribution. This paper mainly introduces

4、 a kind of simple keyboard based on 51 SCM design scheme. It uses the STC product of our company a low power consumption, high performance microprocessor STC89C52 chips as the master unit, and 4 * 4 matrix keyboard and reset circuit, LED digital display, a double master core module and other compone

5、nts of the speaker. This paper discusses the design of hardware and software structure keyboard design process, the use of a Altium Designer 09 draw a diagram, PCB figure, through the Keil software keyboard to software programming, then the software and hardware debugging run and will burn to STC89C

6、52 chip program. Operation of the system is stable and has the hardware circuit design simple, clear, and the cost is low, the software perfect function, control system firm, price higher advantages, has certain practical and reference value. Key words : stc89c52; keyboard; matrix keyboard 基于單片機(jī)的簡易電

7、子琴設(shè)計(jì) III 基于單片機(jī)的簡易電子琴設(shè)計(jì) 目錄 摘要 I Abstract .II 1 緒論1 1.1 設(shè)計(jì)的目的和意義.1 1.2 設(shè)計(jì)的主要內(nèi)容.1 2 系統(tǒng)概述1 2.1 系統(tǒng)工作原理.1 2.2 系統(tǒng)結(jié)構(gòu)組成.1 2.2.1 電源電路2 2.2.2 控制部分2 2.2.3 顯示部分2 2.2.4 發(fā)聲部分2 2.3 主要芯片及元件的介紹.2 2.3.1 STC89C52 單片機(jī)簡介2 2.3.2 芯片引腳介紹4 2.3.3 STC89C52 時(shí)鐘介紹7 2.3.4 雙位 LED 數(shù)碼顯示器簡介7 3 硬件電路的設(shè)計(jì)9 3.1 電源電路的設(shè)計(jì).9 3.2 復(fù)位電路的設(shè)計(jì).10 3.2

8、.1 復(fù)位操作10 3.2.2 復(fù)位信號(hào)及其產(chǎn)生11 3.3 鍵盤控制電路.12 3.3.1 矩陣式鍵盤的概述12 3.3.2 矩陣式鍵盤按鍵識(shí)別原理及方法12 3.4 顯示電路.13 4 系統(tǒng)軟件設(shè)計(jì)14 4.1 如何利用單片機(jī)實(shí)現(xiàn)音樂節(jié)拍.14 4.2 如何用單片機(jī)產(chǎn)生音頻脈沖.15 4.2.1 音符和頻率的關(guān)系15 4.2.2 定義初值16 4.3 音樂發(fā)生程序流程圖.18 結(jié) 論19 參考文獻(xiàn)20 附錄一 電子琴源程序21 附錄二 原理圖25 附錄三 PCB 圖.26 附錄四 實(shí)物圖27 致 謝28 基于單片機(jī)的簡易電子琴設(shè)計(jì) 1 1 緒論 1.1 設(shè)計(jì)的目的和意義 單片機(jī)又稱單片微型

9、計(jì)算機(jī), 英文字母的縮寫 MCU。自上世紀(jì) 70 年代問 世以來,因其較高的性價(jià)比備受人們的親睞,單片機(jī)廣泛應(yīng)用于工業(yè)自動(dòng)化,自動(dòng)檢 測系統(tǒng)、汽車電子設(shè)備、家用電器和各種終端及計(jì)算機(jī)外部設(shè)備等等。單片機(jī)芯片具 有體積小、攜帶方便、低功耗、速度快、可靠性能高、抗干擾能力強(qiáng)和價(jià)格低廉等等 等優(yōu)點(diǎn),通常在其外部配置一些外圍電路就可構(gòu)成一整套完整的控制系統(tǒng)。 單片機(jī)(Microcontroller,又嵌入式微控制器) ,就是在一塊硅片上集成了各種部件 的微型計(jì)算機(jī)。這些部件包括中央處理單元 (CPU),數(shù)據(jù)存儲(chǔ)器(RAM),程序存儲(chǔ)器 (ROM), 定時(shí)器/計(jì)數(shù)器,多種 I/O 接口電路和中斷系統(tǒng)等等

10、。 本文設(shè)計(jì)是以 STC89C52 單片機(jī)為核心的簡易電子琴,重點(diǎn)用到了單片機(jī)定時(shí)器 可以產(chǎn)生不同的脈沖,不同的脈沖經(jīng)驅(qū)動(dòng)電路放大后可以產(chǎn)生不同頻率音階,從而可 以彈出美妙的音樂。本系統(tǒng)是簡易的電子琴,運(yùn)用 4*4 矩陣鍵盤充當(dāng)電子琴的按鍵, 一個(gè)按鍵代表一個(gè)音階,并采用矩陣鍵盤行掃描法,通過程序來控制音階的發(fā)生。 1.2 設(shè)計(jì)的主要內(nèi)容 本文介紹了簡易電子琴的設(shè)計(jì)和制作方案的確定以及設(shè)計(jì)流程,詳細(xì)闡述了簡 易電子琴的硬件設(shè)計(jì)和軟件設(shè)計(jì)。本設(shè)計(jì)主要包括:電源電路、復(fù)位電路、顯示單元 和 4*4 矩陣鍵盤。該系統(tǒng)具有運(yùn)行穩(wěn)定性好、可靠度高等優(yōu)點(diǎn),具有一定的參考價(jià)值。 2 系統(tǒng)概述 2.1 系統(tǒng)工

11、作原理 根據(jù)方案的要求,將程序?qū)懭?STC89C52 單片機(jī)芯片。利用不同的音階的頻率不 一樣,用單片機(jī)來模擬電子琴,可以使單片機(jī)的定時(shí)器工作在計(jì)數(shù)器模式下,工作方 式設(shè)為方式 1,改變 TH0 和 TH1 來產(chǎn)生不同的頻率,從而產(chǎn)生不同的音階。 P1 口 接 4*4 矩陣鍵盤行和列,用行掃描法讀取 P1 口外接的鍵盤,若有鍵按下:雙位數(shù)碼 顯示管顯示 0116;若沒有鍵按下則顯示 00,當(dāng)按下復(fù)位鍵的開關(guān)后,雙位數(shù)碼顯 示管顯示 00。單片機(jī) P3.7 作為音頻放大電路的輸入。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 2 2.2 系統(tǒng)結(jié)構(gòu)組成 如圖 1 所示該系統(tǒng)主要包括電源電路、控制部分、顯示部分和發(fā)

12、聲部分 圖 1 系統(tǒng)結(jié)構(gòu)組成 2.2.1 電源電路 由于電子制作一般都是用直流電源,故做此電源將 220V 的市交流電轉(zhuǎn)為所需 要的直流電壓。220V 市電先經(jīng)變壓器降壓,然后經(jīng)過二極管橋式整流,電容濾波后 送入 LM317 的輸入端,在 LM317 的輸出端直流電壓,當(dāng)調(diào)節(jié)滑動(dòng)變阻器的時(shí)候可 以調(diào)節(jié)輸出的直流電壓的大小。 2.2.2 控制部分 控制部分主要由 4*4 矩陣鍵盤組成。電子琴需要 16 個(gè)鍵,為了減少占用 I/O 端 口,通常采用矩陣型鍵盤。將按鍵排成行和列,按鍵位于行和列的交叉點(diǎn)上。這樣一 個(gè)端口就可以連接 4*4 的矩陣鍵盤了。 2.2.3 顯示部分 顯示部分是一個(gè)雙位數(shù)碼顯

13、示管,可以顯示 0016。當(dāng)有按鍵按下的時(shí)候,數(shù) 碼顯示管就會(huì)顯示相應(yīng)的數(shù)字。復(fù)位時(shí)為 00。 2.2.4 發(fā)聲部分 用喇叭來作為發(fā)聲元件,用 8550 三極管來驅(qū)動(dòng)喇叭發(fā)聲。 2.3 主要芯片及元件的介紹 2.3.1 STC89C52 單片機(jī)簡介 STC89C52 單片機(jī) 復(fù)位電路 4*4 矩陣鍵盤 時(shí)鐘電路 發(fā)聲模塊 顯示模塊 電源電路 基于單片機(jī)的簡易電子琴設(shè)計(jì) 3 STC89C52 是由 STC 公司生產(chǎn)一款功耗低、性能高的 8 位微控制器,兼容 MSC51 指令系統(tǒng),8K 可反復(fù)擦寫 Flash ROM。在單塊芯片上,具有 8 位 CPU 和可編程的 Flash,使得 STC89C5

14、2 能為大多數(shù)嵌入式控制體統(tǒng)提供靈活度且有效的解決方案。 STC89C52 具有以下功能部件和特征: (1)8 位微處理器(CPU) 。 (2)數(shù)據(jù)存儲(chǔ)器(512B RAM) 。 (3)程序存儲(chǔ)器(4K EEPROM) 。 (4)4 個(gè)可編程并行 I/O 口,256*8bit 內(nèi)部 RAM。 (5)一個(gè)全雙工串行口。 (6)三個(gè) 16 位定時(shí)器/計(jì)數(shù)器,時(shí)鐘頻率為 024MHZ。 (7)MAX810 復(fù)位電路。 (8)兩個(gè)串行中斷,可編程 UART 串行通道。 (9)兩個(gè)外部中斷,共有 6 個(gè)中斷源。 (10)兩個(gè)讀寫中斷串口,3 級(jí)加密位。 (11)一個(gè)看門狗定時(shí)器。 (12)低功耗空閑和掉

15、電模式,可以軟件設(shè)置睡眠和喚醒功能。 (13)工作電壓為 5.5V3.3V(5V 單片機(jī)) 。 (14)工作頻率 040MHz,相當(dāng)于普通 8051 的 080MHZ,實(shí)際的頻率可以達(dá)到 48MHZ。 (15)工作溫度為:-4085(工業(yè)級(jí)) ,075(商業(yè)級(jí)) 。 (16)封裝:LQFP-44,PDIP-40,PQFP-44。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 4 圖 2 SCT89C52 雙列直插式引腳圖 2.3.2 芯片引腳介紹 (1)電源引腳 電源引腳用于是接入單片機(jī)的工作電源。 Vcc(pin 40):電源接入,接+5V 電源。 Vss(pin 20):接數(shù)字地。 (2)時(shí)鐘引腳 XTAL

16、1(pin 19):片內(nèi)振蕩電路的輸入端。當(dāng)使用片內(nèi)振蕩器時(shí),此引腳接微 調(diào)電容和石英晶體;當(dāng)采用外接時(shí)鐘源時(shí),引腳接振蕩器信號(hào)。 XTAL2(pin 20):片內(nèi)振蕩電路的輸出端。當(dāng)使用片內(nèi)振蕩器時(shí),和 pin 19 的接 法一樣;當(dāng)采用外部時(shí)鐘源時(shí),此引腳懸空。 (3)控制引腳 RST (pin 9):復(fù)位信號(hào)輸入端,引腳上出現(xiàn) 2 個(gè)機(jī)器周期的高電平時(shí)單片機(jī)復(fù)位。 Vpp 具有第二引腳功能,當(dāng)對片內(nèi) Flash 進(jìn)行編程時(shí),此引腳接入編程電壓。 ALE/PROG(pin 30):用于地址鎖存。若訪問外部程序存儲(chǔ)器(ROM)和數(shù)據(jù)存 儲(chǔ)器(RAM) ,ALE 將用于鎖存低 8 位的地址。此

17、時(shí),ALE 仍會(huì)以時(shí)鐘振蕩頻率的 1/6 輸出一個(gè)固定的脈沖信號(hào),因此它可用于對外輸出時(shí)鐘或定時(shí)。但是要注意:每 次訪問外部數(shù)據(jù)存儲(chǔ)器(RAM)時(shí)需要跳過一個(gè) ALE 脈沖。 進(jìn)行 Flash 存儲(chǔ)器編程 時(shí),此引腳還可用于輸入編程脈沖(PROG) 。此外,還可通過對特殊功能寄存器 基于單片機(jī)的簡易電子琴設(shè)計(jì) 5 (SFR)中的 8EH 單元的 D0 位置位,可以禁止 ALE 操作。該位置位后,只有 MOVX 和 MOVC 指令才能把 ALE 激活。此外,該引腳將會(huì)被拉高,單片機(jī)執(zhí)行外 部程序時(shí),應(yīng)設(shè)置 ALE 禁止位無效。 PSEN(pin 29):片外存儲(chǔ)器讀選通信號(hào),低電平有效。 EA/

18、Vpp(pin 31):程序存儲(chǔ)器的內(nèi)部讀選通。接低電平從外部存儲(chǔ)器讀取指令, 若接高電平從內(nèi)部程序存儲(chǔ)器讀取指令。 (4)并行 I/O 口引腳(32 根) STC89C52 有 4 組 8 位可編程的 I/O 口,分別為 P0、P1、P2、P3 口,共 32 根。 P0 口(pin 39pin 32):8 位雙向 I/O 口線,分別為 P0.0P0.7。P0 口是一個(gè)漏 極開路的 I/O 口。作為輸出口,每一位均可以驅(qū)動(dòng) 8 個(gè) TTL 負(fù)載。當(dāng)對 P0 端口寫入 “1”的時(shí)侯,該引腳可以用作高阻抗輸入。當(dāng)訪問外部程序存儲(chǔ)器或者數(shù)據(jù)存儲(chǔ)器時(shí), P0 口也被作為地址總線(低 8 位)和數(shù)據(jù)分時(shí)

19、復(fù)用。在這種模式下,P0 不需要外加 上拉電阻。P0 口也可以作為 I/O 口使用,也可以用來接收指令字節(jié);在程序校驗(yàn)時(shí), 輸出指令字節(jié),此時(shí)需要加 10K4.7K 的外部上拉電阻。 P1 口(pin 1pin 8):8 位準(zhǔn)雙向 I/O 口線,分別為 P1.0-P1.7。 P1 口內(nèi)部具 有上拉電阻,P1 口輸出緩沖器能夠驅(qū)動(dòng) 4 個(gè) TTL 邏輯電平。若對 P1 口寫入“1”的時(shí) 候,內(nèi)部上拉電阻就會(huì)把端口拉高,此時(shí)可以用作輸入口。當(dāng)作為輸入口使用時(shí),被 外部拉低的引腳因?yàn)槠鋬?nèi)部電阻,將輸出電流。 此外,P1.0 和 P1.2 分別可以作定時(shí)器/計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入和定時(shí)器/計(jì)數(shù)器

20、2 的觸發(fā)輸入。具體如下表 1 所示。 在 Flash 編程和校驗(yàn)時(shí),P1 口用于接收低 8 位 地址。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 6 表 1 P1 口引腳第二功能 引腳 第二功能 說明 P1.0 T2 定時(shí)器/計(jì)數(shù)器 t2 的 計(jì)數(shù)輸入,時(shí)鐘輸出 P1.1 T2EX 定時(shí)器/計(jì)數(shù)器 t2 的捕 捉/重載觸發(fā)信號(hào) P1.5 MOSI 在線系統(tǒng)編程用 P1.6 MISO 在線系統(tǒng)編程用 P1.7 SCK 在線系統(tǒng)編程用 P2 口(pin 21pin 28):8 位雙向 I/O 口線,分別為 P2.0P2.7。P2 輸出緩沖器能 夠驅(qū)動(dòng) 4 個(gè) TTL 邏輯電平。當(dāng)對 P2 端口寫入“1”的時(shí)候

21、,內(nèi)部上拉電阻就會(huì)把端口 拉高,此時(shí)就可以作為輸入口使用。當(dāng)作為輸入使用時(shí),被外部拉低的引腳因?yàn)槠鋬?nèi) 部電阻, 就會(huì)輸出電流。 在訪問其外部 ROM 或用 16 位地址讀取外部 RAM 時(shí),P2 口就會(huì)送出高八位 地址。此時(shí),P2 口利用內(nèi)部上拉發(fā)送“1”。當(dāng)使用 8 位地址,訪問其外部數(shù)據(jù)存儲(chǔ) 器(RAM)時(shí),P2 口將會(huì)輸出 P2 鎖存器的內(nèi)容。在 Flash 編程或者校驗(yàn)時(shí),P2 口 也用于接收高 8 位地址和某些控制信號(hào)。 P3 口(pin 10pin 17): 8 位雙向 I/O 口線,分別為 P3.0P3.7。P3 口其內(nèi)部具 有上拉電阻,P2 口輸出緩沖器能夠驅(qū)動(dòng) 4 個(gè) TTL

22、 邏輯電平。當(dāng)對 P3 口寫入“1”的 時(shí)候,內(nèi)部上拉電阻就會(huì)把端口拉高,此時(shí)就可以作為輸入口使用。當(dāng)作為輸入使用 時(shí),被外部拉低的引腳因?yàn)槠鋬?nèi)部電阻,將會(huì)輸出電流。P3 口也作為 STC8C52 具有 第二功能的引腳使用,如下表 2 所示。當(dāng)然,在 Flash 編程和校驗(yàn)時(shí),P3 口也接收某 些控制信號(hào)。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 7 表 2 P3 口引腳第二功能 P3.0RXD 串行輸入口 P3.1TXD 串行輸出口 P3.2INT0 外中斷 0 P3.3INT1 外中斷 1 P3.4T0 定時(shí)/計(jì)數(shù)器 0 P3.5T1 定時(shí)/計(jì)數(shù)器 1 P3.6WR 外部數(shù)據(jù)存儲(chǔ)器寫選通 P3.7RD

23、 外部數(shù)據(jù)存儲(chǔ)器讀選通 2.3.3 STC89C52 時(shí)鐘介紹 STC89C52 內(nèi)部有一個(gè)高增益的反相放大器,此放大器用于構(gòu)成振蕩器,其引腳 TXD 和 RXD 分別是這個(gè)放大器的輸出端和輸入端。STC89C52 的時(shí)鐘可以由內(nèi)部方 式產(chǎn)生,也可以由外部方式產(chǎn)生。其內(nèi)部方式的時(shí)鐘電路如圖 3(a)所示,在 TXD 和 RXD 引腳上接定時(shí)元件,其內(nèi)部振蕩器就會(huì)產(chǎn)生自激振蕩。定時(shí)元器件一般采用 石英晶體和電容組成并聯(lián)諧振回路。晶體振蕩頻率選擇范圍為:1.212MHz,電容 值范圍為:530pF,電容頻率起到微調(diào)的作用。 時(shí)鐘采用外部方式連接的電路如圖 3(b)所示,TXD 接外部振蕩器,RXD

24、 接地。 對外部振蕩信號(hào)沒有特殊要求,只需要保證脈沖的寬度,所以一般采用頻率低于 12MHz 的方波信號(hào)。片內(nèi)時(shí)鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個(gè)兩相時(shí)鐘 P1 和 P2,供 STC89C52 單片機(jī)使用。 (a)內(nèi)部方式時(shí)鐘電路 (b)外部方式時(shí)鐘電路 圖 3 時(shí)鐘電路 2.3.4 雙位 LED 數(shù)碼顯示器簡介 數(shù)碼管能在低電壓、小電流驅(qū)動(dòng)下發(fā)光,能夠與 CMOS、TTL 電路兼容。它的發(fā)光 響應(yīng)時(shí)間非常短,通常小于 0.1s,其高頻特性好,單色性好,亮度比較高。LED 使用 壽命很長,通常在 10 萬小時(shí)以上,甚至可以達(dá)到 100 萬小時(shí)以上,且其成本很低。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 8

25、 LED 數(shù)碼管已被廣泛運(yùn)用于計(jì)算機(jī)的數(shù)顯器件、數(shù)控裝置等等。 根據(jù) LED 數(shù)碼管顯示位數(shù)的多少,可以把數(shù)碼管劃分為一位、雙位、多位 LED 數(shù) 碼管顯示器。一位的 LED 我們通常稱為 LED 數(shù)碼管,兩位以上(包括兩位)我們一般 稱為顯示器。雙位 LED 顯示器是把兩只數(shù)碼管封裝成一體,它亮度均勻,一致性好, 光衰低,可靠性高而且結(jié)構(gòu)緊湊、成本比較低(與兩只一位的數(shù)碼管相比較)。本系 統(tǒng)采用的是七段雙位的數(shù)碼顯示器,7 段數(shù)碼顯示器由 7 段發(fā)光二極管的線段組成, 并且按照“日”字形排列。管腳排列如圖 4 所示。若將 7 個(gè) LED 的陽極連在一起,稱 之為共陽極接法,反之為共陰極接法。

26、雙位數(shù)碼顯示器將共陽極用作片選,而在 ag 各段上加上不同的電壓,各段的發(fā)光情況將會(huì)不同,從而會(huì)形成不同的發(fā)光字 符。加在引腳上的電壓可以用數(shù)字量來表示,若某一段的陽極為數(shù)字量為“1” ,則這 個(gè)段就會(huì)發(fā)光;若為 0,就不會(huì)發(fā)光。數(shù)字量與段的對應(yīng)關(guān)系如表 3 所示。 表 3 七段共陽 LED 字形碼 顯示字符共陽極 字符碼 03FH 106H 25BH 34FH 466H 56DH 67DH 707H 87FH 96FH 圖 4 七段結(jié)構(gòu)及外形圖 a 1 b 2 K1 3 K2 4 f 5 c 6 DP 7 e 8 d 9 g 10 基于單片機(jī)的簡易電子琴設(shè)計(jì) 9 3 硬件電路的設(shè)計(jì) 3.1

27、電源電路的設(shè)計(jì) 本系統(tǒng)采用的是小功率可調(diào)直流穩(wěn)壓電源。這種電源是用穩(wěn)壓器件 LM317 制作 成的直流穩(wěn)壓電源,它的效果很好,而且輸出的是可調(diào)的電壓,故它的適應(yīng)范圍也很 廣。如圖 5 所示,它是由電源變壓器 T1,二極管橋式整流電路,濾波電容和一個(gè) LM317 組成的。220V 交流市電經(jīng)過電源變壓器 T1 降壓,變成電壓較低的交流電, 再經(jīng)過二極管橋式整流電路,電容濾波后送入 LM317 的輸入端,則 LM317 的輸出端 將輸出穩(wěn)定的直流電壓。LM317 還有一個(gè)腳是調(diào)整端,通常情況下,為了保證穩(wěn)壓 器的輸出性能,的阻值一般應(yīng)小于 240。此電源為可調(diào)電源,故我們在調(diào)整端和地 之間接一個(gè)可

28、調(diào)電阻,當(dāng)我們改變的電阻阻值時(shí)就可以改變輸出電壓的值了。輸出電 壓的計(jì)算公式如下: U0=1.25(1+R3/R2) C1是用于濾除由市交流電引入的高頻干擾,通常選用的是瓷片電容。C2是一個(gè)電 容濾波電路,C3則用于旁路基準(zhǔn)電壓的紋波電壓,它主要用于提高穩(wěn)壓電源的紋波抑 制性能。在使用的過程當(dāng)中,如果負(fù)載是 500500pF 的容性負(fù)載,穩(wěn)壓器的輸出端 就會(huì)發(fā)生自激現(xiàn)象,電解電容 C4就是用來進(jìn)一步改善輸出電壓的波紋而設(shè)置的。D3D4 都是保護(hù)二極管,當(dāng)輸入電路發(fā)生短路的時(shí)候,C4會(huì)放電電流反向流經(jīng) LM317,有可 能會(huì)被沖擊損壞,D3可以旁路反向電流,從而保護(hù)了 LM317。同樣的道理,如

29、果輸出 端短路的話,C3上的放電電流就會(huì)被 D4短路,從而起到保護(hù)的作用。圖 5 中的 R2與 D2是用來指示工作的,當(dāng)插上 220V 的交流電時(shí),經(jīng)過變壓 、整流、濾波、穩(wěn)壓等正 常工作時(shí),發(fā)光二級(jí)管 D2就會(huì)發(fā)光,而 R1用來為 D2限流。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 10 圖5 電源電路圖 3.2 復(fù)位電路的設(shè)計(jì) 3.2.1 復(fù)位操作 復(fù)位是單片機(jī)初始化的操作。它的主要功能就是把 PC 初始為 0000H,從而使單 片機(jī)從 0000H 單元開始執(zhí)行程序。除此之外,當(dāng)由于程序運(yùn)行出現(xiàn)出錯(cuò)或操作錯(cuò)誤 致使系統(tǒng)處于死鎖狀態(tài)時(shí),為了擺脫困境,可以按復(fù)位鍵重新啟動(dòng)。 復(fù)位操作除 PC 有影響外,還

30、對其他一些寄存器存在影響,它們的復(fù)位狀態(tài)如表 4 所示。 表 4 些寄存器的復(fù)位狀態(tài) 寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài) PC0000HTCON00H ACC00HTL000H PSW00HTH000H SP07HTL100H DPTR0000HTH100H P0-P3FFHSCON00H IPXX000000BSBUF不定 基于單片機(jī)的簡易電子琴設(shè)計(jì) 11 IE0X000000BPCON0XXX0000B TMOD00H 3.2.2 復(fù)位信號(hào)及其產(chǎn)生 RST(pin 9)引腳是復(fù)位信號(hào)的輸入端。此引腳高電平有效,其有效時(shí)間應(yīng)為二 個(gè)機(jī)器周期(即 24 個(gè)振蕩周期)以上。如果使用頗率為 6MHz 的

31、晶振,那么復(fù)位信號(hào) 需要持續(xù)時(shí)間超過 4us 才能完成復(fù)位操作。產(chǎn)生復(fù)位信號(hào)的電路邏輯圖如圖 6 所示: 圖 6 復(fù)位信號(hào)的電路邏輯圖 單片機(jī)的整個(gè)復(fù)位電路包括芯片內(nèi)、外兩個(gè)部分。RST 通過一個(gè)施密特觸發(fā)器 與復(fù)位電路連接在一起,而片內(nèi)復(fù)位電路則在每個(gè)機(jī)器周期的 S5P2 時(shí)對施密特觸發(fā) 器的輸出進(jìn)行采樣,這樣才能得到內(nèi)部復(fù)位操作所需要的信號(hào)。 復(fù)位操作一般有上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種。將外部復(fù)位電路的電容充電 就可以實(shí)現(xiàn)上電自動(dòng)復(fù)位了,如圖 7(a)所示。因此,接通電源就可以實(shí)現(xiàn)系統(tǒng)的 復(fù)位初始化了。 按鍵手動(dòng)復(fù)位有電平方式和脈沖兩種方式。其中,按鍵電平復(fù)位是通過 RST 端 經(jīng)電阻與

32、電源 Vcc 接通而實(shí)現(xiàn)的,其電路如圖 7(b)所示;利用 RC 微分電路產(chǎn)生 的正脈沖來實(shí)現(xiàn)按鍵脈沖復(fù)位,如圖 7(c)所示: (a)上電復(fù)位 (b)按鍵電平復(fù)位 (c)按鍵脈沖復(fù)位 基于單片機(jī)的簡易電子琴設(shè)計(jì) 12 圖 7 復(fù)位電路 上述電路圖中的電阻、電容參數(shù)適用于 6MHz 的晶振,能夠保證復(fù)位信號(hào)的高電 平持續(xù)時(shí)間在 2 個(gè)機(jī)器周期以上。 本系統(tǒng)的復(fù)位電路采用的是圖 7(b)上電復(fù)位方式。電阻為 2.2K,電容為 10uF、晶振為 12MHz。 3.3 鍵盤控制電路 3.3.1 矩陣式鍵盤的概述 本系統(tǒng)采用的是非編碼鍵盤中的矩陣鍵盤。矩陣鍵盤也稱為行列式鍵盤,一般用 于按鍵數(shù)目較多的

33、場合。它是由行和列組合而成,一組是行線,另一組是列線,按鍵 就位于行和列的交叉點(diǎn)。如圖 8 所示,一個(gè) 4*4 的矩陣鍵盤,有 16 個(gè)按鍵,我們分 別用著 16 個(gè)鍵來模擬電子琴的按鍵:低音 3、 4、 5、 6、 7;中音 1、 2、 3、 4、 5、 6、 7 ;高音 1、 2、 3、 4 。可以很明顯地看出,較獨(dú)立鍵盤而言,矩 陣式鍵盤節(jié)省了 I/O 口線。 圖 8 4*4 矩陣式鍵盤接口 3.3.2 矩陣式鍵盤按鍵識(shí)別原理及方法 若矩陣鍵盤中沒有按鍵按下,那么鍵盤的行線就會(huì)處于高電平;若有鍵按下時(shí), 行線電平的狀態(tài)由和它相連的列線的電平?jīng)Q定。假設(shè)列線電平為低電平那么行線電平 則為低電

34、平;反之,同理。這一點(diǎn)就是識(shí)別矩陣式鍵盤哪個(gè)按鍵按下的關(guān)鍵所在。由 于矩陣式鍵盤的行線和列線被多鍵共用,所以各按鍵會(huì)相互影響,因此必須將行線和 列線的信號(hào)配合,才能確定閉合鍵的位置所在。矩陣式鍵盤一般有兩種識(shí)別方法,它 們分別是掃描法和線反轉(zhuǎn)法。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 13 首先,我們來介紹一下掃描法。它識(shí)別按鍵可以分為兩步:第一步,識(shí)別有沒有 按鍵按下;第二步,若有鍵按下,確定按下鍵的具體位置。舉個(gè)簡單的例子來說明這 個(gè)過程。 第一步,識(shí)別有沒有按鍵按下。先將所有的列線都置為 0 電平,接著檢查各行線 是不是都是高電平,若不全是高電平,說明有按鍵按下,否則就沒有。例如,當(dāng)按鍵 2 被按

35、下,第一行的行線為低電平,但是我們不能確定是哪個(gè)鍵被按下了,若是同一 行的 1、3、4 鍵被按下,第一行也會(huì)呈現(xiàn)低電平,因此我們只能得出第一行有鍵被按 下。 第二步,確定哪個(gè)鍵被按下。采用掃描法,在某個(gè)時(shí)刻只讓一條列線處于低電平, 其他所有列線都處于高電平。當(dāng)?shù)?1 列為低電平的時(shí)候,其他各列均處于高電平時(shí), 因?yàn)槭?2 鍵被按下,所以第 1 行仍高電平。而當(dāng)?shù)诙袨榈碗娖降臅r(shí)候,其他各列均 為高電平,第 1 行的行處于低電平,故可以判斷第 1 行第二列的交叉處有鍵被按下, 即 2 號(hào)鍵被按下。 綜上所述,掃描法的思想就是,先把某一列置為低電平,其他的各列均為高電平, 然后檢查各行線的變化,若

36、某行線為低電平,則可以確定被按下的鍵處于此行此列的 交叉點(diǎn)上。本系統(tǒng)采用的就是掃描法。 其次,我們再簡單的介紹一下線反轉(zhuǎn)法。掃描法要一列一列的去掃描查詢,若被 按下的鍵處于最后一列時(shí),需要經(jīng)過多次才能獲得正確的行列值。而線反轉(zhuǎn)法則很簡 練,不論是哪個(gè)鍵被按下,均只需要兩步就可以知道是哪個(gè)鍵被按下了。具體操作步 驟如下: 第一步,讓行線編程為輸入線,列線均為輸出線,并使輸出線全部為低電平,那 么行線中電平由高變?yōu)榈偷男?,就是按鍵所在的行。 第二部,把行線全部變成為輸出線,列線編程為輸入線,并使輸出線全部為低電 平,則列線中由高電平變?yōu)榈碗娖降牧?,就是按鍵所在的列。 綜上所述,可以確定按鍵所在的行

37、和列,從而得出按鍵所在位置。因此,線反轉(zhuǎn) 法非常的簡單適用,但是在實(shí)際的編程中不要忘記還要進(jìn)行按鍵去抖動(dòng)處理。 3.4 顯示電路 本系統(tǒng)采用的顯示電路是 LED 數(shù)碼顯示器,由于 LED 屬于電流控制器件,使用時(shí) 需要加限流電阻,本次設(shè)計(jì)中只用了一個(gè)雙位數(shù)碼顯示器,外加兩個(gè) 9012 三極管驅(qū) 動(dòng)數(shù)碼管,此電路比較簡單不于詳細(xì)闡,具體電路圖如圖 9。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 14 圖 9 顯示電路 4 系統(tǒng)軟件設(shè)計(jì) 本系統(tǒng)主要是要實(shí)現(xiàn)由單片機(jī)控制的簡單的音樂發(fā)生器,矩陣鍵盤代表 16 個(gè)不 同的音階,用戶可以根據(jù)樂譜在鍵盤上彈奏出音樂,通過喇叭將音樂播放出來。 4.1 如何利用單片機(jī)實(shí)現(xiàn)音

38、樂節(jié)拍 物體規(guī)則震動(dòng)發(fā)出的聲音稱為樂音,音樂聽起來有高、有低,這就是音高,發(fā)聲 物體的振動(dòng)頻率決定著音高。頻率低聲音就會(huì)低,頻率高聲音就會(huì)高。不同的音高的 樂音分別用 1、2、3、4、5、6、7 來表示,這七個(gè)樂音名分別念成: DO、RE、ME、FA、SO、LA、SI,這就是唱曲時(shí)樂音的發(fā)音,我們把它稱作唱名。 音持續(xù)的時(shí)間長短,通常用節(jié)拍來表示。一首歌通常有不同的音符表示,不同的音符 對應(yīng)著不同的頻率,不同頻率的組合加上節(jié)拍就構(gòu)成了音樂。 除了音符以外,節(jié)拍也是音樂中非常重要的一部分。 節(jié)拍實(shí)際上就是音持續(xù)時(shí)間的長短,在單片機(jī)中我們可以利用延時(shí)來實(shí)現(xiàn)。如果 是四分之一節(jié)拍就延時(shí) 0.4s,那

39、么一拍就延時(shí) 1.6s。只需要知道四分之一節(jié)拍需要延 時(shí)多久,其他的節(jié)拍就是它延時(shí)的倍數(shù)了。如果要單片機(jī)自己放音樂就要在程序中設(shè) 置節(jié)拍的延時(shí)時(shí)間,但是此系統(tǒng)是簡易的電子琴,只需要用戶自己彈奏時(shí)把握節(jié)拍就 基于單片機(jī)的簡易電子琴設(shè)計(jì) 15 可以了,不需要程序設(shè)置。對于不同的曲調(diào)我們可以由單片機(jī)的定時(shí)器/計(jì)數(shù)器來實(shí) 現(xiàn)音樂,一個(gè)節(jié)拍為單位(C 調(diào)),如表 5 所示: 表 5 音樂節(jié)拍表 曲調(diào)值DELAY曲調(diào)值DELAY 調(diào) 4/4125ms調(diào) 4/462ms 調(diào) 3/4187ms調(diào) 3/494ms 調(diào) 2/4250ms調(diào) 2/4125ms 4.2 如何用單片機(jī)產(chǎn)生音頻脈沖 4.2.1 音符和頻率

40、的關(guān)系 用單片機(jī)播放音樂亦或是彈奏電子琴,實(shí)際上就是按照一定的頻率,輸出一連串 的方波。為了輸出適合的方波,首先我們應(yīng)該知道音符與頻率之間的關(guān)系。注意觀察 一下幾個(gè) 6(LA)的頻率,它們都是整數(shù),很容易看出成 2 倍的關(guān)系。其它的音符也 是一樣的。如 220、440 等這些頻率,它們在琴鍵上的位置是統(tǒng)一的,不論是電子琴、 鋼琴還是手風(fēng)琴,都是一樣的。包含黑鍵和白鍵在內(nèi)的所有音符的頻率數(shù)值都是成 “等比數(shù)列”的關(guān)系,因此它們之間有一個(gè)公比 q,可以按照“2 倍”的規(guī)律推算出來。 例如:已知最低音的 6(LA)的頻率是 220Hz,我們設(shè)它的公比為 q,則可以推出 7(SI)的頻率為 220*q

41、*q 。因?yàn)?6(LA)、7(SI)之間隔了一個(gè)黑鍵,所以要乘 以兩個(gè) q。以此類推,兩個(gè) 6 之間,一共有 12 個(gè)琴鍵,可以得出: 220*q*q*q*q*q*q*q*q*q*q*q*q = 440。 馬上就可以得出,12 個(gè) q 相乘,等于: 440 220 = 2。 可以求出 q = 2,q 的 12 次方根 為:1.059463094。 用這個(gè)公比 q,和已知的 220 進(jìn)行計(jì)算,我們就可以得出全部琴鍵所對應(yīng)的頻率,如 表 6 所示 基于單片機(jī)的簡易電子琴設(shè)計(jì) 16 表 6 音符和頻率的關(guān)系 音符 頻率 (HZ) 簡譜碼(T 值) 音符 頻率 (HZ) 簡譜碼(T 值) 低 1 DO

42、 262 63628 # 4 FA# 740 64860 #1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65

43、110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高

44、7 SI 1967 65283 4.2.2 定義初值 用單片機(jī)來模擬產(chǎn)生音符,只需要計(jì)算出音頻的周期 T=1/f,利用音頻的變化來 產(chǎn)生不同的電平,從而驅(qū)動(dòng)喇叭發(fā)聲。 利用 STC89C52 的內(nèi)部定時(shí)器使它工作在計(jì)數(shù)器的模式下,工作方式設(shè)為“1”, 改變 TH0 和 TH1 來產(chǎn)生不同的頻率,從而產(chǎn)生不同的音階。比如:頻率為中音 DO(532Hz),它的周期為:T=1/532=1912us,所以計(jì)數(shù)器只需要計(jì)數(shù): 956us/1us=956 次,每一次計(jì)數(shù) 956 次時(shí)將 I/O 口反向,我們就可以得到我們所需要 的音階中音(DO)了。計(jì)數(shù)脈沖和頻率的關(guān)系式: N=fi2fr 基于單片機(jī)的簡

45、易電子琴設(shè)計(jì) 17 上式中的 N 為計(jì)數(shù)值,fi為機(jī)器頻率,fr為想要產(chǎn)生的頻率。 計(jì)數(shù)的初值 T 求法如下: T=65536-N=65536-fi2fr 例如:K=65536,fi=1MHz,求低音 DO(261Hz),中音 DO(523Hz),高音 DO(1046Hz)的計(jì)數(shù)值。 T=65536-N=65536-fi2fr=65536-10000002fr=65536-50000/fr 低音 DO(261Hz)的 T=65536-50000/261=63627 中音 DO(523Hz)的 T=65536-50000/523=64580 高音 DO(1046Hz)的 T=65536-5000

46、0/1046=65059 采用 12MHz 的晶振,音符與計(jì)數(shù)值 T0 的關(guān)系如表 6 所示。本系統(tǒng)主要用到的音 符為低音:3、4、5、6、7,中音:1、2、3、4、5、6、7,高音 1、2、3、4;用到頻 率分別為:64021,64103,64260,64400, 64524, 64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178。 基于單片機(jī)的簡易電子琴設(shè)計(jì) 18 4.3 音樂發(fā)聲程序流程圖 主程序流程圖和 T0 中斷服務(wù)程序流程圖如圖 10 所示 按鍵按下成功否? 識(shí)別按鍵功能 開始 根據(jù)按鍵功能裝入音符

47、T 值到 T0 中 啟動(dòng) T0 工作 按鍵釋放成功否? 停止 T0 工作 N Y N Y 顯示按鍵 T0 中斷入口 P1.0 取反 重裝 T0 初值 中斷返回 (a)主程序流程圖 (b)T0 中斷服務(wù)程序流程圖 圖 10 主程序和 T0 中斷服務(wù)程序流程圖 T0 初始化并開 T0 中 斷 基于單片機(jī)的簡易電子琴設(shè)計(jì) 19 結(jié) 論 經(jīng)過這幾個(gè)月的努力,終于按照畢業(yè)設(shè)計(jì)進(jìn)度要求如期完成了基于單片機(jī)的簡易 電子琴制作的硬件設(shè)計(jì)和軟件編寫任務(wù)。在整個(gè)畢業(yè)設(shè)計(jì)完成的過程當(dāng)中,碰到了不 少的困難,但在老師的細(xì)心指導(dǎo)以及自己的不懈努力下,最終還是取得了一定的成果。 這段時(shí)間制作這個(gè)畢業(yè)設(shè)計(jì),首先使我對 ST

48、C89C52 單片機(jī)有更深入的了解, , 一開始設(shè)計(jì)整個(gè)系統(tǒng)的時(shí)候沒有具體的思路,就上網(wǎng)找了好多關(guān)于電子琴設(shè)計(jì)的資料, 查閱后開始自己設(shè)計(jì)。電路圖設(shè)計(jì)完成后,就是焊電路板了,在焊接的時(shí)候遇到了好 多的困難,總是把有些線搞混,錯(cuò)綜復(fù)雜的導(dǎo)線使我暈頭轉(zhuǎn)向,從而增加我焊接的難 度。 焊完之后發(fā)現(xiàn)自己元器件的排布的不是很合適,使電路板上有許多的飛線。最 后就是編寫程序調(diào)試了,本來還以為編程會(huì)很簡單的,等到實(shí)際操作起來才知道很復(fù) 雜,沒有想像中的那么得心應(yīng)手,理解流程是有思維的前提.不過經(jīng)過自己的不懈努力, 老師的精心指導(dǎo)下和同學(xué)的悉心幫助,花費(fèi)的時(shí)間與精力終于沒有白費(fèi),效果漸漸地出 現(xiàn)了。程序編完之后

49、并不意味著可以實(shí)現(xiàn)系統(tǒng)的功能,還要繼續(xù)調(diào)試。在這個(gè)過程中 遇到了一個(gè)非常棘手的問題,一開始數(shù)碼顯示管的驅(qū)動(dòng)三極管用的是 8550,怎么都 不能使數(shù)碼顯示管顯示數(shù)值,測試它的引腳全部正常。最后沒辦法了就一個(gè)一個(gè)元件 測試,都沒問題,就一個(gè)一個(gè)元件替換,最終發(fā)現(xiàn)是三極管的問題,最后把 8550 換 成了 9012。 經(jīng)過這次的畢業(yè)設(shè)計(jì),我在理論的基礎(chǔ)上更深刻的掌握了單片機(jī)的深層內(nèi)容和 單片機(jī)在實(shí)際生活中的應(yīng)用,加強(qiáng)了自己的動(dòng)手能力和思維能力,還有在軟件方面的 編程能力,也讓我受益匪淺。這些問題的發(fā)現(xiàn)將為我以后的工作找明道路,經(jīng)過這次 的畢業(yè)設(shè)計(jì),使我對本專業(yè)的學(xué)習(xí)更加充滿了信心。 基于單片機(jī)的簡易

50、電子琴設(shè)計(jì) 20 參考文獻(xiàn) 1 張毅剛.單片機(jī)原理及應(yīng)用M.北京:高等教育出版社,2009. 2 王港元.電子電工實(shí)踐指導(dǎo)M.江西:科學(xué)技術(shù)出版社,2005. 3 何立民.MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)M.北京:航空航天大學(xué)出版社,1998. 4 曹玲芝.電子信息工程專業(yè)英語M.武漢:華中科技大學(xué)出版社,2007. 5 王俊峰.理工科學(xué)生怎樣搞畢業(yè)設(shè)計(jì)M.北京:電子工業(yè)出版社,2004. 6 史久規(guī).基于Altium Designer 的原理圖與PCB設(shè)計(jì)M.北京:機(jī)械工業(yè)出版社,2011. 7 高鋒編.單片微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)及使用技術(shù)M.北京:機(jī)械工業(yè)出版社,2004. 8 胡漢才單片機(jī)原理及

51、系統(tǒng)設(shè)計(jì)M 北京:清華大學(xué)出版社,2002. 9 胡漢才.單片機(jī)原理及其接口技術(shù)M.北京:清華大學(xué)出版社, 2004. 10 馬忠梅.單片機(jī) C 語言應(yīng)用程序設(shè)計(jì)M. 北京:航空航天大學(xué)出版社 ,2007. 11 徐愛軍.單片機(jī)高級(jí)語言 C51 應(yīng)用程序設(shè)計(jì)M.北京:電子工業(yè)出版社,1997. 基于單片機(jī)的簡易電子琴設(shè)計(jì) 21 附錄一 電子琴源程序 #include #include #define uint unsigned int #define uchar unsigned char sbit SPK = P37; /*P3.7 外接揚(yáng)聲器*/ sbit shiwei = P27; sb

52、it gewei = P26; uint FreqTemp; char Key_Value=-1; uchar code tabledu= 0 x3f,0 x06,0 x5b,0 x4f, 0 x66,0 x6d,0 x7d,0 x07, 0 x7f,0 x6f,0 x77,0 x7c, 0 x39,0 x5e,0 x79,0 x71; unsigned int code Freqtab = /*定時(shí)半周期的初始值*/ 64021,64103,64260,64400, /*低音 3 4 5 6*/ 64524,64580,64684,64777, /*低音 7,中音 1 2 3*/ 64820

53、,64898,64968,65030, /*中音 4 5 6 7*/ 65058,65110,65157,65178; /*高音 1 2 3 4*/ 基于單片機(jī)的簡易電子琴設(shè)計(jì) 22 void delay_ms(uint z) uint x,y; for(x=z;x0;x-) for(y=123;y0;y-); /*函數(shù)功能 : 用掃描法讀 P1 外接 44 鍵盤*/ /*函數(shù)返回 : 有按下鍵:返回 115、如無鍵按下:返回 00*/ uchar Keyscan(void) uchar i, j, temp, Buffer4 = 0 xfe, 0 xfd, 0 xfb, 0 xf7; for

54、(j = 0; j = 1; 基于單片機(jī)的簡易電子琴設(shè)計(jì) 23 return 16; /*沒有鍵按下就返回 00*/ /*函數(shù)功能 : 將參數(shù)分成十位、個(gè)位,分別顯示到 P2 */ void Display() shiwei=0;P0=tabledu(Key_Value+1)/10;delay_ms(5);shiwei=1;P0=0 x00; gewei=0;P0=tabledu(Key_Value+1)%10;delay_ms(5);gewei=1;P0=0 x00; void shaomiao() uchar Key_Temp1, Key_Temp2; /*讀出的鍵值*/ Key_Temp

55、1 = Keyscan(); /*讀入按鍵*/ if(Key_Temp1 != 16) /*有鍵按下*/ delay_ms(5); /*延時(shí)消抖*/ Key_Temp2 = Keyscan(); /*再讀一次*/ if (Key_Temp1 = Key_Temp2) /*兩次相等*/ Key_Value = Key_Temp1; /*就確認(rèn)下來*/ FreqTemp = FreqtabKey_Value; /*根據(jù)鍵值,取出定時(shí)半周期的初始值*/ TR0 = 1; /*啟動(dòng)定時(shí)器,發(fā)音*/ 基于單片機(jī)的簡易電子琴設(shè)計(jì) 24 while (Keyscan() 8; SPK = SPK; /*發(fā)音*/ 附錄二 原理圖 基于單片機(jī)的簡易電子琴設(shè)計(jì) 26 附錄三 PCB 圖 基于單片機(jī)的簡易電子琴設(shè)計(jì) 27 附錄四 實(shí)物圖 基于單片機(jī)的簡易電子琴設(shè)計(jì) 28 致 謝 基于單片機(jī)的簡易電子琴設(shè)計(jì) 29

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!