欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機中斷+Proteus仿真音樂實現《天空之城》
[打印本頁]
作者:
青時°
時間:
2020-6-2 18:02
標題:
單片機中斷+Proteus仿真音樂實現《天空之城》
隨手做的天空之城音樂播放
附帶流水燈實現的燈譜效果
代碼與proteus仿真都為原創
請大家多多指教
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei截圖20200602174947.png
(40.68 KB, 下載次數: 43)
下載附件
2020-6-2 18:01 上傳
單片機源程序如下:
#include <reg51.h>
#include "yinfu.h"
#define uchar unsigned char
#define uint unsigned int
sbit k1=P0^0;
sbit BEEP = P2^7;
unsigned char tab[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//天空之城
uchar code SONG_TONE[] = {
z6,z7, g1,z7,g1,g3, z7,z3,z3, z6,z5,z6,g1, z5,0,z3,z3, z4,z3,z4,g1,
z3,0,g1,g1,g1, z7,g4,g4,z7, z7,0,z6,z7, g1,z7,g1,g3, z7,0,z3,z3, z6,z5,z6,g1,
z5,0,z3, z4,g1,z7,z7,g1, g2,g2,g3,g1,0, g1,z7,z6,z6,z7,z5, z6,0,g1,g2, g3,g2,g3,g5,
g2,0,z5,z5, g1,z7,g1,g3, g3,0,0, z6,z7,g1,z7,g2,g2, z1,z5,z5,0, g4,g3,g2,g1,
g3, g3,0,g3, g6,g5,g5, g3,g2,g1,0,g1, g2,g1,g2,g2,g5, g3,0,g3,
g6,g5, g3,g3,g1,0,g1, g2,g1,g2,g2,z7, z6,0,z6,z7, z6,0
};
uchar code SONG_LONG[] = {
6,6, 12,6,12,12, 36,6,6, 12,6,12,12, 24,12,6,6, 12,6,6,12,
24,3,3,3,3, 12,6,12,12, 24,12,6,6, 12,6,12,12, 24,12,6,6, 12,6,12,12,
36,6,6, 12,6,6,12,12, 4,4,4,12,12, 12,6,6,6,12,12, 24,12,6,6, 12,6,12,12,
24,12,6,6, 6,6,12,12, 24,12,12, 6,6,12,12,6,6, 12,6,12,12, 12,12,12,12,
48, 24,12,12, 24,12,12, 6,6,12,6,6,12,6,6,6,12, 24,12,12,
24,24, 6,6,24,6,6, 12,6,6,6,12, 24,12,6,6, 48,0
};
void delay12u(uint j) //延時12us
{
uint i;
for(i=0;i<j;i++)
{;}
}
void dengpu(uint a) // 等譜實現
{
switch(a)
{
case d7:
P1 = 0x7f;
break;
case d6:
P1 = 0xbf;
break;
case d5:
P1 = 0xdf;
break;
case d4:
P1 = 0xef;
break;
case d3:
P1 = 0xf7;
break;
case d2:
P1 = 0xfb;
break;
case d1:
P1 = 0xfd;
break;
case z7:
P1 = 0x7f;
break;
case z6:
P1 = 0xbf;
break;
case z5:
P1 = 0xdf;
break;
case z4:
P1 = 0xef;
break;
case z3:
P1 = 0xf7;
break;
case z2:
P1 = 0xfb;
break;
case z1:
P1 = 0xfd;
break;
case g7:
P1 = 0x7f;
break;
case g6:
P1 = 0xbf;
break;
case g5:
P1 = 0xdf;
break;
case g4:
P1 = 0xef;
break;
case g3:
P1 = 0xf7;
break;
case g2:
P1 = 0xfb;
break;
case g1:
P1 = 0xfd;
break;
default:
P1 = 0xff;
}
}
void PlayMusic()
{
uint i=0,j;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{
dengpu(SONG_TONE[i]);
for(j=0;j<SONG_LONG[i]*50;j++)
{
BEEP = ~BEEP;
delay12u(SONG_TONE[i]);
}
i++;
}
}
void main()
{
k1=1;
while(1)
{
if(k1==0)
{
delay12u(900);
if(k1==0)
{
PlayMusic();
delay12u(5000);
}
}
}
}
復制代碼
yinfu.h代碼
#ifndef __YINFU_H__
#define __YINFU_H__
#define d1 159
#define d2 142
#define d3 126
#define d4 119
#define d5 106
#define d6 95
#define d7 84
#define z1 80
#define z2 71
#define z3 63
#define z4 60
#define z5 53
#define z6 47
#define z7 42
#define g1 40
#define g2 35
#define g3 32
#define g4 30
#define g5 27
#define g6 24
#define g7 21
#endif
復制代碼
proteus元件連接圖與程序:
51單片機天空之城音樂實現.zip
(65.75 KB, 下載次數: 27)
2020-6-2 18:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1