资源简介
基于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
相关资源
- C51单片机技术教程(304页)
- C51单片机交通
- Arduino 敲琴MIDI电子琴 程序报告.docx
- 单片机电子密码锁
- 51单片机数码管四层电梯模拟系统
- 基于51单片机的温控系统
- 51单片机protues文件(KST-51.DSN)
- 51单片机交通灯设计
- 基于51单片机的简易计算器
- 基于51单片机多路超声波报警设计
- 51单片机红外智能小车
- qt上位机采集51单片机温湿度数据
- 基于51单片机射频RFID卡考勤上课上班
- 基于51单片机的888光立方设计.rar
- 51单片机DS18B20温度计C语言程序附详解
- 郭天祥51单片机C语言教程配套光盘
- 新概念51单片机C语言教程第2版郭天祥
- C语言实现51单片机和ADC0809芯片的AD模
- C语言实战——基于51单片机的RFID射频
- 基于51单片机的c语言程序 电机转速测
- 基于80C51单片机的20多个仿真实验
- 基于51单片机汽车尾灯设计论文
- 51单片机C语言编程入门(详讲版)
- 轻松玩转51单片机c语言
- 51单片机C编程100例
- 基于51系列单片机的电子罗盘设计总结
- 郭天祥51单片机C语言教程配套光盘内
- 51单片机C语言程序设计教程 王云书本
- 51单片机程序大全C语言写的150个程序
- 基于51单片机的教室计数系统 C语言程
评论
共有 条评论