精品国产Av无码久久久蜜臀-免费看a级淫秽真实动作衫视频-人妻无码一区二区三区免费视频-奶好大 好长 好紧免费视频

logo

【開源獲獎案例】基于T5L智能屏的FM收音機

——來自迪文開發(fā)者論壇

本期為大家推送迪文開發(fā)者論壇獲獎開源案例——基于T5L智能屏的FM收音機。該方案基于T5L智能屏,通過串口4與FM收音機模塊進行通訊,實現(xiàn)自動搜索獲取不同頻段電臺,同時支持選臺、頻率調(diào)節(jié)、音量控制等功能,為用戶提供便捷操作體驗。

【演示視頻】

完整開發(fā)資料含迪文屏DGUS工程資料與C51代碼,獲取方式

1、前往迪文開發(fā)者論壇獲?。?a >http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=12048
2、微信公眾號中回復(fù)“FM收音機”獲取。

【C51工程設(shè)計】


(1)屏幕代碼如下: 

            void resetFreChannelValue(void)

    {

        Write_Dgus(0x1510,10800);

        Write_Dgus(0x1511,1);

    }

INIT_CPU();//系統(tǒng)初始化

PORT_Init();//IO口初始化

T0_Init();//定時器0初始化

T2_Init();//定時器2初始化

my_UART4_Init(115200);

uart_init();//串口初始化

ws2812_writ_byte(8);//LED初始化

resetFreChannelValue();

ChangePage(1);


(2)屏幕顯示頻率,頻道代碼如下:

void DispFreChannel(void)

{

    if(Uart4_Rx[0]!=0x51)

    return;

    if(Uart4_Rx[1]!=0x10)

    return;

    Write_Dgus(0x1510,Uart4_Rx[2]<<8|Uart4_Rx[3]);

    Write_Dgus(0x1511,Uart4_Rx[4]);

}



(3)屏幕處理觸摸數(shù)據(jù)代碼如下:

void FMCtrol(void)

{

    u8Read[2];

    u8sendda[10],i=0;

    memset(Read,0,sizeof(Read));

     Read_Dgusii_Vp(0x1500,Read,1);

    if(!Read[1])

    return;

    memset(sendda,0,sizeof(sendda));

    sendda[0]=0x51;

    switch(Read[1])

    {

        case1:

        sendda[1]=0x10;

        break;

        case2:

        sendda[1]=0x11;

        break;

        case3:

        sendda[1]=0x12;

        break;

        case4:

        sendda[1]=0x13;

        break;

        case5:

        sendda[1]=0x14;

        break;

        case6:

        sendda[1]=0x15;

        break;

        case7:

        sendda[1]=0x16;

        break;

        case8:

        sendda[1]=0x17;

        break;

    }

    UART4_SendStr(sendda,2);

    Write_Dgus(0x1500,0);

}


(4)FM收音機板數(shù)據(jù)解析核心代碼如下

void FmModeUpdateFrmChannel(void)

{

    static uint16_t Frebuf=0xffff,Channelbuf=0xffff;

    static uint16_t delayin=80;

    uint8_t sendbufl[10];

    if(delayin)

    {

        delayin--;

        return;

    }

if(app_get_curr_task() != APP_FM_TASK)

return;

if(get_fm_channel()!=Channelbuf||

get_fm_frq()!=Frebuf)

{

    Channelbuf=get_fm_channel();

    Frebuf=get_fm_frq();

    sendbufl[0]=0x51;

    sendbufl[1]=0x10;

    sendbufl[2]=Frebuf>>8;

    sendbufl[3]=Frebuf;

    sendbufl[4]=Channelbuf;

    //UserUartRetRec(AI_uart_bus,sendbufl,5);

    AI_uart_bus->write(sendbufl, 5);

    }

}

void UserUartRecHandle(const uart_bus_t*uart_bus,u8 *data,u16 len)

{

    u8 retdata[30];

    u8 i=0;

    if(data[0]!=DwinLocal_addr)

    return;

    switch(data[1])

    {

        case 0x10:

        app_task_put_key_msg(KEY_MUSIC_PP,0);

        break;

        case 0x11:

        app_task_put_key_msg(KEY_FM_SCAN_ALL,0);

        break;

        case 0x12:

        app_task_put_key_msg(KEY_FM_NEXT_STATION,0);

        break;

        case 0x13:

        app_task_put_key_msg(KEY_FM_PREV_STATION,0);

        break;

        case 0x14:

        app_task_put_key_msg(KEY_FM_NEXT_FREQ,0);

        break;

        case 0x15:

        app_task_put_key_msg(KEY_FM_PREV_FREQ,0);

        break;

        case 0x16:

        app_task_put_key_msg(KEY_VOL_UP,0);

        break;

        case 0x17:

        app_task_put_key_msg(KEY_VOL_DOWN,0);

        break;

        }

}