999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于51單片機(jī)的電子節(jié)拍器設(shè)計(jì)

2024-03-11 13:20:28楊輝
機(jī)電信息 2024年3期
關(guān)鍵詞:單片機(jī)

摘 要:節(jié)拍器是一種專門用來打奏拍子的設(shè)備,它可以使練音者或練琴者正確掌握樂曲速度,對(duì)音樂練習(xí)達(dá)到事半功倍的效果。鑒于此,設(shè)計(jì)了一款電子式節(jié)拍器,以AT89C51為控制核心,通過C語言設(shè)計(jì)程序,充分利用單片機(jī)內(nèi)部中斷和定時(shí)系統(tǒng)控制外部電路,準(zhǔn)確產(chǎn)生拍子,且實(shí)現(xiàn)了節(jié)拍類型和節(jié)拍速度的實(shí)時(shí)調(diào)節(jié)、數(shù)碼管的清晰顯示。該節(jié)拍器音色優(yōu)美、精度較高,具有很好的視覺和聽覺效果。

關(guān)鍵詞:節(jié)拍器;單片機(jī);中斷;數(shù)碼管

中圖分類號(hào):TP202? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號(hào):1671-0797(2024)03-0032-04

DOI:10.19514/j.cnki.cn32-1628/tm.2024.03.008

0? ? 引言

在音樂的教學(xué)和學(xué)習(xí)中,學(xué)習(xí)者的音準(zhǔn)感和節(jié)奏感非常重要,但是速度感同樣不可忽視,精準(zhǔn)地確定所需要表達(dá)的速度,在音樂學(xué)習(xí)和創(chuàng)作中逐步建立敏銳的速度感對(duì)于一個(gè)優(yōu)秀的音樂人尤為重要。節(jié)拍器就是在各種速度中發(fā)出穩(wěn)定節(jié)拍的裝置,它不僅可以提高音樂練習(xí)的效率,而且能提高練習(xí)者的注意力,使演奏更均勻平衡[1]。目前主流的節(jié)拍器有機(jī)械式和電子式兩種,機(jī)械式節(jié)拍器調(diào)節(jié)不便,不宜攜帶,精確度不高且價(jià)格昂貴,所以本次設(shè)計(jì)將要完成一個(gè)電子式節(jié)拍器[2]。它基于單片機(jī)系統(tǒng),不僅能發(fā)出聲音信號(hào),同時(shí)能在數(shù)碼管上顯示當(dāng)前的節(jié)拍類型和節(jié)拍速度,使用者可以通過鍵盤實(shí)時(shí)更改節(jié)拍類型、調(diào)整節(jié)拍速度。設(shè)計(jì)采用單片機(jī)的中斷程序?qū)崿F(xiàn)按鍵檢測(cè)、數(shù)碼管掃描和蜂鳴器發(fā)音等一系列功能。

1? ? 硬件設(shè)計(jì)

節(jié)拍用于控制各個(gè)音的快慢,即各個(gè)音產(chǎn)生及持續(xù)的時(shí)長(zhǎng),在單片機(jī)中可用延時(shí)程序或定時(shí)器來控制。節(jié)拍器發(fā)出的強(qiáng)弱拍聲音由兩個(gè)不同的頻率驅(qū)動(dòng),每個(gè)拍子的時(shí)長(zhǎng)由另一個(gè)定時(shí)器控制。設(shè)計(jì)基于AT89C51芯片完成,運(yùn)行的單片機(jī)最小系統(tǒng)中,用P0口作為數(shù)碼管的接口,用P1.6端口作為蜂鳴器電路信號(hào)輸出口,用P2口高四位作為按鍵的接口;T0中斷用于定期掃描按鍵輸入模塊、數(shù)碼管顯示模塊和節(jié)拍延時(shí)模塊,T1中斷用于反轉(zhuǎn)蜂鳴器發(fā)出不同頻率的音。

