• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-07-03
  • 语言: 其他
  • 标签: 电子琴  C代码  

资源简介

。本系统设计是以51系列单片机AT89S52为主芯片,附有矩阵键盘、LED显示管、扬声器组成,系统完成显示输入信息、播放相应音符等基本功能。
附件为C代码。

资源截图

代码片段和文件信息

/**************************************************************
程序名称:模拟电子琴
**************************************************************/ 
#include        //定义头文件
#define uchar unsigned char //宏定义
#define led P0 //定义LED等位P0口
#define sw_port P1 //中间变量。。。使按键和led对应
sbit buzzer=P2^7; //扬声器管脚
sbit key1=P3^2; //播放音乐与弹奏歌曲转换
sbit key3=P3^4; //掉电存储按键
sbit key4=P3^5;                 //播放掉电存储的歌曲                                         
sbit keybofang=P3^3; //播放刚才弹奏的歌曲
sbit key7=P3^0; //音调键。。。 和  歌曲键
sbit key8=P3^1; //音调键。。。 和  歌曲键
sbit key6=P1^7;
sbit key5=P1^6;    
sbit sda=P1^1;        //24c02数据线  
sbit scl=P1^0; //24c02时钟线
uchar keydikeysb;    //定义变量
uchar tone_H; //定义变量
uchar tone_L; //定义变量
void beat_125(unsigned char); //声明函数
uchar code beat1[]={16888844168448444 //歌曲1节拍 
4441616884412816168444416};
uchar code song1[]={6535765635653 //歌曲1简谱
21653223556321532161115};

uchar code beat2[]={777 789 123 624 444 12  //歌曲二节拍
822 444 822 444 2244 12};
uchar code song2[]={128 851 333 543 //歌曲二简谱
 543 2 210 123 432 345 543 2115};

uchar code beat4[]={444 624 444 624 444 12 
822 444 822 444 2244 12};
uchar code song4[]={111 321 333 543
 543 2 210 123 432 345 543 21 15};

uchar code tone[]={115102918677686157}; //歌曲音调
unsigned int code tone1[]={101295685275971663856850647842637953110}; //歌曲音调
uchar song3[43];        //定义空数组
void play(uchar*uchar*);    //演奏歌曲函数
void delay8um(uchar);    //第一8um延时函数
void sound(uchar); //弹奏发声函数
/*******************************************
函数功能:节拍的延时的基本单位,用于24c08简单延时
******************************************/  
void delay() //简单延时函数
{;;}
/*******************************************
函数功能:节拍的延时的基本单位,延时1ms
******************************************/
void delay1ms(uchar x)    //1um延时函数
{
uchar j;
while(x--)
for(j=120;j>0;j--);
}
/**************************************************************
函数功能:24c02驱动程序      用IIC总线进行传输
**************************************************************/ 
void init_c02() //24c02初始化
{
sda=1;
delay();
scl=1;
delay();
}
void start_c02()               //24c02的启动信号
{
scl=1;
delay();   
sda=1;  
delay();
sda=0;
delay();

}
void stop_c02()     //24c02停止信号
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
void response_c02() //24c02的应答信号
{
uchar i;
scl=1;
delay();
while((sda==1)&&(i<250))i++;
scl=0;
delay();
}
void write_c02byte(uchar date)      //对24c02写一个字节
{
uchar itemp;
temp=date;
for(i=0;i<8;i++)
{
temp=temp<<1;
scl=0;
delay();
sda=CY;
delay();
scl=1;
delay();
}
scl=0;
delay();
sda=1;
delay();
}
uchar read_c02byte() //对2

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       10218  2015-05-19 14:58  1-源程序\电子琴.c
     目录           0  2020-03-25 12:58  1-源程序\

评论

共有 条评论