2024-09-01
售卖作品
00

目录

实验报告:基于51单片机的简易电子琴设计与实现
实验背景
实验器件与连接
器件清单
硬件连接
设计原理
电路原理
程序原理
主要函数解析
定时器初始化函数
按键扫描函数
主函数
定时器中断函数
实验结果
总结
资料

在这里插入图片描述

实验报告:基于51单片机的简易电子琴设计与实现

实验背景

本实验旨在设计和实现一个基于51单片机的简易电子琴,通过按键控制不同频率的声音输出。该系统可以模拟电子琴的基本功能,通过按键的不同组合,产生对应音调的声音。

实验器件与连接

器件清单

  1. 51单片机(STC89C52)

  2. 蜂鸣器

  3. 按键(6个)

  4. 电阻、电容等基本元器件

  5. 面包板及连接线

  6. Proteus仿真软件

硬件连接

  1. 单片机:使用STC89C52作为主控制芯片。

  2. 蜂鸣器:连接到P1^6引脚,用于发声。

  3. 按键:6个按键分别连接到P2口,用于选择不同的音调。

  4. 电源:提供稳定的5V电源给单片机和外设。

硬件连接示意图如下:

+-------------+ +----------+ | | | | | STC89C52 | | 蜂鸣器 | | | | | | P1^6 -----+--------> | | | +----------+ | | | P2.0-P2.5--+ | | | | | +---------+ | | | | +------>| 按键1 | | | | +--------->| 按键2 | | | +----------->| 按键3 | | +------------->| 按键4 | | +->| 按键5 | | | | 按键6 | +-----------------+ +---------+

设计原理

电路原理

该设计利用51单片机的I/O端口控制蜂鸣器发声,通过定时器产生不同频率的方波,从而产生不同音调。按键用于选择不同的音调,按键按下时单片机读取按键值并控制蜂鸣器发出相应频率的声音。

程序原理

程序主要分为以下几个部分:

  1. 音调频率定义:定义低音、中音和高音的频率。

  2. 定时器初始化:配置定时器用于产生不同频率的方波。

  3. 按键扫描:检测按键输入,根据按键值选择相应的音调。

  4. 中断服务程序:通过定时器中断产生方波,从而驱动蜂鸣器发声。

主要函数解析

定时器初始化函数

c
void init_timer(void) { EA = 1; // 开总中断 ET1 = 1; // 定时器T1中断允许 TMOD &= 0x0f; TMOD |= 0x00; // 使用定时器T1的模式1(13位计数器) TR1 = 1; }

该函数用于初始化定时器1,并设置为13位计数模式。

按键扫描函数

c
void ScanKey(void) { if (GPIO_KEY != 0xff) { if (GPIO_KEY == 0xff - 0x01) { TEMP_C = Z1; } else if (GPIO_KEY == 0xff - 0x02) { TEMP_C = Z2; } else if (GPIO_KEY == 0xff - 0x04) { TEMP_C = Z3; } else if (GPIO_KEY == 0xff - 0x08) { TEMP_C = Z4; } else if (GPIO_KEY == 0xff - 0x10) { TEMP_C = Z5; } else if (GPIO_KEY == 0xff - 0x20) { TEMP_C = Z6; } C = 460830 / TEMP_C; TH1 = (8192 - C) / 32; TL1 = (8192 - C) % 32; TR1 = 1; while (GPIO_KEY != 0xff); TR1 = 0; } }

该函数用于扫描按键并根据按键值设置相应的频率常数。

主函数

c
void main() { init_timer(); TR1 = 0; // 关闭定时器 sound = 1; // 关闭蜂鸣器 while (1) { ScanKey(); // 获取处理按下的键 } }

主函数初始化定时器并进入无限循环,持续检测按键输入。

定时器中断函数

c
void Time1(void) interrupt 3 { sound = !sound; // 将P3.7引脚输出电平取反,形成方波 TH1 = (8192 - C) / 32; // 13位计数器TH0高8位的赋初值方法 TL1 = (8192 - C) % 32; // 13位计数器TL0低5位的赋初值方法 }

该函数用于定时器中断,通过改变蜂鸣器引脚的电平,产生方波,从而发出声音。

实验结果

通过按下不同的按键,蜂鸣器可以发出对应频率的声音,实现了简易电子琴的功能。各按键对应的音调准确,响应速度快,满足设计要求。

总结

本实验成功实现了一个基于51单片机的简易电子琴,通过按键控制蜂鸣器发出不同频率的声音。实验验证了定时器中断、按键扫描等基本技术在电子琴设计中的应用,为进一步的扩展和改进提供了基础。

资料

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!