新手入门
- 积分
- 14
- 金钱
- 14
- 注册时间
- 2017-2-14
- 在线时间
- 5 小时
|
8金钱
最近在用HX8357D这款芯片控制TFTLCD显示,主控是STM32F103Z。程序是在原子哥程序的基础上进行了修改。一开始屏幕只是循环纯色刷屏,不显示字符。LCD_ShowChar函数并没有发现bug,直到将其中使用的LCD_Fast_DrawPoint()函数内部做了一下修改,在原来仅有起始坐标的情况下又写入了终点坐标。很神奇,字符成功显示了,但是刷屏就不正常了,只是在字符“2017/2/15”右下角的7*15的方框中循环刷屏,无法实现整个屏幕刷屏,如图所示。求助论坛各位大神,帮忙看看问题所在,我为这烦了好多天也没找到解决办法。。。(这个原版程序是符合9341芯片的,我查数据手册发现8357D与9341的几个命令字都是一样的,附上两个数据手册,以供查阅)[mw_shl_code=c,true]void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{
u8 temp,t1,t;
u16 y0=y;
u8 csize=(size/8+((size%8)?1:0))*(size/2);
num=num-' ';
for(t=0;t<csize;t++)
{
if(size==12)temp=asc2_1206[num][t];
else if(size==16)temp=asc2_1608[num][t];
else if(size==24)temp=asc2_2412[num][t];
else return;
for(t1=0;t1<8;t1++)
{
if((temp&0x80)==0x80)
{
LCD_Fast_DrawPoint(x,y,POINT_COLOR);
}
else if(mode==0)
{
LCD_Fast_DrawPoint(x,y,BLUE);
}
temp<<=1;
y++;
if(y>=lcddev.height)return;
if((y-y0)==size)
{
y=y0;
x++;
if(x>=lcddev.width)return;
break;
}
}
}
} [/mw_shl_code]
[mw_shl_code=c,true]void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(x>>8);
LCD_WR_DATA(x&0XFF);
LCD_WR_DATA((x+7)>>8);
LCD_WR_DATA((x+7)&0XFF);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(y>>8);
LCD_WR_DATA(y&0XFF);
LCD_WR_DATA((y+15)>>8);
LCD_WR_DATA((y+15)&0XFF);
LCD->LCD_REG=lcddev.wramcmd;
LCD->LCD_RAM=color;
} [/mw_shl_code]
HX8357D数据手册.pdf
(6.01 MB, 下载次数: 384)
|
|