本系統(tǒng)分為兩個(gè)部分,一部分是節(jié)拍類型切換,另一部分是節(jié)拍速度調(diào)整。對(duì)于節(jié)拍的處理,使用單片機(jī)C語言來編寫,用定時(shí)器T1來控制脈沖頻率發(fā)音,用定時(shí)器T0來控制每個(gè)節(jié)拍的時(shí)長(zhǎng)[3],電路共5個(gè)按鍵。具體功能如下:

按鍵A和按鍵B用于切換節(jié)拍類型,使節(jié)拍類型在1~6幾個(gè)檔位間循環(huán),分別實(shí)現(xiàn)1/4拍、2/4拍、3/4拍、4/4拍、3/8拍、6/8拍這些常用拍子。復(fù)位電路按鍵用于停止節(jié)拍器發(fā)音,且復(fù)位后節(jié)拍類型顯示0。按鍵C和按鍵D用于調(diào)整節(jié)拍速度,初始節(jié)拍速度設(shè)置為90拍/min。按下按鍵,數(shù)碼管實(shí)時(shí)顯示節(jié)拍器當(dāng)前的參數(shù)值。節(jié)拍速度在40~200拍/min循環(huán)。根據(jù)節(jié)拍速度可以求出每個(gè)節(jié)拍的時(shí)長(zhǎng),即一個(gè)音符該唱多長(zhǎng)時(shí)間。設(shè)計(jì)中以四分音符為一拍,則八分音符的時(shí)長(zhǎng)為四分音符的一半,時(shí)長(zhǎng)越短,節(jié)奏越輕快[4]。

由于本次設(shè)計(jì)的電子節(jié)拍器要實(shí)現(xiàn)按鍵輸入、數(shù)碼管顯示、蜂鳴器發(fā)音等功能,利用Proteus仿真設(shè)計(jì)的硬件電路如圖1所示,實(shí)現(xiàn)過程為:以AT89C51作為控制核心,通過按鍵輸入來改變節(jié)拍類型和節(jié)拍速度,74HC245芯片在數(shù)碼管LED小燈和單片機(jī)I/O口間起電流緩沖作用,防止電流產(chǎn)生瓶頸效應(yīng),保證通道足夠暢通[5]。74HC245具有雙向緩沖作用,無任何邏輯功能,1引腳DIR是方向引腳,當(dāng)1引腳輸入為高電平時(shí),使B等于A的狀態(tài)。74HC138芯片開啟數(shù)碼管段選功能,顯示當(dāng)前節(jié)拍類型和節(jié)拍速度[6]。段的選擇(指該段的亮滅)是通過單片機(jī)的P0口控制,經(jīng)過74HC245驅(qū)動(dòng),再將T0中斷以1 ms為定時(shí),實(shí)現(xiàn)4個(gè)數(shù)碼管的動(dòng)態(tài)顯示。電路設(shè)計(jì)中,4個(gè)數(shù)碼管都是共陽極,第一個(gè)數(shù)碼管用于顯示節(jié)拍類型,后三個(gè)數(shù)碼管用于顯示節(jié)拍速度。由于本次節(jié)拍器的設(shè)計(jì)中用到的按鍵較少,所以按鍵部分選用獨(dú)立式按鍵。4條輸入線分別連接到單片機(jī)的P2.4~2.7端口上。發(fā)聲部分的蜂鳴器電路采用無源蜂鳴器設(shè)計(jì),BUZZ引腳連接至單片機(jī)P1.6端口,由于蜂鳴器電流依然相對(duì)較大,所以用三極管來驅(qū)動(dòng),并加連一個(gè)100 Ω的電阻來限流,此外還增加一個(gè)D4續(xù)流二極管,從而很好地避免電感電流的反向沖擊,接續(xù)關(guān)斷電流。程序控制單片機(jī)I/O口反轉(zhuǎn),使蜂鳴器發(fā)出有節(jié)奏的聲音[7]。電子節(jié)拍器復(fù)位電路為含手動(dòng)開關(guān)復(fù)位的復(fù)位電路,連接到單片機(jī)的9引腳RST(Reset)復(fù)位引腳上。復(fù)位按鍵可作為節(jié)拍器的停止發(fā)音開關(guān)。

2? ? 軟件設(shè)計(jì)

