毕业设计我想用单片机做一个电子琴,程序最好是c语言编写的,那个好心人可以帮我提供点资料,要钱的免进!

要求一,七的音按键和三个音调选择键,可以选择七的音按键到底是发哪个音调,是高音,中音,还是低音。不工作时可以显示此时是几点几分,工作时也可以显示。三自带音乐,不弹奏时,按一个键可以自己播放简单歌曲,如“祝你生日快乐”

www.doyoung.net

上有好多,要的话我还有流程图

/*********************************************************************************************

程序名:    DoToy系列作品 MidTouch21电子琴程序

编写人:    杜洋 

编写时间:  2009年6月3日

硬件支持:  STC11L60XE 外部12MHZ晶振 电源3V

接口说明:  详见《DoToy_MidTouch21电路原理图》  

修改日志:  

  NO.1-20090603_17.54 完成电子琴21键的测试(20090603_1备)

 NO.2-20090604_01.29 改为第二次新板的硬件电路(20090604_2备)

/*********************************************************************************************

说明:

用STC11Fxx单片机I/O接口的高阻态输入功能,扫描I/O接口电平。

手指将VCC线和I/O接口线半连接,产生高电平信号。

/*********************************************************************************************/

void INIT(void);

#include <STC11Fxx.H> 

/*********************************************************************************************/

sbit SPEAKER  = P1^0;//扬声器,低使能

sbit LED   = P3^0;//LED正极,强推

sbit LED2   = P3^1;//LED负极

sbit KEY11   = P2^0;

sbit KEY12   = P2^1;

sbit KEY13   = P2^2;

sbit KEY14   = P2^3;

sbit KEY15   = P2^4;

sbit KEY16   = P2^5;

sbit KEY17   = P2^6;

sbit KEY21   = P2^7;

sbit KEY22   = P4^4;

sbit KEY23   = P4^5;

sbit KEY24   = P4^6;

sbit KEY25   = P0^7;

sbit KEY26   = P0^6;

sbit KEY27   = P0^5;

sbit KEY31   = P0^4;

sbit KEY32   = P0^3;

sbit KEY33   = P0^2;

sbit KEY34   = P0^1;

sbit KEY35   = P0^0;

sbit KEY36   = P3^3;

sbit KEY37   = P3^2;

/*********************************************************************************************/

unsigned char MUSIC; 

unsigned char STH0,STL0;

unsigned int code tab[]={ //音阶表

63628,63835,64021,64103,64260,64400,64524,  //低音1-7

64580,64684,64777,64820,64898,64968,65030, //中音1-7

65058,65110,65157,65178,65217,65252,65283 //高音1-7

}; 

/*********************************************************************************************/

void delay1ms (unsigned int a){ // 1ms延时程序(12MHz 10倍于51单片机速度时)

 unsigned int i;

 while( --a != 0){

  for(i = 0; i < 600; i++); 

 }          

}/***************************************************************************************/

void INIT(void){//初始化程序

 TMOD=0x11; 

 ET0=1; 

 ET1=1; 

 EA=1;

 P0M1 = 0xff;//I/O接口工作方式 

 P0M0 = 0x00;//P0全为高阻输入 

 P1M1 = 0xfe;//P1.0为准双向,其他为高阻输入 

 P1M0 = 0x00; 

 P2M1 = 0xff;//P2全为高阻输入 

 P2M0 = 0x00; 

 P3M1 = 0xfc;//P3.0为强推,其他为标准双向 

 P3M0 = 0x01; 

 P4M1 = 0xff;//P4全为高阻输入 

 P4M0 = 0x00; 

 P4SW = 0xff; 

 LED = 1;

 LED2 = 0;

 SPEAKER = 0;

}

/***************************************************************************************/

void main(void){

 INIT(); //初始化 

 while(1){

  if(KEY37 == 1){delay1ms(20);if(KEY37 == 1){MUSIC = 20;}} //高音B(37)

  if(KEY36 == 1){delay1ms(20);if(KEY36 == 1){MUSIC = 19;}}

  if(KEY35 == 1){delay1ms(20);if(KEY35 == 1){MUSIC = 18;}}

  if(KEY34 == 1){delay1ms(20);if(KEY34 == 1){MUSIC = 17;}}

  if(KEY33 == 1){delay1ms(20);if(KEY33 == 1){MUSIC = 16;}}

  if(KEY32 == 1){delay1ms(20);if(KEY32 == 1){MUSIC = 15;}}

  if(KEY31 == 1){delay1ms(20);if(KEY31 == 1){MUSIC = 14;}}

//3 

  if(KEY27 == 1){delay1ms(20);if(KEY27 == 1){MUSIC = 13;}}

  if(KEY26 == 1){delay1ms(20);if(KEY26 == 1){MUSIC = 12;}}

  if(KEY25 == 1){delay1ms(20);if(KEY25 == 1){MUSIC = 11;}}

  if(KEY24 == 1){delay1ms(20);if(KEY24 == 1){MUSIC = 10;}}

  if(KEY23 == 1){delay1ms(20);if(KEY23 == 1){MUSIC = 9;}}

  if(KEY22 == 1){delay1ms(20);if(KEY22 == 1){MUSIC = 8;}}

  if(KEY21 == 1){delay1ms(20);if(KEY21 == 1){MUSIC = 7;}}

//2 

  if(KEY17 == 1){delay1ms(20);if(KEY17 == 1){MUSIC = 6;}}

  if(KEY16 == 1){delay1ms(20);if(KEY16 == 1){MUSIC = 5;}}

  if(KEY15 == 1){delay1ms(20);if(KEY15 == 1){MUSIC = 4;}}

  if(KEY14 == 1){delay1ms(20);if(KEY14 == 1){MUSIC = 3;}}

  if(KEY13 == 1){delay1ms(20);if(KEY13 == 1){MUSIC = 2;}}

  if(KEY12 == 1){delay1ms(20);if(KEY12 == 1){MUSIC = 1;}}

  if(KEY11 == 1){delay1ms(20);if(KEY11 == 1){MUSIC = 0;}}

//1

  if(MUSIC != 0xff){ //如果有音阶数值(非0XFF时)

      STH0=tab[MUSIC]/256; //将音阶的频率值装入定时器T0 

      STL0=tab[MUSIC]%256; 

      TR0=1; //启动定时器

   MUSIC = 0xff; //清除寄存器

  }else{ //否则 

      SPEAKER = 1; //关扬声器

   LED = 1;

   TR0=0; //关定时器

  } 

    } 

/***************************************************************************************/

void t0(void) interrupt 1 using 0{//定时器0产生音频 

  TH0=STH0; 

  TL0=STL0; 

  SPEAKER=~SPEAKER; //取反频率产生音调

  LED = SPEAKER; //LED同频闪烁 

}

/***************************************************************************************/

/*************************************************************

* 杜洋工作室 www.DoYoung.net

/*************************************************************/

参考资料:www.doyoung.net

温馨提示:答案为网友推荐,仅供参考
相似回答