AVRmega64 19264液晶调试乱码问题
最近在做一个液晶显示的项目,液晶是19264单片机mega64
软件:IVA forAVR
今天编译除了个问题,研究了一天没有解决
问题现象:我现在控制在液晶上显示四行,当程序添加到第四行显示代码就开始出现乱码了,不加第四行的程序,没有问题显示良好
附上显示部分代码,请大神们指教,看看究竟是哪里的问题
void heaterpage1()
{
uchar PRE_Uint = 0;
uchar PRE_decate = 0;
uchar PRT_Uint = 0;
uchar PRT_decate = 0;
uchar AFT_Uint = 0;
uchar AFT_decate = 0;
// uchar __flash*a,*b,*c, *d,*e,*f;
// PRE_Uint = heaterUint_buf;
// PRE_decate = heaterdecate_buf;
//
// PRT_Uint = heaterUint_buf;
// PRT_decate = heaterdecate_buf;
// AFT_Uint = heaterUint_buf;
//AFT_decate = heaterdecate_buf;
//前中后加热“PFE PRT AFT”
///*
switch(HeaterControl)
{
case 0x00 :
{
DisplayEnglishCharacter1( 0,4,Off_code,24);
DisplayEnglishCharacter1(24,4,zero_buf,40);
DisplayEnglishCharacter1(64,4,Off_code,24);
DisplayEnglishCharacter1(88,4,zero_buf,40);
DisplayEnglishCharacter1(128,4,Off_code,24);
DisplayEnglishCharacter1(152,4,zero_buf,40);
break;
}
case 0x01:
{
DisplayEnglishCharacter( 0,4,CapitalLetter_O);
DisplayEnglishCharacter( 8,4,CapitalLetter_N);
DisplayEnglishCharacter(16,4,Space);
DisplayEnglishCharacter1(64,4,Off_code,24);
DisplayEnglishCharacter1(128,4,Off_code,24);
break;
}
case 0x03:
{
DisplayEnglishCharacter( 0,4,CapitalLetter_O);
DisplayEnglishCharacter( 8,4,CapitalLetter_N);
DisplayEnglishCharacter(16,4,Space);
DisplayEnglishCharacter(64,4,CapitalLetter_O);
DisplayEnglishCharacter(72,4,CapitalLetter_N);
DisplayEnglishCharacter(80,4,Space);
// DisplayEnglishCharacter1(64,4,Off_code,24);
DisplayEnglishCharacter1(128,4,Off_code,24);
break;
}
case 0x07 :
{
DisplayEnglishCharacter( 0,4,CapitalLetter_O);
DisplayEnglishCharacter( 8,4,CapitalLetter_N);
DisplayEnglishCharacter(16,4,Space);
DisplayEnglishCharacter(64,4,CapitalLetter_O);
DisplayEnglishCharacter(72,4,CapitalLetter_N);
DisplayEnglishCharacter(80,4,Space);
DisplayEnglishCharacter(128,4,CapitalLetter_O);
DisplayEnglishCharacter(136,4,CapitalLetter_N);
DisplayEnglishCharacter(144,4,Space);
break;
}
}
//"25℃25℃25℃ "
DisplayEnglishCharacter( 0,2,displayshuzi_2);
DisplayEnglishCharacter( 8,2,displayshuzi_5);
DisplayChineseCharacter(16,2,degreecentigrade_code);
//
DisplayEnglishCharacter( 64,2,displayshuzi_2);
DisplayEnglishCharacter( 72,2,displayshuzi_5);
DisplayChineseCharacter( 80,2,degreecentigrade_code);
//
DisplayEnglishCharacter( 128,2,displayshuzi_2);
DisplayEnglishCharacter( 136,2,displayshuzi_5);
DisplayChineseCharacter( 144,2,degreecentigrade_code);
// */
//"PRE PRT AFT"
DisplayEnglishCharacter1(0,0,Pre_code,24);
DisplayEnglishCharacter1(24,0,zero_buf,64);
DisplayEnglishCharacter1( 64,0,Prt_code,24);
DisplayEnglishCharacter1( 88,0,zero_buf,128);
DisplayEnglishCharacter1(128,0,Aft_code,24);
DisplayEnglishCharacter1(152,0,zero_buf,40);
__delay_cycles(4000);
// a = shuzi_code1;
//b =
//"25℃25℃25℃ "displayshuzi_9 shuzi_code1
//DisplayEnglishCharacter( 0,6,a);
__delay_cycles(4000);
/*DisplayEnglishCharacter( 8,6, shuzi_code1);
DisplayChineseCharacter(16,6,degreecentigrade_code);
//
DisplayEnglishCharacter( 64,6,shuzi_code1);
DisplayEnglishCharacter( 72,6,shuzi_code1);
DisplayChineseCharacter( 80,6,degreecentigrade_code);
//
DisplayEnglishCharacter( 128,6,shuzi_code1);
DisplayEnglishCharacter( 136,6,shuzi_code1);
DisplayChineseCharacter( 144,6,degreecentigrade_code);
//"前开关中开关后开关"
*/
}
现在能正常显示,当把屏蔽的程序用上,就开始出现了乱码。横条,现在没在单位无法附图 今天仔细分析发现:
//显示单个英文字符
void DisplayEnglishCharacter(unsigned int row,
unsigned int page,
unsigned char__flash*CharacterEnglish );
//显示多英文字符
void DisplayEnglishCharacter1(unsigned int row,
unsigned int page,
unsigned char __flash*CharacterEnglish,
unsigned int LengthCharacterEnglish);//显示英文字符函数声明
我编写的写英文字符的函数,都是传递的英文字模数字的地址,但是这个
unsigned char __flash* shuzi_code1[]=
{
displayshuzi_0,
displayshuzi_1,
displayshuzi_2,
displayshuzi_3,
displayshuzi_4,
displayshuzi_5,
displayshuzi_6,
displayshuzi_7,
displayshuzi_8,
displayshuzi_9,
};
里面放的是0~9数字字模的数组名称,也就是首地址,现在屏蔽之后的程序能正常显示0~5page,屏蔽部分程序是写6,7page的,加上之后屏幕就乱码,横线,所以我怀疑是指针变量的问题,可是看不出来问题在哪!!,求大神指引我 发一个运行良好的ATMEGA8驱动YXD-19264AG的程序,仅供参考。
hbzxx 发表于 2014-12-16 16:25
发一个运行良好的ATMEGA8驱动YXD-19264AG的程序,仅供参考。
谢谢{:lol:}
页:
[1]