/********本程序中,FOSC=11.0592M*********/

#include

#include

#define uchar unsigned char

#define uint  unsigned int

struct music_type{

uchar tone;

uchar delay;

};

/**********F调3个8度7音阶的音高参数**********/

uint code tonetab[]={

64216,64360,64489,64603,64654,64752,64837, //低音1~7

64876,64948,65012,65042,65095,65144,65186, //中音1~7

65206,65242,65274,65289,65315,65340,65361  //高音1~7

};

//曲谱,每个音符含两项数据,第1项为音高,第2项为节拍(以1/4拍为单位)

/**************康定情歌乐谱***************/

struct music_type code  songtab[]={

3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,

3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x06,

3+7,0x02,5+7,0x02,6+7,0x02,6+7,0x01,5+7,0x01,6+7,0x03,3+7,0x01,2+7,0x04,

5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,

6+0,0x02,2+7,0x06,5+7,0x02,3+7,0x06,2+7,0x01,1+7,0x01,6+0,0x06,

5+7,0x02,3+7,0x02,2+7,0x01,3+7,0x01,2+7,0x01,1+7,0x01,2+7,0x02,6+0,0x06,

//

3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,

5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,

1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,

5+7,0x08,

5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,

1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,

5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,

1+7,0x01,6,0x01,1+7,0x06,

3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,

5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,

5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,

1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,

2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,

1+7,0x01,6,0x01,5,0x05,

//

3+7,0x01,2+7,0x01,3+7,0x01,5+7,0x01,6+7,0x01,5+7,0x01,1+14,0x01,6+7,0x01,

5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,

1+14,0x02,2+14,0x01,3+14,0x01,2+14,0x01,1+14,0x01,6+7,0x01,1+14,0x01,

5+7,0x08,

5+7,0x01,3+7,0x01,5+7,0x04,6+7,0x02,

1+14,0x02,2+14,0x01,3+14,0x01,1+14,0x01,6+7,0x01,5+7,0x02,

5+7,0x02,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,

1+7,0x01,6,0x01,1+7,0x06,

3+7,0x01,2+7,0x01,1+7,0x02,2+7,0x03,3+7,0x01,

5+7,0x02,6+7,0x01,1+14,0x01,6+7,0x02,5+7,0x02,

5+7,0x01,3+7,0x01,2+7,0x02,3+7,0x01,5+7,0x01,3+7,0x01,2+7,0x01,

1+7,0x01,2+7,0x01,6,0x04,1+7,0x02,

2+7,0x03,3+7,0x01,1+7,0x01,2+7,0x01,1+7,0x02,6,0x01,

1+7,0x01,6,0x01,5,0x05,

0,0x00

};

/*********端口及变量定义**********/

sbit SPEAKER = P3^7;

uchar tlow1,thig1;

/*******软件延时,约n*10us******/

void delay10us(unsigned char n){

do{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}while(--n);

}

/*******软件延时,约n ms******/

void delayms(unsigned int n){

do {

delay10us(131);

}while(--n);

}

main () {

uchar i,j;

EA=1;ET0=1;

TMOD=0X01;

while(1){

i=0;

while(songtab[i].delay!=0){

if(songtab[i].tone==0)TR0=0;  //音高数据为0

else{     //音高数据不为0

//用定时器参数控制T1的振荡频率,即音高

thig1=TH0=tonetab[songtab[i].tone-1]/256;

tlow1=TL0=tonetab[songtab[i].tone-1]%256;

TR0=1;

}

//控制音符的持续时间,即节拍

for(j=0;j

delayms(200);

}

i++; //下一个音符

}

TR0=0;  //停止演奏

delayms(1000);  //一遍完成后等待

}

}

/*******定时器1中断,控制蜂鸣器发声频率*******/

