单片机上的蜂鸣器结构非常的简单

只要给一个0,它就会“叫”。让它唱歌的原理很简单,声音大小是固定的,让它的频率变化,就能让它发出不同的音符。

代码中在软件循环延时过程中,依次给它一个固定频率的方波,让它唱起来。

//晶振11.0592

#include

sbit speaker=P2^3;

unsigned char byteTH0,byteT0L,duration;

// 小星星句子,三个一组,第一个表示音符,第二个表示音阶,第三个表示延时长度(单位约等于0.1s)

code unsigned char music[]={

1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,

4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4,

5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4,

5,2,2, 5,2,2, 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,4,

1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,

4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4 };

//定时器计时初值,高八位,代表不同音符的频率

code unsigned char FREQH[]={

0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,

0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;

//定时器计时初值,低八位,代表不同音符的频率

code unsigned char FREQL[]={

0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,

0x8F,0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,

0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};

void song();

void delay(unsigned char t);

void main(void)

{

unsigned char index, step;

TMOD=1;

EA=1;

ET0=1;

while(1)

{

step=0;

while(step<126)

{

index = music[step] + 7 * music[step+1] - 1;

byteTH0 = FREQH[index];

byteT0L = FREQL[index];

duration = music[step+2];

step += 3;

song();

}

delay(10);

}

}

void timer0() interrupt 1

{

TR0=0;

speaker=!speaker;

TH0 = byteTH0;

TL0 = byteT0L;

TR0=1;

}

void delay(unsigned char t)

{

unsigned int i;

unsigned char j=80;

for(i=0; i

while(j--);

TR0=0;

}

void song()

{

TH0 = byteTH0;

TL0 = byteT0L;

TR0 = 1;

delay(duration);

}

单片机七阶音符_从零开始学单片机(八)蜂鸣器唱歌相关推荐

  1. 单片机七阶音符_(单片机问题)让蜂鸣器发出do,ri,mi,fa,so,la,si,按这个顺序发声,每个音符各发声1秒....

    问题描述: (单片机问题)让蜂鸣器发出do,ri,mi,fa,so,la,si,按这个顺序发声,每个音符各发声1秒. 蜂鸣器接在单片机的P2.4口,用C语言来编写,求具体的单片机程序,不要框架型的程序 ...

  2. hc05与单片机连接图_小白学单片机:单片机烧写器及烧写软件的使用

    一.为什么叫烧写 早期一般是将调试好的单片机程序写入到ROM.EPROM中,这种操作就像刻制光盘一样,实在高电压方式下写入,PROM是一次性写入,存储内部发生变化,有些线路或元件就被烧断,不可再恢复, ...

  3. 单片机七阶音符_求单片机一些音乐的音符及节拍

    2014-12-07 回答 将51单片机的p1.2口连接到蜂鸣器的一个管脚上,另外一个管脚接地.若声音小,则添加一个三级管放大电路或直接串一个ul2003 /*-------------------- ...

  4. 单片机七阶音符_单片机对于音乐的编程中 ,音符的十六位数据表是怎样

    展开全部 只有音乐发声汇编程序,没有加入LED灯,供参考.数据代码已改为小星星发声 ;********************************************** ORG 0000H ...

  5. 单片机七阶音符_单片机 演奏音符

    演奏音阶 /* 名称:演奏音阶 说明:本例使用定时器演奏一段音阶,播放由 K1 控制. */ #include #define uchar unsigned char #define uint uns ...

  6. 单片机七阶音符_单片机演奏音乐(F调3个8度7音阶)程序+Proteus仿真

    /********本程序中,FOSC=11.0592M*********/ #include #include #define uchar unsigned char #define uint  un ...

  7. 从零开始学单片机c语言 pdf,从零开始学习单片机.pdf

    从零开始学习单片机从零开始学习单片机 单片机 DIY 设计 1. 手把手教你用 51 单片机 DIY 音乐频谱显示(成品图+电路图+源代码) /diagram/3972_4112/102030.htm ...

  8. 单片机python教程_如何入门单片机/嵌入式

    之前回答的一个单片机入门的问题,感觉脉络还算完整,遂把它单独整理出来. 大一学的单片机,本科玩了几年嵌入式,做过智能家居,智能小车,示波器,开关电源等等,后来工作(本人芯片行业)以后就没搞了,但是这段 ...

  9. ht1621b和单片机电平匹配_有备无患,单片机面试问题集

    点击箭头处 "蓝色字" ,关注我们哦!! 这十八个经典问答,讲透了RS485接口! 模拟技术之传感器电路实例讲解 三种单片机对比:51系列.PIC和AVR 几个单片机汇编语言教学例 ...

最新文章

  1. 2022-2028年中国文化产业园投资分析及前景预测报告(全卷)
  2. 手机内存解读以及android刷机原理
  3. boost::histogram::detail::make_default用法的测试程序
  4. c++ 顺序容器list的一个例子
  5. 前端学习(2744):重读vue电商网站54之配置 HTTPS 服务
  6. java web开发之 spring单元测试
  7. Mac 安装virtualbox 虚拟机用移动硬盘遇到的VERR_WRITE_PROTECT
  8. Java学习---JDK的安装和配置
  9. 墨刀 vs Axure RP
  10. 程序员的 JavaScript 代码该如何让计算机搞懂?
  11. linux php 网站计数器,PHP图形数字计数器的实现
  12. Redis--发布订阅
  13. aswing学习笔记2-不规则外框-请教思路
  14. PBRT的scene.pbrt使用方法
  15. VBS学习笔记(4): WScript //d //x MyScript.vbs,调试无法启动
  16. 巨象指纹浏览器的反追踪技术原理
  17. 鸿蒙系统体验报告,我雷某人摊牌了,鸿蒙2.0版本使用体验汇报
  18. 计算机组成及原理ppt课件,计算机组成原理第五章课件.ppt
  19. 数据结构(王道版本,主讲人:闲鱼学长)P7-P18
  20. mac mini u盘安装系统_用PE系统U盘启动盘安装操作系统

热门文章

  1. 上海亚商投顾:市场继续缩量调整 汽车、光伏板块领涨
  2. 【财富空间】陈春花:企业持续成长的先决条件是领导者具有经营的意志力
  3. Ansys WorkBench导出模态中性文件(.mnf)联合ADAMS柔性体动力学仿真
  4. Motionpro客户端配置l3vpvn隧道失败
  5. Could not GET xxx.pom
  6. python+selenium自动化软件测试
  7. OC5021B 100V宽电压输入 LED车灯/大功率照明 DC降压型恒流驱动器
  8. 游戏本天梯_实况足球手游国服5月天梯胜率榜+极品补丁一枚
  9. 重温FPGA开发29
  10. 如何写培训计划书(培训计划怎么写)浅说