最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

带蓝牙控制的SD卡音乐播放器_图文

IT圈 admin 33浏览 0评论

2024年3月14日发(作者:友晗)

l数字技术 

卜r 设计开发 

(MY—UUID)}//连接到该装置 

OpenFlag=1; //已连接到装置,见标志位置1 

}catch(IOException e){ //处理异常 

OpenFlag=0; //未连接到装置 

handler.sendEmptyMessage(0)}//发送一个0交给handler处 

理 

系统软件的设计可以分为三个部分:数值预设部分、音乐信息 

采集与处理部分、信息显示与蓝牙控制部分。系统软件设计流程图 

如图4所示这三个部分相辅相成,在程序调试运行的时候,能最快的 

找出错误的所在,并进行改正。 

3.1数值预设部分 

首先定义了P3.5,P3.6,P3.7等3个子接口作为键盘的按键信 

号输入端,定义整型i和浮点f等2个公用体;对液晶显示器进行清屏 

操作,然后定义2段中文字符“音乐播放器”和“作者:钟伟雄”以及1 

段作者单位的图片转码,显示欢迎信息,延时0.5s后进入设置状态; 

通过P3.5可以对音乐文件信息进行播放/暂停操作P3.6,P3.7可 

以对音乐进行上一曲和下一曲的播放操作,如图5所示: 

3.2音乐信息采集与处理部分 

该部分采用子程序形式完成,主程序通过调用方式实现信息的 

采集与处理。在该部分,定义Delay1us(void),LCD一5110(void), 

} 

try{ //抛出异常 

btSocket.connect(); //连接 

handler.sendEmptyMessage(1),//发送一个1交给handler 

处理 

}catch(IOException e){ //处理异常 

handler.sendEmptyMessage(2);//发送一个2交给handler 

处理 

SD

MMC(void),FAT32(void)等4个子函数,通过FAT32(void)建 

立识别SD卡文件信息的FAT32文件系统,提供对SD卡文件根目录 

的搜索与读取准备;通过SD_MMC(void)对SD卡提供驱动程序,实 

现单片机SD卡文件的读取工作;通过LED一5110(void)对从SD卡采 

集到的音乐文件信息进行显示;在单片机读取音乐文件信息后,将 

数据输出到单片机的P0口,让DA网络对音乐数据进行DA转换,形 

成波形文件输出。 

3_3信息显示与蓝牙控制部分 

如图6所示,在该部分,液晶显示曲目,歌曲名称和演唱者;同时 

在液晶的下方显示音乐播放的频谱以及播放的时间,频谱采用快速 

傅里叶FFT算法,实现歌曲输出音频与液晶状态频谱的完美结合。 

如图7所示,带蓝牙通信组件的安卓手机通过自主开发安卓应用程 

序界面可以对音乐播放器实行控制。首先点击手机屏幕最下方的连 

接按钮,当系统电路板上的HC-06蓝牙模块上的配对指示灯由不断 

闪烁状态转变为常亮状态的时候,表示系统与手机端已经建立无线 

通信链路,此时,可以使用手机端对音乐播放器进行指令控制了。当 

用户按下手机端的播放/暂停按钮的时候,播放器就开始播放SD卡 

内部的第一首歌曲并在液晶屏幕显歌曲相关信息,当用户按下手机 

端的下一曲按钮的时候,音乐播放器立即响应指令,切换到下一曲 

并播放,同时液晶显示歌曲播放相应的信息,当用户按下手机端的 

上一曲按钮的时候,音乐播放器立即切换回到上次播放的歌曲并播 

放,同时液晶显示歌曲播放相应的信息。 

3.4安卓应用程序连接控制分析 

(1)在Android应用程序中,如果需要与蓝牙设备进行通信 在 

应用程序的配置文件Android Mainfest.xml中必须声明权限: 

<uses-permission android:name=“android.permission. 

BLUETOOTH—ADMIN”/>//请求蓝牙设备允许被搜索。 

<uses—permission android:name=”android.permission. 

BLUETOOTH”/>//允许程序连接到已经配对的蓝牙设备。 

(2)蓝牙搜索和配对程序。 

//MY—UUID是专属于应用的识别码 

private static final UUID MYUUID=UUID.fromString 

(”00001 101-0000-1000-8000-00805FgB34FB”); 

private static String address=”20:13:06:21:12:92”;/ 

/蓝牙模块的唯一地址 

final BroadcastReceiver r=new BroadcastReceiver(){ 

//实例化函数一广播接收者 

public void onReceive(Context context, 

//移除接收器的注册 

String action=intent.getAction(); 

//将接收端 

的数据赋值给定义的变量 

if(BluetoothDevice.ACT10N—F0UND.equals(action)){ / 

/当搜寻到装置时 

device: intent.getParcelableExtra(Bluet0othDevice. 

EXTRA—DEVICE)l//取得蓝牙装置物件 

//判断那个装置是否是你要连接的那个装置,根据蓝牙名称 

判断 

if(device.getName().equals(”HC-06”)){ 

try{ //抛出异常 

btSocket=device.createRfcommSocketToServiceRecord 

try{ //抛出异常 

btSocket.dose(); //断开 

}catch(IOException e1){ //处理异常 

handler.esndEmptyMessage(3);//发送一个3交给handler 

处理 

} 

} 

} 

} 

} 

}; 

protected void onC reate(Bundle savedlnstanceState) { 

定义创建函数 

super.onCreate(savedlnstanceState); / 

/调用创建函数 

……

略 

}catch(IOException e1){ //处理异常 

handler.esndEmptyMessage(3);}//发送一个3交给handier 

处理 

} 

} 

} 