本設(shè)計(jì)軟件部分全部用C語言編寫,軟件程序由主程序、數(shù)碼管顯示子程序、按鍵輸入子程序和音頻輸出子程序幾個(gè)模塊組成。主程序用來開啟74HC138使能和啟動(dòng)定時(shí)器T0、T1,T0中斷負(fù)責(zé)按鍵檢測(cè),刷新數(shù)碼管顯示和控制每個(gè)拍子的時(shí)長(zhǎng),T1中斷控制單片機(jī)I/O口反轉(zhuǎn),使蜂鳴器發(fā)音。現(xiàn)就各個(gè)程序模塊的執(zhí)行流程分別進(jìn)行敘述。

2.1? ? 主程序流程

圖2為系統(tǒng)主程序流程圖。當(dāng)給節(jié)拍器上電后,數(shù)碼管顯示節(jié)拍類型為0,此時(shí)無節(jié)拍,節(jié)拍器不發(fā)音。當(dāng)按下A、B鍵后,切換節(jié)拍類型,節(jié)拍器開始打拍;按下C、D鍵開始動(dòng)態(tài)調(diào)整節(jié)拍速度;按下復(fù)位鍵,節(jié)拍器回到上電時(shí)狀態(tài)。

2.2? ? 音頻輸出子程序

節(jié)拍器開始打奏節(jié)拍時(shí),發(fā)出的強(qiáng)弱拍聲音實(shí)質(zhì)為兩個(gè)不同的脈沖頻率產(chǎn)生,由單片機(jī)內(nèi)部的T1中斷控制,通過反轉(zhuǎn)與蜂鳴器電路連接的單片機(jī)I/O口來實(shí)現(xiàn),過程如圖3所示。

2.3? ? 數(shù)碼管顯示和按鍵檢測(cè)子程序

節(jié)拍器的數(shù)碼管顯示和按鍵檢測(cè)執(zhí)行過程都是用T0中斷實(shí)現(xiàn),每1 ms刷新一次數(shù)碼管顯示且檢測(cè)一次按鍵狀態(tài)值并保存,連續(xù)檢測(cè)四次,如果四次檢測(cè)到的按鍵狀態(tài)值相同,說明按鍵已經(jīng)穩(wěn)定地按下或彈起,相應(yīng)地要改變按鍵值,即實(shí)現(xiàn)了按鍵消抖功能。同時(shí)備份當(dāng)前按鍵狀態(tài)(按下或彈起),方便下次檢測(cè)比較用。

3? ? 系統(tǒng)調(diào)試

在上電前確保電路中不存在短路和斷路的情況,這是整個(gè)調(diào)試過程的第一步,也是最重要的一步。萬用表是這一步驟的主要工具,用萬用表的兩個(gè)探頭檢測(cè)電路中是否存在短路和斷路等情況,特別要注意焊點(diǎn)是否虛焊、焊點(diǎn)之間有無短接以及焊點(diǎn)的美觀,確保電路沒有開路、短路問題。

實(shí)物電路沒問題后,接下來從電子節(jié)拍器的顯示、按鍵和聲音等方面進(jìn)行調(diào)試:

(1)顯示觀察:起初將程序燒錄單片機(jī)運(yùn)行時(shí),發(fā)現(xiàn)數(shù)碼管在顯示時(shí)有些不應(yīng)亮的段似乎微微在發(fā)亮,但持續(xù)的時(shí)間很短,只是一閃而過。這是數(shù)碼管消影問題,解決方法是在數(shù)碼管刷新之前關(guān)閉所有的段,改變好位選后再打開即可。即在數(shù)碼管掃描程序switch(i)代碼之前,加入P0=0xFF,這樣數(shù)碼管所有的段都關(guān)閉了,當(dāng)把位選“ADDR”全部賦值之后,再給P0賦對(duì)應(yīng)的值即可,數(shù)碼管“鬼影”問題就順利解決。程序如下:

static unsigned char i = 0;? //動(dòng)態(tài)掃描的索引

P0 = 0xFF;? ?//顯示消影

switch (i)

