标题: 【lcd12864】我想问一下我的显示程序有没有问题? [打印本页]

作者: 我FY    时间: 2017-4-29 10:52
标题: 【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);
}



作者: yzwzfyz    时间: 2017-4-29 22:43
显示是否清晰与液晶分子上所加的电压有关。查查你的LCD手册会有发现的。
作者: 你像风儿来了    时间: 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;
}

这里给个判忙函数作为参考
作者: bayga456    时间: 2017-4-30 10:18
看这延时用的够夸张了。
作者: guosheng0403    时间: 2017-4-30 11:22
现在应该检查的是硬件问题吧,程序看不出什么
作者: ca2008    时间: 2017-5-1 10:42
延时程序不太合理吧
作者: zl2168    时间: 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文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。



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

谢谢,找到原因了,我这恰恰是不带字库的lcd(换了新的还是不带字库,直到别人了我一个用过没问题的lcd才解决)所以怎么都显示不出来因为字没定义
作者: 我FY    时间: 2017-5-4 09:58
你像风儿来了 发表于 2017-4-30 09:10
12864写入数据或者命令之前要判断液晶数据口是否繁忙,你这个都没有判断繁忙的函数
void check_busy()//判 ...

延时5ms还能碰上忙的?
作者: 18741270696    时间: 2017-5-4 17:43
你这个延时是不是有点太长了,太长太短都不可以的  有时序图,你可以看看
作者: seanoy    时间: 2018-6-17 11:10
zl2168 发表于 2017-5-1 17:54
LCD12864显示屏显示汉字

有C程序吗
作者: a8557558    时间: 2018-6-17 17:44
没错,你输入的很对
作者: zl2168    时间: 2018-6-18 11:15
seanoy 发表于 2018-6-17 11:10
有C程序吗

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




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