国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MCU-51:單片機蜂鳴器播放音樂和提示音

這篇具有很好參考價值的文章主要介紹了MCU-51:單片機蜂鳴器播放音樂和提示音。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、蜂鳴器介紹

蜂鳴器是一種將電信號轉(zhuǎn)換為聲音信號的器件,常用來產(chǎn)生設(shè)備的按鍵音、報警音等提示信號
蜂鳴器按驅(qū)動方式可分為有源蜂鳴器和無源蜂鳴器
有源蜂鳴器:內(nèi)部自帶振蕩源,將正負(fù)極接上直流電壓即可持續(xù)發(fā)聲,頻率固定
無源蜂鳴器:內(nèi)部不帶振蕩源,需要控制器提供振蕩脈沖才可發(fā)聲,調(diào)整提供振蕩脈沖的頻率,可發(fā)出不同頻率的聲音

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

二、驅(qū)動電路

2.1 三極管驅(qū)動

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

2.2 集成電路驅(qū)動

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言
單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

三、蜂鳴器播放音樂

3.1 鍵盤與音符對照

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

3.2 音符與頻率對照

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

3.3 簡譜

單片機蜂鳴器編程音樂,51單片機學(xué)習(xí),單片機,嵌入式硬件,51單片機,c語言

四、代碼演示

4.1 按鍵蜂鳴器播放提示音

main.c

#include <REGX52.H>
#include "Delay.h"
#include "key.h"
#include "Nixie.h"
#include "Buzzer.h"


unsigned char KeyNum;

void main()
{
	Nixie(1,0);
	while(1)
	{
		KeyNum=Key();
		if(KeyNum)
		{
			Buzzer_Time(100);
			Nixie(1,KeyNum);
		}
	}
}

Nixie.c

#include <REGX52.H>
#include "Delay.h"	//包含Delay頭文件

//數(shù)碼管段碼表
unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//數(shù)碼管顯示子函數(shù)
void Nixie(unsigned char Location,Number)
{
	switch(Location)		//位碼輸出
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=NixieTable[Number];	//段碼輸出
//	Delay(1);				//顯示一段時間
//	P0=0x00;				//段碼清0,消影
}

Buzzer.c

#include <REGX52.H>
#include <INTRINS.H>
#include "Delay.h"


//蜂鳴器端口
sbit Buzzer=P2^5;


/**
  * @brief  蜂鳴器私有延時函數(shù),延時500us
  * @param  無
  * @retval 無
  */

void Buzzer_Delay500us()		//@12.000MHz
{
	unsigned char i;

	_nop_();
	i = 247;
	while (--i);
}

/**
  * @brief  蜂鳴器發(fā)聲
  * @param  ms 發(fā)聲時長
  * @retval 無
  */

void Buzzer_Time(unsigned int ms)
{
	unsigned int i;
	for(i=0;i<ms*2;i++)
			{
				Buzzer=!Buzzer;
				Buzzer_Delay500us();
			}
}


Buzzer.h

#ifndef __BUZZER_H__
#define __BUZZER_H__

void Buzzer_Time(unsigned int ms);

#endif

Nixie.h

#ifndef __NIXIE_H__
#define __NIXIE_H__

void Nixie(unsigned char Location,Number);

#endif

key.c

#include <REGX52.H>
#include "Delay.h"

unsigned char Key()
{
	unsigned char KeyNumber=0;
	if(P3_1==0)
	{
		Delay(20);while(P2_1==0);Delay(20);KeyNumber=1;
	}
  if(P3_0==0)
	{
		Delay(20);while(P2_0==0);Delay(20);KeyNumber=2;
	}
	if(P3_2==0)
	{
		Delay(20);while(P2_2==0);Delay(20);KeyNumber=3;
	}
	if(P3_3==0)
	{
		Delay(20);while(P2_3==0);Delay(20);KeyNumber=4;
	}
		
	return KeyNumber;
	
}

key.h

#ifndef __KEY_H__
#define __KEY_H__

unsigned char Key();

#endif

Delay.c


void Delay(unsigned int i)
{
	while(i--);
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int i);

#endif

4.2 小星星

