打印

【菜鸟求助】为什么液晶显示单个字符时,会一直循环显示这个字符

[复制链接]
1412|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shijin52|  楼主 | 2013-3-31 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int



sbit RS=P2^0;
sbit lcdrw=P2^1;
sbit e1=P2^2;
   void delay(uchar i)  //延时1ms函数
{   
    uchar x,y;
    for(x=i;x>0;x--)
    for(y=110;y>0;y--)
    ;
}                             
void write_com(uchar c)  //写 命令
{
   RS=0;
lcdrw=0;
delay(2);
P0=c;
delay(5);
e1=1;
delay(5);

}
void write_date(uchar d)   //写数据
{

RS=1;
  
lcdrw=0;
// delay(2);
P0=d;
delay(5);
e1=1;
delay(1);
// e1=0;

}

void LcdInt(void)     //初始化函数
{
           delay(15);             //延时15ms,首次写指令时应给LCD一段较长的反应时间
           write_com(0x38);  //显示模式设置:16×2显示,5×7点阵,8位数据接口
        delay(5);   //延时5ms 
        write_com(0x38);
        delay(5);
        write_com(0x38); //3次写 设置模式
        delay(5);
        write_com(0x0F);  //显示模式设置:显示开,有光标,光标闪烁
        delay(5);
        write_com(0x06);  //显示模式设置:光标右移,字符不移
        delay(5);                                                                                          
        write_com(0x01);  //清屏幕指令,将以前的显示内容清除
        delay(5);
}
void main()   //主函数
{uchar j;  
e1=0;
LcdInt();
  write_com(0x0f);

    write_date('A');
   
}

我只要显示A,可是可是整个屏幕都是A呀!是怎么回事

相关帖子

沙发
NE5532| | 2013-3-31 19:16 | 只看该作者
楼主的主循环在哪里??

使用特权

评论回复
板凳
爬山虎1234| | 2013-3-31 22:59 | 只看该作者
楼主用1602吧,e1是始能端?为什么初始化要写3次0x38?

使用特权

评论回复
地板
userchen| | 2013-4-1 14:04 | 只看该作者
楼主你可以把自己比喻成单片机,然后跟着你自己写的程序一步一步走,看看会走到哪里?会这么走?
如果这样能清楚,就知道自己的问题在哪里了。

使用特权

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

本版积分规则

1

主题

14

帖子

0

粉丝