2857|2

25

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

PG12864的显示问题 [复制链接]

我想让PG12864自动写出它自带的128个字符,但是不能显示,麻烦各位大神指示一下

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit wr=P2^0;
sbit rd=P2^1;
sbit CE=P2^2;
sbit CD=P2^3;
sbit RST=P2^4;

void delay(uchar t)
{
    uchar i,j;
    for(j=0;j<t;j++)
    for(i=0;i<114;i++)
    ;
}
void write_data(uchar indata)
{
    rd=1;
    CD=0;
    wr=0;
    CE=0;
    P0=indata;
    delay(10);
    wr=1;
    CD=1;
    CE=1;
}
void write_cmd(uchar cmd)
{
    rd=1;
    CD=1;
    wr=0;
    CE=0;
    P0=cmd;
    delay(10);
    wr=1;
    CD=0;
    CE=1;
}
void check_status()  //状态检查
{
    uchar sta;
    do
    {
        P0=0xff;
        CD=1;
        rd=0;
        sta=P0&0x03;
        rd=1;
    }while(sta!=0x03);
}
void write_cmd2(uchar dat,uchar cmd)
{
    check_status();
    write_data(dat);
    check_status();
    write_cmd(cmd);
}
void write_cmd3(uchar data1,uchar data2, uchar cmd)
{
    check_status();
    write_data(data1);
    check_status();
    write_data(data2);
    check_status();
    write_cmd(cmd);
}
void clear_screen()
{
    uint i;
    write_cmd3(0x00,0x00,0x24);
    check_status();
    write_cmd(0xb0);//自动写
    check_status();
    for(i=0;i<8192;i++)
    {
         check_status();
        write_data(0x00);
    }
check_status();
write_cmd(0xb2);//结束自动写
}
void L12864_int()
{
    P2=0xff;
      RST=1;
    delay(10);
    RST=0;
    wr=1;
    rd=1;
    CE=1;
    CD=1;
    RST=1;
    check_status();
    write_cmd3(0x01,0x00,0x21);  光标指针设置
    check_status();
    write_cmd3(0x00,0x00,0x40);   //文本区首地址
    check_status();
    write_cmd3(16,0x00,0x41);
    check_status();
    write_cmd(0x80);//显示方式设置
    check_status();
    write_cmd(0x94);//文本显示,不闪烁,不显示光标
    check_status();
    write_cmd(0xa1);  //光标形状设置
}
void display_char(uchar x,uchar y,uchar ch)
{
    write_cmd3(((x*2)<<4+y),0x00,0x24);
    write_cmd2(ch-32,0xc0);
}
void main()
{
    uchar i,j=0;
    L12864_int();
    for(i=0;i<128;i++)
    {
        display_char(i/16,i%16,'0'+i);
    }
clear_screen();
}

此帖出自单片机论坛

最新回复

不能显示有很多现象,描述一下!这个问题有很多了,没有用过这个液晶,不清楚。建议按照液晶的资料一步一步的对照一下。弄液晶最关键的一点是时序,这个弄不好了下面啥也干不了。时序一个是顺序,你的代码好像是对的。在一个就是延时时间,一般老型号的相对延时需要长一些。时序没问题的话就看指令发的对不对了。还有就是复位,复位时间开始弄的时候可以适当的长一些,能显示了再改成合适的值。  详情 回复 发表于 2012-5-3 20:19
点赞 关注
 

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
不能显示有很多现象,描述一下!这个问题有很多了,没有用过这个液晶,不清楚。建议按照液晶的资料一步一步的对照一下。弄液晶最关键的一点是时序,这个弄不好了下面啥也干不了。时序一个是顺序,你的代码好像是对的。在一个就是延时时间,一般老型号的相对延时需要长一些。时序没问题的话就看指令发的对不对了。还有就是复位,复位时间开始弄的时候可以适当的长一些,能显示了再改成合适的值。
此帖出自单片机论坛
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 jishuaihu 的帖子

谢谢版主,是地址问题搞错了
此帖出自单片机论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表