当前位置: 首页 > article >正文

C51 Proteus仿真实验23:蜂鸣器播放音乐

说明

程序运行后播放生日快乐歌曲

Proteus仿真

蜂鸣器播放音乐

使用到的元器件:
单片机:AT89C51
电容:CAP
极性电容:CAP-ELEC
电阻:RES、RESPACK-8
晶振:CRYSTAL
蜂鸣器:SOUNDER

C51代码

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit Beep = P3^7;
//生日快乐歌的音符频率表,不同频率由不同的延时来决定
uchar code SONG_TONE[]=
{
 	212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,129,169,190,119,119,126,159,142,159,0
};
//生日快乐歌节拍表,节拍决定每个音符的演奏长短
uchar code SONG_LONG[]=
{
 	9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0
};
//延时
void DelayMs(uint ms)
{
 	uchar t;
	while(ms--)
	{
	 	for(t=0;t<120;t++);
	}
}

//播放音乐实现
void PlayMusic()
{
 	uint i =0,j,k;
	while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
	{
	 	for(j=0;j<SONG_LONG[i]*20;j++)//循环控制音符的持续时间,SONG_LONG[i]*20决定每个音符的播放时长
		{
		 	Beep = ~Beep;
			for(k=0;k<SONG_TONE[i]/3;k++);//循环控制音符的频率
		}
		DelayMs(10);
		i++;
	}
}

void main()
{
 	while(1)
	{
	 	PlayMusic();
		DelayMs(500);//延时500ms后再重新播放
	}
}

http://www.kler.cn/a/595221.html

相关文章:

  • 从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析
  • 2025-3-17 腾讯云-大数据方向-成都面试
  • 黑马程序员-微服务开发-MybatisPlus的使用
  • 记一次wsl2+docker无法运行的经历
  • OSPF-8 OSPF特殊区域NSSA
  • PIC CCS编译器中的ATOI()、ATOL()和ATOI32()
  • QPrintDialog弹出慢的问题
  • 计算机技术系列博客——目录页(持续更新)
  • git 设置保存密码 git保存密码
  • 大屏技术汇集【目录】
  • 在Springboot中集成unihttp后应用无法启动的解决办法
  • HTML 中如何设置页面的语言,这对 SEO 和无障碍访问有什么影响?
  • MySQL 中,查看执行频次、慢查询日志、SHOW PROFILE和 EXPLAIN性能分析和优化
  • 如何自定义知行之桥Webhook端口返回的Response消息
  • C#使用SnsPictureBox.dll绘制点,线段、圆、折线、多边形、测量尺等多种图形。
  • 【大模型LLM第十三篇】Agent入门之CoT,self-ask,Plan-and-execute,ReAct串讲
  • 【pytest框架源码分析五】pytest插件的注册流程
  • AtCoder - arc086_d Shift and Decrement分析与实现
  • 深度剖析淘宝拍立淘按图搜索商品API技术规范
  • Hinton提出的知识蒸馏(Knowledge Distillation,简称KD):原理解释和代码实现