-
2021-06-05 09:26:27
安徽财贸职业学院毕业设计
26 -
26 -
PAGE I
基于51单片机简易电子琴设计
摘 要
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器等等也很好奇。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
在电子行业高速发展的今天,单片机已经广泛的应用到了各个行业之中,其中也就包括了我所设计的娱乐项目,随意的弹奏音乐并且伴着灯光的闪烁,这就是我所以利用89C51单片机所设计的简易电子琴,电子琴的设计理念完全是利用89c51单片机的功能的研究和理解以及延伸拓展。以下我会详细介绍电路的设计和程序的编制过程。
关键词:89c51单片机 电路 程序
PAGE II
目 录
TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc369901753" 目 录 PAGEREF _Toc369901753 \h II
HYPERLINK \l "_Toc369901754" 第一章 绪论 PAGEREF _Toc369901754 \h - 1 -
HYPERLINK \l "_Toc369901755" 1.1 课题背景 PAGEREF _Toc369901755 \h - 1 -
HYPERLINK \l "_Toc369901756" 1.2 设计依据 PAGEREF _Toc369901756 \h - 1 -
HYPERLINK \l "_Toc369901757" 第二章 系统方案设计及主控芯片介绍 PAGEREF _Toc369901757 \h - 2 -
HYPERLINK \l "_Toc369901758" 2.1 系统基本设计思路 PAGEREF _Toc369901758 \h - 2 -
HYPERLINK \l "_Toc369901759" 2.2 单元电路方案论证 PAGEREF _Toc369901759 \h - 2 -
HYPERLINK \l "_Toc369901760" 2.2.1 控制器模块 PAGEREF _Toc369901760 \h - 2 -
HYPERLINK \l "_Toc369901761" 2.2.2 发声模块 PAGEREF _Toc369901761 \h - 2 -
HYPERLINK \l "_Toc369901762" 2.2.3 编程软件模块 PAGEREF _Toc369901762 \h - 3 -
HYPERLINK \l "_Toc369901763" 2.2.4 最终方案 PAGEREF _Toc369901763 \h - 3 -
HYPERLINK \l "_Toc369901764" 2.3 STC89C51单片机 PAGEREF _Toc369901764 \h - 4 -
HYPERLINK \l "_Toc369901765" 第三章 硬件电路设计 PAGEREF _Toc369901765 \h - 7 -
HYPERLINK \l "_Toc369901766" 3.1系统总体框图 PAGEREF _Toc369901766 \h - 7 -
HYPERLINK \l "_Toc369901767" 3.2 最小系统设计 PAGEREF _Toc369901767 \h - 7 -
HYPERLINK \l "_Toc369901768" 3.3 时钟电路 PAGEREF _Toc369901768 \h - 8 -
HYPERLINK \l "_Toc369901769" 3.4 复位电路 PAGEREF _Toc369901769 \h - 8 -
HYPERLINK \l "_Toc369901770" 3.5 按键控制模块 PAGEREF _Toc369901770 \h - 9 -
HYPERLINK \l "_Toc369901771" 3.6 播放模块 PAGEREF _Toc369901771 \h
更多相关内容 -
51单片机电子琴c语言程序代码实现
2021-05-19 12:58:48#include#define KeyPort P1unsigned char High,Low; //定时器预装值的高8位和低8位sbit SPK=P3^7; //定义蜂鸣器接口sbit playSongKey=P0^0; //功能键sbit RS=P2^0;//液晶数据命令选择sbit RW=P2^1;...#include
#define KeyPort P1
unsigned char High,Low; //定时器预装值的高8位和低8位
sbit SPK=P3^7; //定义蜂鸣器接口
sbit playSongKey=P0^0; //功能键
sbit RS=P2^0;//液晶数据命令选择
sbit RW=P2^1;//液晶读写选择
sbit EN=P2^2;//液晶使能端
unsigned char code freq[][2]={
0xD8,0xF7,//00440HZ 1
0xBD,0xF8,//00494HZ 2
0x87,0xF9,//00554HZ 3
0xE4,0xF9,//00587HZ 4
0x90,0xFA,//00659HZ 5
0x29,0xFB,//00740HZ 6
0xB1,0xFB,//00831HZ 7
0xEF,0xFB,//00880HZ `1
};
unsigned char Time;
unsigned char code YINFU[9][1]={{' '},{'1'},{'2'},{'3'},{'4'},{'5'},{'6'},{'7'},{'8'}};
//世上只有妈妈好数据表
unsigned char code MUSIC[]={ 6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0
};
// 音阶频率表 高八位
unsigned char code FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
} ;
// 音阶频率表 低八位
unsigned char code FREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
void Init_Timer0(void);//定时器初始化
//延时函数大约约2*z+5us
void delay2xus(unsigned char z)
{
while(z--);
}
// 延时函数大约约1ms
void delayms(unsigned char x)
{
while(x--)
{
delay2xus(245);
delay2xus(245);
}
}
/*------------------------------------------------
节拍延时函数
各调1/4节拍时间:
调4/4 125ms
调2/4 250ms
调3/4 187ms
------------------------------------------------*/
void delayTips(unsigned char t)
{
unsigned char i;
for(i=0;i
{
delayms(250);
}
TR0=0;
}
//播放音乐的函数
void PlaySong()
{
TH0=High;//赋值定时器时间,决定频率
TL0=Low;
TR0=1; //打开定时器
delayTips(Time); //延时所需要的节拍
}
//定时器T0初始化子程序
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
EA=1; //总中断打开
ET0=1; //定时器中断打开
}
//定时器T0中断子程序
void Timer0_isr(void) interrupt 1
{
TH0=High;
TL0=Low;
SPK=!SPK;
}
//主函数
void main (void)
{
unsigned char num,k,i;
Init_Timer0(); //初始化定时器0,主要用于数码管动态扫描
SPK=0; //在未按键时,喇叭低电平,防止长期高电平损坏喇叭
while (1)
{
switch(KeyPort) //对按键进行处理
{
case 0xfe:num= 1;break;
case 0xfd:num= 2;break;
case 0xfb:num= 3;break;
case 0xf7:num= 4;break;
case 0xef:num= 5;break;
case 0xdf:num= 6;break;
case 0xbf:num= 7;break;
case 0x7f:num= 8;break; //分别对应不用的音调
default:num= 0;break;
}
P2 = KeyPort;
if(num==0)
{
TR0=0;
SPK=0; //在未按键时,喇叭低电平,防止长期高电平损坏喇叭
}
else
{
High=freq[num-1][1];
Low =freq[num-1][0];
TR0=1;
}
if(playSongKey==0) //如果播放音乐按键被按下
{
delayms(10);
if(playSongKey==0)
{
i=0;
while(i<100)
{
k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振荡频率所需数据
High=FREQH[k];
Low=FREQL[k];
Time=MUSIC[i+2]; //节拍时长
i=i+3;
if(P1!=0xff)//长按任意8音键退出播放
{
delayms(10);
if(P1!=0xff)
i=101;
}
PlaySong();
}
TR0=0;
}
}
}
}
-
51单片机电子琴
2017-09-07 10:18:10基于51单片机 ,用C语言编程, 矩阵键盘 ,演奏曲子,即实现电子琴功能。并且可以通过LED阵显示音阶 -
at89c51单片机电子琴 c语言
2010-01-04 17:03:342.2 电子琴系统的组成 4 2.4 系统框图 4 第三章 硬件简介 5 3.1 AT89C51 6 3.2 矩阵式键盘的识别和显示 8 3.3 LED数码管 9 3.4 硬件设计图 10 第四章 软件设计 12 4.1 整体程序处理流程图 12 4.2 I/O并行口直接驱动... -
138-电子琴(51单片机C语言实例Proteus仿真和代码)
2022-06-15 22:57:05138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51... -
51单片机超级电子琴(C语言)
2021-05-20 08:37:10然后通过判断键值而分配各种音符,从而得到电子琴效果!硬件连接!硬键连接:P1口接矩阵键盘,P3.5接蜂鸣器引脚*/#include //头文件#define uint unsigned int//宏定义#define uchar unsigned char//宏定义void delay.../*说明:此程序是用矩阵按键和音乐实验组合而成的,先是写出矩阵键盘程序,得出键值。然后通过判断键值而分配各种音符,从而得到电子琴效果!硬件连接!
硬键连接:P1口接矩阵键盘,P3.5接蜂鸣器引脚*/
#include //头文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uchar);//延时子函数声明
void bbtt (uchar);//声音处理子函数声明
void pan();//按键子函数声明
uint code table[]={
0xfd,0x12,0xfd,0x80, 0xfd,0xc6, 0xfe,0x07,0xfe,0x25,0xfe,0x57,
0xfe,0x84,0xfe,0x98,0xfe,0xc0,0xfe,0xe3,0xff,0x01, 0xff,0x10, 0xff,0x29,0xff,0x42
};/*音符代码 低音3,低音5,低音6,低音7,中音1,中音2,中音3,中音4,中音5,中音6,
中音7,高音1,高音2,高音3,基中一个音用两个数表示。*/
sbit bbt=P3^5;//定义蜂鸣器引脚为P3.5脚。
uchar num,lui,a,temp,num1,num2,numm,aa,bb;//定义行变量
void main()//主程序开始
{
TMOD=01;//设置定时器工作在方式0下
IE=0X82;//开总中断与中断允许
num=17;//定义初值,开机使它不亮
while(1)
{
pan();//按键识别子函数
TR0=0;//将定时器关掉
/
bbt=1;//将蜂鸣器关掉
//
/*将各按键得出键值码,也就是让每个键得到相应的音符*/
if(num!=17)//判断num是否不等于17,不等就执行以下语句,否则跳过
{
switch(num)//执行开关语句
{
case 0://0x00与num值是否相等?
{
TR0=1;//打开定时器
bbtt (0);//调用声音处理子函数,并赋值0
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回开关语句
/
case 1://0x01与num值是否相等?
{
TR0=1;//打开定时器
bbtt (2);//调用声音处理子函数,并赋值2
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
//
case 2://0x08与num值是否相等?
{
TR0=1;//打开定时器
bbtt (4); //调用声音处理子函数,并赋值4
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
//
case 3://0x00与num值是否相等?
{
TR0=1;//打开定时器
bbtt (6);//调用声音处理子函数,并赋值6
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回继续判断是否有键按下
/
case 4://0x04与num值是否相等?
{
TR0=1;//打开定时器
bbtt (8);//调用声音处理子函数,并赋值8
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
//
case 5://0x08与num值是否相等?
{
TR0=1;//打开定时器
bbtt (10);//调用声音处理子函数,并赋值10
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
case 6://0x00与num值是否相等?
{
TR0=1;//打开定时器
bbtt (12);//调用声音处理子函数,并赋值12
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回继续判断是否有键按下
/
case 7://0x04与num值是否相等?
{
TR0=1;//打开定时器
bbtt (14);//调用声音处理子函数,并赋值14
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
case 8://0x08与num值是否相等?
{
TR0=1;//打开定时器
bbtt (16);//调用声音处理子函数,并赋值16
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
//
case 9://0x00与num值是否相等?
{
TR0=1;//打开定时器
bbtt (18);//调用声音处理子函数,并赋值18
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回继续判断是否有键按下
/
case 10://0x04与num值是否相等?
{
TR0=1;//打开定时器
bbtt (20);//调用声音处理子函数,并赋值20
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
//
case 11://0x08与num值是否相等?
{
TR0=1;//打开定时器
bbtt (22);//调用声音处理子函数,并赋值22
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回
case 12://0x00与num值是否相等?
{
TR0=1;//打开定时器
bbtt (24);//调用声音处理子函数,并赋值24
num=17;// 将num值装回,使按键按下时只响一声
}
break;//返回继续判断是否有键按下
/
case 13://0x04与num值是否相等?
{
TR0=1;//打开定时器
bbtt (26); //调用声音处理子函数,并赋值26
num=17; // 将num值装回,使按键按下时只响一声
}
break;//返回
}
}
}
}
/*矩阵键盘扫描程序*/
void pan()
{
///扫第一行
P1=0xfe;//先扫第一行
temp=P1;//将它值给temp
temp=temp&0xf0;//与门比较
if(temp!=0xf0)//如果它不等于0xf0,就执行括号语句
{
delay(100);//延时
temp=P1;//再赋值
temp=temp&0xf0;//再与门比较
if(temp!=0xf0)//再判断是否为不等于0xf0?如果确实不等则说明有键按下
{
temp=P1;//将值重新给temp,以便下次再判断!否则找不到合适值
switch(temp)//判断出了第一行有键按下了,还要判断具体哪个键
{
case 0xee:num=0;//0xee和temp比较,如果相等就将它编码定义为0
break;//确定了就跳出switch语句
case 0xde:num=1;//0xde和temp比较,如果相等就将它编码定义为1
break;//确定了就跳出switch语句
case 0xbe:num=2;//0xbe和temp比较,如果相等就将它编码定义为2
break;//确定了就跳出switch语句
case 0x7e:num=3;//0x7e和temp比较,如果相等就将它编码定义为3
break;//确定了就跳出switch语句
}
if(temp!=0xf0)//按键识放判断,如果不等于0xf0就一直执行括号语句
{
temp=P1;//重新赋值
temp=temp&0xf0;//重新与门
}
}
}
///扫第二行
P1=0xfd;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(100);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:num=4;
break;
case 0xdd:num=5;
break;
case 0xbd:num=6;
break;
case 0x7d:num=7;
break;
}
if(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
/扫第三行
P1=0xfb;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(100);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xeb:num=8;
break;
case 0xdb:num=9;
break;
case 0xbb:num=10;
break;
case 0x7b:num=11;
break;
}
if(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
扫第四行
P1=0xf7;
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(100);
temp=P1;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe7:num=12;
break;
case 0xd7:num=13;
break;
case 0xb7:num=14;
break;
case 0x77:num=15;
break;
}
if(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
}
}
}
void delay(uchar z)//延时函数
{
uchar x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
}
/*扫描得到音乐代码,赋值给定时器*/
void bbtt (uchar aa)
{
numm=table[aa];//得到音乐码高位
aa++;//将计数器加1,以便取下一个代码
num1=table[aa];//得到音乐码低位
TH0=numm;//将高位赋值
TL0=num1;//将低位赋值
}
/*中断服务子程序*/
void zhong() interrupt 1
{
TH0=numm;//将高位赋值
TL0=num1;//将低位赋值
bbt=~bbt;//将蜂鸣器取反发声
}
-
51单片机电子琴设计C语言程序实例
2021-05-22 10:58:3051单片机C程序实例,电子琴设计#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include //包括一个 52 标准内核的头文件//char code dx516[3] _at_ 0x003b;...51单片机C程序实例,电子琴设计
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include //包括一个 52 标准内核的头文件
//char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
sbit BEEP=P1^7; //喇叭输出脚
//sbit K1= P3^2;
sbit K2= P3^5;
sbit K3= P2^4;
sbit K4= P2^5;
uchar th0_f; //在中断中装载的 T0 的值高 8 位
uchar tl0_f; //在中断中装载的 T0 的值低 8 位
//T0 的值,及输出频率对照表
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18
0x90,0xFA,//00659HZ 5 //19
0xDE,0xFA,//00698HZ 5# //20
0x29,0xFB,//00740HZ 6 //21
0x6F,0xFB,//00784HZ 6# //22
0xB1,0xFB,//00831HZ 7 //23
0xEF,0xFB,//00880HZ `1
0x2A,0xFC,//00932HZ `1#
0x62,0xFC,//00988HZ `2
0x95,0xFC,//01046HZ `2#
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x22,0xFD,//01244HZ `4#
0x4B,0xFD,//01318HZ `5
0x73,0xFD,//01397HZ `5#
0x98,0xFD,//01480HZ `6
0xBB,0xFD,//01568HZ `6#
0xDC,0xFD,//01661HZ `7 //35
};
//定时中断 0,用于产生唱歌频率
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f; //调入预定时值
BEEP=~BEEP; //取反音乐输出 IO
}
//按键控制音阶声音输出(电子琴)
void main(void) // 主程序
{
ulong n;
uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八个音符在频率表中的位置
TMOD = 0x01; //使用定时器 0 的 16 位工作模式
TR0 = 0;
ET0 = 1;
EA = 1;
while(1)
{
if(!K1)
{
tl0_f=freq[jie8[0]*2]; //置一个音符的值
th0_f=freq[jie8[0]*2+1];
TR0 = 1;
for(n=0;n<10000;n++); //延时
}
if(!K2)
{
tl0_f=freq[jie8[1]*2]; //置一个音符的值
th0_f=freq[jie8[1]*2+1];
TR0 = 1;
for(n=0;n<10000;n++); //延时
}
if(!K3)
{
tl0_f=freq[jie8[2]*2]; //置一个音符的值
th0_f=freq[jie8[2]*2+1];
TR0 = 1;
for(n=0;n<10000;n++); //延时
}
if(!K4)
{
tl0_f=freq[jie8[3]*2]; //置一个音符的值
th0_f=freq[jie8[3]*2+1];
TR0 = 1;
for(n=0;n<10000;n++); //延时
}
TR0 = 0;
}
}
/*******************************新的好用的电子琴*************************/
#include
#include
#include
#defineuchar unsigned char
//#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#d
efine ulong unsigned long
sbit BEEP=P3^0;
uchar rr;
uchar k;
uchar keydata;
uchar th0_f; //在中断中装载的 T0 的值高 8 位
uchar tl0_f; //在中断中装载的 T0 的
-
345-简易电子琴(51单片机C语言实例Proteus仿真和代码)
2022-06-16 19:27:25345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)... -
C语言实现51单片机电子琴设计
2012-11-10 20:26:25已通过编程调试,能正确实现各项功能 #define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz #define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz #define l_mi 311 //将“l_mi”宏定义为低音“3”... -
基于51单片机矩阵按键电子琴设计-完整源程序.zip
2020-03-26 19:25:03。本系统设计是以51系列单片机AT89S52为主芯片,附有矩阵键盘、LED显示管、扬声器组成,系统完成显示输入信息、播放相应音符等基本功能。 附件为C代码。 -
51单片机基础应用设计C语言实例(400例)合集.zip
2021-06-30 14:34:5551单片机基础应用设计C语言实例(400例)合集: 10-LED循环左移 100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示DS... -
51单片机模拟电子琴_单片机电子琴_单片机电子琴_单片机_deeply2xg_
2021-10-01 18:21:05使用C语言对51单片机进行控制,模拟电子琴发音源代码 -
51单片机模拟电子琴发音源代码.rar
2019-07-09 16:38:12使用C语言对51单片机进行控制,模拟电子琴发音源代码,通过本程序你可以学习一下如何定义键消抖延时函数、键扫描函数、定时器0中断服务子程序等,还可了解一下 调用键盘扫描函数、产生输出脉冲、设置计数初值等相关... -
基于51单片机的智能电子琴设计
2018-05-06 12:12:54本设计是通过51单片机上的按键不同来发出不同的音,从而实现电子琴的目的,里面附带接线图片 -
基于51单片机电子琴设计
2021-12-09 18:32:15设计一个电子琴。利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声 -
基于51单片机的简易电子琴源码
2021-05-20 05:24:33/*********************************************************************************************程序名: 8键电子琴C程序编写人: 杜洋编写时间: 2009年5月18日硬件支持: STC系列单片机 12MHz接口说明:修改... -
基于51单片机的电子琴设计
2022-04-17 12:57:08资料下载地址:基于51单片机电子琴 一、项目介绍 1、使用7个独立按键对应7个音符 2、有高中低三个音阶,并有显示电路。 3、可以播放音乐 二、原理图 三、仿真 四、程序 #include<reg51.h> #... -
51单片机模拟电子琴+Proteus仿真
2021-11-05 13:17:3451单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h> #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int /... -
51单片机c语言编写电子琴+音乐播放器.doc
2021-10-08 18:26:3751单片机c语言编写电子琴+音乐播放器.doc -
C51单片机设计C语言实例(400例)合集 大量设计实例,新手必备C51源码.zip
2021-06-08 17:41:29155-51单片机12864大液晶屏proteus仿真 156-流水灯B 157-数码管显示 158-12864LCD显示计算器键盘按键实验 159-数码管显示(锁存器) 16-共阳数码管静态显示 160-数码管动态显示 161-数码管滚动显示 162-数码管字符... -
51单片机c语言编写电子琴+音乐播放器.doc.doc
2021-05-23 11:42:1751单片机c语言编写电子琴音乐播放器.doc此程序是51单片机c语言编写的电子琴+音乐播放器,当用杜邦线将P1^0管脚接地时,单片机就会放出《世上只有妈妈好》,将P1^1管脚接地时单片机就播放《祝你生日快乐》,两者为高... -
51单片机C语言 电子琴--程序
2010-05-16 14:52:24通过按键进行谱曲,并将谱曲结果存入到at2401中,并能播放所谱歌曲 使用51单片机 C语言编写 -
51单片机电子琴制作
2021-05-21 17:05:08//头文件#define uchar unsigned char#define uint unsigned int //宏定义uchar STH0; //定时器变量uchar STL0; //定时器变量bit FY=0; ... -
电子琴c语言程序
2013-05-28 10:04:24电子琴c语言程序 txt文档,初级,单片机 -
基于单片机的简易电子琴C语言编程.doc
2021-05-20 05:24:28基于单片机的简易电子琴C语言编程基于单片机的简易电子琴设计摘 要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它... -
单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真(源程序)
2020-09-02 14:01:13第一章:AVR单片机C语言程序设计概述 1.1 AVR单片机简介 1.2 AVR Studio+WinAVR开发环境安装及应用 1.3 AVR-GCC程序设计基础 1.4 程序与数据内存访问 1.5 I/O端口编程 1.6 外设相关寄存器及应用 1.7 中断服务... -
基于51单片机8按键电子琴-简易版系统设计(原理图+程序仿真+论文)
2021-05-20 13:37:29作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为声光电子琴。钢琴,自从它发明的那天起,就成为人类的朋友,有的... -
基于51单片机的多音阶电子琴proteus仿真程序原理设计
2021-03-13 15:14:13硬件设计 仿真图1: 总共二十几个按键,高中低音阶,同时可以播放歌曲,开机可设置显示学号 仿真图2: 7个音符按键,切换高中低音阶,同时可以播放歌曲 程序设计 #include<reg52.h> #define keyport P1 ... -
基于单片机的电子琴的设计
2021-05-22 11:12:51其中有个现代电子设计的实验课,老师给了一些课题,由于我跟我的小伙伴基础不太好所以就选择了比较简单的课题——基于单片机的电子琴设计。下面来记录一下最终的成果。基于单片机的简易电子琴的设计与制作一、摘要... -
简易电子琴C语言代码
2014-09-23 23:26:44单片机学习,STC90C51开发版简易电子琴制作C语言版代码。