基于51单片机的八键电子琴( proteus仿真+程序+设计报告+原理图PCB+讲解视频)

基于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单片机芯片。

img

资料下载链接:

通过网盘分享的文件:KEY_S0102

链接: https://pan.baidu.com/s/1DS052dZFL8HxKB-q9g5hXg?pwd=e353

提取码: e353

以下为本设计资料展示图:

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

3. 仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

按下DO按键,数码管显示1,蜂鸣器波放DO音调。

img

按下MI按键,数码管显示3,蜂鸣器波放MI音调

img

4. 原理图PCB

有原理图PCB

imgimg

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;//当按键弹起的时候,蜂鸣器停止发音
				
}			

//文章有下载链接有完整代码
}

img

6. 设计报告

11314字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试、结论等

img

随着现代电子技术的持续进步与革新,数字电压表在电子测量领域的应用范围愈发广泛,其重要性也日益凸显。传统的指针式电压表,尽管在早期的电子测量中发挥了重要作用,但其固有的缺陷,如读数误差较大、精度相对较低以及读数不够直观等问题,已经难以满足当前高精度、高效率的测量需求。相比之下,数字电压表以其读数准确无误、测量精度高、显示结果直观明了等显著优势,成为了电子测量领域的主流工具。

鉴于数字电压表的诸多优点,我们计划设计一款基于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

img

资料下载链接:

通过网盘分享的文件:KEY_S0102

链接: https://pan.baidu.com/s/1DS052dZFL8HxKB-q9g5hXg?pwd=e353

提取码: e353

### 关于 Syncthing 在 Mac 和 Windows 平台上跨平台使用的教程 Syncthing 是一种开源的文件同步工具,支持多平台操作系统的无缝协作。它可以在不同操作系统之间实现高效的文件同步功能[^1]。 #### 安装与配置 Syncthing 为了在 macOS 和 Windows 上安装并配置 Syncthing,可以按照以下方法进行: #### 1. 下载 Syncthing 访问官方下载页面 (https://syncthing.net/downloads/) 获取适用于目标操作系统的二进制包或形界面版本。对于 macOS 用户可以选择 `.pkg` 文件来简化安装过程;而 Windows 则推荐使用 `.msi` 或者可执行程序 `exe` 来完成部署[^2]。 #### 2. 创建共享目录结构 无论是在哪种平台上运行 syncthing 都建议先定义好统一存储路径以便管理方便。例如,在宿主机上建立专门存放其设置以及待处理资料的地方: ```bash mkdir -p /opt/syncthing ``` 此命令将在 Unix-like 系统(如 macOS/Linux)下工作良好,而在 Windows 中可能需要调整盘符或者采用 PowerShell 命令替代。 #### 3. 启动服务并与远程节点连接 启动应用程序之后打开浏览器输入地址 http://localhost:8384 进入 web UI 页面开始初始化向导流程。在此期间需指定之前提到过的文件夹作为默认库位置,并允许其他设备加入网络形成组群关系从而达成数据交换目的。 值得注意的是当涉及到跨防火墙情况时还需要额外考虑端口转发等问题确保双方能够互相发现彼此的服务实例存在。 #### 示例代码片段展示如何通过 CLI 添加新文件夹到现有会话当中去: ```bash stcli folders add --label="MySyncFolder" --path="/Users/username/Documents/SyncedFiles" ``` 上述脚本展示了利用 stcli 工具行式化地增加一个新的同步区域至当前用户的文档目录下的子文件夹 SyncedFiles 当中的情形。 ### 结论 综上所述,Syncthing 提供了一个强大灵活解决方案使得个人能够在包含但不限于 MacOSX 及 MS-Windows 的异构计算环境中轻松维持最新版的工作副本集合[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BT-BOX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值