rjx 发表于 2014-6-8 10:13:49

急!求助:为什么数字显示是乱码?

本帖最后由 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 15:59:35

本帖最后由 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]
查看完整版本: 急!求助:为什么数字显示是乱码?