基于单片机的七彩音乐喷泉设计

news2024/11/25 16:28:17

目录

一、方案流程及技术规格书设计

二、系统硬件电路设计

三、软件编写及调试

四、系统调试测试与分析

前言

       随着时代的进步,人们对生活质量的要求也在不断提升,因此,51单片机七彩音乐喷泉系统应运而生,它不仅可以满足人们对舒适环境的追求,而且还可以实现智能化、自动化的户外设施,因此从受到人们的喜欢。本文提出的用步进电机控制操作,更简洁方便。

       系统采用单片机STM32F103RCT6为控制核心,由模数转换器ADC0832检测模块把音频信号转换成数字信号输入给单片机,经处理后控制电机驱动水泵开关闭合,当识别到声信号较弱时,步进电机驱动水泵开口变大,使水流喷射高度减低;当识别到声信号较强时,步进电机驱动水泵开口变小,使水流喷射高度提高。音乐喷泉在喷射时装有多个LED灯泡,使音乐喷泉视觉效果得到显著提升,提高用户的舒适体验。

       喷泉能根据音乐进程进行动态喷射,LED发光灯泡能根据音乐效果进行颜色变换闪烁,步进电机能根据模数转换器采样值驱动水泵开关及闭合。

软件工具准备

软件:

电路设计:protel99 se(up主使用版本) 或者其他版本,或者其他电路设计软件;

单片机开发:Keil5

调试测试:串口调试助手,逻辑分析仪等;

工具:

电路焊接:电烙铁,SMT(有条件的);

调试:

万用表、示波器(基础入门即可,可以白嫖学校或者公司)USB转串口工具、仿真器;

                       

一、方案流程及技术规格书设计                      

方案流程设计

技术规格书设计

       本课题是基于51单片机七彩音乐喷泉设计,系统包括硬件系统的实现;软件系统的实现。提供硬件系统实现的原理图,采用汇编语言或C51完成软件的开发,并完成系统的调试。本系统采用 51系列单片机开发平台。
       本系统采用 51系列单片机开发平台。

二、系统硬件电路设计

       七彩音乐喷泉由51单片机AT89C51作为主控部件,外围设备有串口、步进电机、LED等接口及部件。采用51系列单片机的并行I/O接口对8个发光二极管进行控制,采用步进电机控制水泵闭合状态,8个发光二极管显示音乐状态,并根据实际AD采集数据通过ADC0832芯片实现调节步进电机转动角度,步进电机驱动水泵开关的功能;可以通过设置音频使得8个发光二极管按照指定的规则工作。该系统模块要求性能稳定,方便操作和设置。

       本系统采用AT89C51单片机做中央控制芯片,模块组成分为ADC模数转换模块,步进电机驱动模块和发光二极管模块,ADC模数转换模块型号为ADC0832,步进电机模块型号为28BYJ4+ULN2003驱动板;用ADC0832模数转换芯片检测音乐信号幅度。ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。其提供的音频AD转换技术,是实现设计音乐喷泉的基础。

       单片机AT89C51通过ADC实现模拟信号转数字信号读取ADC0832芯片解析的音频信号后,根据AD转换值控制八个发光二极管规律闪烁,同时驱动步进电机转动,以模拟实现控制水泵闭合程度,在水压强度一定情况下实现控制水柱高低变化。

       集成开发环境:Keil uVision5是一款专业实用的c语言软件开发系统,提供编译器、编译器、调试跟踪和包管理器功能。用户可以利用观察窗口同时进行对多个重要全局变量进行实时的查看,以此用户可以在最短的时间内发现问题。

2.1微处理控制电路

       系统采用STM32F103C8T6单片机。LQFP48封装,STM32F103ARM系列单片机,电路图如图所示:

       图中VCC3.3供电电压3.3VR12C19复位电路,C20C101C102滤波作用,J6是仿真烧录口。

单片机IO口连接介绍:

PB0-PB218-20脚):LCD数据口。

PB3-PB739-43脚):LCD数据口。

PB8-PB945-46脚):LCD数据口。

PB10-PB1121-22脚):LCD数据口。

PB12-PB1525-28脚):LCD数据口。

PC13-PC14:LCD控制。

PA8-PA9:LCD控制。

PA7LCD背光。

PA0-PA2:按键。

PA3:光敏电阻输入。

PA4:蜂鸣器控制。

PA5LED灯控制。

PA6DHT11温湿度控制。

2.2  发光电路设计

        发光模块设计为独立模块。发光模块的基本应用电路由三极管和电阻组成。主控MCU STM32F103通过控制IO口电平高低,给特殊功能寄存器赋值对应参数,控制周期和占空比使得发光管可以输出我们想要的颜色,从00H〜FFH。TEMP6000发光模块电路如图所示。

       三极管驱动电路,其模块外接有信号采集、放大和处理电路,所以和单片机接口比较简单。设计采用3LED和单片机IO口一对一连接。在音频识别下,由单片机控制三个颜色的发光模块,实现发光模块随音乐律动。 