4结语 

从系统设计本身来说,功能相对比较简单。不过,其硬件成本相 

对低廉,对于一些不想去花大钱买音响系统的用户来说,只要将歌 

曲拷贝到本系统的Micro SD卡上,再花几十元买个音质好点的喇 

叭,完全可以享受到远程遥控音乐播放的乐趣。而且经过笔者自己 

在家里安装实验,音质的效果是非常不错的,足以和市面上大几百 

的音响系统想媲美,而且功耗极低,一 ̄'6000mah的锂电池可以让该 

播放器播放音乐2000/J、时。同时又可以不用接触系统,实现系统的手 

机无线遥控,系统整个控制过程非常流畅,也不存在按钮失灵现象, 

真正做到播放器功能的延伸。 

另外,本音乐播放器还可以进一步改良扩展,可以将WIFI信号 

控制引入,利用电脑对音乐播放器进行控制。 

参考文献 

[1]陈军统,潘再平。杨舒捷.基于9Sl 2XSl 28单片机煤气报警器设计 

[J].制造业自动化。2012.34(3):1 32—135. ’ 

[2]田媛.语音控制播放系统的研究与设计[J].包头职业技术学院学 

报,2013,14(3):1 5—1 7. 

[3]郑海平.立井提升条件下煤矿用运管车的研发与应用[J].电子世 

界,201 4(2):97. 

[4]薛小铃,刘志群.单片机接口模块应用与开发详例[M].北京:北京航 

空航天大学出版社,2O1O. 

[5]Jasmine Blancehette,Mark Summerfield.C++GUI QT4 programming 

(The second Edition)[M].2004:36-68. 

[6]郭天祥.单片机C语言教程[H].电子工业出版社。2009. 

[7]於少峰,严菊明,胡晨.基于AC97标准的嵌入式音频系统设计与实 

现[J].电子器件。2004(04). 

③ 

2024年3月14日发(作者:友晗)

l数字技术 

卜r 设计开发 

(MY—UUID)}//连接到该装置 

OpenFlag=1; //已连接到装置,见标志位置1 

}catch(IOException e){ //处理异常 

OpenFlag=0; //未连接到装置 

handler.sendEmptyMessage(0)}//发送一个0交给handler处 

理 

系统软件的设计可以分为三个部分:数值预设部分、音乐信息 

采集与处理部分、信息显示与蓝牙控制部分。系统软件设计流程图 

如图4所示这三个部分相辅相成,在程序调试运行的时候,能最快的 

找出错误的所在,并进行改正。 

3.1数值预设部分 

首先定义了P3.5,P3.6,P3.7等3个子接口作为键盘的按键信 

号输入端,定义整型i和浮点f等2个公用体;对液晶显示器进行清屏 

操作,然后定义2段中文字符“音乐播放器”和“作者:钟伟雄”以及1 

段作者单位的图片转码,显示欢迎信息,延时0.5s后进入设置状态; 

通过P3.5可以对音乐文件信息进行播放/暂停操作P3.6,P3.7可 

以对音乐进行上一曲和下一曲的播放操作,如图5所示: 

3.2音乐信息采集与处理部分 

该部分采用子程序形式完成,主程序通过调用方式实现信息的 

采集与处理。在该部分,定义Delay1us(void),LCD一5110(void), 

} 

