仿真開始后,8*8點陣先依次顯示牛、大、哥、生、日、快、樂,然后蜂鳴器播放祝你生日快樂的曲子。
PS:電子琴所要播放的樂曲,可以從網上找到相應的樂譜,然后從我所上傳附件里的軟件輸入樂譜得到電子琴所需要的十六進制數組。
仿真圖如下:
主程序代碼如下:
#include<reg51.h>
#include "SoundPlay.h"
#define u8 unsigned char //宏定義
#define u16 unsigned int
//void delay_1ms(u16 k)
//{
// u16 i,j;
// for(i=0;i<k;i++)
// for(j=0;j<120;j++);
//}
void delay(u16 i) //延時函數
{
u16 k;
for(k=0;k<i;k++);
}
//***************************************Music********************************************
u8 Music_Code[]={ 0x0F,0x03, 0x0F,0x03, 0x10,0x02, 0x0F,0x02, 0x15,0x02,
0x11,0x01, 0x0F,0x03, 0x0F,0x03, 0x10,0x02, 0x0F,0x02,
0x16,0x02, 0x15,0x01, 0x0F,0x03, 0x0F,0x03, 0x19,0x02,
0x17,0x02, 0x15,0x02, 0x11,0x02, 0x10,0x02, 0x18,0x03,
0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x02, 0x15,0x02,
0x00,0x00 }; //生日快樂歌曲
//****************************************************************************************
//***************************************LED8*8********************************************
u8 code led[7][8]={{0x18,0x3e,0x48,0x7f,0x08,0x08,0x08,0x08}, //牛
{0x08,0x08,0x7f,0x08,0x08,0x14,0x22,0x41}, //大
{0x3e,0x1a,0x1a,0x7f,0x1a,0x1a,0x06,0x02}, //哥
{0x08,0x28,0x7f,0x88,0x1c,0x08,0x08,0x7f}, //生
{0x00,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e}, //日
{0x48,0x5e,0xea,0x7f,0x48,0x4c,0x52,0x61}, //快
{0x18,0x28,0x48,0x7e,0x08,0x08,0x3a,0x49}, //樂
};//定義二維數組,依次顯示牛、大、哥、生、日、快、樂
//****************************************************************************************
void main()
{
u8 w;
u16 j,k,m;
InitialSound();
while(1)
{
for(k=0;k<7;k++) //第一維下標取值范圍為牛、大、哥、生、日、快、樂,7個字符
{for(m=0;m<200;m++) //每個字符掃描顯示200次,控制每個字符顯示漢字
{ w=0x01; //行初值
for(j=0;j<8;j++) //第二維下標取值范圍為0~7,控制8行
{P3=w; //行控制
P0=~led[k][j]; //列控制,將指定數組元素取反后賦值給P0口,顯示碼
delay(60);
w<<=1; //行變量左移指向下一行
P0=0xff;
}
}
}
Play(Music_Code,0,3,360); //播放音樂
delay(100000);
}
}
88點陣和電子琴.zip
(279.76 KB, 下載次數: 118)
2020-5-9 16:50 上傳
點擊文件名下載附件
|