2.3 LCD显示电路

       LCD1602液晶显示电路如图:

       LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动电路HD44100,以及少量电阻、电容元件和结构件等装配在PCB板上而组成。不同厂家生产的LCD1602芯片可能有所不同,但使用方法都是一样的。为了降低成本,绝大多数制造商都直接将裸片做到板子上。

2.4按键电路

       设计按键部分使用了4个机械按键,K1-K4四个IO口电平被单片机实时检测,正常状态下,电平会升至较高水平,而当按键按下时,电平会降至较低。按键控制对应设备开关。电路如图:

2.5  声音输出模块电路设计

       系统可通过功放进行音频输出控制,功放的开关和通讯通过AINO控制。功放设置有空闲和通讯状态。设置功放空闲时,AINO输出低电平,设置功放通讯时,AINO输出50%占空比的方波。设计可以插入耳机通过耳机播放音频。

 

2.6 步进电机驱动电路设计

       两个ULN2003达林顿管驱动步进电机,如图3.7。在U41-4管脚输出特定时序的电压波形,可以使得步进电机按我们需求正转或反转,模拟音乐喷泉开关。

 

2.7 电源电路

       电源是整个系统能源供给中心,稳定的电压是系统工作的必要条件。由于单片机和温湿度传感器都需要纹波小干扰少的电源,所以系统采用线性稳压电路。外部9V电源适配器经过7805稳压输出5VC4输入滤波电容、C5输出滤波电容。电路如图。

       单片机等3.3V供电采用ASM1117线性稳压电路,电路如图。

 

三、软件编写及调试

3.1主程序设计

       主控单片机为STM32F103FRT6,单片机识别音频信号输入,按键信号,LCD1602输出显示,步进电机输出转动步数。

       工作时,程序先进行初始化工作。然后单片机接收音频信号,控制步进电机、LCD1602液晶显示。系统流程图。

 

3.2 LCD显示程序设计

       1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔 起到了字符间距和行间距的作用。

       1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶,其地址和屏幕的对应关系如下表4.1地址和屏幕对应关系:

显示位置

1

2

3

4

5

6

40

DDRAM

地址

第一行

00H

01H

02H

03H

04H

05H

27H

第二行

40H

41H

42H

43H

44H

45H

67H

       以下是清屏指令,如表:

指令功能

RS

RW

D7

D6

D5

D3

D2

D1

D0

清屏

0

0

0

0

0

0

0

0

1

       与液晶显示器进行通讯,首先要具备写入和写入的功能,图是写LCD命令和数据流程图。

 

3.3 步进电机驱动程序设计

       使用4相8拍步进电机,它的工作原理为:电机按照一定的电流循环运行,从A开始,依次为AB、B、BC、C、CD、D、DA,最后回到DA开始,依次为C、BC、B、AB。转速的快慢是由输出脉冲频率决定。

步进电机代码:

/*输出脉冲驱动*/

    unsigned char MotorCtr(void)

{

    if (stop_flag==1) //停止转动

        {

            P24 = 1;

            P25 = 1;

            P26 = 1;

            P17 = 1;

            case 0: //0 ,(A 相)

               P22 = 1;

               P21 = 0;

                 P20 = 0;

                 P10 = 0;

            break;

            case 1: //0、1, (AB 相)

                   P22 = 1;

               P21 = 1;

                 P20 = 0;

                 P10 = 0;

            break;

            case 2: //1,(B 相)

                   P22 = 0;

               P21 = 1;

                 P20 = 0;

                 P10 = 0;

            break;

            case 3: //1、2 , (BC 相)

                   P22 = 0;

               P21 = 1;

                 P20 = 1;

                 P10 = 0;

            break;

            case 4: //2, (C 相)

                   P22 = 0;

               P21 = 0;

                 P20 = 1;

                 P10 = 0;

            break;

            case 5: //2、3, (CD 相)

                   P22 = 0;

               P21 = 0;

                 P20 = 1;

                 P10 = 1;

            break;

            case 6: //3, (D 相)

                   P22 = 0;

               P21 = 0;

                 P20 = 0;

                 P10 = 1;        break;

           

            case 7: //3、0, (DA 相)

                   P22 = 1;

               P21 = 0;

                 P20 = 1;

                 P10 = 1;

     }

如果(turn==0),则控制转动方向,从0-正转到1-反转,以实现最佳效果。

     {

            step_index++; //正转时序

            if (step_index>7)

                   step_index=0;

     }

     else

     {

            step_index--;//反转时序

            if (step_index<0)

            step_index=7;

     }

}

