这个是接着上一篇点亮数码屏来写的,数码显示模块就不再重复,直接修改需要的函数,具体实现如下:
首先创建两个变量,分别控制低音及高音的值:(bsp_sys.c下)
//系统里面高音和低音是从
u8 set_bass_num; //用于控制低音加减
u8 set_treble_num; //用于控制高音加减
bsp_sys.h 下:
extern u8 set_bass_num; //用于控制低音加减
extern u8 set_treble_num; //用于控制高音加减
接下来就是按键消息的实现:(fun.c 下)
void func_message(u16 msg)
{
switch (msg) {
case KEY_TREB_UP://高音+
if(set_treble_num < 12)
set_treble_num = set_treble_num + 1;
if(set_treble_num >= 12)
set_treble_num = 12;
gui_box_show_treble();//立即显示当前高音值
music_bass_treble_set(1,(set_treble_num-6));//修改高音低音的函数
break;
case KEY_TREB_DOWN://高音-
if(set_treble_num > 0)
set_treble_num = set_treble_num - 1;
if(set_treble_num <= 0)
set_treble_num = 0;
gui_box_show_treble();//立即显示当前高音值
music_bass_treble_set(1,(set_treble_num-6));//修改高音低音的函数
break;
case KEY_BASS_UP://低音+
if(set_bass_num < 12)
set_bass_num = set_bass_num + 1;
if(set_bass_num >= 12)
set_bass_num = 12;
gui_box_show_bass();//立即显示当前低音值
music_bass_treble_set(0,(set_bass_num-6));//修改高音低音的函数
break;
case KEY_BASS_DOWN://低音-
if(set_bass_num > 0)
set_bass_num = set_bass_num - 1;
if(set_bass_num <= 0)
set_bass_num = 0;
gui_box_show_bass();//立即显示当前低音值
music_bass_treble_set(0,(set_bass_num-6));//修改高音低音的函数
break;
}
}
数码屏需要实时的显示出来,具体实现如下:(gui.h 下)
//这里定义打断当前显示的定义
enum {
GUI_BOX_NULL, //主界面
......
GUI_BOX_BASS, //低音的级数
GUI_BOX_TREBLE, //高音的级数
};
//这里是调用函数,当调用这个函数的时候,就会执行打断当前显示的操作
void gui_box_show_bass(void);
void gui_box_show_treble(void);
之后就是消息的实现:(gui.c 下)
void gui_box_display(void)
{
switch (box_cb.disp_sta) {
......
case GUI_BOX_BASS:
gui_display(DISP_BASS);
break;
case GUI_BOX_TREBLE:
gui_display(DISP_TREBLE);
break;
}
}
//这里是调用函数的实现
//显示低音级数
void gui_box_show_bass(void)
{
box_cb.sta = GUI_BOX_BASS;
box_cb.times = BOX_TIMES;
box_cb.update = 1;
}
//显示高音级数
void gui_box_show_treble(void)
{
box_cb.sta = GUI_BOX_TREBLE;
box_cb.times = BOX_TIMES;
box_cb.update = 1;
}
这个时候的显示函数为:(display_ledseg.c 下)
void ledseg_disp_bass(void)
{
if((set_bass_num-6) >= 0)//正数
{
ledseg_buf[0] = T_LEDSEG_0;
ledseg_buf[1] = ledseg_num_table[(set_bass_num-6)];
}
else if((set_bass_num-6) < 0)//负数
{
ledseg_buf[0] = T_LED_N;
ledseg_buf[1] = ledseg_num_table[(6-set_bass_num)];
}
}
void ledseg_disp_treble(void)
{
if((set_treble_num-6) >= 0)//正数
{
ledseg_buf[0] = T_LEDSEG_0;
ledseg_buf[1] = ledseg_num_table[(set_treble_num-6)];
}
else if((set_treble_num-6) < 0)//负数
{
ledseg_buf[0] = T_LED_N;
ledseg_buf[1] = ledseg_num_table[(6-set_treble_num)];
}
}
music_bass_treble_set(,)函数讲解:
第一个参数:控制修改高音还是低音,高音给1,低音给0 ;
第二个参数:修改的幅度是多少,这个值的范围是-12 ~ +12。