#include <REGX52.H>
#include "Delay.h"
#include "Timer0.h"

//蜂鳴器端口定義
sbit Buzzer=P2^5;

//播放速度,值為四分音符的時長(ms)
#define SPEED	50


//索引與頻率對照表
unsigned int FreqTable[]={
	0,
	63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,
	64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,
	65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,
};

//樂譜
unsigned char  Music[]={
	13,4,
	14,4,
	20,4,
	20,4,
	22,4,
	22,4,
	20,4+4,
	0,4,
	18,4,
	18,4,
	17,4,
	17,4,
	15,4,
	15,4,
	13,4+4,
	
	0xFF,
};

unsigned char FreqSelect,MusicSelect;

void main()
{
	Timer0_Init();
	while(1)
	{
		if(Music[MusicSelect]!=0xFF)	//如果不是停止標(biāo)志位
		{
			FreqSelect=Music[MusicSelect];	//選擇音符對應(yīng)的頻率
			MusicSelect++;
			Delay(SPEED/4*Music[MusicSelect]);	//選擇音符對應(yīng)的時值
			MusicSelect++;
			TR0=0;
			Delay(5);	//音符間短暫停頓
			TR0=1;
		}
		else	//如果是停止標(biāo)志位
		{
			TR0=0;
			while(1);
		}
	}
}

void Timer0_Routine() interrupt 1
{
	if(FreqTable[FreqSelect])	//如果不是休止符
	{
		/*取對應(yīng)頻率值的重裝載值到定時器*/
		TL0 = FreqTable[FreqSelect]%256;		//設(shè)置定時初值
		TH0 = FreqTable[FreqSelect]/256;		//設(shè)置定時初值
		Buzzer=!Buzzer;	//翻轉(zhuǎn)蜂鳴器IO口
	}
}

注意:一定要看

千萬不要直接復(fù)制代碼,因為是模塊化編寫,模塊的代碼沒有往上復(fù)制,大家一定要自己動手跟著教學(xué)視屏自己寫?。。。。?/strong>文章來源地址http://www.zghlxwxcb.cn/news/detail-781256.html

