标题: 用1602液晶管想显示0到9数字 出现的现象是只能显示0 [打印本页]

作者: 后影遁    时间: 2018-11-13 18:05
标题: 用1602液晶管想显示0到9数字 出现的现象是只能显示0
本帖最后由 后影遁 于 2018-11-13 18:08 编辑


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uint num;
uint code table[]={'0','1','2','3','4','5','6','7','8','9'};
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
  for(b=10;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;

}
void write_date(uchar date)
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;

}
void init()
{
dula=0;
wela=0;
write_com(0x38);
delay(20);
write_com(0x0e);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
void main()
{
uint  j;
num=0;#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
uint num;
uint code table[]={'0','1','2','3','4','5','6','7','8','9'};
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
  for(b=10;b>0;b--);
}
void write_com(uchar com)
{
P0=com;
rs=0;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;

}
void write_date(uchar date)
{
P0=date;
rs=1;
lcden=0;
delay(10);
lcden=1;
delay(10);
lcden=0;

}
void init()
{
dula=0;
wela=0;
write_com(0x38);
delay(20);
write_com(0x0e);
delay(20);
write_com(0x06);
delay(20);
write_com(0x01);
delay(20);
}
void main()
{
uint  j;
num=0;
j=0;
init();//液晶管初始化
write_com(0x80+1);//设定第一个显示数字的地址
write_date(table[j]);//显示第一个数字
    for( ; j>9; j++)
  {    j++;
     write_com(0x80+1+j);//设定地址
       delay(20);
     write_date(table[j]);//显示数字
       if(j==9)
          while(1);
     delay(100);//延时
  }
}

j=0;
init();//液晶管初始化
write_com(0x80+1);//设定第一个显示数字的地址
write_date(table[j]);//显示第一个数字
    for( ; j>9; j++)
  {    j++;
     write_com(0x80+1+j);//设定地址
       delay(20);
     write_date(table[j]);//显示数字
       if(j==9)
          while(1);
     delay(100);//延时
  }
}



作者: zl2168    时间: 2018-11-14 08:20
本帖最后由 zl2168 于 2018-11-14 22:40 编辑

实例67  LCD1602显示屏显示
⒈ LCD1602显示屏简介
⑴ 引脚功能    …
⑵ 内部寄存器    …
⑶ 控制指令    …
⑷ 操作时序    …
⒉ 电路设计    …
⒊ 程序设计    …
⒋ Keil调试    …
⒌ Proteus仿真    …

Proteus仿真一下,确认有效。 实例61 LCD1602显示屏显示.rar (49.26 KB, 下载次数: 25)

若需改变1602显示内容只须将需显示的内容用ASCII码写入显示数组,即可。以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。

作者: 这一生只为你    时间: 2018-11-14 09:39
一看就是郭老师的学生。。。
你这main程序有问题啊,是复制粘贴的时候弄错了还是本身就是错的?
我给你改了一下,试试看行不行
void main()
{
        uint  j;
        num=0;
        j=0;
        init();//液晶管初始化
        while(1)
        {
                write_com(0x80+1);//设定第一个显示数字的地址
                write_date(table[j]);//显示第一个数字
                for( j=0; j>9; j++)
                {
                        write_com(0x80+1+j);//设定地址
                        delay(20);
                        write_date(table[j]);//显示数字
                        delay(100);//延时
                }
        }
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1