51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我!

//《世上只有妈妈好》51单片机C语言程序和音乐采灯程序

//此程序在硬件上调试通过

//本程序的单片机晶振采用11.0592MHZ

//此程序的流水灯随音乐的节拍的快慢而动

#include

sbit speaker=P2^0; //接音频放大电路,

//sbit speaker=P3^2;

sbit sw=P3^0; //电后位后,sw合上后就开始放音乐,灯开始闪动,sw断开,音乐停 止, 灯也同时停止闪动

unsigned char timer0h,timer0l,time,led=1,j=0;

unsigned char flagd=0;

//世上只有妈妈好数据表

code unsigned char sszymmh[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,

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

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

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

2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0

} ;

// 音阶频率表 高八位

code unsigned char FREQH[]={

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

0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i

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, //1,2,3,4,5,6,7,8,i

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

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

};

void delay(unsigned char t)

{

unsigned char t1;

unsigned long t2;

for(t1=0;t1

{

for(t2=0;t2<8000;t2++)

{

;

}

}

TR0=0;

}

void t0int() interrupt 1

{

TR0=0;

speaker=!speaker;

TH0=timer0h;

TL0=timer0l;

TR0=1;

}

void song()

{

TH0=timer0h;

TL0=timer0l;

TR0=1;

delay(time);

}

void main(void)

{

unsigned char k,i;

TMOD=1; //置CT0定时工作方式1

EA=1;ET0=1;//IE=0x82 //CPU开中断,CT0开中断

while(1)

{

i=0;

time=1;

sw=1;

while(time)

{

if(sw)

{P1=0;i=0;continue;}

if(j==8)

{

//led=1;

j=0;flagd=~flagd;

if(flagd)

{

led=0x80;

}

else

{

led=1;

}

}

else

{

P1=~led;

if(flagd)

{

led=led>>1;

}

else

{

led=le d<<1;

}

j++;

}

k=sszymmh[i]+7*sszymmh[i+1]-1;

timer0h=FREQH[k];

timer0l=FREQL[k];

time=sszymmh[i+2];

i=i+3;

song();

}

}

}

求一个用C语言编写的51单片机音乐程序代码。

#include

sbit speaker=P2^2;

unsigned char timer0h,timer0l,time;

//生日歌

code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,

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

5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,

4,2,1, 4,2,1, 3,2,2, 1,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, //1,2,3,4,5,6,7,8,i

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, //1,2,3,4,5,6,7,8,i

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

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

};

void delay(unsigned char t)

