迪文科技论坛

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

【2025.02.14获奖项目】FM收音机 T5L直控

[复制链接]

604

主题

175

回帖

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13725
发表于 2025-3-6 13:42:57 | 显示全部楼层 |阅读模式
【开源】FM收音机 T5L直控

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


显示效果如下:



屏幕代码如下:

  1. void resetFreChannelValue(void)
  2. {
  3.        Write_Dgus(0x1510,10800);
  4.        Write_Dgus(0x1511,1);
  5. }

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

  8.        T0_Init();//定时器0初始化
  9.        T2_Init();//定时器2初始化
  10.        my_UART4_Init(115200);
  11.        uart_init();//串口初始化

  12. ws2812_writ_byte(8); //LED初始化
  13.        resetFreChannelValue();
  14.        ChangePage(1);

  15. 显示频率,频道
  16. void DispFreChannel(void)
  17. {
  18.        if(Uart4_Rx[0]!=0x51)
  19.               return;

  20.        if(Uart4_Rx[1]!=0x10)
  21.               return;

  22.        Write_Dgus(0x1510,Uart4_Rx[2]<<8|Uart4_Rx[3]);
  23.        Write_Dgus(0x1511,Uart4_Rx[4]);
  24. }

  25. 处理触摸数据
  26. void FMCtrol(void)
  27. {
  28.        u8Read[2];
  29.        u8sendda[10],i=0;

  30.        memset(Read,0,sizeof(Read));
  31.        Read_Dgusii_Vp(0x1500,Read,1);

  32.        if(!Read[1])
  33.               return;

  34.        memset(sendda,0,sizeof(sendda));
  35.        sendda[0]=0x51;

  36.        switch(Read[1])
  37.        {
  38.               case1:
  39.                      sendda[1]=0x10;
  40.               break;

  41.               case2:
  42.                      sendda[1]=0x11;
  43.               break;

  44.               case3:
  45.                      sendda[1]=0x12;
  46.               break;

  47.               case4:
  48.                      sendda[1]=0x13;
  49.               break;

  50.               case5:
  51.                      sendda[1]=0x14;
  52.               break;

  53.               case6:
  54.                      sendda[1]=0x15;
  55.               break;

  56.               case7:
  57.                      sendda[1]=0x16;
  58.               break;

  59.               case8:
  60.                      sendda[1]=0x17;
  61.               break;
  62.        }
  63.        UART4_SendStr(sendda,2);
  64.        Write_Dgus(0x1500,0);
  65. }
复制代码

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

  1. void FmModeUpdateFrmChannel(void)
  2. {
  3.     static uint16_t Frebuf=0xffff,Channelbuf=0xffff;
  4.     static uint16_t delayin=80;
  5.     uint8_t sendbufl[10];
  6.     if(delayin)
  7.     {
  8.         delayin--;
  9.         return;
  10.     }
  11.     if(app_get_curr_task() != APP_FM_TASK)
  12.         return;
  13.    if(get_fm_channel()!=Channelbuf||
  14.       get_fm_frq()!=Frebuf)
  15.     {
  16.         Channelbuf=get_fm_channel();
  17.        Frebuf=get_fm_frq();

  18.         sendbufl[0]=0x51;
  19.         sendbufl[1]=0x10;
  20.         sendbufl[2]=Frebuf>>8;
  21.         sendbufl[3]=Frebuf;
  22.         sendbufl[4]=Channelbuf;
  23.         //UserUartRetRec(AI_uart_bus,sendbufl,5);
  24.        AI_uart_bus->write(sendbufl, 5);
  25.     }
  26. }


  27. void UserUartRecHandle(const uart_bus_t*uart_bus,u8 *data,u16 len)
  28. {
  29.     u8 retdata[30];
  30.     u8 i=0;

  31.    if(data[0]!=DwinLocal_addr)
  32.      return;

  33.     switch(data[1])
  34.     {
  35.         case 0x10:
  36.             app_task_put_key_msg(KEY_MUSIC_PP,0);
  37.         break;
  38.         case 0x11:
  39.            app_task_put_key_msg(KEY_FM_SCAN_ALL,0);
  40.         break;
  41.         case 0x12:
  42.            app_task_put_key_msg(KEY_FM_NEXT_STATION,0);
  43.         break;
  44.         case 0x13:
  45.            app_task_put_key_msg(KEY_FM_PREV_STATION,0);
  46.         break;
  47.         case 0x14:
  48.            app_task_put_key_msg(KEY_FM_NEXT_FREQ,0);
  49.         break;
  50.         case 0x15:
  51.            app_task_put_key_msg(KEY_FM_PREV_FREQ,0);
  52.         break;
  53.         case 0x16:
  54.            app_task_put_key_msg(KEY_VOL_UP,0);
  55.         break;
  56.         case 0x17:
  57.            app_task_put_key_msg(KEY_VOL_DOWN,0);
  58.         break;
  59. }
  60. }
复制代码

备注说明:如需源码,请参考此链接:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=12048&extra=page%3D1&_dsign=289010be















本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-11 23:09 , Processed in 0.070197 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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