到了這里,關(guān)于MCU-51:單片機蜂鳴器播放音樂和提示音的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【【51單片機的蜂鳴器-11】】

    【【51單片機的蜂鳴器-11】】

    DS1302我一直有問題擱置了幾百天了 先來看看蜂鳴器 搞了一個禮拜verilog然后出去吃飯 估計自己得有10多天沒看c語言和51單片機了 現(xiàn)在先處理一下蜂鳴器的問題 蜂鳴器 蜂鳴器分為有源蜂鳴器和無源蜂鳴器 有源內(nèi)部自帶震蕩源,將正負(fù)極接上直流電壓及可持續(xù)發(fā)聲,頻率固定

    2024年02月16日
    瀏覽(18)
  • 51單片機學(xué)習(xí)筆記-9蜂鳴器

    51單片機學(xué)習(xí)筆記-9蜂鳴器

    [toc] 注:筆記主要參考B站江科大自化協(xié)教學(xué)視頻“51單片機入門教程-2020版 程序全程純手打 從零開始入門”。 注:工程及代碼文件放在了本人的Github倉庫。 蜂鳴器 是一種將電信號轉(zhuǎn)換為聲音信號的器件,常用來產(chǎn)生設(shè)備的按鍵音、報警音等提示信號。蜂鳴器按驅(qū)動方式可分

    2024年02月06日
    瀏覽(22)
  • 【【51單片機蜂鳴器實現(xiàn)起風(fēng)了】】

    【【51單片機蜂鳴器實現(xiàn)起風(fēng)了】】

    前面的有兩個非常關(guān)鍵的點希望兄弟們明白 我一開始也失算了 這里兄弟們注意務(wù)必改成int 不然會超出 就會出現(xiàn)播放一半從頭開始的情況 下面是兩份起風(fēng)了代碼直接附上main.c 因為另外的其實和我之前說的模板都一樣復(fù)制粘貼就行 為什么是2份因為什么ABCD大調(diào)我不懂啊 我看樂

    2024年02月16日
    瀏覽(109)
  • 【【51單片機的蜂鳴器實現(xiàn)小星星】】

    【【51單片機的蜂鳴器實現(xiàn)小星星】】

    我們在設(shè)置板子的時候要翻轉(zhuǎn) 翻轉(zhuǎn)IO口是因為使用了步進電機的多余的芯片管腳 我們翻轉(zhuǎn)之后還想讓它保持一段時間 就是先翻轉(zhuǎn)500次 Delay(1)之后 就是最小的單位每隔1ms 周期就是2ms 頻率就是500HZ 蜂鳴器播放音樂 我們首先在前面到現(xiàn)在必須明白一個道理 就是我們的蜂鳴器發(fā)

    2024年02月16日
    瀏覽(19)
  • 使用單片機控制蜂鳴器播放音樂的代碼

    在嵌入式系統(tǒng)中,單片機常常被用于控制各種外設(shè),其中包括蜂鳴器。蜂鳴器是一種能夠發(fā)出聲音的電子元件,可以通過單片機的控制來播放各種音樂或聲效。本文將介紹如何使用單片機控制蜂鳴器播放音樂,并提供相應(yīng)的源代碼。 在開始編寫代碼之前,我們首先需要確定使

    2024年02月01日
    瀏覽(19)
  • stm32單片機/51單片機蜂鳴器不響(proteus模擬)

    stm32單片機/51單片機蜂鳴器不響(proteus模擬)

    1提高蜂鳴器電阻,這樣根據(jù)分壓原理,可以提升蜂鳴器2段電壓 2更改蜂鳴器的工作電壓為更小的值,這個可以通過在proteus內(nèi)設(shè)置探針查看電壓值,更改為其值就可以了 我覺得如果不是仿真的話,蜂鳴器額定電壓是不能改的,如果電壓不夠的話好像就只能夠選用合適的三極管

    2024年02月11日
    瀏覽(20)
  • 單片機蜂鳴器播放音樂C語言Protues 仿真實驗
  • 33、基于51單片機老人防跌倒蜂鳴器報警系統(tǒng)加速度檢測

    33、基于51單片機老人防跌倒蜂鳴器報警系統(tǒng)加速度檢測

    背景技術(shù) 老年人出門由于身體不靈活、視力較差,容易發(fā)生跌倒,現(xiàn)用的老年人跌倒報警裝置是通過無線對講系統(tǒng)研發(fā)的,它外觀精美,自動化程度高,有很強的專業(yè)性,但是,設(shè)計者忽略了一個問題,因為大多數(shù)老年人使用現(xiàn)代化產(chǎn)品不熟練,隨著視力、操作能力的下降,

    2023年04月08日
    瀏覽(22)
  • 【51單片機】:閃燈、流水燈(從左往右)、流水燈(從右往左)、蜂鳴器。

    【51單片機】:閃燈、流水燈(從左往右)、流水燈(從右往左)、蜂鳴器。

    ? ? ? ? 言歸正傳,一切都回歸本源,從51再來一次,首先就是最簡單的點燈大師。 ? ? ? ? 這么些年從51 到? 32? 再到? arduino? 再到? ESP? 等等,都是從點燈大師開始的。 于是介紹如下: 閃燈 流水燈(從左往右) 流水燈(從右往左) 蜂鳴器 ????????LED燈的原理:LED是發(fā)

    2024年02月11日
    瀏覽(26)
  • 基于51單片機的煙霧檢測+溫度檢測+蜂鳴器報警+光耦+風(fēng)扇+LCD4602液晶顯示(含原理圖/PCB/代碼)

    基于51單片機的煙霧檢測+溫度檢測+蜂鳴器報警+光耦+風(fēng)扇+LCD4602液晶顯示(含原理圖/PCB/代碼)

    講在前面: 51單片機是大多數(shù)電子愛好者的入門級單片機,這款設(shè)計是一個比較綜合的單片機設(shè)計。本文介紹了一個典型的51單片機設(shè)計,希望對各位有幫助。 本人也在其他平臺開源了一些項目和分享: 點擊進入B站傳送門 1)產(chǎn)品功能: 使用51單片機作為控制器,與ADC0832(

    2024年01月22日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包