void  t0 () interrupt 1{

TH0=thig1;TL0=tlow1;

SPEAKER = !SPEAKER;  //蜂鸣器发声

}

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

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

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

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

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

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

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

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

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

  5. 单片机七阶音符_从零开始学单片机(八)蜂鸣器唱歌

    单片机上的蜂鸣器结构非常的简单 只要给一个0,它就会"叫".让它唱歌的原理很简单,声音大小是固定的,让它的频率变化,就能让它发出不同的音符. 代码中在软件循环延时过程中,依次给它一 ...

  6. 基于stm32单片机多功能可调时钟闹钟万年历计时器闹铃提醒Proteus仿真(源码+仿真+原理图+PCB)

     资料编号:148 视频讲解: 148-基于stm32单片机多功能可调时钟闹钟万年历计时器闹铃提醒Proteus仿真(源码+仿真+原理图+PCB) 本设计采用stm32单片机作为主控,LCD1602显 ...

  7. 基于51单片机多功能智能台灯设计 视力灯 坐姿矫正套件 台灯 人体感应 包括实物+电路原理图+程序+proteus仿真

    基于51单片机多功能智能台灯设计 视力灯 坐姿矫正套件 台灯 人体感应 包括实物+电路原理图+程序+proteus仿真 ID:69100646120443268太白路自信的桔梗

  8. hc05与单片机连接图_单片机科普:单片机的IO口不够用了怎么办?如何扩展单片机的IO口...

    单片机是一种可编程器件,在各种消费类电子.工业电子.汽车电子等行业应用广泛,目前开发产品的构架就是以单片机为核心,根据不同的功能搭建不同的外设电路.同样的功能,每个人.每个团队所做的技术方案都不会相同 ...

  9. 单片机 李广弟_单片机基础(第3版)

    商品描述: 内容简介: 本书内容在前两版的基础上做了适度增删.删去了第2版中有关16位单片机的介绍,而对8位单片机的内容进行了扩充,特别是扩充了有关串行扩展的知识.本书着重讲述8位单片机的典型代表80 ...

最新文章

  1. 【cs229-Lecture7】支持向量机(SVM)
  2. VideoTool之FFmpeg:FFmpeg的简介、安装、使用方法之详细攻略
  3. Hadoop RPC服务发布代码示例
  4. html画布 缩放的正方形,html5-canvas – 在动画HTML5画布中缩放和平移
  5. Java Inner Class 内部类
  6. jdk源码——HashMap
  7. Android Webview实现文件下载功能
  8. 布尔型Boolean+undefined+null(JS)
  9. (0)图像处理界面——C#调用C++图像处理的DLL
  10. 《单域名下整合动网、动易、OBlog程序》
  11. linux系统怎么关闭屏保,Linux关闭屏保
  12. 数据分析-PART1--数据获取和步骤
  13. 创建网页文件html,HTML快速入门之创建网页文件
  14. 【JTS】JTS的几何图形的基本关系方法
  15. win10安装Vmware虚拟机黑屏的解决
  16. 经济观察:开业三周年 亚投行打消外界四大质疑
  17. python实现检查邮箱格式是否正确,并检查提交的文件格式是否正确
  18. 各类常见的关系型数据库
  19. 常用linuxm命令
  20. shopee一件代发怎么算运费?计算方式是什么?

热门文章

  1. JPG文件编解码详解——详细介绍编码和解码JPG
  2. 通过106短信平台群发的营销短信内容如何编辑
  3. java解析eml文件_使用JavaMail解析EML文件
  4. c语言中操作符的使用及注意事项
  5. Eolink 出席 QECon 深圳站,共同探讨软件质量和效能发展
  6. mulesoft 入门与实践-2(java, invoke)
  7. linux设置环境变量java_home,Linux下修改和设置环境变量JAVA_HOME的三种方法
  8. Node.js 内存管理和 V8 垃圾回收机制
  9. 为什么上班的时候基本上都是坐着,但是感觉很累?
  10. python中分组频率统计功能_python频数统计value_counts和groupby方法