搜索
bottom↓
回复: 3

AVRmega64 19264液晶调试乱码问题

[复制链接]

出0入0汤圆

发表于 2014-9-4 20:32:50 | 显示全部楼层 |阅读模式
最近在做一个液晶显示的项目,液晶是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[0];
   // PRE_decate    = heaterdecate_buf[0];
   //
   // PRT_Uint      = heaterUint_buf[1];
   // PRT_decate    = heaterdecate_buf[1];
   
   // AFT_Uint      = heaterUint_buf[2];
  //  AFT_decate    = heaterdecate_buf[2];
    //前中后加热“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[PRE_decate];
    //b =
    //"25℃  25℃  25℃ "displayshuzi_9 shuzi_code1[PRE_decate]
     //DisplayEnglishCharacter( 0,6,a);
     __delay_cycles(4000);
  /*  DisplayEnglishCharacter( 8,6, shuzi_code1[PRE_Uint]);
    DisplayChineseCharacter(16,6,degreecentigrade_code);
    //
    DisplayEnglishCharacter( 64,6,shuzi_code1[PRT_decate]);  
    DisplayEnglishCharacter( 72,6,shuzi_code1[PRT_Uint]);
    DisplayChineseCharacter( 80,6,degreecentigrade_code);
    //
    DisplayEnglishCharacter( 128,6,shuzi_code1[AFT_decate]);  
    DisplayEnglishCharacter( 136,6,shuzi_code1[AFT_Uint]);
    DisplayChineseCharacter( 144,6,degreecentigrade_code);

    //"前开关  中开关  后开关"  
      */
  }
现在能正常显示,当把屏蔽的程序用上,就开始出现了乱码。横条,现在没在单位无法附图

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2014-9-5 07:22:25 | 显示全部楼层
今天仔细分析发现:
//显示单个英文字符
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的,加上之后屏幕就乱码,横线,所以我怀疑是指针变量的问题,可是看不出来问题在哪!!,求大神指引我

出0入0汤圆

发表于 2014-12-16 16:25:10 | 显示全部楼层
发一个运行良好的ATMEGA8驱动YXD-19264AG的程序,仅供参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-1-6 09:32:01 | 显示全部楼层
hbzxx 发表于 2014-12-16 16:25
发一个运行良好的ATMEGA8驱动YXD-19264AG的程序,仅供参考。

谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表