单片机实验(十一)无源蜂鸣器

本文介绍了一种使用80S52单片机控制无源蜂鸣器播放音乐的方法,通过定时器和精确的延时控制,实现了《最炫民族风》等曲目的演奏。文章提供了详细的代码示例,展示了如何利用单片机的P3.3端口输出特定频率的信号,以产生不同音阶的声音。

80S52:无源蜂鸣器模块

功能:嗡嗡叫发声
这个无源蜂鸣器的操作非常水所以我也水过去好了
先上电路连接图(Proteus仿真):
在这里插入图片描述
从图中可见我们能操作的也就P3.3一个端口,只要不停地输出0,1,0,1就能让蜂鸣器振动发声,那么如何发出美妙的声音呢,只要在0和1的变换之间插入不同长度的延时就能做到音阶的变化,本人不懂乐理,更搞不清楚具体要延时几微秒,但可以问度娘手动滑稽

然后看到了大佬们惊为天人的作品:
基于T0定时/计数器的最炫民族风。。。

#include<reg52.h>
sbit BUZZER = P3^3;

#define uchar unsigned char
#define uint  unsigned int
#define REST         36                       
#define A                  0                  
#define AB          1                  
#define B                  2                 
#define BC          3                  
#define C                  4                  
#define D                  5                  
#define DE                 6                  
#define E                 7                      
#define EF          8                  
#define F                  9                  
#define FG          10         
#define G                 11          
#define L                  12         
#define LM          13          
#define M                  14          
#define MN          15          
#define N                  16                 
#define O                  17          
#define OP          18          
#define P                  19          
#define PQ          20          
#define Q                  21          
#define QR          22          
#define R                  23         
#define S                  24          
#define SU          25          
#define U                  26         
#define UV          27          
#define V                  28         
#define W                  29         
#define WX          30          
#define X                  31         
#define XY          32          
#define Y                  33         
#define YZ          34          
#define Z                  35          
uchar code m_note[][2] = {
   
   
{
   
   248,136},{
   
   248,243},{
   
   249,88},{
   
   249,184},{
   
   250,18},{
   
   250,103},{
   
   250,184},{
   
   251,3},{
   
   251,75},
{
   
   251,143},{
   
   251,206},{
   
   252,11},{
   
   252,67},{
   
   252,121},{
   
   252,172},{
   
   252,219},{
   
   253,9},{
   
   253,51},
{
   
   253,91},{
   
   253,129},{
   
   253,165},{
   
   253,199},{
   
   253,231},{
   
   254,5},{
   
   254,33},{
   
   254,60},{
   
   254,85},
{
   
   254,109},{
   
   254,132},{
   
   254,153},{
   
   254,173},{
   
   254,192},{
   
   254,210},{
   
   254,227},{
   
   254,243},{
   
   255,2},
{
   
   0,0},
};
uchar code display[][2] = {
   
   
{
   
   N,8},{
   
   F,4},{
   
   F,4},{
   
   L,8},{
   
   N,8},{
   
   M,4},{
   
   M,2},{
   
   N,2},{
   
   M,4},{
   
   L,4},
{
   
   M,4},{
   
   L,4},{
   
   F,8},{
   
   N,8},{
   
   F,4},{
   
   F,4},{
   
   L,8},{
   
   N,8},
{
   
   P,4},{
   
   M,2},{
   
   N,2},{
   
   M,4},{
   
   L,4},{
   
   M,4},{
   
   L,4},{
   
   G,4},{
   
   E,4},
{
   
   N,8},{
   
   F,4},{
   
   F,4},{
   
   L,8},{
   
   N,8},{
   
   M,
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值