資源簡介
基于51單片機 ,用C語言編程, 矩陣鍵盤 ,演奏曲子,即實現電子琴功能。并且可以通過LED陣顯示音階

代碼片段和文件信息
#include?
#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?buzzer=P1^5;
sbit?DIN=P2^0;
sbit?CS=P2^1;
sbit?CLK=P2^2;
unsigned?char?keys;
unsigned?char?key;
unsigned?char?mus;
unsigned?char?ch;
unsigned?char?ch1ch2;
unsigned?char?flag;
unsigned?int?choose=1;
unsigned?int?flag_start;
/*聲明音階數組?Do?Re?Mi?Fa?So?La?Si?Do_H*/
unsigned?char?code?tone[8]={115102918677686157};
uchar?code?disp1[8][8]={
{0x000x000x000x000x000x000x000x80}//Do
{0x000x000x000x000x000x000x400x40}//Re
{0x000x000x000x000x000x200x200x20}//Mi
{0x000x000x000x000x100x100x100x10}//Fa
{0x000x000x000x080x080x080x080x08}//So
{0x000x000x040x040x040x040x040x04}//La
{0x000x020x020x020x020x020x020x02}//Si
{0x010x010x010x010x010x010x010x01}//Do_H*
};
//------小星星-----
uchar?code?music1[42]={
0x770x770xbb0xbb0xdb0xdb0xbb
0x7b0x7b0xd70xd70xb70xb70x77
0xbb0xbb0x7b0x7b0xd70xd70xb7
0xbb0xbb0x7b0x7b0xd70xd70xb7
0x770x770xbb0xbb0xdb0xdb0xbb
0x7b0x7b0xd70xd70xb70xb70x77
};
//------我愛我的幼兒園-----
uchar?code?music2[28]={
0x770xb70xd70x7b0xbb0xbb0xbb
0xbb0xbb0xd70x770xb70xd70xb7
0x770xb70xd70x7b0xbb0xbb0xbb
0xbb0xbb0xd70x770xb70xd70x77
};
//-----粉刷匠-----
uchar?code?music3[48]={
0xbb0xd70xbb0xd70xbb0xd70x77
0xb70x7b0xd70xb70xbb
0xbb0xd70xbb0xd70xbb0xd70x77
0xb70x7b0xd70xb70x77
0xb70xb70x7b0x7b0xd70x770xbb
0xb70x7b0xd70xb70xbb
0xbb0xd70xbb0xd70xbb0xd70x77
0xb70x7b0xd70xb70x77
};
void?display(unsigned?char);
void?sound(int);
void?delay(int);
uchar?keyscan(void);
void?writebyte(unsigned?char);
void?write_MAX7219(unsigned?charunsigned?char);
void?init();
void?UART_init();
void?UART_SER?(void);
void?sing();
void?sing_1();
void?sing_2();
//--------主程序--------
void?main()
{
//??uchar?j;
//??uchar?key_1key_2;
??UART_init();
??while(1)
??{
????key=keyscan();
sing();
if(flag)
{
??sing_2();
??flag=0;
}
??}
}
//--------發聲函數------
void?sound(int?x)
{
??int?i;
??for(i=0;i<100;i++)
??{
????buzzer=0;
delay(tone[x]);
buzzer=1;
delay(tone[x]);
??}
}
//-------延時函數--------
void?delay(int?x)
{
??int?ij;
??for(i=0;i ??for(j=0;j<1;j++);
}
//------矩陣鍵盤---------
uchar?keyscan(void)
{
??uchar?cord_hcord_l;
??P0=0x0f;
??cord_h=P0&0x0f;
??if(cord_h!=0x0f)
??{
????delay(200);
if(cord_h!=0x0f)
{
??cord_h=P0&0x0f;
??P0=cord_h|0xf0;
??cord_l=P0&0xf0;
??return(cord_h+cord_l);
}
??}
??return(0xff);
}
//-------點陣LED-------
void?writebyte(uchar?sj)
{
??uchar?i;
??CS=0;
??for(i=0;i<8;i++)
??{
????CLK=0;
DIN=sj&0x80;
sj=sj<<1;
CLK=1;
??}
}
void?write_MAX7219(uchar?addressuchar?date)
{
??CS=0;
??writebyte(address);
??writebyte(date);
??CS=1;
}
void?init()
{
??write_MAX7219(0x090x00);
??write_MAX7219(0x0a0x01);
??write_MAX7219(0
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-09-05?12:44??單片機課程設計\
?????文件????????8232??2016-09-08?01:27??單片機課程設計\code.c
?????文件???????20034??2016-09-08?01:24??單片機課程設計\code.LST
?????文件???????22347??2016-09-08?01:24??單片機課程設計\code.OBJ
?????文件??????????34??2016-09-06?23:43??單片機課程設計\code.__i
?????文件???????18258??2016-09-08?01:24??單片機課程設計\piano
?????文件????????5532??2016-09-08?01:24??單片機課程設計\piano.hex
?????文件??????????41??2016-09-08?01:24??單片機課程設計\piano.lnp
?????文件???????24036??2016-09-08?01:24??單片機課程設計\piano.M51
?????文件?????????175??2016-09-08?13:51??單片機課程設計\piano.plg
?????文件???????70648??2017-09-05?12:44??單片機課程設計\piano.uvgui.yours13
?????文件????????5965??2017-09-05?12:44??單片機課程設計\piano.uvopt
?????文件???????13856??2017-09-05?12:44??單片機課程設計\piano.uvproj
?????文件????????1229??2016-09-07?20:15??單片機課程設計\piano_Opt.Bak
評論
共有 條評論