微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > tft显示汉字问题,菜鸟求助

tft显示汉字问题,菜鸟求助

时间:10-02 整理:3721RD 点击:
网上买的普中的51单片机板子,在学习tft触摸屏显示的时候,用自带的资料实验,显示的汉字总是两个重复的,不知道为什么,研究了一晚上也没想明白。求助帮忙分析下这是显示汉字的程序:
void GUI_Write32CnChar(uint x, uint y, uchar *cn, uint wordColor, uint backColor)         
{  
        uchar i, j, wordNum;
        uint color;
        while (*cn != '\0')
        {
                TFT_SetWindow(x, y, x+31, y+28);
                for (wordNum=0; wordNum<20; wordNum+2)
                {        //wordNum扫描字库的字数
                        if ((CnChar32x29[wordNum].Index[0]==*cn)
                             &&(CnChar32x29[wordNum].Index[1]==*(cn+1)))
                        {
                                for(i=0; i<116; i++)
                                {        //MSK的位数
                                        color=CnChar32x29[wordNum].Msk[i];
                                        for(j=0;j<8;j++)
                                        {
                                                if((color&0x80)==0x80)
                                                {
                                                        TFT_WriteData(wordColor);
                                                }                                                
                                                else
                                                {
                                                        TFT_WriteData(backColor);
                                                }
                                                color<<=1;
                                        }//for(j=0;j<8;j++)结束
                                }   
                        }
                } //for (wordNum=0; wordNum<20; wordNum++)结束        
                cn += 2;
                x += 32;
        }
}

这是 字库里的第一个字,我就以第一个字为例子:
struct  Cn32CharTypeDef                   // 汉字字模数据结构
{
        unsigned char  Index[2];            // 汉字内码索引,一个汉字占两个字节       
        unsigned char   Msk[116];            // 点阵码数据(32*29/8)
};
/////////////////////////////////////////////////////////////////////////
// 汉字字模表,大小为:32*29                                                          //
// 汉字库: 宋体二号,横向取模左高位,数据排列:从左到右从上到下           //
/////////////////////////////////////////////////////////////////////////
struct  Cn32CharTypeDef code CnChar32x29[]=
{
/*--  文字:  普  --*/
/*--  宋体22;  此字体下对应的点阵为:宽x高=30x29   --*/
/*--  宽度不是8的倍数,现调整为:宽度x高度=32x29  --*/
"普",0x00,0x00,0x00,0x00,0x00,0xE0,0x38,0x00,0x00,0x78,0x3C,0x00,0x00,0x3C,0x78,0x00,
0x00,0x3C,0x70,0xC0,0x00,0x1C,0xE1,0xE0,0x1F,0xFF,0xFF,0xF0,0x00,0x1C,0xE3,0x00,
0x0E,0x1C,0xE7,0xC0,0x07,0x9C,0xE7,0x80,0x03,0xDC,0xEF,0x00,0x03,0xDC,0xEE,0x00,
0x01,0xDC,0xFC,0x60,0x00,0x9C,0xF9,0xF0,0x7F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x01,0xC0,0x0E,0x00,0x01,0xFF,0xFF,0x00,0x01,0xC0,0x0E,0x00,0x01,0xC0,0x0E,0x00,
0x01,0xC0,0x0E,0x00,0x01,0xFF,0xFE,0x00,0x01,0xC0,0x0E,0x00,0x01,0xC0,0x0E,0x00,
0x01,0xC0,0x0E,0x00,0x01,0xFF,0xFE,0x00,0x01,0xC0,0x0E,0x00,0x01,0xC0,0x0E,0x00,
0x00,0x00,0x00,0x00,
烧程序进去后,显示的是“普普”两个字,是在不明白为何、、、

那个for (wordNum=0; wordNum<20; wordNum+2)这句,应该是for (wordNum=0; wordNum<20; wordNum++),但是随便改改试试的,忘了改回来了。

就没有人么。没人愿意指点指点么

不懂帮顶了~~~~~~

这么就肯定解决了   不过非常感谢你        if((color&0x80)==0x80){TFT_WriteData(wordColor); }                                                
else {TFT_WriteData(backColor); }   这段代码给了灵感

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top