【【51单片机蜂鸣器实现起风了】】

这篇具有很好参考价值的文章主要介绍了【【51单片机蜂鸣器实现起风了】】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哀伤如同风,消失无影踪。

前面的有两个非常关键的点希望兄弟们明白
我一开始也失算了
【【51单片机蜂鸣器实现起风了】】,51单片机微型设计,51单片机,嵌入式硬件,单片机
【【51单片机蜂鸣器实现起风了】】,51单片机微型设计,51单片机,嵌入式硬件,单片机
这里兄弟们注意务必改成int 不然会超出
就会出现播放一半从头开始的情况

下面是两份起风了代码直接附上main.c
因为另外的其实和我之前说的模板都一样复制粘贴就行

为什么是2份因为什么ABCD大调我不懂啊 我看乐谱看不懂555
第一份speed为300

main.c

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

sbit Buzzer=P2^5;

//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#define L2	3
#define L2_	4
#define L3	5
#define L4	6
#define L4_	7
#define L5	8
#define L5_	9
#define L6	10
#define L6_	11
#define L7	12
#define M1	13
#define M1_	14
#define M2	15
#define M2_	16
#define M3	17
#define M4	18
#define M4_	19
#define M5	20
#define M5_	21
#define M6	22
#define M6_	23
#define M7	24
#define H1	25
#define H1_	26
#define H2	27
#define H2_	28
#define H3	29
#define H4	30
#define H4_	31
#define H5	32
#define H5_	33
#define H6	34
#define H6_	35
#define H7	36


