基于ATmega128单片机的灯光音乐控制器的设计
2018-08-11向清华南京邮电大学通信与信息工程学院
向清华 南京邮电大学通信与信息工程学院
当今,在人们的娱乐休闲生活中,音乐是必不可少的一部分。而现在应用最多的音乐播放软件由于手机、电脑等硬件设备的功能限制,不能将乐曲与视觉感受很好的结合。本文从这一点出发设计了一种基于ATmega128单片机的灯光音乐控制器,可以实现传统音乐播放软件的基本功能,同时融合了对灯光的控制,以求达到更好的娱乐作用。
1 总体电路设计
本课题实现的具体功能有:
1.由蜂鸣器播放出存放在单片机中的乐曲,可由CHANGE按键切换曲目,并将正在播放的曲目编号在液晶显示屏上显示;
2.由按键JIEZOU_F、JIEZOU_N、JIEZOU_S分别选择播放歌曲的节奏为快、正常、慢,并将当前播放的节拍值在液晶显示屏上显示出来,同时在一个点阵屏上根据节奏逐列点亮显示;
3.当曲目号、节奏选定后便可点击START按键播放所选的曲子,在液晶显示屏上显示“PLAY”状态;
4.在乐曲的播放过程中,可以点击PAUSE按键将正在播放的乐曲暂停,在液晶显示屏上显示“PAUSE”状态,若再次点击PAUSE按键,则可以从暂停的地方开始继续向后播放,在液晶显示屏上显示切换回“PLAY”状态;
5.在乐曲的播放过程中,可以点击SILENCE按键将蜂鸣器置为静音状态,再次点击SILENCE按键即可切换回正常状态;
6.PINPU按键用来控制一个点阵屏显示当前播放的音阶,用点阵屏的一列从下至上依次代表 1(Do)、2(Re)、3(Mi)、4(Fa)、5(Sol)、6(La)这6个音阶;
7.在播放乐曲时液晶显示屏上也同步显示数字1、2、3、4、5、6分别对应6个音阶;
8.在乐曲播放时若点击STOP按键,可提前结束播放,在液晶显示屏上由“PLAY”状态变为“STOP”状态;若不点击STOP按键,当一首曲子播放结束时,自动退出“PLAY”状态,显示“STOP”。
电路组成方框图如图1所示,电路原理图如图2所示。
图1 :电路组成方框图
图2 :电路原理图
2 单元电路设计与分析
2.1 复位、晶振模块
复位电路接至ATMEGA128单片机的RESET引脚,可将单片机复位重置;晶振电路接至ATMEGA128的XTAL1与XTAL2引脚,当单片机使用外部时钟时,时钟信号可以由该晶振电路提供。复位、晶振电路图如图3。
图3 :复位、晶振及接口电路
2.2 按键模块
按键模块接至ATMEGA128单片机的PB0~PB7、PG0,通过按键的选择可以控制单片机实现相应的灯光音乐控制器的功能。按键模块的电路原理图如图4。
图4 :按键模块及接口电路图
本课题中使用了10个按键,它们的实现原理与功能说明如下。
a)一个按键用于复位功能,接至ATMEGA128的RESET引脚。当按键按下时RESET引脚电平为低,即可复位单片机;
b)三个按键用于选择节奏,分别对应节奏的快、中、慢。这三个按键分别接至ATMEGA128单片机的PB0、PB1、PB2引脚(端口初始化为输入、带上拉电阻),当按键按下时,对应的引脚电平变为低电平,在主函数中将PINB与0x07相与,根据结果即可得知是哪个按键按下,并依此设置节拍值(等待定时器中断的时间);
c)一个按键用于开始乐曲的播放,该按键接至ATMEGA128单片机的PB3口(端口初始化为输入、带上拉电阻),当按键按下时PB3口变为低电平。在主函数中将PINB与0x08相与,将结果与0x00比较即可知道按键是否按下,若按下即可开始读取音阶,通过蜂鸣器播放;
d)一个按键用于停止乐曲的播放,该按键接至ATMEGA128单片机的PB4口(端口初始化为输入、带上拉电阻),当按键按下时PB4口变为低电平。在中断程序中将PINB与0x10相与,将结果与0x00比较即可知道按键是否按下,若按下,直接将指针指向乐曲的最后一个音阶,完成乐曲的停止操作;
e)一个按键用于乐曲的频谱(音阶),该按键接至ATMEGA128单片机的PB5口(端口初始化为输入、带上拉电阻),当按键按下时PB5口变为低电平。在中断程序中将PINB与0x20相与,将结果与0x00比较即可知道按键是否按下,若按下通过改变连接点阵屏的I/O口电平即可实现点阵的点亮;
f)一个按键用于乐曲的暂停操作,该按键接至ATMEGA128单片机的PB6口(端口初始化为输入、带上拉电阻),当按键按下时PB6口变为低电平。在中断程序中将PINB与0x40相与,将结果与0x00比较即可知道按键是否按下,若按下将单片机置于循环,等待暂停键再次按下后从原来的地方往后继续播放;
g)一个按键用于静音的操作,该按键接至ATMEGA128单片机的PG0口(端口初始化为输入、带上拉电阻),当按键按下时PG0口变为低电平。在中断程序中将PING与0x01相与,将结果与0x00比较即可知道按键是否按下,若按下将连接蜂鸣器的I/O口置恒为低电平,而指针继续往后移动,当静音按键再次按下,将蜂鸣器重新置于正常工作的状态;
3 点阵显示模块
该模块放置了两个MATRIX-8*8-GREEN点阵屏,接至ATMEGA128单片机的PA0~PA7、PD0~PD7,分别用于显示节奏的快慢和音乐的频谱(音阶)的变化。点阵显示模块电路原理图如图5,接口模块如图6。
图5 :点阵显示模块电路
图6 :点阵显示接口电路
其中,图5中左边一个点阵用于显示音乐节奏的快慢;右边一个点阵用于显示频谱(音阶),该点阵可以由按键PINPU选择是否显示。
4 蜂鸣器模块
蜂鸣器模块为发出音乐声音的模块,蜂鸣器的一端接至ATMEGA128的PC0口,另一端接地,由单片机程序控制PC0口的电平变化的频率以改变蜂鸣器发出的音阶,通过不同音阶的组合便可形成音乐。蜂鸣器模块原理图如图7。
图7 :蜂鸣器及接口电路
5 液晶显示模块
液晶显示模块用于显示当前播放状态及当前拍值的时长、频段的范围。该模块使用的是LM041L液晶屏,其中VSS、VEE接至电源,VDD接地,RS引脚接至PF0,RW引脚接至PF1,使能端E接至PF2,通过这三个引脚可实现对液晶屏的命令/数据的读/写;液晶屏的D0~D7端分别接至单片机的PE0~PE7。液晶显示模块原理图如图8所示。
图8 :液晶显示及接口电路