{

case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=LedBuff[0]; break;

case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=LedBuff[1]; break;

case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=LedBuff[2]; break;

case 3: ADDR2=0; ADDR1=1; ADDR0=1; i=0; P0=LedBuff[3]; break;

default: break;

}

(2)聲音調(diào)試:在設(shè)計(jì)電子節(jié)拍器時(shí),暫不確定強(qiáng)拍和弱拍該用什么頻率較為合適,通過在程序中反復(fù)修改頻率,燒錄單片機(jī)進(jìn)行測(cè)試,最終決定用1 400 Hz和1 000 Hz兩個(gè)頻率來表示強(qiáng)弱拍,起始拍和其余拍聲音區(qū)別明顯,短促有力更耐聽,在鋼琴?gòu)椬喹h(huán)境中清晰可聞。

(3)按鍵測(cè)試:初期程序中沒加入按鍵消抖代碼,經(jīng)常按一下按鍵,數(shù)字卻不止加1,而是加2或者更多,于是考慮按鍵消抖問題。最后通過單片機(jī)T0中斷的1 ms定時(shí)來解決,每1 ms中斷就記錄一次按鍵狀態(tài),記錄四次,如果四次按鍵狀態(tài)一樣,說明按鍵已穩(wěn)定按下或彈起。將程序燒錄單片機(jī)測(cè)試,即使快速按下按鍵,數(shù)字也能準(zhǔn)確地加1,實(shí)現(xiàn)了按鍵消抖功能[8]。程序如下:

unsigned char i;

static unsigned char keybuf[4] = {? //按鍵掃描緩沖區(qū)

0xFF, 0xFF, 0xFF, 0xFF? ?};

//將一行的4個(gè)按鍵值移入緩沖區(qū)

keybuf[0] = (keybuf[0] << 1) | KEY_IN_1;

keybuf[1] = (keybuf[1] << 1) | KEY_IN_2;

keybuf[2] = (keybuf[2] << 1) | KEY_IN_3;

keybuf[3] = (keybuf[3] << 1) | KEY_IN_4;

//消抖后更新按鍵狀態(tài)

for (i=0; i<4; i++)? //4個(gè)按鍵,所以循環(huán)4次

{

if ((keybuf[i] & 0x0F) == 0x00)

{? ?//連續(xù)4次掃描值為0,即4 ms內(nèi)都是按下狀態(tài)時(shí),可認(rèn)為按鍵已穩(wěn)定地按下

KeySta[i] = 0;

}

else if ((keybuf[i] & 0x0F) == 0x0F)

{? ?//連續(xù)4次掃描值為1,即4 ms內(nèi)都是彈起狀態(tài)時(shí),可認(rèn)為按鍵已穩(wěn)定地彈起

KeySta[i] = 1;

}

}

(4)節(jié)拍器精度測(cè)試:使用秒表測(cè)量節(jié)拍器400拍所用時(shí)間。節(jié)拍速度分別為90、120、160拍/min的時(shí)候,用時(shí)分別為267.7、200.7、151.3 s,誤差分別為0.22%、0.35%、0.86%,節(jié)拍器精度較高。

4? ? 結(jié)束語

最終將程序燒錄硬件電路,經(jīng)測(cè)試,節(jié)拍器能打奏響亮而有規(guī)律的節(jié)奏,并可任意切換不同類型節(jié)拍,節(jié)拍速度也可實(shí)時(shí)調(diào)整。數(shù)碼管能清晰地顯示當(dāng)前節(jié)拍類型和節(jié)拍速度,無論是音樂初學(xué)者還是專業(yè)音樂人,都能輕松上手,調(diào)節(jié)一個(gè)適合自己的速度,練習(xí)起來效果顯著。該節(jié)拍器基于單片機(jī)設(shè)計(jì),成本較低,可靠性高,使用方便,控制功能強(qiáng),容易產(chǎn)品化,若將產(chǎn)品外形工藝化,市場(chǎng)空間廣闊。

[參考文獻(xiàn)]

[1] 吳迪.跳動(dòng)的音符——淺析鋼琴教學(xué)中節(jié)拍器的重要性[J].北方音樂,2018,38(24):130-131.

