找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

为什么LCD1602不显示?

查看数: 23103 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-30 21:01

正文摘要:

这个程序的目的是显示出welcome Harbin China 我先是使用的查忙程序,但是LCD没有显示 后来用的这个程序没有使用差忙的程序,而是使用的延时函数,但是1602液晶屏还是没有显示,谁知道是怎么回事吗? #include< ...

回复

ID:594980 发表于 2019-8-4 13:56
void LCD_initialize()//初始化函数
{
  write_command(0x38);
  _nop_();
  write_command(0x0c);
  _nop_();
  write_command(0x0b);
  _nop_();
  write_command(0x01);
  delay(1);
}
这个你把0xb改为0x6就可以显示,但是显示是一次显示的。我用自己的实验板演示了以下。
ID:586680 发表于 2019-8-4 13:45
检查一下是a6还是a18
ID:586957 发表于 2019-8-4 12:50
* 指针运算符 //*p为p所指向的存储单元的内容
p就相当于存储单元地址
ID:586957 发表于 2019-8-4 10:49

谢谢蟹蟹,还有个问题,这两个*都不可省略嘛????
ID:511461 发表于 2019-8-3 14:13
*是指针
ID:586957 发表于 2019-8-3 12:30
void string(uchar ad,uchar *p,uchar n)//显示字符函数
{
        uchar i;
        write_command(ad);
        for(i=0;i<n;i++)
        {
                write_data(*p++);
                delay(100);
        }
}
请问这个*号是什么呢?为什么去掉之后就不对了,而显示乱码
ID:316256 发表于 2018-5-4 09:41
时序问题或者电位器
ID:301728 发表于 2018-5-4 07:48
zl2168 发表于 2018-5-2 12:52
实例67  LCD1602显示屏显示
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实 ...

已经改好了,多谢帮助!
ID:301728 发表于 2018-5-4 07:47
wulin 发表于 2018-5-2 16:27
改了一下,实物验证正常。
#include
#include

行,已经改好了,多谢帮助!
ID:213173 发表于 2018-5-2 16:27

改了一下,实物验证正常。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define out P0
sbit RS=P2^0;//将P2口的0,1,2号口作为RS RW E的接口
sbit RW=P2^1;//
sbit E=P2^2;//
//void LCD_initialize();//初始化函数
//void check_busy();//查忙函数,但是这次没有用到
//void write_command(uchar com);//写命令函数
//void write_data(uchar dat);//写数据函数
//void string(uchar ad,uchar*p,uchar n);//使Lcd显示字符的函数
//void delay(uchar i);//延时函数

void delay(uchar i)//延时函数
{
  uchar t;
  while(i--)
  {
    for(t=0;t<120;t++);
  }
}
void write_command(uchar com)//写命令函数
{
//        delay(1);
        E=0;
        RS=0;
//        RW=0;
        out=com;
        delay(1);
        E=1;
        delay(1);
        E=0;
//        delay(1);
}

void write_data(uchar dat)//写数据函数
{
//        delay(1);
//        E=0;
        RS=1;
//        RW=0;
        out=dat;
        delay(1);
        E=1;
        delay(1);
        E=0;
//        delay(1);
}
void LCD_initialize()//初始化函数
{
        RW=0;
        write_command(0x38);
        write_command(0x01);
        write_command(0x0c);
        write_command(0x06);
//        write_command(0x0b);
        write_command(0x80);
}

void string(uchar ad,uchar *p,uchar n)//显示字符函数
{
        uchar i;
        write_command(ad);
        for(i=0;i<n;i++)
        {
                write_data(*p++);
                delay(100);
        }
}

void main()
{
        LCD_initialize();//LCD初始化
        while(1)
        {
                string(0x85,"welcome",7);//写入welcome
                string(0xc2,"Harbin China",12);//写入Harbin China
                delay(100);
                write_command(0x01);//清屏
                delay(100);
        }
}

ID:111634 发表于 2018-5-2 12:52
实例67  LCD1602显示屏显示
Proteus仿真一下,确认有效。
实例61 LCD1602显示屏显示.rar (49.26 KB, 下载次数: 289)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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