打印
[51单片机]

关于12864的一点问题

[复制链接]
1589|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
xyz549040622| | 2018-12-8 17:06 | 只看该作者
你这个点好像还是不对,刷新问题?用万用表一个针放在Vout和BLA接一块就好了,上原理图看看。

使用特权

评论回复
板凳
qq805838622|  楼主 | 2018-12-8 17:16 | 只看该作者

就这样...VDD连的+5V,电位器用的200K.

使用特权

评论回复
地板
qq805838622|  楼主 | 2018-12-8 17:16 | 只看该作者
qq805838622 发表于 2018-12-8 17:16
就这样...VDD连的+5V,电位器用的200K.

没有原理图....

使用特权

评论回复
5
qq805838622|  楼主 | 2018-12-8 17:25 | 只看该作者

这是店家的引脚说明

使用特权

评论回复
6
雪山飞狐D| | 2018-12-8 18:02 | 只看该作者
qq805838622 发表于 2018-12-8 17:16
就这样...VDD连的+5V,电位器用的200K.

电位器一般是10K左右的。。。。

使用特权

评论回复
7
woshinamoda| | 2018-12-9 14:20 | 只看该作者
乱码,如果用的字库。你看看一个汉字是两位,你前面有没有加符号或者地址没有在首位

使用特权

评论回复
8
ningling_21| | 2018-12-9 19:48 | 只看该作者
明显是对比度没调好

使用特权

评论回复
9
qq805838622|  楼主 | 2018-12-10 07:58 | 只看该作者
ok,我去试试

使用特权

评论回复
10
qq805838622|  楼主 | 2018-12-10 08:28 | 只看该作者
本帖最后由 qq805838622 于 2018-12-10 08:34 编辑

好了,我拿万用表一测电位器是10k的,然后再安上就好了.....

使用特权

评论回复
11
qq805838622|  楼主 | 2018-12-10 08:36 | 只看该作者

现在就剩乱码的问题了

使用特权

评论回复
12
梦幻泡影| | 2018-12-10 08:42 | 只看该作者
乱码只有一种可能,那就是时序,时钟和数据信号对不上

使用特权

评论回复
13
qq805838622|  楼主 | 2018-12-10 09:13 | 只看该作者
#include <stdio.h>
#include <math.h>
#include <reg52.h>
#include <string.h>

sbit    RS =P2^6; //注意:一定要看12864液晶模块的资料,来确定怎样操作
sbit    WRD=P2^5;
sbit    E=  P2^4;
sbit    PSB=P2^7;
sbit    RES=P2^3;
sbit     x1=P1^2;

void TransferData(char data1,bit DI);
void delayms(unsigned int n);
void delay(unsigned int m);
void lcd_mesg(unsigned char code *addr1);


//下面来定义要显示的汉字,8*4
unsigned char code IC_DAT[]={
        "世界您好!      "
        "程序初始化      "
        "                "
        "                "
};

unsigned char code IC_DAT2[]={
        "                "
        "                "
        " 天若有情天亦老 "
        " 月如无恨月常圆 "
};

void initinal(void)           //初始化,12864有要求的要写上
{
        delay(40);
        PSB=1;   //并口工作模式
        delay(1);
        RES=0; //复位
        delay(1);
        RES=1;   //复位置高
        delay(10);
        TransferData(0x30,0);
        delay(100);
        TransferData(0x30,0);
        delay(37);
        TransferData(0x08,0);
        delay(100);
        TransferData(0x10,0);
        delay(100);
        TransferData(0x0C,0);
        delay(100);
        TransferData(0x01,0);
        delay(10);
        TransferData(0x06,0);
        delay(100);
}


void main(void)            //分两屏来不断显示上面定义的IC_DAT和IC_DAT2汉字
{        x1=0;
        while(1)
        {
           initinal();//调用LCD字库初始化程序
           delay(100);
           lcd_mesg(IC_DAT);
           delayms(240);                   //延时程序必要的,长与短,自己调节
           delayms(240);
       
           initinal();
           delay(100);
           lcd_mesg(IC_DAT2);
           delayms(240);
           delayms(240);
        }
}


void lcd_mesg(unsigned char code *addr1)   //显示汉字函数,8*4=32
{
        unsigned char i;
        TransferData(0x80,0);
        delay(100);
        for(i=0;i<32;i++)
           {
            TransferData(*addr1,1);
            addr1++;
           }
           TransferData(0x90,0);
           delay(100);
           for(i=32;i<64;i++)
           {
            TransferData(*addr1,1);
            addr1++;
           }
}
   
void TransferData(char data1,bit DI) //传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据
{
        WRD=0;
        RS=DI;
        delay(1);
        P0=data1;
        E=1;
        delay(1);
        E=0;
}
void delayms(unsigned int n)    //延时子程序
{
        unsigned int i,j;
        for(i=0;i<n;i++)
        for(j=0;j<2000;j++);
}
void delay(unsigned int m)
        {
                unsigned int i,j;
                for(i=0;i<m;i++)
                for(j=0;j<10;j++);
        }
这是从网上抄来的程序,

使用特权

评论回复
14
qq805838622|  楼主 | 2018-12-10 09:14 | 只看该作者
这是第一个图片, 这是第二个.....

使用特权

评论回复
15
df_flying| | 2018-12-10 14:49 | 只看该作者
8楼应该是正解,这玩意又不是RGB,字符都过去了,通信当然OK了。建议换个可调电阻调一下,确认下对比度。

使用特权

评论回复
16
qq805838622|  楼主 | 2018-12-10 15:02 | 只看该作者
现在改用串口程序就好了.....晕了

使用特权

评论回复
17
qq805838622|  楼主 | 2018-12-15 14:34 | 只看该作者
现在想从1302中读取时间,结果出来是65;85;85;85;85;85五。就星期是对的,年月日时分秒都不对啊

使用特权

评论回复
18
qq805838622|  楼主 | 2018-12-17 14:39 | 只看该作者
通电先显示这个,然后 怎么办啊

使用特权

评论回复
19
enderman1| | 2018-12-21 14:36 | 只看该作者
在12864中写入数据之前,要写读出12864当前数据,然后对当前数据以及要写入数据进行操作;另外,记得每次写入数据时要检测12864是否忙碌;按照这两点再检查一下程序吧

使用特权

评论回复
20
qq805838622|  楼主 | 2018-12-21 16:54 | 只看该作者
写了个检测忙碌的函数,这回彻底不显示了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:LoveKimbora4ever,金宝罗是我老婆

8

主题

99

帖子

2

粉丝