找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3517|回复: 13
打印 上一主题 下一主题
收起左侧

【lcd12864】我想问一下我的显示程序有没有问题?

  [复制链接]
跳转到指定楼层
楼主
屏亮无显示,只能看见淡淡的像素点,会不会跟我之前把屏接反有关?但是屏的正负极是轴对称的,难道信号线接反也能爆机?
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcdRS=P2^4;
sbit lcdRW=P2^5;
sbit lcdE=P2^6;
sbit PSB=P2^

void delay_ms(uint xms)      //延时
{
  uint i,j;
  for(i=xms;i>0;i--)
    for(j=114;j>0;j--);
}

void writecom(uchar com)       //LCD写入指令
{
  lcdRS=0;
  lcdRW=0;
  lcdE=0;
  P0=com;
  delay_ms(1000);
  lcdE=1;
  delay_ms(5);
  lcdE=0;
  delay_ms(5);
}

void writedata(uchar dat)      //LCD写入数据
{
  lcdRS=1;
  lcdRW=0;
  lcdE=0;
  P0=dat;
  delay_ms(1000);
  lcdE=1;
  delay_ms(5);
  lcdE=0;
  delay_ms(5);
}

void main()
{
  lcdRS=0;
  lcdRW=0;
  lcdE=0;
  writecom(0x06);
  writecom(0x0c);
  writecom(0x30);
  writecom(0x01);
  writedata('1');
  while(1);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-4-29 22:43 | 只看该作者
显示是否清晰与液晶分子上所加的电压有关。查查你的LCD手册会有发现的。
回复

使用道具 举报

板凳
ID:148552 发表于 2017-4-30 09:10 | 只看该作者
12864写入数据或者命令之前要判断液晶数据口是否繁忙,你这个都没有判断繁忙的函数
void check_busy()//判忙
{         

     uchar busy;
     P0=0xff;
         RS=0;
         RW=1;
         do
         {
          EN=1;
          busy=P0;
          EN=0;
           }while(busy&0x80);
           EN=0;
}

这里给个判忙函数作为参考
回复

使用道具 举报

地板
ID:162136 发表于 2017-4-30 10:18 | 只看该作者
看这延时用的够夸张了。
回复

使用道具 举报

5#
ID:194955 发表于 2017-4-30 11:22 | 只看该作者
现在应该检查的是硬件问题吧,程序看不出什么
回复

使用道具 举报

6#
ID:195184 发表于 2017-5-1 10:42 | 只看该作者
延时程序不太合理吧
回复

使用道具 举报

7#
ID:111634 发表于 2017-5-1 17:54 | 只看该作者
本帖最后由 zl2168 于 2017-5-1 17:55 编辑


LCD12864显示屏显示汉字


Proteus仿真一下,确认有效。
实验25 LCD12864显示屏显示.rar (60.48 KB, 下载次数: 5)

以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9


仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。


回复

使用道具 举报

8#
ID:149451 发表于 2017-5-1 18:52 | 只看该作者
LZ,别照搬版主给的实例,你的是带字库的LCD,驱动命令、端子应用都不同的。注意哟
回复

使用道具 举报

9#
ID:171172 发表于 2017-5-4 09:40 | 只看该作者
w1179benp 发表于 2017-5-1 18:52
LZ,别照搬版主给的实例,你的是带字库的LCD,驱动命令、端子应用都不同的。注意哟

谢谢,找到原因了,我这恰恰是不带字库的lcd(换了新的还是不带字库,直到别人了我一个用过没问题的lcd才解决)所以怎么都显示不出来因为字没定义
回复

使用道具 举报

10#
ID:171172 发表于 2017-5-4 09:58 | 只看该作者
你像风儿来了 发表于 2017-4-30 09:10
12864写入数据或者命令之前要判断液晶数据口是否繁忙,你这个都没有判断繁忙的函数
void check_busy()//判 ...

延时5ms还能碰上忙的?
回复

使用道具 举报

11#
ID:193608 发表于 2017-5-4 17:43 | 只看该作者
你这个延时是不是有点太长了,太长太短都不可以的  有时序图,你可以看看
回复

使用道具 举报

12#
ID:313218 发表于 2018-6-17 11:10 | 只看该作者
zl2168 发表于 2017-5-1 17:54
LCD12864显示屏显示汉字

有C程序吗
回复

使用道具 举报

13#
ID:353369 发表于 2018-6-17 17:44 | 只看该作者
没错,你输入的很对
回复

使用道具 举报

14#
ID:111634 发表于 2018-6-18 11:15 | 只看该作者

仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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