IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 单片机蜂鸣器实验 -> 正文阅读

[嵌入式]单片机蜂鸣器实验

单片机蜂鸣器实验

蜂鸣器:是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

PNP型三极管,是由2块P型半导体中间夹着1块N型半导体所组成的三极管,所以称为PNP型三极管。也可以描述成,电流从发射极E流入的三极管。

51单片机蜂鸣器应答实验

#include<reg52.h>
#define uint unsigned int
sbit beep=P1^0;  

void delay();

void main(){
	beep = 1;     //蜂鸣器常用beep表示(哔哔声)。
	delay();
	beep = 0;
	delay();
}

void delay(){
	uint x,y;
	for(x=900;x>0;x--)
	for(y=100;y>0;y--);
}
05_04_21_05_3

51单片机蜂鸣器播放音乐

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
	
sbit beepIO=P1^0; //定义蜂鸣器端口为p1^5,根据单片机实际蜂鸣器实际接口改变
uchar m,n; //定义4个八度 每八度12分音律 共48音律
uchar code T[49][2]= {{0,0}, //定义音律49个二维数组
    {0xF9,0x1F},{0xF9,0x82},{0xF9,0xDF},{0xFA,0x37},{0xFA,0x8A},{0xFA,0xD8},{0xFB,0x23},{0xFB,0x68},{0xFB,0xAA},{0xFB,0xE9},{0xFC,0x24},{0xFC,0x5B},
    {0xFC,0x8F},{0xFC,0xC1},{0xFC,0xEF},{0xFD,0x1B},{0xFD,0x45},{0xFD,0x6C},{0xFD,0x91},{0xFD,0xB4},{0xFD,0xD5},{0xFD,0xF4},{0xFE,0x12},{0xFE,0x2D},
    {0xFE,0x48},{0xFE,0x60},{0xFE,0x78},{0xFE,0x86},{0xFE,0xA3},{0xFE,0xB6},{0xFE,0xC9},{0xFE,0xDA},{0xFF,0xEB},{0xFE,0xFA},{0xFF,0x09},{0xFF,0x17},
    {0xFF,0x24},{0xFF,0x30},{0xFF,0x3C},{0xFF,0x47},{0xFF,0x51},{0xFF,0x5B},{0xFF,0x64},{0xFF,0x6D},{0xFF,0x75},{0xFF,0x7D},{0xFF,0x84},{0xFF,0x8B}
};
uchar code music[][2]= {{0,4}, //定义曲谱数组,前数为音律,后数为音符节拍 ,要换歌改变简谱对应的音律号即可
    {0,1},{1,1},{3,1},{5,1},{6,1},{8,1},{10,1},{12,1},{13,1},//演示超低音八度 123457671
    {0,1},{13,1},{15,1},{17,1},{18,1},{20,1},{22,1},{24,1},{25,1},//演示低音八度12345671
    {0,1},{25,1},{27,1},{29,1},{30,1},{32,1},{34,1},{36,1},{37,1},//演示中音八度12345671
    {0,1},{37,1},{39,1},{41,1},{42,1},{44,1},{46,1},{48,2},//演示高音八度 1234567
    {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},//记录菊花台简谱歌词:0553236 23532 天青色等烟雨 而我在等你
    {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},//简谱歌词:0553235 23521 炊烟袅袅升起 隔江千万里
    {0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,16},//简谱歌词:01235654 53322 在平地书刻你房间上的飘影
    {0,4},{17,4},{19,4},{17,4},{17,4},{19,4},{17,4},{19,4},{19,4},{21,8},{24,4},{21,4},{21,12},//简谱歌词:就当我为遇见你伏笔
    {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16}, //简谱歌词:0553236 23532 天青色等烟雨 而我在等你
    {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16}, //简谱歌词:0553235 23521 月色被打捞起 掩盖了结局
    {0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,12},//简谱歌词:0123 5654 5332 25 322 11 如传世的青花瓷在独自美丽
    {12,4},{21,8},{19,8},{19,4},{17,20}, //简谱歌词:你眼带笑意
    {0xFF,0xFF}
}; //歌曲结尾标识


void delay(uchar p) //延时函数 无符号字符型变量
{
    uchar i,j; //定义无符号字符型变量J和I
    for(; p>0; p--) // 此处P值即主函数的n值节拍个数
        for(i=181; i>0; i--) //延时181*181个机器周期约35毫秒,即一个1/16节拍
            for(j=181; j>0; j--);
}




void T0_int() interrupt 1
{
    beepIO=!beepIO; //蜂鸣器翻转发声
    TH0=T[m][0];
    TL0=T[m][1];
//音律延时周期次数码表赋给定时寄存器作为计数初始值,每TH0TL0个机器周期触发蜂鸣器端口翻转,演奏出不同音符
}


void main()
{
    uchar i=0; //定义无符号字符型变量i,初始值为0
    TMOD=0x01;
    EA=1;
    ET0=1; //开启T0定时16位方式,总中断开启,开启T0外部中断请求
    while(1) //开始曲谱演奏,循环无限重复
    {
        m=music[i][0]; //将音律号赋值给m
        n=music[i][1]; //将节拍号赋值给n
        if(m==0x00) //如果音律号为0,
        {
            TR0=0;
            delay(n);
            i++;
        } //关闭计时器,延迟n拍,将循环数I加1 ,准备读下一个音符
        else if(m==0xFF) //否则如果音律数为FF
        {
            TR0=0;
            delay(30);
            i=0;
        } //开启节拍延时30个1/16节拍,歌曲停顿2秒,将循环数I置0
        else if(m==music[i+1][0]) // 否则如果把下一个音律号数给变量m
        {
            TR0=1;
            delay(n);
            TR0=0;
            i++;
        } //定时器0打开延迟n拍,关闭定时器T0,读下一个音符,循环数加1读下一个音律
        else //音符若不为零
        {
            TR0=1;
            delay(n);
            i++;
        }//打开定时器,延时n个1/16拍,循环数I加1 ,准备演奏下一个音符
    }
}

05_04_21_05_3
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:11:22  更:2022-05-06 11:11:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:03:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码