基于单片机的多功能电子琴设计,毕设,求仿真,脑子都炸了
- 资格考试
- 2024-11-17 07:57:30
毕业设计我想用单片机做一个电子琴,程序最好是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接口线半连接,产生高电平信号。
/*********************************************************************************************/
voidINIT(void);
#include
/*********************************************************************************************/
sbitSPEAKER=P1^0;//扬声器,低使能
sbitLED=P3^0;//LED正极,强推
sbitLED2=P3^1;//LED负极
sbitKEY11=P2^0;
sbitKEY12=P2^1;
sbitKEY13=P2^2;
sbitKEY14=P2^3;
sbitKEY15=P2^4;
sbitKEY16=P2^5;
sbitKEY17=P2^6;
sbitKEY21=P2^7;
sbitKEY22=P4^4;
sbitKEY23=P4^5;
sbitKEY24=P4^6;
sbitKEY25=P0^7;
sbitKEY26=P0^6;
sbitKEY27=P0^5;
sbitKEY31=P0^4;
sbitKEY32=P0^3;
sbitKEY33=P0^2;
sbitKEY34=P0^1;
sbitKEY35=P0^0;
sbitKEY36=P3^3;
sbitKEY37=P3^2;
/*********************************************************************************************/
unsignedcharMUSIC;
unsignedcharSTH0,STL0;
unsignedintcodetab[]={//音阶表
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
};
/*********************************************************************************************/
voiddelay1ms(unsignedinta){//1ms延时程序(12MHz10倍于51单片机速度时)
unsignedinti;
while(--a!=0){
for(i=0;i<600;i++);
}
}/***************************************************************************************/
voidINIT(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;
}
/***************************************************************************************/
voidmain(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;//关定时器
}
}
}
/***************************************************************************************/
voidt0(void)interrupt1using0{//定时器0产生音频
TH0=STH0;
TL0=STL0;
SPEAKER=~SPEAKER;//取反频率产生音调
LED=SPEAKER;//LED同频闪烁
}
/***************************************************************************************/
/*************************************************************
*杜洋工作室www.DoYoung.net
/*************************************************************/