51单片机STC89C52RC——11.1 蜂鸣器播放音乐

目录

目的/效果

一,STC单片机模块

二,蜂鸣器

 2.1 介绍

2.2 板子位置+电路图

2.3 发声原理

2.4 音符和频率

三,创建Keil项目

四,代码 

4.1 乐谱代码

4.1.1 《义勇军进行曲》

 4.1.2 《天空之城》

4.1.3 《小美满》 

4.1.4 《兰花草》

4.1.5 《救护车》

4.1.6 《消防车》

乐谱待优化点

 4.2 蜂鸣器播放的音乐代码

五,代码编译、下载到51单片机


目的/效果

1:让蜂鸣器响起来

2:蜂鸣器播放音乐(《义勇军进行曲》《天空之城》《小美满》《兰花草》等) 

一,STC单片机模块

二,蜂鸣器

2.1 介绍

蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号

蜂鸣器按驱动方式可分为有源蜂鸣器无源蜂鸣器。

有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音(本节内容全部基于无源蜂鸣器)

2.2 板子位置+电路图

2.3 发声原理

翻转蜂鸣器的IO口,

    while(1){P2_5=!P2_5;//翻转蜂鸣器端口}

上面这段代码 执行时,可能听不到声音。

根据人耳朵的听力范围20-20000Hz

那么我们延时周期时长范围为

12000000/12/20000=50us,(最高频率时间间隔)

12000000/12/20=50000us=50ms (最低频率时间间隔)


/*** 函    数:主函数* 参    数:无* 返 回 值:无*/
void main()
{while(1){Delay_ms(2);//延时2毫秒【1秒钟翻转500次,相当于500Hz】P2_5=!P2_5;//翻转蜂鸣器端口}
}

2.4 音符和频率

标准的A的频率为440(每秒440次),相邻两个半音之间的比值是\sqrt[12]{2},所以我们根据标准音去计算其他音的频率,如下表

音符频率/Hz(计算值,保留小数)频率/Hz(每秒震动次数 取整)
低音1411.5292003412
低音1#436436
低音2412.4730746412
低音2#437437
低音3413.416949413
低音4438438
低音4#414.3608233414
低音5439439
低音5#415.3046976415
低音6(标准)440440
低音6#466.1637615466
低音7493.8833013494
中音1523.2511306523
中音1#554.365262554
中音2587.3295358587
中音2#622.2539674622
中音3659.2551138659
中音4698.4564629698
中音4#739.9888454740
中音5783.990872784
中音5#830.6093952831
中音6880880
中音6#932.327523932
中音7987.7666025988
高音11046.5022611047
高音1#1108.7305241109
高音21174.6590721175
高音2#1244.5079351245
高音31318.5102281319
高音41396.9129261397
高音4#1479.9776911480
高音51567.9817441568
高音5#1661.218791661
高音617601760
高音6#1864.6550461865
高音71975.5332051976

有了上面的频率(震动次数)我们再通过系统中断来翻转蜂鸣器.每秒翻转对应次数蜂鸣器就能发出对应频率的声音。

再利用晶振频率计算器单个震动的周时长

单个周期时长=晶振周期/12时钟周期/频率

比如 标准音A 所耗周期时长12000000/12/440=2272,由于蜂鸣器电频翻转只需要一半,所以还需要将周期减半1136。再利用定时器溢出发生中断,计算定时器的重转值。重装值=65536-周期时长65536-1136=64400 其他如下表

音符频率/Hz(计算值,保留小数)频率/Hz(每秒震动次数 取整)周期时长/us周期/2 us周期取整定时器重装值
低音1261.62556532623816.7938931908.396947190863628
低音1#277.1826312773610.1083031805.054152180563731
低音2293.66476792943401.3605441700.680272170163835
低音2#311.12698373113215.4340841607.717042160863928
低音3329.62755693303030.303031515.151515151564021
低音4349.22823143492865.3295131432.664756143364103
低音4#369.99442273702702.7027031351.351351135164185
低音5391.9954363922551.0204081275.510204127664260
低音5#415.30469764152409.6385541204.819277120564331
低音6(标准)4404402272.7272731136.363636113664400
低音6#466.16376154662145.9227471072.961373107364463
低音7493.88330134942024.2914981012.145749101264524
中音1523.25113065231912.045889956.022944695664580
中音1#554.3652625541805.054152902.527075890364633
中音2587.32953585871703.577513851.788756485264684
中音2#622.25396746221607.717042803.858520980464732
中音3659.25511386591517.450683758.725341475964777
中音4698.45646296981432.664756716.332378271664820
中音4#739.98884547401351.351351675.675675767664860
中音5783.9908727841275.510204637.75510263864898
中音5#830.60939528311203.369434601.684717260264934
中音68808801136.363636568.181818256864968
中音6#932.3275239321072.961373536.480686753665000
中音7987.76660259881012.145749506.072874550665030
高音11046.5022611047955.1098376477.554918847865058
高音1#1108.7305241109901.7132552450.856627645165085
高音21174.6590721175851.0638298425.531914942665110
高音2#1244.5079351245803.2128514401.606425740265134
高音31318.5102281319758.1501137379.075056937965157
高音41396.9129261397715.8196135357.909806735865178
高音4#1479.9776911480675.6756757337.837837833865198
高音51567.9817441568637.755102318.87755131965217
高音5#1661.218791661602.0469597301.023479830165235
高音617601760568.1818182284.090909128465252
高音6#1864.6550461865536.1930295268.096514726865268
高音71975.5332051976506.0728745253.036437225365283

所以我们这里要定义音符 对应中断初始值


//索引与频率对照表
unsigned int FreqTable[]={0,//占位休止符63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,
};

再将对应音符和索引定义好。


//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#define L2	3
#define L2_	4
#define L3	5
#define L4	6
#define L4_	7
#define L5	8
#define L5_	9
#define L6	10
#define L6_	11
#define L7	12
#define M1	13
#define M1_	14
#define M2	15
#define M2_	16
#define M3	17
#define M4	18
#define M4_	19
#define M5	20
#define M5_	21
#define M6	22
#define M6_	23
#define M7	24
#define H1	25
#define H1_	26
#define H2	27
#define H2_	28
#define H3	29
#define H4	30
#define H4_	31
#define H5	32
#define H5_	33
#define H6	34
#define H6_	35
#define H7	36

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

4.1 乐谱代码

4.1.1 《义勇军进行曲》


//《义勇军进行曲》乐谱 //最短是 16分音符=1
unsigned char Music_GuoGe[]={//音符,时值,M1,2+1,M3,1,M5,2,M5,2,M6,4,M5,4,M3,2+1,M1,1,M5,1,M5,1,M5,1,M3,4,M1,4,L5,1,L5,1,L5,1,L5,1,L5,1,L5,1,M1,4,P,2,L5,2,M1,4+2,M1,2,M1,2+1,M1,2,L5,2,L6,1,L7,1,M1,4,M1,4,P,4,M3,4,M1,2,M2,1,M3,1,M5,4,M5,4,M3,2+1,M3,1,M1,2,M3,2+1,M5,2,M3,2+1,M2,4+4,M6,4,M5,4,M2,4,M3,4,M5,2,M3,2,P,2,M5,2,M3,2,M2,1,M3,1,M1,4,M3,4,P,4,L5,2+1,L6,1,M1,2,M1,2,M3,2+1,M3,1,M5,2,M5,2,M2,2,M2,1,M2,1,L6,4,M2,4+2,L5,2,M1,4+2,M1,2,M3,4+2,M3,2,M5,4+4,M1,2+1,M3,1,M5,2,M5,2,M6,4,M5,4,M3,2+1,M1,  1,M5,1,M5,1,M5,1,M3,2,P,2,  M1,2,P,2,L5,4,M1,4,M3,2+1,M1,  1,M5,1,M5,1,M5,1,M3,2,P,2,  M1,2,P,2,L5,4,M1,4,L5,4,M1,4,L5,4,M1,4,M1,4,P,4,P,4,P,4,P,4,P,4,0xFF	//终止标志
};

 4.1.2 《天空之城》


//《天空之城》乐谱
unsigned char code Music_CastleSky[]={//音符,时值,//1P,	4,P,	4,P,	4,M6,	2,M7,	2,H1,	4+2,M7,	2,H1,	4,H3,	4,M7,	4+4+4,M3,	2,M3,	2,//2M6,	4+2,M5,	2,M6, 4,H1,	4,M5,	4+4+4,M3,	4,M4,	4+2,M3,	2,M4,	4,H1,	4,//3M3,	4+4,P,	2,H1,	2,H1,	2,H1,	2,M7,	4+2,M4_,2,M4_,4,M7,	4,M7,	8,P,	4,M6,	2,M7,	2,//4H1,	4+2,M7,	2,H1,	4,H3,	4,M7,	4+4+4,M3,	2,M3,	2,M6,	4+2,M5,	2,M6, 4,H1,	4,//5M5,	4+4+4,M2,	2,M3,	2,M4,	4,H1,	2,M7,	2+2,H1,	2+4,H2,	2,H2,	2,H3,	2,H1,	2+4+4,//6H1,	2,M7,	2,M6,	2,M6,	2,M7,	4,M5_,4,M6,	4+4+4,H1,	2,H2,	2,H3,	4+2,H2,	2,H3,	4,H5,	4,//7H2,	4+4+4,M5,	2,M5,	2,H1,	4+2,M7,	2,H1,	4,H3,	4,H3,	4+4+4+4,//8M6,	2,M7,	2,H1,	4,M7,	4,H2,	2,H2,	2,H1,	4+2,M5,	2+4+4,H4,	4,H3,	4,H3,	4,H1,	4,//9H3,	4+4+4,H3,	4,H6,	4+4,H5,	4,H5,	4,H3,	2,H2,	2,H1,	4+4,P,	2,H1,	2,//10H2,	4,H1,	2,H2,	2,H2,	4,H5,	4,H3,	4+4+4,H3,	4,H6,	4+4,H5,	4+4,//11H3,	2,H2,	2,H1,	4+4,P,	2,H1,	2,H2,	4,H1,	2,H2,	2+4,M7,	4,M6,	4+4+4,P,	4,P,	4,P,	4,P,	4,P,	4,P,	4,0xFF	//终止标志
};

4.1.3 《小美满》 节选


//《小美满》乐谱
unsigned char code Music_XMM[]={//音符,时值,//P,2,M5,2,H1,2,H3,2,H5,4,H5,1,H6,1,H5,1,H6,1,H5,2,H3,2,H2,2,H1,2,H3,4,H5,1,H6,1,H5,1,H6,1,H5,4,H6,2,H5,2,H1,4,H6,2,H5,2,H1,4,M6,2,H1,2,H4,1,H5,1,H5,1,H5,1,H5,2,H1,2,H1,4,M7,4,H1,8,H5,2,H5,1,H5,1,H3,2,HH1,2,H5,4,H1,1,H6,1,H6,1,H6,1,H6,2,H5,2,H3,8,H1,1,H1,1,H1,1,M7,1,H1,2,H2,2,H3,2,H6,1,H5,1,H5,3,M6,1,H1,1,H1,1,H1,1,H1,1,H1,2,H5,1,H3,1,H2,8,H5,1,H5,3,H5,1,H3,2,HH1,2,H5,8,H1,1,H6,1,H6,1,H6,1,H6,2,H5,2,H3,4,H3,3,M6,1,H1,1,H1,1,H1,1,M7,1,H1,2,H2,2,H3,2,H6,1,H5,1,H5,4,H1,1,H1,1,H1,1,H1,1,H1,2,M7,2,H1,1,H6,1,H5,1,H6,1,H5,2,H2,2,H3,4,H3,1,H2,1,H1,2,H2,1,H2,1,H2,1,H2,1,H2,2,H1,2,H3,4,P,	4,P,	4,P,	4,P,	4,0xFF	//终止标志
};

4.1.4 《兰花草》


//《兰花草》
unsigned char code Music_LHC[]=
{L6,2,M3,2,M3,2,M3,2,M3,4,M3,2,M2,2,M1,2,M1,1,M2,1,M1,2,L7,2,L6,4,M6,2,M6,2,M6,2,M6,2,M6,4,M6,2,M5,2,M3,2,M5,2,M5,2,M4_,2,M3,8,M3,2,M6,2,M6,2,M5,2,M3,4,M3,2,M2,2,M1,2,M2,2,M1,2,L7,2,L6,4,L3,4,L3,2,M1,2,M1,2,L7,2,L6,4,L6,2,M3,2,M2,2,M2,1,M1,1,L7,2,L5,2,L6,8,P,4,P,4,P,4,P,4,0xff//结束
};

4.1.5 《救护车》

//救护车
unsigned char Music_Ambulance[]={H3,4,H1,4,0xFF	//终止标志
};

4.1.6 《消防车》


//消防车
unsigned char Music_FireTruck[]={H5,4,H7,4,0xFF	//终止标志
};

乐谱待优化点

1:由于这里设备内存限制,不可能将以上所有乐谱编译。

2:乐谱的音符和拍子的长短没能进行较为好的对象化编程,可以考虑{音符、时值}的代码模式进行再次封装。且节拍时值最好能固定,4分音符时值设置为T,其他时值根据这个做调整。比如下表

音符写法时长值时长值
全音符1---4T四拍
二分音符1--2T二拍
四分音符1T一拍
八分音符1T/2半拍
十六分音符以此类推T/4四分之一拍

要精确最好能将一个乐谱的最小时值设为T,或者将T设置为2的n次幂的数字,这样在做T/n时没有余数更为准确。 

3:乐谱没有考虑到和弦

 4.2 蜂鸣器播放的音乐代码

#include <REGX52.H>
#include "Delay.h"
#include "Timer0.h"//蜂鸣器端口定义
sbit Buzzer=P2^5;//播放速度,值为四分音符的时长(ms)
#define SPEED	500//音符与索引对应表,P:休止符,L:低音,M:中音,H:高音,下划线:升半音符号#
#define P	0
#define L1	1
#define L1_	2
#define L2	3
#define L2_	4
#define L3	5
#define L4	6
#define L4_	7
#define L5	8
#define L5_	9
#define L6	10
#define L6_	11
#define L7	12
#define M1	13
#define M1_	14
#define M2	15
#define M2_	16
#define M3	17
#define M4	18
#define M4_	19
#define M5	20
#define M5_	21
#define M6	22
#define M6_	23
#define M7	24
#define H1	25
#define H1_	26
#define H2	27
#define H2_	28
#define H3	29
#define H4	30
#define H4_	31
#define H5	32
#define H5_	33
#define H6	34
#define H6_	35
#define H7	36//索引与频率对照表
unsigned int FreqTable[]={0,63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134,65157,65178,65198,65217,65235,65252,65268,65283,
};// 乐谱
unsigned char code Music[]=
{/*这里是乐谱的内容*/P,4,P,4,P,4,P,4,0xff//结束
};unsigned char FreqSelect,MusicSelect;void main()
{ Timer0Init();while(1){if(Music[MusicSelect]!=0xFF)	//如果不是停止标志位{FreqSelect=Music_LHC[MusicSelect];	//选择音符对应的频率MusicSelect++;Delay_ms(SPEED/4*Music[MusicSelect]);	//选择音符对应的时值MusicSelect++;TR0=0;Delay_ms(5);	//音符间短暂停顿TR0=1;}else	//如果是停止标志位{TR0=0;while(1);}}
}void Timer0_Routine() interrupt 1
{if(FreqTable[FreqSelect])	//如果不是休止符{/*取对应频率值的重装载值到定时器*/TL0 = FreqTable[FreqSelect]%256;		//设置定时初值TH0 = FreqTable[FreqSelect]/256;		//设置定时初值Buzzer=!Buzzer;	//翻转蜂鸣器IO口}
}

注意:

1:这里面注意Music这个数组变量就是上面对应的乐谱代码的变量。如果设备内存允许你可以将以上曲目全部放入内存,用按钮动态设置切换上面的曲目(上一曲、下一曲、暂停/继续)

2:SPEED可以根据实际情况调整快慢(甚至可以做成按钮去控制播放速度

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

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

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

相关文章

安防监控视频平台LntonAIServer视频监控管理平台裸土检测算法技术核心和应用场景

LntonAIServer裸土检测算法是一种基于人工智能技术的创新解决方案&#xff0c;旨在实现对裸土地表的自动识别。以下是对该算法的详细分析&#xff1a; 技术基础&#xff1a; 1、该算法利用深度学习和计算机视觉技术&#xff0c;通过捕捉视频或图像中的关键信息&#xff0c;如…

快手主播李香周助力推动 K-beauty风潮谈背后成功秘诀

近年来&#xff0c;互联网的迅速发展和SNS社交媒体的普及&#xff0c;人们通过网络可以随时随地对自己感兴趣的自由畅谈和学习。而直播带货更是作为一种依托于互联网兴起的新型营销方式&#xff0c;凭借其价格优势和新颖的介绍方式为消费者带来了十分便捷的购物体验。 本期采访…

多模态语言模型的新突破:Reka Core、Flash和Edge系列

人工智能领域的每一次技术革新都可能引领一场行业的变革&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;多模态语言模型&#xff08;MLMs&#xff09;正逐渐成为推动智能系统发展的核心力量。Reka团队最新推出的Reka Core、Flash和Edge系列模型&…

一个项目学习Vue3---快速了解Vue代码结构

基础结构 Vue文件中基本上和咱们自己写Html、CSS、JS差不太多&#xff0c;主要也由这三部分组成 HTML部分&#xff1a; <template><div>这里面写HTML代码</div> </template> CSS部分&#xff1a; <style scoped> .aaa {font-size: 3em; } &…

蚂蚁- 定存

一&#xff1a;收益变动&&收益重算 1.1: 场景组合 1: 澳门元个人活期&#xff0c;日终余额大于0&#xff0c;当日首次、本周本月非首次系统结息&#xff0c;结息后FCDEPCORE_ASYN_CMD_JOB捞起进行收益计算 【depc_account_revenue_detail】收益日 > 【depc_accoun…

golang使用RSA加密和解密

目录 前提 生成RSA公钥和密钥 读取文件 加密 解密 前提 本文章我们是先读取的RSA文件&#xff0c;所以需要先生成RSA&#xff0c;并且保存在文件中&#xff0c;再进行加密 生成RSA公钥和密钥 如果没有公钥和密钥&#xff0c;可以先看看我上一篇文章 生成RSA公钥和密钥h…

同步模式之保护性暂停模式

1. Guarded Suspension&#xff1a;一个线程需要等待另一个线程的执行结果 2. 理解 一个线程需要将结果传递给另一个线程&#xff0c;将这两个线程关联到到同一个 GuardedObject 如果需要源源不断地传递结果&#xff0c;需要使用消息队列&#xff08;生产者-消费者模型&…

最新AIGC系统源码-ChatGPT商业版系统源码,自定义ChatGPT指令Promp提示词,AI绘画系统,AI换脸、多模态识图理解文档分析

目录 一、前言 系统文档 二、系统演示 核心AI能力 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI模型提问 文档分析 ​识图理解能力 3.2 GPts应用 3.2.1 GPTs应用 3.2.2 GPTs工作台 3.2.3 自定义创建Promp指令预设应用 3.3 AI专业绘画 3.3.1 文…

【51单片机入门】数码管原理

文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中&#xff0c;数码管被广泛应用于各种电子设备中&#xff0c;如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中&#xff0c;我们将探讨数码管的工作原理…

SpringMVC启动流程

文章目录 引文HandlerHandlerMapperHandlerAdapterRequestMapping方法参数解析RequestMapping方法返回值解析文件上传流程拦截器解析 SpringMVC启动流程如下 引文 我们在使用SpringMVC时&#xff0c;传统的方式是在webapp目录下定义一个web.xml文件&#xff0c;比如&#xff1a…

PerplexityAI与《连线》杂志纠纷事件深度分析

引言 最近&#xff0c;PerplexityAI&#xff0c;这家人工智能搜索领域的新秀公司&#xff0c;因被《连线》杂志指控剽窃内容和捏造事实而陷入困境。这起事件引发了广泛关注&#xff0c;也揭示了AI技术在信息检索和内容生成领域面临的一系列挑战。本文将对该事件进行详细分析&a…

Android Lint

文章目录 Android Lint概述工作流程Lint 问题问题种类警告严重性检查规则 用命令运行 LintAndroidStudio 使用 Lint忽略 Lint 警告gradle 配置 Lint查找无用资源文件 Android Lint 概述 Lint 是 Android 提供的 代码扫描分析工具&#xff0c;它可以帮助我们发现代码结构/质量…

最小生成树拓展应用

文章目录 最小生成树拓展应用理论基础 题单1. [新的开始](https://www.acwing.com/problem/content/1148/)2. [北极通讯网络](https://www.acwing.com/problem/content/1147/)3. [走廊泼水节](https://www.acwing.com/problem/content/348/)4. [秘密的牛奶运输](https://www.ac…

用英文介绍芝加哥(1):Making Modern Chicago Part 1 Building a Boomtown

Making Modern Chicago | Part 1: Building a Boomtown Link: https://www.youtube.com/watch?vpNdX0Dm-J8Y&listPLmSQiOQJmbZ7TU39cyx7gizM9i8nOuZXy&index4 Summary Summary of Chicago’s History and Development Urban Planning and Growth Chicago, often r…

无需向量量化的自回归图像生成

摘要 https://arxiv.org/pdf/2406.11838 传统观点认为&#xff0c;用于图像生成的自回归模型通常伴随着向量量化的标记。我们观察到&#xff0c;尽管离散值空间可以方便地表示分类分布&#xff0c;但它对于自回归建模来说并不是必需的。在这项工作中&#xff0c;我们提出使用扩…

战地战地风云最强的免费加速器 2024低延迟不卡顿加速器推荐

来喽来喽&#xff0c;steam夏季促销它又来喽&#xff0c;战地风云&#xff0c;第一人称射击游戏&#xff0c;而且这次迎来了史低&#xff0c;游戏背景设定为近未来&#xff08;公元2042年&#xff09;&#xff0c;会有动态的天气系统&#xff0c;以及改善后的破坏系统。该作为《…

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(三)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

关于Mac mini 10G网口的问题

问题: 购入一个10G网口的Mac mini M2&#xff0c;将其和自己的2.5G交换机连接&#xff0c;使用共享屏幕进行远程操作的过程中出现了频率极高的卡顿&#xff0c;几乎是几秒钟卡一下&#xff0c;使用ping进行测试发现卡的时候就ping不通了。测试使用Mac mini的无线网和雷电转2.5G…

React Native 开发常见问题及注意事项

本文只是使用时积累的一些经验 开发环境 1、Android Studio 依赖项下载慢 如果发现依赖下载非常慢&#xff0c;动不动十几KB的 参考&#xff1a;加速 Android Studio 依赖项下载 也可以切换数据源 修改 android/build.gradle中的jcenter()和google() repositories {// goo…

人脑计算机技术与Neuroplatform:未来计算的革命性进展

引言 想象一下&#xff0c;你在某个清晨醒来&#xff0c;准备开始一天的工作&#xff0c;而实际上你的大脑正作为一台生物计算机的核心&#xff0c;处理着大量复杂的信息。这并非科幻电影的情节&#xff0c;而是人脑计算机技术即将带来的现实。本文将深入探讨FinalSpark公司的…