3.4发光管模块程序设计

       二极管通过单片机的控制,将电子和空穴结合,并释放出可见的光。这些二极管既可安装到电路和仪表上,也可以被用于文本和图形的显示。其中,砷化镓二极管会产生鲜红的光,磷化镓二极管会产生碧绿的光,碳化硅二极管会产生金黄的光,氮化镓二极管会产生金色的光。由于其物理特征,有机合成发光二极管OLED与无机化学发光二极管LED可以有效地区别开来,具体可参见图。

       LED从一开始的应用,就是作为一种指示性的装置,它不仅可以作为仪器仪表的亮度,还可以作为交通信号灯的亮度,甚至是汽车的亮度。后来将二极管从一种颜色发展成多个颜色的微型二极管,可以排列形成在显示领域。微尺寸的发光二极管拥有独特的自发光表现能力,这使得它们的表现能力远远超过了传统的有机发光二极管(Organic Light Emitting DiodeOLED),并且它们的使用寿命更加持久,更加耐用。

 

四、系统调试测试与分析

4.1电路仿真

       首先采用protues仿真软件的进行调试与仿真,再进行对实物硬件的仿真器调试,在采用protues软件仿真进行仿真调试时,用模拟硬件电路在软件中进行搭建。

1刚开始运行图5.1,表示pump init

 2. 初始化完成后的仿真如图5.2,显示Fountain ON,时长00:00 MUSIC。

 3.长按ENTER按键切换为关音乐喷泉状态。

4. 三个发光管随音乐而律动。

 

4.2硬件电路焊接

       用电烙铁将单片机、LED灯、液晶显示及电容、蜂鸣器、按键等器件焊接在电路板上。

4.2系统调试

       板子单片机通过电脑连接仿真器,烧入软件进单片机,上电液晶显示初始化pumpinit。

       音乐控制喷泉。

        点击机械按键控制关,进入关模式。

       按下遥控器按键时,步进电机驱动音乐喷泉开启。

       按下遥控器按键时,设定时间。

       按下遥控器按键时,设定定时时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

I.MX RT1170加密启动详解(3):HAB加密启动原理

上一节使用对镜像进行签名认证&#xff0c;这可以防止镜像被篡改。但我们还是希望Flash中的程序不会被别人看到&#xff0c;所以这就需要加密启动了。 文章目录 1 HAB加密启动流程2 扩展知识&#xff1a; DCP和SNVS 1 HAB加密启动流程 如下图所示就是HAB加密启动的整个流程&a…

蓝桥杯国赛备赛(嵌入式组)

一、数码管&#xff08;拓展板&#xff09;&#xff08;共阴接法&#xff09; 引脚控制 PA3 :RCLK 串型存储时钟输入 &#xff08;上升沿有效&#xff09; PA2 :SCK 串行移位时钟输入&#xff08;上升沿有效&#xff09; PA1 :SER 串型数据输入 发送数据时先发高位&#xff1…

【UnityShader入门精要】【总结记录】【第二章-1】

☀️博客主页&#xff1a;CSDN博客主页 &#x1f4a8;本文由 萌萌的小木屋 原创&#xff0c;首发于 CSDN&#x1f4a2; &#x1f525;学习专栏推荐&#xff1a;面试汇总 ❗️游戏框架专栏推荐&#xff1a;游戏实用框架专栏 ⛅️点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;&a…

使用 Access SQL 插入、更新和删除表格记录

参考链接 使用 Access SQL 插入、更新和删除表格记录 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/office/vba/access/concepts/structured-query-language/insert-update-and-delete-records-from-a-table-using-access-sql 将记录插入表格 基本上有两种方法可以向…

client-go架构与原理介绍

个人博客 一、架构展示 client-go 库中的各种组件架构如下图所示&#xff1a; 二、目录结构 client-go 是用 Golang 语言编写的官方编程式交互客户端库&#xff0c;提供对 Kubernetes API server 服务的交互访问。 其源码目录结构如下&#xff1a; . ├── discovery …

再识openmmlab,用mmDeploy实现部署的前期需要了解一些内容

OpenMMLab 是一个用于学术研究和工业应用的开源算法体系&#xff0c;于2018年年中开始&#xff0c;由 MMLab&#xff08;香港中文大学多媒体实验室&#xff09;和商汤科技联合启动。 如果第一接触的话&#xff0c;还是建议参考官方环境配置教程&#xff1a;Windows 环境配置 -…

Midjourney万能高清咒语,真正的近看也美

明明我都拿人家的图垫图了&#xff0c;为什么质量还是很差&#xff1f; 明明别人都把咒语分享出来了&#xff0c;为什么质量还是很差&#xff1f; 今天我们就来解决这两个问题&#xff0c;看到就是缘分&#xff0c;点点手指来个小心心不过分吧&#xff0c;哈哈 什么你在怀疑我的…

