通过按键消息实时修改高音及低音并显示当前值

本文介绍了如何在代码中实现一个音频设备的音效调节功能,包括使用按键控制低音(set_bass_num)和高音(set_treble_num)的增减,并通过数码屏实时显示调整结果。涉及到的函数有music_bass_treble_set和LED段显示模块的更新。
摘要由CSDN通过智能技术生成

这个是接着上一篇点亮数码屏来写的,数码显示模块就不再重复,直接修改需要的函数,具体实现如下:

首先创建两个变量,分别控制低音及高音的值:(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。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值