本期為大家推送迪文開發(fā)者論壇獲獎開源案例——安卓與迪文屏的無線交互應(yīng)用。工程師采用T5L智能屏,通過串口2與藍牙模塊通訊,實現(xiàn)與安卓手機APP進行數(shù)據(jù)交互。該方案支持迪文屏與安卓手機無延時數(shù)據(jù)收發(fā)、數(shù)據(jù)回顯、多設(shè)備通信、導(dǎo)出和導(dǎo)入文件,還支持ASCII碼、Char、GBK、UNICODE等多種編碼格式,更有意思的是實現(xiàn)了16*16LED點陣廣告屏的功能,讓我們一睹為快!
方案框架 方案由T5L智能屏、HC-05或HC-06藍牙模塊、安卓手機構(gòu)成。T5L智能屏通過串口2與藍牙模塊通訊,實現(xiàn)屏幕與安卓手機的數(shù)據(jù)交互。
UI素材展示
C51工程設(shè)計
(1)串口2與藍牙通訊的代碼參考如下:
#if(1)
#define MODBUS_RECV_TIMEOUT 50
static bit is_modbus_recv_complete = 0;
static u8 modbus_recv_buff[1024];
static u16 modbus_recv_len = 0;
static u8 modbus_recv_timeout = 0;
void modbus_recv_byte(u8 byte)
{
if(is_modbus_recv_complete)
return;
if(modbus_recv_len
modbus_recv_buff[modbus_recv_len++] = byte;
modbus_recv_timeout = MODBUS_RECV_TIMEOUT;
}
void modbus_check_recv_timeout()
{
if(modbus_recv_timeout)
{
modbus_recv_timeout--;
if(modbus_recv_timeout==0)
{
is_modbus_recv_complete = 1;
}
}
}
void uart2_isr() interrupt 4
{
if(RI0)
{
RI0 = 0;
modbus_recv_byte(SBUF0);
}
}
#endif
void uart2_init(u32 baud)
{
MUX_SEL |= 0x40;
P0MDOUT &= 0xCF;
P0MDOUT |= 0x10;
ADCON = 0x80;
SCON0 = 0x50;
PCON &= 0x7F;
baud = 1024-(u16)(3225600.0f/baud);
SREL0H = (baud>>8)&0xff;
SREL0L = baud&0xff;
#if(1)
ES0 = 1;
EA = 1;
#else
ES0 = 0;
#endif
}
void uart2_send_byte(u8 byte)
{
ES0 = 0;
SBUF0 = byte;
while(!TI0);
TI0 = 0;
#if(1)
ES0 = 1;
#endif
}
void uart2_send_bytes(u8 *bytes,u16 len)
{
u16 i;
ES0 = 0;
for(i=0;i
{
SBUF0 = bytes;
while(!TI0);
TI0 = 0;
}
#if(1)
ES0 = 1;
#endif
}
char putchar(char c)
{
uart2_send_byte(c);
return c;
}
(2)給安卓APP發(fā)送數(shù)據(jù)的部分代碼如下:
u8 buff[200];
void get_str(u8 *val,u8 len)
{
u8 i; for(i=0;i
{
if(val==0xff)
{
val = 0x00;
val[i+1] = 0x00;
return;
}
}
}
void start_win_btn_click_handler(u16 btn_val)
{
if(btn_val==0x01)
{
sys_read_vp(0x2100, buff, 50);
get_str(buff,100);
uart2_send_bytes(buff, strlen(buff));
}
}
(3)接收安卓APP數(shù)據(jù)的部分代碼如下:void uart2_handler()
{
if(is_modbus_recv_complete)
{
if(modbus_recv_len==33)
{
disp_16x16_char(modbus_recv_buff+1);
}else
{
modbus_recv_buff[modbus_recv_len++] = 0;
modbus_recv_buff[modbus_recv_len++] = 0;
sys_write_vp(0x2000, modbus_recv_buff, modbus_recv_len/2+2);
}
modbus_recv_len = 0;
is_modbus_recv_complete = 0;
}
}(4)16*16點陣屏顯示的部分代碼如下:void disp_16x16_char(u8 *buff)
{
u8 i,j;
u16 val;
u16 pos = 0; for(i=0;i<32;i++)
{
j = 8;
while(j--)
{
val = (buff>>j)&0x01;
sys_write_vp(0x3000+pos, (u8*)&val, 1);
pos++;
}
}
}
-
無線
+關(guān)注
關(guān)注
31文章
5518瀏覽量
175036 -
安卓
+關(guān)注
關(guān)注
5文章
2140瀏覽量
58192 -
迪文屏
+關(guān)注
關(guān)注
3文章
80瀏覽量
5673 -
智能屏幕
+關(guān)注
關(guān)注
0文章
68瀏覽量
3566
發(fā)布評論請先 登錄
相關(guān)推薦
迪文DWIN串口屏的使用經(jīng)驗
迪文DWIN串口屏的使用經(jīng)驗
「必看干貨」如何利用STM32和迪文串口屏以及WIFI模組進行數(shù)據(jù)交互?
了解STM32和迪文串口屏以及Wi-Fi模組進行數(shù)據(jù)交互
【迪文COF結(jié)構(gòu)智能屏試用體驗】迪文屏和esp32的圖書檢索及錄入系統(tǒng)
【迪文COF結(jié)構(gòu)智能屏試用體驗】迪文屏優(yōu)缺點分析和適用場景
發(fā)一個自己寫的迪文屏與STM32交互的操作說明文檔
開發(fā)便捷的迪文工業(yè)串口屏

如何利用STM32和迪文串口屏以及WIFI模組進行數(shù)據(jù)交互

「必看干貨」如何利用STM32和迪文串口屏以及WIFI模組進行數(shù)據(jù)交互?

評論