Spring Boot + ElasticSearch实战之CRUD及多数据源配置

概述 本文记录工作中使用Spring Boot ElasticSearch的实战&#xff0c;Spring Boot版本&#xff1a;2.1.6.RELEASE。 基础 Spring Boot已是Java开发标配&#xff0c;使用SB提供的starter&#xff0c;简单高效。 配置 引入依赖&#xff1a; <dependency><groupI…

Rocketmq如何保证消息不丢失

如果想要保证消息不丢失就要知道&#xff0c;消息可能出现丢失得地方。 1.producer发送消息 2.Broker存储消息 3.Consumer消费消息 4.Broker主从切换 下面一共有9个维度可以保证消息不丢失。 目录 维度一&#xff1a;同步发送 维度二.异步发送 维度三.刷盘策略 维度四…

数据库期末复习(2)

关系数据库 图1 上图为思考题1的答案 \d student #查看完整性约束 模式和实例 关系的模式:关系有哪些、关系又什么类型、关系的约束时什么&#xff0c;一般来说关系的模式一般比较稳定&#xff0c;不会随着动态的变化而变化。 关系的实例:关系的实例一般随着变化的次数比较…

体验 InsCode AI,原来 AI 也扛不住互联网黑话

CSDN AI写作助手上线了&#xff01;InsCode AI 创作助手不仅能够帮助用户高效创作文章&#xff0c;而且能够作为对话式AI回答你想知道的问题。成倍提高生产力&#xff01;以下是我的体验分享 一、你平时会使用这类AI工具吗&#xff1f;你对这类型的工具有什么看法&#xff1f;…

RPC(2):RPC简介

1 RFC RFC(Request For Comments) 是由互联网工程任务组(IETF)发布的文件集。文件集中每个文件都有自己唯一编号&#xff0c;例如&#xff1a;rfc1831。目前RFC文件由互联网协会(Internet Society&#xff0c;ISOC)赞助发行。 RPC就收集到了rfc 1831中。可以通过下面网址查看…

微信小程序websocket使用protobuf,发送arraybuffer

❤️砥砺前行&#xff0c;不负余光&#xff0c;永远在路上❤️ 目录 前言一、如何在小程序websocket中使用 Protobuf 发送buffer二、使用过程遇到的坑&#xff08;版本问题&#xff09;1、需要注意下Protobuf版本 使用 protobufjs6.8.6最好&#xff0c;我在使用的时候安装7.多 …

1_7后端优化

后端优化是指将一段时间内相机所有关键帧的位姿、内参、每个点3维坐标作为参数进行优化&#xff0c;得到最优的内、外参&#xff1b;利用的方法主要是Bundle Adjustment。 所谓Bundle Adjustment可以理解为从任意特征点发射出来的几束光线&#xff0c;它们会在几个相机的成像平…

寄存器-汇编复习(2)

通过阅读本文小节内容&#xff0c;可以清楚的明白汇编承接的能力和机器语言&#xff0c;高级语言之间的表达关系。文中虽然讨论16位cpu&#xff0c;最新的64或以后的128理论都一样的&#xff0c;类推就好了。 继续将 通用寄存器-汇编复习(1)_luozhonghua2000的博客-CSDN博客 …

很多人打商标的主意,悄悄埋伏

很多人在打商标的主意&#xff0c;等着抢劫呢 等你的品牌结了果实&#xff0c;然后出手勒索 趣讲大白话&#xff1a;鬼子进村&#xff0c;打枪的不要 【趣讲信息科技183期】 **************************** 有些公司申请几千件商标 有公司一个月申请100件 春江水暖贼先知 有一条…

WSL2网络配置

WSL2越来越好用了&#xff0c;但是在windows下使用clash时&#xff0c;配置WSL2的网络很麻烦&#xff0c;通常使用设置环境变量export ALL_PROXY"http://127.0.0.1:8000"的方式有很大的弊端&#xff0c;例如pip和conda就不会走代理。 经过我亲身体验&#xff0c;最好…

基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

模拟退火算法(附简单案例及详细matlab源码)

作者&#xff1a;非妃是公主 专栏&#xff1a;《智能优化算法》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 专栏推荐序一、概论二、物理退火1. 加温…

MyBatis - CRUD 操作

文章目录 1.环境配置1.1 导入相关依赖1.2 基本配置1.3 数据模型 2.基于 XML 开发2.1 创建 Mapper 接口2.2 创建 XML 映射文件2.3 insert2.4 select2.5 delete2.6 update2.7 编写单元测试 3.基于注解开发3.1 常用注解3.2 创建 Mapper 接口 MyBatis 支持通过 XML 和注解两种方式来…