显示效果如下:
整体的框架是 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; } }
大家有兴趣的话,自已下载研究
|