今天试试把数组存到flash里,再读出来,就在原先5110的工程上进行修改,能看出来我改在哪里了吗?
uint8 Chinese_Font[][25]PROGMEM = { /*-- 文字: 芜 --*/ /*-- 楷体9; 此字体下对应的点阵为:宽x高=12x12 --*/ /*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/ { 0x00,0x48,0x48,0xDE,0xFE,0xF4,0xFE,0x76,0x24,0x04,0x04,0x00,0x00,0x02,0x03,0x03, 0x01,0x03,0x03,0x02,0x02,0x02,0x03,0x00 }, //省略其它定义
需要修改的两个文件:
/*********************************************************** ** 名 称:void LCD_Write_Char(uint8 c) ** 功 能:写一个字符 ** 入口参数:c 要写入的字符 ** 出口参数:无 ** 使用说明:无 **********************************************************/ void LCD_Write_Char(uint8 c) { uint8 line = 0; c -= 32; for (line = 0; line < 6; line++) { LCD_Write_Byte(pgm_read_byte(&ASSIC_Font[c][line]), 1); } }
/*********************************************************** ** 名 称:void LCD_Write_Chinese_String(uint8 X, uint8 Y,uint8 ch_with, ** uint8 num,uint8 s[][],uint8 line,uint8 row) ** 功 能:向指定坐标写入中文句子 ** 入口参数:X,Y 设置的坐标 ** ch_with 汉字的宽度 ** num 汉字的数量 ** s 数组 ** line 从第几行开始 ** row 字与字间的宽度 ** 出口参数:无 ** 使用说明:无 **********************************************************/ void LCD_Write_Chinese_String(uint8 X, uint8 Y,uint8 ch_with, uint8 num,uint8 s[][],uint8 line,uint8 row) { uint8 i = 0; uint8 n = 0; uint8 (*catch)[25] = s; LCD_Set_XY(X,Y); /*写字符串*/ for (i = 0;i < num;) { for (n = 0; n < ch_with * 2; n++) { if (n == ch_with) { if (i == 0) { LCD_Set_XY(X,Y + 1); } else { LCD_Set_XY((X + (ch_with + row) *i),Y + 1); } } //从flash里读取数据 LCD_Write_Byte(pgm_read_byte(&catch[line + i][n] ),1); } i++; LCD_Set_XY((X + (ch_with + row) * i),Y); } }
上一篇:IAR 定义变量到寄存器中 "__regvar"
下一篇:atmega8 Flash的使用
推荐阅读最新更新时间:2024-03-16 15:27