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).
③