我的编译环境是keil5,我想接受蓝牙串口过来的数据,然后单片机处理后显示在tft上。
开始是学习用历程usart1来操作,发现buf里面的数据无法显示在tft上,sprintf函数也使用了,参考的tft历程和视频和手头tft的历程的不一样,在确定usart1电脑和单片机通信没问题以后,看两种tft历程也没看出个所以然。。。
这个是我手头tft的历程
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{
while(*p!='\0')
{
if(x>LCD_W-16){x=0;y+=16;}
if(y>LCD_H-16){y=x=0;LCD_Clear(RED);}
LCD_ShowChar(x,y,*p,0);
x+=8;
p++;
}
}
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 mode)
{
u8 temp;
u8 pos,t;
u16 x0=x;
u16 colortemp=POINT_COLOR;
if(x>LCD_W-16||y>LCD_H-16)return;
num=num-' ';
Address_set(x,y,x+8-1,y+16-1);
if(!mode)
{
for(pos=0;pos<16;pos++)
{
temp=asc2_1608[(u16)num*16+pos];
for(t=0;t<8;t++)
{
if(temp&0x01)POINT_COLOR=colortemp;
else POINT_COLOR=BACK_COLOR;
LCD_WR_DATA(POINT_COLOR);
temp>>=1;
x++;
}
x=x0;
y++;
}
}else
{
for(pos=0;pos<16;pos++)
{
temp=asc2_1608[(u16)num*16+pos];
for(t=0;t<8;t++)
{
if(temp&0x01)LCD_DrawPoint(x+t,y+pos);
temp>>=1;
}
}
}
POINT_COLOR=colortemp;
}
void LCD_DrawPoint(u16 x,u16 y)
{
Address_set(x,y,x,y);//设置光标位置
LCD_WR_DATA(POINT_COLOR);
}
然后就操作不明白了,不知道为什么人家就是sprintf+lcd_showstring两句话就能解决,为啥我不行呢,真是一头雾水,能麻烦大佬看一眼吗,谢谢大佬 |