打印

【51】关于1602液晶显示的问题。

[复制链接]
1891|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
anywn_xue|  楼主 | 2013-5-27 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//实现1602液晶输入一个字符右移一次。

#include  <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;        //由于P0口即接了液晶又接了数码管,而我们是USB供电,电流较小,若都打开,则功率过大,则需关闭数码管显示。
sbit lcden=P3^4;
sbit lcdrs=P3^5;

uint num;

uchar code table[]="?uoy era woH";
void delayms(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}

void write_com(uchar x)
{
        lcdrs=0;
        delayms(5);
        P0=x;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}

void write_data(uchar x)
{
        lcdrs=1;
        delayms(5);
        P0=x;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}

void init()、、初始化
{
        dula=0;
        wela=0;
        write_com(0x38);
        write_com(0x01);
        write_com(0x0f);
        write_com(0x05);//输入一次右移
}

void main()
{
        init();
        write_com(0x80);       
        for(num=0;num<12;num++){
                write_data(table[num]);
                delayms(200);
                }

        while(1){
        };
}

按程序应该是所有字符出现在液晶显示第一行,但是只有一个问号出现在第一行,其它字符都出现在第二行。 希望前辈们,能一解小弟迷惑。

相关帖子

沙发
ayb_ice| | 2013-5-28 07:59 | 只看该作者
注意第二行的首地址,好象是0x20

使用特权

评论回复
板凳
anywn_xue|  楼主 | 2013-5-28 21:55 | 只看该作者
ayb_ice 发表于 2013-5-28 07:59
注意第二行的首地址,好象是0x20

不是 第二行首地址是0x40···不知道为什么显示就到第二行去了。

使用特权

评论回复
地板
wjsinian| | 2013-5-29 01:52 | 只看该作者
进来看看,学习一下,不懂,

使用特权

评论回复
5
moxue10| | 2014-6-5 11:43 | 只看该作者
  write_com(0x05);//输入一次右移  应该是0x06; 这样更符合我们的写法

使用特权

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

本版积分规则

2

主题

6

帖子

0

粉丝