#define SPEED 300  //我们以4分音符为基准
unsigned int  FreqTable[]={
	0,
	63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524,
	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 int code  Music[]={
//音符,时值,
	
    0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
    9,4,
    26,2,
    23,2,
    21,2,
    23,2,
    19,2,
    21,2,
    18,2,
    19,2,
14,2,
0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
9,4,
26,2,
23,2,
21,2,
23,2,
19,2,
21,2,
18,2,
19,2,
14,2,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
7,2,
9,6,
7,2,
9,2,
11,2,
9,2,
7,2,
1,4,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
9,8,
10,8,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
3,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,8,
0,8,
0,4,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
14,2,
16,4,
14,2,
16,2,
14,2,
16,4,
14,2,
9,4,
14,4,
11,8,
0,8,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
23,2,
23,6,
14,4,
16,4,
23,2,
23,4,
14,4,
16,2,
16,12,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
21,4,
23,6,
28,2,
26,6,
28,2,
26,6,
28,2,
26,4,
23,8,
21,4,
19,2,
16,4,
19,4,
19,2,
21,4,
19,2,
16,4,
19,4,
23,8,
23,4,
21,6,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
0,2,
21,2,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,2,
19,8,
0,4,
16,2,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,6,
19,8,

	0xFF
};

	unsigned int FreqSelect,MusicSelect;
	
void main()
{
	
	Timer0Init();
	while(1)
	{
		if(Music[MusicSelect]!=0xFF)
		{
		FreqSelect=Music[MusicSelect];
		MusicSelect++;
		Delay(SPEED/4*Music[MusicSelect]);
		MusicSelect++;
	   TR0=0;
		Delay(5);
		TR0=1;	
			
		}
		else
		{
			TR0=0;
			while(1);
			
		}
		
	}	
	
}


void Timer0_Routine() interrupt 1
{
	if(FreqTable[FreqSelect])	//如果不是休止符
	{
		/*取对应频率值的重装载值到定时器*/
		TL0 = FreqTable[FreqSelect]%256;		//设置定时初值
		TH0 = FreqTable[FreqSelect]/256;		//设置定时初值
		Buzzer=!Buzzer;	//翻转蜂鸣器IO口
	}
}

兄弟们担待,开头有个好像不对调,我太懒了
第二份main.c
第二份speed 600

main.c

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

sbit Buzzer=P2^5;

//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#define L2	3
#define L2_	4
#define L3	5
#define L4	6
#define L4_	7
#define L5	8
#define L5_	9
#define L6	10
#define L6_	11
#define L7	12
#define M1	13
#define M1_	14
#define M2	15
#define M2_	16
#define M3	17
#define M4	18
#define M4_	19
#define M5	20
#define M5_	21
#define M6	22
#define M6_	23
#define M7	24
#define H1	25
#define H1_	26
#define H2	27
#define H2_	28
#define H3	29
#define H4	30
#define H4_	31
#define H5	32
#define H5_	33
#define H6	34
#define H6_	35
#define H7	36


#define SPEED 600  //我们以4分音符为基准
unsigned int  FreqTable[]={
	0,
	63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64524,
	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 int code  Music[]={
//音符,时值,
	
M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,1,
    M3,1,
    M2,1,
    M1,1,
    L5,2,
    P,2,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M3,1,
    M2,2,
    M1,1,
    M2,5,
    P,4,
    
    M2,3,
    M1,1,
    M2,3,
    M1,1,
    M2,2,
    M3,2,
    M5,2,
    M3,2,
    
    M2,3,
    M3,1,
    M2,2,
    M1,1,
    L6,3,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    
    M1,2,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    M1,2,
    P,2,
    M3,1,
    M2,1,
    M1,1,
    M2,1,
    
    M1,4,
    P,6,
    M1,2,
    M2,2,
    M3,2,
    
    M1,2,
    M6,2,
    M5,1,
    M6,3,
    P,1,
    M1,1,
    M7,2,
    M6,1,
    M7,3,
    
    P,2,
    M7,2,
    M6,1,
    M7,3,
    M3,2,
    H1,1,
    H2,1,
    H1,1,
    M7,1,
    M6,2,
    
    M5,2,
    M6,2,
    M5,1,
    M6,2,
    M5,1,
    M6,1,
    M5,1,
    M6,2,
    M5,1,
    M2,2,
    M5,1,
    
    M5,1,
    M3,5,
    P,4,
    M1,2,
    M2,2,
    M3,2,
    
    M1,2,
    M6,2,
    M5,1,
    M6,3,
    P,1,
    M1,1,
    M7,2,
    M6,1,
    M7,3,
    
    P,2,
    M7,2,
    M6,1,
    M7,3,
    M3,2,
    H1,1,
    H2,1,
    H1,1,
    M7,1,
    M6,2,
    
    M5,2,
    M6,2,
    H3,4,
    M5,2,
    M6,2,
    H3,3,
    M5,1,
    
    M5,1,
    M6,11,
    P,2,
    H1,2,
    
    H2,2,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    
    H2,1,
    H3,3,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    H3,1,
    
    H3,3,
    H2,2,
    H1,1,
    M6,2,
    H1,3,
    H2,2,
    H1,1,
    M6,2,
    
    H1,2,
    H3,6,
    H2,1,
    H3,1,
    H2,2,
    P,2,
    H1,2,
    
    
    
    H2,2,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    P,1,
    
    H2,1,
    H3,2,
    H6,1,
    H5,3,
    H6,1,
    H5,3,
    H6,1,
    H5,2,
    H3,2,
    
    H3,1,
    H2,2,
    H1,1,
    M6,2,
    H3,2,
    H2,2,
    H1,1,
    M6,3,
    H1,2,
    
    H1,8,
    M6,1,
    H3,3,
    H2,2,
    H1,1,
    M6,1,
    
    M6,1,
    H3,2,
    H2,2,
    H1,1,
    M6,3,
    H1,7,
    
    H1,8,
    P,8,

	0xFF
};

	unsigned int FreqSelect,MusicSelect;
	
void main()
{
	
	Timer0Init();
	while(1)
	{
		if(Music[MusicSelect]!=0xFF)
		{
		FreqSelect=Music[MusicSelect];
		MusicSelect++;
		Delay(SPEED/4*Music[MusicSelect]);
		MusicSelect++;
	   TR0=0;
		Delay(5);
		TR0=1;	
			
		}
		else
		{
			TR0=0;
			while(1);
			
		}
		
	}	
	
}


void Timer0_Routine() interrupt 1
{
	if(FreqTable[FreqSelect])	//如果不是休止符
	{
		/*取对应频率值的重装载值到定时器*/
		TL0 = FreqTable[FreqSelect]%256;		//设置定时初值
		TH0 = FreqTable[FreqSelect]/256;		//设置定时初值
		Buzzer=!Buzzer;	//翻转蜂鸣器IO口
	}
}

over兄弟们 两段任君采撷
speed越小速度越快 可以做变奏的
以后再更新一点别的 兄弟用那个软件做起来也很方便文章来源地址https://www.toymoban.com/news/detail-594635.html

到了这里,关于【【51单片机蜂鸣器实现起风了】】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【【51单片机的蜂鸣器-11】】

    DS1302我一直有问题搁置了几百天了 先来看看蜂鸣器 搞了一个礼拜verilog然后出去吃饭 估计自己得有10多天没看c语言和51单片机了 现在先处理一下蜂鸣器的问题 蜂鸣器 蜂鸣器分为有源蜂鸣器和无源蜂鸣器 有源内部自带震荡源,将正负极接上直流电压及可持续发声,频率固定

    2024年02月16日
    浏览(51)
  • 【【51单片机的蜂鸣器发声】】

    我们在设置板子的时候要翻转 翻转IO口是因为使用了步进电机的多余的芯片管脚 我们翻转之后还想让它保持一段时间 就是先翻转500次 Delay(1)之后 就是最小的单位每隔1ms 周期就是2ms 频率就是500HZ

    2024年02月16日
    浏览(51)
  • 51单片机学习笔记-9蜂鸣器

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 蜂鸣器 是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。蜂鸣器按驱动方式可分

    2024年02月06日
    浏览(33)
  • stm32单片机/51单片机蜂鸣器不响(proteus模拟)

    1提高蜂鸣器电阻,这样根据分压原理,可以提升蜂鸣器2段电压 2更改蜂鸣器的工作电压为更小的值,这个可以通过在proteus内设置探针查看电压值,更改为其值就可以了 我觉得如果不是仿真的话,蜂鸣器额定电压是不能改的,如果电压不够的话好像就只能够选用合适的三极管

    2024年02月11日
    浏览(29)
  • MCU-51:单片机蜂鸣器播放音乐和提示音

    蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需要控制器提供振

    2024年02月02日
    浏览(34)
  • 33、基于51单片机老人防跌倒蜂鸣器报警系统加速度检测

    背景技术 老年人出门由于身体不灵活、视力较差,容易发生跌倒,现用的老年人跌倒报警装置是通过无线对讲系统研发的,它外观精美,自动化程度高,有很强的专业性,但是,设计者忽略了一个问题,因为大多数老年人使用现代化产品不熟练,随着视力、操作能力的下降,

    2023年04月08日
    浏览(70)
  • 【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。

            言归正传,一切都回归本源,从51再来一次,首先就是最简单的点灯大师。         这么些年从51 到  32  再到  arduino  再到  ESP  等等,都是从点灯大师开始的。 于是介绍如下: 闪灯 流水灯(从左往右) 流水灯(从右往左) 蜂鸣器         LED灯的原理:LED是发

    2024年02月11日
    浏览(37)
  • 基于51单片机的烟雾检测+温度检测+蜂鸣器报警+光耦+风扇+LCD4602液晶显示(含原理图/PCB/代码)

    讲在前面: 51单片机是大多数电子爱好者的入门级单片机,这款设计是一个比较综合的单片机设计。本文介绍了一个典型的51单片机设计,希望对各位有帮助。 本人也在其他平台开源了一些项目和分享: 点击进入B站传送门 1)产品功能: 使用51单片机作为控制器,与ADC0832(

    2024年01月22日
    浏览(36)
  • 单片机-蜂鸣器

    蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电 蜂鸣器主要分为 压电式蜂鸣器 和 电磁式蜂鸣器 两 种类型。 压电式蜂鸣器 主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V 直流工

    2024年02月09日
    浏览(36)
  • 单片机学习-蜂鸣器如何发出声音

    BEEP =! BEEP    为何使用 非运算,这里面 P2 的管脚默认 有上拉电阻,P2^5 输出高电平 每次循环 非运算一下 为低电平 ,产生那种评率 0 1  0 1  0 1 循环下去 

    2024年02月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包