打印

2002 LCD显示问题

[复制链接]
1917|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pttangpt|  楼主 | 2007-4-11 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main()
{uchar x,i;
 initLCD();                    //初始化LCD
 for(x=19;x>=6;x--)
   {w_command(0x01);           //清屏
    display_str(x,0,str1);     //在第x+1列、第1行显示指定字符串
    display_str(x,1,str2);     //在第x+1列、第2行显示指定字符串
    delay1ms(500);
   }
 delay1ms(1000);
 for(i=0;i<3;i++)              //控制闪烁3次     
   {w_command(0x01);           //清屏
    delay1ms(500);
    display_str(6,0,str1);     //LCD中间显示两组字符串 
    display_str(6,1,str2);
    delay1ms(500);
   }
 delay1ms(1000);
    .
    .
    .
}

上述程序中,第一个for控制两行字符串从LCD最右边滚动到LCD正中间的显示过程;第二个for控制两行字符串在LCD正中间闪烁三次。
现在,我将其中任意一条for语句屏蔽(包含for下面的LCD控制语句),另外一个for的功能正常;但是两条for在一起执行时(如上述程序),就是:一堆乱码从右滚动到正中,然后闪烁3次!为什么指定的字符串不见了呢?肯求帮助!

相关帖子

沙发
pttangpt|  楼主 | 2007-4-11 12:05 | 只看该作者

是调用子程序问题?

我现在将两个for语句中的str1,str2分别用“WELCOME!”和“LCD-TEST”代替,则所需的功能正常!难道是指针出了问题?如果是这样的话,两个for怎么单独工作时又可以?下面是程序中的部分子程序,肯求各位大侠帮忙分析:

定义段:
#define uchar unsigned char
#define uint unsigned int
。。。
uchar code str1[]="WELCOME!";   
uchar code str2[]="LCD-TEST";
。。。

/*****************显示单个字符子程序*******************/
void display_ch(uchar x,uchar y,uchar ch)  //y行x列,ch为待显字符
{if(y) x|=0x40;    //如果y为1(即第2行),则数据地址为40H起
 x|=0x80;          //数据为地址值时,D7(最高位)恒为1
 w_command(x);     //写入字符待显的地址值
 w_data(ch);       //写入数据
}

/*************在指定位置显示字符串子程序*****************/
void display_str(uchar x,uchar y,uchar code *addr)
{while(*addr)          //如果字符串还没有显示完毕,则继续循环
   {display_ch(x,y,*addr);    //在x列y行处显示字符串中的单个字符
    x++;                    //显示地址加1
    addr++;}                //字符串地址加1,即显示下一个字符
}



使用特权

评论回复
板凳
pttangpt|  楼主 | 2007-4-11 14:18 | 只看该作者

依然不解中。。。

使用特权

评论回复
地板
turmary| | 2007-4-11 14:25 | 只看该作者

随便说说

把str1还有2转换试试.
display_str(x,0,(uchar code*)str1);     //在第x+1列、第1行显示指定字符串
    display_str(x,1,(uchar code*)str2);     //在第x+1列、第2行显示指定字符串
或者这样定义
uchar code* str1="ABC";
uchar code* str2="DEF";

使用特权

评论回复
5
pttangpt|  楼主 | 2007-4-11 14:42 | 只看该作者

还是不行

谢谢turmary的建议,但是跑动的还是乱码,按第一种方式更改乱码跟我前面的程序一样;按第二种方式更改则所显的乱码跟前面都不一样了,怪哉!

使用特权

评论回复
6
turmary| | 2007-4-11 20:37 | 只看该作者

ABC

用仿真器调试一下儿吧,问题就很容易找出来了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

53

帖子

0

粉丝