迪文科技论坛

 找回密码
 立即注册
搜索
查看: 128|回复: 0

【开源】FM收音机 T5L直控

[复制链接]

11

主题

15

回帖

1061

积分

金牌会员

Rank: 6Rank: 6

积分
1061
QQ
发表于 2025-2-14 18:55:12 | 显示全部楼层 |阅读模式
显示效果如下:

整体的框架是 800*480迪文屏+FM收音机板+喇叭,它们之间通过串口去控制
室内收音的电台数,大概有10多个,如果是室外会更多,声音听起来很清晰,比一般的收音机效果好点吧。
界面如下:


屏幕代码如下:
void resetFreChannelValue(void)
{
       Write_Dgus(0x1510,10800);
       Write_Dgus(0x1511,1);
}

       INIT_CPU();  //系统初始化
       PORT_Init();//IO口初始化

       T0_Init();//定时器0初始化
       T2_Init();//定时器2初始化
       my_UART4_Init(115200);
       uart_init();//串口初始化

ws2812_writ_byte(8); //LED初始化
       resetFreChannelValue();
       ChangePage(1);

显示频率,频道
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]);
}

处理触摸数据
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);
}




FM的板子代码,重要的部分如下:

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;
}
}


大家有兴趣的话,自已下载研究

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-3-28 20:44 , Processed in 0.055023 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表