急!求助:为什么数字显示是乱码?
本帖最后由 rjx 于 2014-6-8 10:21 编辑我写的一段代码,在protues中用LGM12854仿真(芯片是KS0108),可以正常显示汉字,也可以正常显示字符串(汉字,字母,数字组成的)但现想单独显示数字就是乱码,请帮看看是怎么回事?
下面是相关部分的代码:
//0-9数字数组:
flash uchar hang7[]={
/*--文字:0--*/
/*--新宋体9;此字体下对应的点阵为:宽x高=8x15 --*/
/*--高度不是8的倍数,现调整为:宽度x高度=8x16--*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00, //0
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00, //1
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x0C,0x10,0x10,0x10,0x11,0x0E,0x00,
0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x00,0x00,0x03,0x02,0x12,0x1F,0x12,0x12,0x00,
0x00,0xF8,0x88,0x48,0x48,0x48,0x88,0x00,0x00,0x0C,0x10,0x10,0x10,0x10,0x0F,0x00,
0x00,0xE0,0x10,0x88,0x88,0x98,0x00,0x00,0x00,0x0F,0x11,0x10,0x10,0x10,0x0F,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x88,0x88,0x88,0x70,0x00,0x00,0x0E,0x11,0x10,0x10,0x11,0x0E,0x00,
0x00,0xF0,0x08,0x08,0x08,0x90,0xE0,0x00,0x00,0x00,0x19,0x11,0x11,0x08,0x07,0x00, //9
};
---------------------------------------------------------------------------------
//显示一个8*16点阵字符
void Display_A_Char(uchar PageNum,uchar Juli,uchar *M)
{
Common_Show(PageNum,Juli,8,M);//显示上半部分8X8
Common_Show(PageNum+1,Juli,8,M+8);//显示下半部分8X8
}
--------------------------------------------------------------------------------------------
//主程序
include <mega32.h>
//#include <delay.h>
#include "delay_Accurate2.h"
#include "LGM12641.h"
#include "hanzi2b.h"
#define uchar unsigned char
#define uintunsigned int
void main()
{
PORTC=0x00;
DDRC =0xff;
PORTA=0xff;
DDRA =0xf9;
LGM12864_Init(); //初始化液晶
。。。。。
Display_A_Char(0,0,( uchar*)(hang7+1)); //如想显示1,这句有错吗?
while(1);
}
本帖最后由 rjx 于 2014-6-8 16:26 编辑
问题找到了,如果汉字或字符是用 flash uchar 来定义的,那么有关函数(如写数据)的形参也必须用 flasn uchar 定义,只简单地用uchar就会出错。
Display_A_Char(0,0,( uchar*)(hang7+1)); 这句也应改成Display_A_Char(0,0,( flash uchar*)(hang7+1));
页:
[1]