{

unsigned char t1;

unsigned long t2;

for(t1=0;t1

{

for(t2=0;t2<8000;t2++)

{

;

}

}

TR0=0;

}

void t0int() interrupt 1

{

TR0=0;

speaker=!speaker;

TH0=timer0h;

TL0=timer0l;

TR0=1;

}

void song()

{

TH0=timer0h;

TL0=timer0l;

TR0=1;

delay(time);

}

void main(void)

{

unsigned char k,i;

TMOD=1; //置CT0定时工作方式1

EA=1;

ET0=1;//IE=0x82 //CPU开中断,CT0开中断

while(1)

{

i=0;

while(i<75){ //音乐数组长度 ,唱完从头再来

k=sszymmh[i]+7*sszymmh[i+1]-1;

timer0h=FREQH[k];

timer0l=FREQL[k];

time=sszymmh[i+2];

i=i+3;

song();

}

}

}

求单片机 音乐播放的c代码

#include "reg52.h"

unsigned char Count;

sbit _Speak =P2^3 ; //讯响器控制脚

unsigned char code SONG[] ={ //祝你平安

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,

0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,

0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,

0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,

0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,

0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,

0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,

0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,

0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,

0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,

0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

//路边的野华不要采

0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,

0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,

0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,

0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,

0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,

0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,

0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,

0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,

0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,

0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

void Time0_Init()

{

TMOD = 0x01;

IE = 0x82;

TH0 = 0xD8;

TL0 = 0xEF; //12MZ晶振,10ms

}

void Time0_Int() interrupt 1

{

TH0 = 0xD8;

TL0 = 0xEF;

Count++; //长度加1

}

/*-------------------------------------------------

功能:1MS延时子程序

-------------------------------------------------*/

void Delay_xMs(unsigned int x)

{

unsigned int i,j;

for( i =0;i < x;i++ )

{

for( j =0;j<3;j++ );

}

}

/*-------------------------------------------------

功能:歌曲播放子程序i为播放哪一段曲目

-------------------------------------------------*/

void Play_Song(unsigned char i)

{

unsigned char Temp1,Temp2;

unsigned int Addr;

Count = 0; //中断计数器清0

Addr = i * 217;

while(1)

{

Temp1 = SONG[Addr++];

if ( Temp1 == 0xFF ) //休止符

{

TR0 = 0;

Delay_xMs(100);

}

else if ( Temp1 == 0x00 ) //歌曲结束符

{

return;

}

else

{

Temp2 = SONG[Addr++];

TR0 = 1;

while(1)

{

_Speak = ~_Speak;

Delay_xMs(Temp1);

if ( Temp2 == Count )

{

Count = 0;

break;

}

}

}

}

}

/*-------------------------------------------------

功能:主程序

-------------------------------------------------*/

void main()

{

Time0_Init(); //定时器0中断初始化

while(1)

{

Play_Song(0); //播放

}

}

51单片机简谱编码

//  8键电子琴C程序 自己根据音节做个与简谱对应的表就可以了。

#include

sbit SPEAKER = P3^7;

#define KEY P1

unsigned char MUSIC;

unsigned char STH0;

unsigned char STL0;

unsigned int code tab[]={

64021,64103,64260,64400,//低音3开始

64524,64580,64684,64777,

64820,64898,64968,65030,

65058,65110,65157,65178

};

void main(void){

TMOD=0x01;

ET0=1;

EA=1;

KEY = 0xff;

while(1){

if(KEY != 0xff){

switch (~KEY){//显示的列位置

case 0x01://

MUSIC = 7;

break;//

case 0x02://

MUSIC = 6;

break;//

case 0x04://

MUSIC = 5;

break;//

case 0x08://

MUSIC = 4;

break;//

case 0x10://

MUSIC = 3;

break;//

case 0x20://

MUSIC = 2;

break;//

case 0x40://

MUSIC = 1;

break;//

case 0x80://

MUSIC = 0;

break;//

}

STH0=tab[MUSIC]/256;

STL0=tab[MUSIC]%256;

TR0=1;

}else{

SPEAKER = 1;

TR0=0;

}

}

}

void t0(void) interrupt 1 using 0{

TH0=STH0;

TL0=STL0;

SPEAKER=~SPEAKER;

}

求几首单片机经典歌曲乐谱,及蜂鸣器驱动原理和 C语言程序。

#include

sbit fmq=P2^3;

//sbit start=P3^4;

void delay(unsigned int i)

{

unsigned char j;

while(i--)

{

for(j=0;j<115;j++);

}

}

void yanzou(unsigned char pinlv,unsigned int jiepai)

{

unsigned char pl;

unsigned int jp;

if(jiepai==1) delay(250);

else if(jiepai==2) delay(500);

else

{

for(jp=0;jp

{

fmq=0;

for(pl=0;pl

fmq=1;

for(pl=0;pl

}

}

}

void main()

{

unsigned char i,x;

unsigned char code pinlv[]={131,110,98, 87, 73, 87, 110,98, 131,0,110,98, 87, 73, 73, 65, 98, 87,87,87,73,65,73,65,55,58,65,73,65,87,110,98,87,73,110,131,110,98,87,65,73,73,0,87,65,65,73,82,87,98,87,73,131,110,98,0,110,98,87,73,65,55,58,65,73,87,65,65};

unsigned int code jiepai[]={110,131,147,494,196,165,131,294,440,1,131,147,165,588,196,440,294,660,330,165,196,880,588,220,262,124,110,196,220,330,131,147,495,196,262,220,131,147,165,220,784,392,2,660,660,220,196,175,330,588,495,196,110,131,147,2,131,147,330,392,440,524,247,220,196,165,880,880};

i=68;

for(x=0;x

{

yanzou(pinlv[x],jiepai[x]);

}

}

蜂鸣器为P3^4接口

青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码相关推荐

  1. 给单片机焼写程序需要什么东西_单片机怎么烧写程序

    1.单片机怎么烧写程序 STC系列单片机为例:首先,需要安装keil软件和STC_ISP程序下载软件.先对你想要实现对单片机的功能用keil编程,然后用STC_ISP下载软件下载到单片机上,最后打开给 ...

  2. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  3. 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  4. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  5. 单片机c语言程序开发洗衣机,基于51单片机洗衣机控制器的设计(附程序)☆

    基于51单片机洗衣机控制器的设计(附程序)☆(任务书,开题报告,中期检查表,毕业论文21000字,程序) 摘  要 洗衣机是人们日常生活中常见的一种家电,已经成为人们生活中不可缺少的家用电器.在工业生 ...

  6. 单片机系统测试c语言程序,宏晶最新1T8051单片机内部EEPROM测试C语言程序

    /* --- STC International Limited ---------------- 一个完整的EEPROM 测试程序,用宏晶的下载板可以直接测试 STC12C5AxxAD 系列单片机 ...

  7. 激光测距仪系统设计 c语言程序),激光测距仪系统设计(机械图,电路图,c语言程序)...

    激光测距仪系统设计(机械图,电路图,c语言程序)(毕业论文22000字,cad图纸,答辩ppt) 摘 要 本次激光测距仪系统设计采用的是相位式测距法,相位激光测距又称调幅连续波激光测距通常是基于对目标 ...

  8. c语言程序执行时无法输入字符串,C语言程序设计中键盘输入数据的方法分析

    1. 引言 C语言程序设计是一门实践性很强的语言课程,在程序设计过程中经常需要从键盘输入所需要的数据.C语言没有专门的输入语句,可以调用C语言编译系统提供的函数库中的库函数来实现.有些程序虽然调试成功 ...

  9. c语言程序竞赛,2015年江西理工大学C语言程序设计竞赛(初级组)

    JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...

最新文章

  1. 《今日简史》读书笔记(未完待续)
  2. HTML学习笔记_004_分段与换行
  3. 集合已修改;可能无法执行枚举操作。
  4. IO:Reactor和Proactor的区别
  5. [转] Boost智能指针——scoped_ptr
  6. inline-block的兼容性问题
  7. 服务提供商应该如何帮助企业保护数据安全
  8. python matplotlib:figure,add_subplot,subplot,subplots讲解实现
  9. vsftp服务器搭建
  10. 修改2440里面的FriendlyARM
  11. lingo入门(数据部分)
  12. 登录界面转换实现html,html5和css3登录注册表单界面切换动画
  13. GNU cflow实现调用关系分析
  14. 熊猫DataFrame apply()示例
  15. 【开源项目】Java王者荣耀游戏项目开发
  16. 使用ingress暴露kubernetes集群内部的pod服务
  17. js 实现在线考试切屏代码
  18. 踩坑nessus激活码-点击官方邮件链接不能获取到验证码
  19. 通过谷歌chrome我们可以进行视频通话
  20. Java实现回文判断

热门文章

  1. vs2017下libcef配置
  2. 大学应该教会学生什么?
  3. Java8 LocalDateTime 获取当前日周月年的起止时间
  4. polsarpro滤波后没有bmp文件_win10系统右键新建菜单中没有bmp如何解决
  5. 同步线程和异步线程的区别
  6. 推挽变换器漏感电压尖峰
  7. mongodb 集群shard_MongoDBV3.0.7版本(shard+replica)集群的搭建及验证
  8. 使用CAS实现SSO.
  9. 计算机词汇app有哪些,APP推荐 | 有哪些APP独得学霸恩宠?
  10. nginx根据url中的参数进行转发