[2] 劉惠明.鋼琴學(xué)習(xí)過程中節(jié)拍器的功能及應(yīng)用[J].音樂時(shí)空,2014(24):188-189.

[3] 宋雪松.手把手教你學(xué)51單片機(jī) C語言版[M].北京:清華大學(xué)出版社,2014.

[4] 楊夢(mèng)雅,黃堂森,邵金俠,等.基于單片機(jī)演奏音階設(shè)計(jì)[J].信息技術(shù)與信息化,2021(4):143-145.

[5] 吳靜進(jìn),何尚平,萬彬.MCS-51單片機(jī)原理與應(yīng)用[M].重慶:重慶大學(xué)出版社,2019.

[6] 黃有全,李桂平.多功能節(jié)拍器的研制[J].電子技術(shù),2004(11):56-58.

[7] 孫可旭.基于Atmega16的LED電子節(jié)拍器的設(shè)計(jì)[J].電聲技術(shù),2009,33(增刊1):35-37.

[8] 張紅軍.C語言下的抗干擾消抖按鍵程序設(shè)計(jì)研究[J].數(shù)碼世界,2018(1):349-350.

收稿日期:2023-10-10

作者簡(jiǎn)介:楊輝(1992—),男,云南云龍人,碩士研究生,助理講師,研究方向:電子信息技術(shù)。

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計(jì)
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個(gè)全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計(jì)
主站蜘蛛池模板: 国产综合在线观看视频| 五月婷婷丁香综合| 国产一级特黄aa级特黄裸毛片| 亚洲国产欧洲精品路线久久| 99视频在线免费观看| 天天操精品| 欧美.成人.综合在线| 亚洲成人一区在线| 亚洲中文字幕久久无码精品A| 特级做a爰片毛片免费69| 欧美亚洲国产一区| 中文字幕亚洲电影| 凹凸精品免费精品视频| 97成人在线视频| 99福利视频导航| 精品少妇人妻一区二区| 国产精品福利社| 中文无码伦av中文字幕| JIZZ亚洲国产| 色噜噜在线观看| 色婷婷亚洲综合五月| 午夜丁香婷婷| 老司机精品一区在线视频| 亚洲午夜片| 亚洲永久精品ww47国产| 国产精品丝袜在线| 亚洲三级a| 国产高清国内精品福利| 九月婷婷亚洲综合在线| 国产亚洲视频免费播放| 91色老久久精品偷偷蜜臀| 免费精品一区二区h| 99久视频| 99热国产在线精品99| 久久这里只有精品8| 五月婷婷激情四射| 免费 国产 无码久久久| 亚洲熟妇AV日韩熟妇在线| 成人午夜免费观看| 亚洲三级网站| 国产在线无码一区二区三区| 91系列在线观看| 天天色综网| 免费一级全黄少妇性色生活片| 婷婷久久综合九色综合88| 又黄又湿又爽的视频| 欧美不卡视频在线观看| 国产小视频免费| 91麻豆精品国产91久久久久| 国产精品主播| 日韩无码黄色| 国产精品一区二区久久精品无码| 精品国产美女福到在线直播| 欧美日韩午夜| 91色在线观看| 免费观看欧美性一级| 日韩人妻少妇一区二区| 欧美色伊人| 91丨九色丨首页在线播放| 国产成人精品在线1区| 亚洲精品黄| 亚洲精品在线影院| 精品成人一区二区三区电影 | 亚洲成aⅴ人片在线影院八| 18禁不卡免费网站| 亚洲精品天堂在线观看| 欧美怡红院视频一区二区三区| 久久伊人久久亚洲综合| 亚洲V日韩V无码一区二区| 欧美精品v日韩精品v国产精品| 夜夜操天天摸| 青草视频在线观看国产| 91伊人国产| 一区二区自拍| 亚洲swag精品自拍一区| 中文字幕乱码中文乱码51精品| 一区二区三区四区在线| 伊人久久久久久久| 91在线高清视频| 亚洲无码37.| 欧美成人免费一区在线播放| 香蕉eeww99国产在线观看|