给个用C语言写的51单片机音乐程序,只要有Do re mi fa就行,越简单越好

如题所述

我空间里有个proteus列表,里面有音乐的仿真程序,你可以下载看看,如果你没装PROTEUS,可以把下载包下载只打开程序部分看下。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-20
生日快乐的程序:#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};

void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;

while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}

void t0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
P1_0=~P1_0;
}本回答被网友采纳

单片机简易电子琴程序
(2. 音乐产生的方法; 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时\/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以...

用钢琴慢点可以听出do re mi fa,但是快就不行,是五音不全嘛
这个不是五音不全,但是你的音准应该存在很大的问题,所以我建议你学习断音 缓音 可以在一个月内 解决你的音准跑调问题 这个技巧 就像运动员锻炼身体一样 时间长了 有劲儿了 就不跑调了。

用do,re,mi,fa,sol,la,si能给一首歌谱曲吗?简单一点的就行了。
当然还要有其它记号了,找个歌谱看看就知道了 除了1234567外,还要有高音点、低音点、增时线、减时线、小节线、调号、拍号、速度、力度、表情等记号 想写歌的话,找个老师系统学一下吧

只有do,re,mi,fa,so的幼儿钢琴能弹什么曲子
拉丁语版《圣约翰赞美诗》歌词如下:圭多由此发明了“六声音阶”——Ut(乌),Re(唻),Mi(咪),Fa(发),So(嗖),La(啦)!“六声音阶”就这样传唱了上千年,后来,因为弦乐器的发展,中世纪的六弦琴被淘汰了,人们加入了第七个唱名“Si”(取自刚才那首歌最后一句:Sancte Iohannes 的两个首字母...

do,re,mi,fa,so的音符怎么写
mi fa so la xi 和高音的do re mi fa so la xi 各怎么弹 这个问题本身就有问题 建议找个老师 好好给你讲一讲 或者上网学一些基础知识 不同的音调有不同的弹法 任何乐器都这样哦 是do re mi fa so la ti还是do re mi fa so la si 都对,国际上最后一个为ti,大陆为si(xi)

音乐do re mi fa so la si do 是什么关系,音调的高低吗??? 想吉他里...
第一个问题 他们的关系是1到2 全音 2到3 是全音 3到4 是半音 4到5全音 5到6全音 6到7全音 7到高音1 半音关系 是音调的高低 第二个 和弦音都有根音的 也可以说是高低转换 因为根音决定了他的高度

音乐测试听音 怎么过 就是 do re mi fa so la si do 有什么窍门啊
一个字——练!反复听这些音,记住每个音的特点,就好办了!加油!!

音乐中,1234567(Do Re Mi Fa So La Xi),叫什么?叫旋律吗?
回答:大哥..你的问题问得一塌糊涂..看都看不懂啊..

怎么把一段旋律的简谱听出来 就是用do re mi这些唱名
第1步:随便找首歌曲先听,学会歌曲后。看着简谱唱谱。假设这个过程要唱完50首歌。第2步:随便找个没唱过的谱子,直接唱谱,唱几次后,找到MP3对照自己唱得对不对,要是不对,返回第1步再练习10首歌。直到第2步能够一次无错成功。第3步:找歌曲MP3,听写。注意:尽量选用简单的谱子练习,最好全...

关于音乐上的 do re mi fa so la si怎么和数字1234567对应记忆_百 ...
亲 这个不用刻意去背 你在看五线谱的时候如果说忘记哪个数字对应哪个音 你就拿个笔在数字下面写出那个音 然后一定要变弹别唱出那个音 不用刻意去背 那样边弹边唱过几天就熟了!加油

相似回答