2025年204 基于51单片机LM386功放电子琴设计

204 基于51单片机LM386功放电子琴设计本设计是 基于 51 单片机的电子琴设计 该设计采用 AT89S52 作为主控芯片 可是现电子琴模式和音乐模式自由切换 通过 LM386 功放电路将声音信号放大 输出的扬声器中

本设计是《基于51单片机的电子琴设计》,该设计采用AT89S52作为主控芯片,可是现电子琴模式和音乐模式自由切换,通过LM386功放电路将声音信号放大,输出的扬声器中。

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1Rn7sK_RxBOP6VxYDo9kAmQ?pwd=8888

部分代码展示

/**************************************************************
程序名称:8键琴
**************************************************************/ 
#include<reg51.h>	    //定义头文件

#include"dian_zi_qin.h"	   

#define key P2				//琴按键

sbit buzzer=P3^4;			//扬声器管脚

sbit LED1=P1^0;				//琴指示灯
sbit LED2=P1^1;			    //音乐播放指示灯
	
sbit qiehuan=P0^2;		    //功能切换
sbit shanyiqu=P0^1;			//播放上一曲歌曲
sbit xiayiqu=P0^0;			//播放下一曲歌曲

unsigned char m,n; 

unsigned char keys,mode=0,mode1=0;			  	//定义变量
unsigned char tone_H;				//定义变量
unsigned char tone_L;				//定义变量
unsigned char code tone[]={115,102,91,86,77,68,61,57};		//歌曲音调  

void delay8um(unsigned char);				
void sound(unsigned char);				
void delay(unsigned char p);
void pause();
void keycan();
void delays(unsigned char x);

/**************************************************************
函数功能:主函数。。。。。。。。。。。。
**************************************************************/  
void main()						//主函数
{	
	unsigned char i=0,i2=0,i3=0,i4=0,i5=0;
	
	buzzer=1; 					//初始化蜂鸣器
	TMOD=0x01;					//设置定时器模式  定时器0工作在方式1	
	EA=1;						    //打开定时总中断
	ET0=1;						//打开定时器0中断
	while(1)					//主循环
	{ 
		
			keycan();
			if(mode1==0)
			{
				  LED1=0;
			    LED2=1;
					key=0xff;
					keys=~key;
					switch(keys)				//进入键盘选择
					{
						
							 case 0x01:sound(0);break;	 //如果键盘1被按下发音do,
							 case 0x02:sound(1);break;	 //如果键盘2被按下发音ruai,
							 case 0x04:sound(2);break;	 //如果键盘3被按下发音mi,
							 case 0x08:sound(3);break;	 //如果键盘4被按下发音fa,
							 case 0x10:sound(4);break;	 //如果键盘1被按下发音,
							 case 0x20:sound(5);break;	 //如果键盘2被按下发音,
							 case 0x40:sound(6);break;	 //如果键盘3被按下发音,
							 case 0x80:sound(7);break;	 //如果键盘4被按下发音,
					}
					keycan();
		 }
		else
		{
			  LED1=1;
			  LED2=0;
				if(mode==1)    //播放 青花瓷
				{
							m=music[i][0];
							n=music[i][1]; 
							if(m==0x00)
							{
									 TR0=0;
									 delay(n);
									 i++;
							} 
							else if(m==0xFF)
							{
									 TR0=0;
									 delay(30);
									 i=0;
							} 
							else if(m==music[i+1][0]) 
							{
									 TR0=1;
									 delay(n);
									 TR0=0;
									 pause();
									 i++;
							}
							else
							{
									 TR0=1;
									 delay(n);
									 i++;
							}
								keycan();
				 }
				if(mode==2)  //播放 两只蝴蝶
				{
					 
							m=music2[i2][0];
							n=music2[i2][1]; 
							if(m==0x00)
							 {
									 TR0=0;
									 delay(n);
									 i2++;

编程小号
上一篇 2025-03-13 20:21
下一篇 2025-02-17 11:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104741.html