数码管的驱动电路如下图(图11)所示,单片机的PO口与数码管的数据口相连接,数码管的共阳端通过1个1k的电阻连接到系统的GND。这样,只要通过单片机调用已经编写好的数码管编码到P0口,即可将预先设计的数字显示在数码管上。
图11 数码管驱动电路
3。5 按键输入模块
在单片机中,按键输入方式有独立键盘及矩阵键盘两种。独立键盘长处是硬件电路结构简单,通常是用在对硬件电路要求不高的简单电路中,程序简单;矩阵键盘,第一,硬件电路、程序算法复杂烦琐,长处是节省端口资源,因此它更适合于多按键电路。第二,能消除在按键过程中产生的“毛刺”现象。
本设计中由于需要的按键数目少,所以使用独立键盘这样的按键输入方式,结合延时重复扫描法。因为只有“开始/暂停”、“上一曲”、“下一曲”,“复位”四个按键,使他们分别连到了单片机的P32、P33和P34接口。按键的连接图12所示:
图12 按键电路
4。 软件设计
4。1 程序语言及开发环境
C语言是一种与java类似的强类型计算机编程语言,它具有高级语言和汇编语言的特点[5]。应用范围广泛,逻辑性思维强,具备数据处理能力,并且在单片机以及嵌入式系统开发、软件开发等很多地方都有应用。
Keil 软件系统能与51系列单片机兼容,基于C语言环境的软件开发系统,相对于汇编语言,C语言具有可读性、可维护性等。Keil能提供完整开发方案,通过一个集成开发环境将宏汇编、C编译器、连接器和仿真调试器组合在一起[9]。所以使用C语言编程,Keil是最适合的开发系统。来;自]优Y尔E论L文W网www.youerw.com +QQ752018766-
4。2 总体程序设计
4。2。1 总体流程图
整个程序流程图如图13所示。一,程序开始运行时,先顺序执行,先判断“播放/暂停”键是否被按下。如果播放/暂停被按下,则需要判断是暂停播放还是开始播放,若处于暂停状态,则把暂停状态变为播放,同时数码管会显示当前歌曲序号,开始播放音乐;若播放状态为播放的话,则把状态改为暂停,停止歌曲播放。之后又会进入一个条件判断选择中,判断条件是“上一曲”按键是否被按下,若按下则把歌曲切换到上一曲并播放,更新数码管的歌曲序号显示,接着进入到“下一曲”键是否被按下的条件判断中。如果是按下,则把歌曲切换到下一曲,更新数码管的歌曲序号显示,直到播放结束退出程序。如果定时器初始化之后播放/暂停没有被按下,则需判断“上一曲”按键是否被按下,如果没有被按下则需判断下一曲按键是否被按下,最后结束运行,退出程序。