找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2537|回复: 13
收起左侧

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

  [复制链接]
ID:171172 发表于 2017-4-29 10:52 | 显示全部楼层 |阅读模式
屏亮无显示,只能看见淡淡的像素点,会不会跟我之前把屏接反有关?但是屏的正负极是轴对称的,难道信号线接反也能爆机?
#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);
}


回复

使用道具 举报

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 | 显示全部楼层
看这延时用的够夸张了。
回复

使用道具 举报

ID:194955 发表于 2017-4-30 11:22 | 显示全部楼层
现在应该检查的是硬件问题吧,程序看不出什么
回复

使用道具 举报

ID:195184 发表于 2017-5-1 10:42 | 显示全部楼层
延时程序不太合理吧
回复

使用道具 举报

ID:111634 发表于 2017-5-1 17:54 | 显示全部楼层
本帖最后由 zl2168 于 2017-5-1 17:55 编辑

12864.jpg
LCD12864显示屏显示汉字


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

使用道具 举报

ID:149451 发表于 2017-5-1 18:52 | 显示全部楼层
LZ,别照搬版主给的实例,你的是带字库的LCD,驱动命令、端子应用都不同的。注意哟
回复

使用道具 举报

ID:171172 发表于 2017-5-4 09:40 | 显示全部楼层
w1179benp 发表于 2017-5-1 18:52
LZ,别照搬版主给的实例,你的是带字库的LCD,驱动命令、端子应用都不同的。注意哟

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

使用道具 举报

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

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

使用道具 举报

ID:193608 发表于 2017-5-4 17:43 | 显示全部楼层
你这个延时是不是有点太长了,太长太短都不可以的  有时序图,你可以看看
回复

使用道具 举报

ID:313218 发表于 2018-6-17 11:10 | 显示全部楼层
zl2168 发表于 2017-5-1 17:54
LCD12864显示屏显示汉字

有C程序吗
回复

使用道具 举报

ID:353369 发表于 2018-6-17 17:44 | 显示全部楼层
没错,你输入的很对
回复

使用道具 举报

ID:111634 发表于 2018-6-18 11:15 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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