try{ //抛出异常 

btSocket.connect(); //连接 

handler.sendEmptyMessage(1),//发送一个1交给handler 

处理 

}catch(IOException e){ //处理异常 

handler.sendEmptyMessage(2);//发送一个2交给handler 

处理 

SD

MMC(void),FAT32(void)等4个子函数,通过FAT32(void)建 

立识别SD卡文件信息的FAT32文件系统,提供对SD卡文件根目录 

的搜索与读取准备;通过SD_MMC(void)对SD卡提供驱动程序,实 

现单片机SD卡文件的读取工作;通过LED一5110(void)对从SD卡采 

集到的音乐文件信息进行显示;在单片机读取音乐文件信息后,将 

数据输出到单片机的P0口,让DA网络对音乐数据进行DA转换,形 

成波形文件输出。 

3_3信息显示与蓝牙控制部分 

如图6所示,在该部分,液晶显示曲目,歌曲名称和演唱者;同时 

在液晶的下方显示音乐播放的频谱以及播放的时间,频谱采用快速 

傅里叶FFT算法,实现歌曲输出音频与液晶状态频谱的完美结合。 

如图7所示,带蓝牙通信组件的安卓手机通过自主开发安卓应用程 

序界面可以对音乐播放器实行控制。首先点击手机屏幕最下方的连 

接按钮,当系统电路板上的HC-06蓝牙模块上的配对指示灯由不断 

闪烁状态转变为常亮状态的时候,表示系统与手机端已经建立无线 

通信链路,此时,可以使用手机端对音乐播放器进行指令控制了。当 

用户按下手机端的播放/暂停按钮的时候,播放器就开始播放SD卡 

内部的第一首歌曲并在液晶屏幕显歌曲相关信息,当用户按下手机 

端的下一曲按钮的时候,音乐播放器立即响应指令,切换到下一曲 

并播放,同时液晶显示歌曲播放相应的信息,当用户按下手机端的 

上一曲按钮的时候,音乐播放器立即切换回到上次播放的歌曲并播 

放,同时液晶显示歌曲播放相应的信息。 

3.4安卓应用程序连接控制分析 

(1)在Android应用程序中,如果需要与蓝牙设备进行通信 在 

应用程序的配置文件Android Mainfest.xml中必须声明权限: 

<uses-permission android:name=“android.permission. 

BLUETOOTH—ADMIN”/>//请求蓝牙设备允许被搜索。 

<uses—permission android:name=”android.permission. 

BLUETOOTH”/>//允许程序连接到已经配对的蓝牙设备。 

(2)蓝牙搜索和配对程序。 

//MY—UUID是专属于应用的识别码 

private static final UUID MYUUID=UUID.fromString 

(”00001 101-0000-1000-8000-00805FgB34FB”); 

private static String address=”20:13:06:21:12:92”;/ 

/蓝牙模块的唯一地址 

final BroadcastReceiver r=new BroadcastReceiver(){ 

//实例化函数一广播接收者 

public void onReceive(Context context, 

//移除接收器的注册 

String action=intent.getAction(); 

//将接收端 

的数据赋值给定义的变量 

if(BluetoothDevice.ACT10N—F0UND.equals(action)){ / 

/当搜寻到装置时 

device: intent.getParcelableExtra(Bluet0othDevice. 

EXTRA—DEVICE)l//取得蓝牙装置物件 

//判断那个装置是否是你要连接的那个装置,根据蓝牙名称 

判断 

if(device.getName().equals(”HC-06”)){ 

try{ //抛出异常 

btSocket=device.createRfcommSocketToServiceRecord 

try{ //抛出异常 

btSocket.dose(); //断开 

}catch(IOException e1){ //处理异常 

handler.esndEmptyMessage(3);//发送一个3交给handler 

处理 

} 

} 

} 

} 

} 

}; 

protected void onC reate(Bundle savedlnstanceState) { 

定义创建函数 

super.onCreate(savedlnstanceState); / 

/调用创建函数 

……

略 

}catch(IOException e1){ //处理异常 

handler.esndEmptyMessage(3);}//发送一个3交给handier 

处理 

} 

} 

} 

4结语 

从系统设计本身来说,功能相对比较简单。不过,其硬件成本相 

对低廉,对于一些不想去花大钱买音响系统的用户来说,只要将歌 

曲拷贝到本系统的Micro SD卡上,再花几十元买个音质好点的喇 

叭,完全可以享受到远程遥控音乐播放的乐趣。而且经过笔者自己 

在家里安装实验,音质的效果是非常不错的,足以和市面上大几百 

的音响系统想媲美,而且功耗极低,一 ̄'6000mah的锂电池可以让该 

播放器播放音乐2000/J、时。同时又可以不用接触系统,实现系统的手 

机无线遥控,系统整个控制过程非常流畅,也不存在按钮失灵现象, 

真正做到播放器功能的延伸。 

另外,本音乐播放器还可以进一步改良扩展,可以将WIFI信号 

控制引入,利用电脑对音乐播放器进行控制。 

参考文献 

[1]陈军统,潘再平。杨舒捷.基于9Sl 2XSl 28单片机煤气报警器设计 

[J].制造业自动化。2012.34(3):1 32—135. ’ 

[2]田媛.语音控制播放系统的研究与设计[J].包头职业技术学院学 

报,2013,14(3):1 5—1 7. 

[3]郑海平.立井提升条件下煤矿用运管车的研发与应用[J].电子世 

界,201 4(2):97. 

[4]薛小铃,刘志群.单片机接口模块应用与开发详例[M].北京:北京航 

空航天大学出版社,2O1O. 

[5]Jasmine Blancehette,Mark Summerfield.C++GUI QT4 programming 

(The second Edition)[M].2004:36-68. 

[6]郭天祥.单片机C语言教程[H].电子工业出版社。2009. 

[7]於少峰,严菊明,胡晨.基于AC97标准的嵌入式音频系统设计与实 

现[J].电子器件。2004(04). 

③ 

发布评论

评论列表 (0)

  1. 暂无评论