概述
如题,本人不太熟悉GCC,特别是定义在flash和eeprom的数据,所以在做液晶的字库时遇到问题,讲解下思路:用查表的方式,定义一个结构体来装载字符的内码和字符数据。程序如下:
/*******************************************字库定义******************************/
// ------------------ 汉字字模的数据结构定义 ------------------------ //
struct typFNT_GB32 // 汉字字模数据结构
{
unsigned char Index[3]; // 汉字内码索引
unsigned char Msk[128]; // 点阵码数据
};
/
// 汉字字模表 //
// 汉字库: 宋体32.dot,横向取模左高位,数据排列:从左到右从上到下 //
/
struct typFNT_GB32 codeGB_32[] PROGMEM={ // 数据表
/*-- 文字: 彩 --*/
/*-- 宋体22; 此字体下对应的点阵为:宽x高=30x29 --*/
/*-- 宽度不是8的倍数,现调整为:宽度x高度=32x29 --*/
{{"彩"},{0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x1F,0xC0,0xC0,0x03,0xFF,0xC1,0xE0,
0x3F,0xE0,0x03,0xE0,0x00,0xE3,0xC7,0xC0,0x18,0xF3,0xCF,0x00,0x1E,0x7B,0x9E,0x00,
0x0F,0x7F,0x3C,0x00,0x07,0x37,0xF0,0x00,0x07,0x6E,0xC0,0x60,0x02,0x7C,0x00,0xF0,
0x00,0x70,0x81,0xF0,0x3F,0xFF,0xC3,0xC0,0x3F,0xFF,0xEF,0x80,0x01,0xF0,0x1E,0x00,
0x01,0xF8,0x78,0x00,0x03,0xFC,0xF0,0x70,0x03,0xFF,0x80,0xF8,0x07,0xF7,0x81,0xF8,
0x07,0x77,0x83,0xE0,0x0E,0x73,0x87,0xC0,0x1C,0x71,0x8F,0x00,0x38,0x70,0x3E,0x00,
0x30,0x70,0xF8,0x00,0x60,0x73,0xE0,0x00,0x00,0x7F,0x80,0x00,0x00,0x7C,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
};
/******************************读取字库送显***************************************/
void PutGB3232(unsigned short x, unsigned short y, unsigned char c[2], unsigned int fColor,unsigned int bColor,uint8 b_en)
{
unsigned int i,j,k;
LCD_SetPos(x, x+32-1,y, y+32-1);
for (k=0;k<50;k++) { //15标示自建汉字库中的个数,循环查询内码
if ((pgm_read_byte(codeGB_32[k].Index[0])==c[0])&&(pgm_read_byte(codeGB_32[k].Index[1])==c[1])){
for(i=0;i<128;i++) {
unsigned short m=pgm_read_byte(codeGB_32[k].Msk);
for(j=0;j<8;j++) {
if((m&0x80)==0x80) {
Write_Data_U16(fColor);
}
else if(b_en) {
Write_Data_U16(bColor);
}
m<<=1;
}
}
}
}
}
我试着把数据定义在内存里面,就是把 PROGMEM 和 pgm_read_byte 去掉,液晶能正常的显示汉字,
但是当我把字库定义在flash里面的时候,就读不出数据了,我知道问题出现在结构体的定义和数据的读取那里,但是我不知道怎么改,求各位帮帮忙解决下好吗,小弟万分感激!!!
最后
以上就是聪慧彩虹为你收集整理的c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...的全部内容,希望文章能够帮你解决c语言 将结构体放在flash,如何将 结构体 的 数据 定义在flash里面,并如何读出来,求各位达人帮助……...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复