单片机七阶音符_单片机演奏音乐(F调3个8度7音阶)程序+Proteus仿真
/********本程序中,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仿真相关推荐
- 单片机七阶音符_单片机对于音乐的编程中 ,音符的十六位数据表是怎样
展开全部 只有音乐发声汇编程序,没有加入LED灯,供参考.数据代码已改为小星星发声 ;********************************************** ORG 0000H ...
- 单片机七阶音符_单片机 演奏音符
演奏音阶 /* 名称:演奏音阶 说明:本例使用定时器演奏一段音阶,播放由 K1 控制. */ #include #define uchar unsigned char #define uint uns ...
- 单片机七阶音符_(单片机问题)让蜂鸣器发出do,ri,mi,fa,so,la,si,按这个顺序发声,每个音符各发声1秒....
问题描述: (单片机问题)让蜂鸣器发出do,ri,mi,fa,so,la,si,按这个顺序发声,每个音符各发声1秒. 蜂鸣器接在单片机的P2.4口,用C语言来编写,求具体的单片机程序,不要框架型的程序 ...
- 单片机七阶音符_求单片机一些音乐的音符及节拍
2014-12-07 回答 将51单片机的p1.2口连接到蜂鸣器的一个管脚上,另外一个管脚接地.若声音小,则添加一个三级管放大电路或直接串一个ul2003 /*-------------------- ...
- 单片机七阶音符_从零开始学单片机(八)蜂鸣器唱歌
单片机上的蜂鸣器结构非常的简单 只要给一个0,它就会"叫".让它唱歌的原理很简单,声音大小是固定的,让它的频率变化,就能让它发出不同的音符. 代码中在软件循环延时过程中,依次给它一 ...
- 基于stm32单片机多功能可调时钟闹钟万年历计时器闹铃提醒Proteus仿真(源码+仿真+原理图+PCB)
资料编号:148 视频讲解: 148-基于stm32单片机多功能可调时钟闹钟万年历计时器闹铃提醒Proteus仿真(源码+仿真+原理图+PCB) 本设计采用stm32单片机作为主控,LCD1602显 ...
- 基于51单片机多功能智能台灯设计 视力灯 坐姿矫正套件 台灯 人体感应 包括实物+电路原理图+程序+proteus仿真
基于51单片机多功能智能台灯设计 视力灯 坐姿矫正套件 台灯 人体感应 包括实物+电路原理图+程序+proteus仿真 ID:69100646120443268太白路自信的桔梗
- hc05与单片机连接图_单片机科普:单片机的IO口不够用了怎么办?如何扩展单片机的IO口...
单片机是一种可编程器件,在各种消费类电子.工业电子.汽车电子等行业应用广泛,目前开发产品的构架就是以单片机为核心,根据不同的功能搭建不同的外设电路.同样的功能,每个人.每个团队所做的技术方案都不会相同 ...
- 单片机 李广弟_单片机基础(第3版)
商品描述: 内容简介: 本书内容在前两版的基础上做了适度增删.删去了第2版中有关16位单片机的介绍,而对8位单片机的内容进行了扩充,特别是扩充了有关串行扩展的知识.本书着重讲述8位单片机的典型代表80 ...
最新文章
- 【cs229-Lecture7】支持向量机(SVM)
- VideoTool之FFmpeg:FFmpeg的简介、安装、使用方法之详细攻略
- Hadoop RPC服务发布代码示例
- html画布 缩放的正方形,html5-canvas – 在动画HTML5画布中缩放和平移
- Java Inner Class 内部类
- jdk源码——HashMap
- Android Webview实现文件下载功能
- 布尔型Boolean+undefined+null(JS)
- (0)图像处理界面——C#调用C++图像处理的DLL
- 《单域名下整合动网、动易、OBlog程序》
- linux系统怎么关闭屏保,Linux关闭屏保
- 数据分析-PART1--数据获取和步骤
- 创建网页文件html,HTML快速入门之创建网页文件
- 【JTS】JTS的几何图形的基本关系方法
- win10安装Vmware虚拟机黑屏的解决
- 经济观察:开业三周年 亚投行打消外界四大质疑
- python实现检查邮箱格式是否正确,并检查提交的文件格式是否正确
- 各类常见的关系型数据库
- 常用linuxm命令
- shopee一件代发怎么算运费?计算方式是什么?
热门文章
- JPG文件编解码详解——详细介绍编码和解码JPG
- 通过106短信平台群发的营销短信内容如何编辑
- java解析eml文件_使用JavaMail解析EML文件
- c语言中操作符的使用及注意事项
- Eolink 出席 QECon 深圳站,共同探讨软件质量和效能发展
- mulesoft 入门与实践-2(java, invoke)
- linux设置环境变量java_home,Linux下修改和设置环境变量JAVA_HOME的三种方法
- Node.js 内存管理和 V8 垃圾回收机制
- 为什么上班的时候基本上都是坐着,但是感觉很累?
- python中分组频率统计功能_python频数统计value_counts和groupby方法