基于51单片机的八键电子琴( proteus仿真+程序+设计报告+原理图PCB+讲解视频)
仿真图proteus7.8及以上
程序编译器:keil 4/keil 5
编程语言:C语言
设计编号:S0102
1. 主要功能:
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。单片机的开发应用已成为高科技和工程领域的一项重大课题。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇,设计要求:
(1)用AT89C51单片机为核心控制元件,设计一个电子琴。
(2)以单片机作为主控核心,与键盘扬声器等模块组成核心主控制模块,在主控模块上设有8个按键,和一个复位按键。每一个按键分别指示不同的音符。
(3)数码管显示按下的音符标号。
需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。
资料下载链接:
通过网盘分享的文件:KEY_S0102
链接: https://pan.baidu.com/s/1DS052dZFL8HxKB-q9g5hXg?pwd=e353
提取码: e353
以下为本设计资料展示图:
2. 讲解视频:
讲解视频包含仿真运行讲解和代码讲解
3. 仿真
打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。
按下DO按键,数码管显示1,蜂鸣器波放DO音调。
按下MI按键,数码管显示3,蜂鸣器波放MI音调
4. 原理图PCB
有原理图PCB
5. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。
sbit K1=P1^0; //音符按键
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit Speak=P2^0; //喇叭
/***********************1ms*****************************/
void delay_1ms(unsigned int q)
{
unsigned int i,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
void main(void) //主程序
{
TMOD=0x01;
ET0=1;
EA=1;
while(1)
{
if(!K1)
{
delay_1ms(20);//延时去抖
if(!K1)
{
key=0;//将音乐的值赋值给定时器以便发出对应的声音
P0=distab[key+1];//显示1
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K1)
;
}
}
if(!K2)
{
delay_1ms(20);//延时去抖
if(!K2)
{
key=1;
P0=distab[key+1];//显示2
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K2)
;
}
}
if(!K3)
{
delay_1ms(20);//延时去抖
if(!K3)
{
key=2;
P0=distab[key+1];//显示3
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K3)
;
}
}
if(!K4)
{
delay_1ms(20);//延时去抖
if(!K4)
{
key=3;
P0=distab[key+1];//显示4
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K4)
;
}
}
if(!K5)
{
delay_1ms(20);//延时去抖
if(!K5)
{
key=4;
P0=distab[key+1];//显示5
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K5)
;
}
}
if(!K6)
{
delay_1ms(20);//延时去抖
if(!K6)
{
key=5;
P0=distab[key+1];//显示6
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K6)
;
}
}
if(!K7)
{
delay_1ms(20);//延时去抖
if(!K7)
{
key=6;
P0=distab[key+1];//显示7
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K7)
;
}
}
if(!K8)
{
delay_1ms(20);//延时去抖
if(!K8)
{
key=7;
P0=distab[key+1];//显示8
STH0=tab[key]/256; //计算音符对应的定时器计数值
STL0=tab[key]%256;
TR0=1;
while(!K8)
;
}
}
delay_1ms(20);
TR0=0;
Speak=1;//当按键弹起的时候,蜂鸣器停止发音
}
//文章有下载链接有完整代码
}
6. 设计报告
11314字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等
随着现代电子技术的持续进步与革新,数字电压表在电子测量领域的应用范围愈发广泛,其重要性也日益凸显。传统的指针式电压表,尽管在早期的电子测量中发挥了重要作用,但其固有的缺陷,如读数误差较大、精度相对较低以及读数不够直观等问题,已经难以满足当前高精度、高效率的测量需求。相比之下,数字电压表以其读数准确无误、测量精度高、显示结果直观明了等显著优势,成为了电子测量领域的主流工具。
鉴于数字电压表的诸多优点,我们计划设计一款基于51单片机和ADC0808模数转换器的数字电压表。这款设计不仅具备重要的实际应用价值,能够广泛应用于各种需要精确测量电压的场合,如电子实验室、工业生产线等,而且对于学生而言,更是一次深入理解单片机应用技术和模数转换原理的绝佳机会。通过亲手设计并制作这款数字电压表,学生将能够亲身体验从理论到实践的转化过程,从而更加深入地掌握单片机的硬件电路设计、软件编程以及模数转换技术的核心要点。同时,这一过程也将极大地锻炼学生的实践能力、创新能力和解决问题的能力,为他们未来的学习和职业生涯奠定坚实的基础。
7. 设计资料内容清单&&下载链接
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、程序代码注释
2、proteus仿真
3、功能要求
4、软硬件流程图
5、开题报告
6、设计报告
7、原理图
8、PCB图
9、元器件清单
10、讲解视频
Altium Designer 安装破解
KEIL+proteus 单片机仿真设计教程
KEIL安装破解
Proteus元器件查找
Proteus安装
Proteus简易使用教程
单片机学习资料
相关数据手册
答辩技巧
设计报告常用描述
鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url
资料下载链接:
通过网盘分享的文件:KEY_S0102
链接: https://pan.baidu.com/s/1DS052dZFL8HxKB-q9g5hXg?pwd=e353
提取码: e353