[51单片机] 关于12864的一点问题

[复制链接]
1969|19
 楼主| qq805838622 发表于 2018-12-8 16:21 | 显示全部楼层 |阅读模式
本帖最后由 qq805838622 于 2018-12-8 16:46 编辑

鼓捣了一天,终于能够显示了,结果成这个样子了....用万用表一个针放在Vout和BLA接一块就好了,是什么原因呢....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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.

没有原理图....
 楼主| qq805838622 发表于 2018-12-8 17:25 | 显示全部楼层

这是店家的引脚说明

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
雪山飞狐D 发表于 2018-12-8 18:02 | 显示全部楼层
qq805838622 发表于 2018-12-8 17:16
就这样...VDD连的+5V,电位器用的200K.

电位器一般是10K左右的。。。。
woshinamoda 发表于 2018-12-9 14:20 来自手机 | 显示全部楼层
乱码,如果用的字库。你看看一个汉字是两位,你前面有没有加符号或者地址没有在首位
ningling_21 发表于 2018-12-9 19:48 | 显示全部楼层
明显是对比度没调好
 楼主| qq805838622 发表于 2018-12-10 07:58 | 显示全部楼层
ok,我去试试
 楼主| qq805838622 发表于 2018-12-10 08:28 | 显示全部楼层
本帖最后由 qq805838622 于 2018-12-10 08:34 编辑

好了,我拿万用表一测电位器是10k的,然后再安上就好了.....
 楼主| qq805838622 发表于 2018-12-10 08:36 | 显示全部楼层

现在就剩乱码的问题了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
梦幻泡影 发表于 2018-12-10 08:42 | 显示全部楼层
乱码只有一种可能,那就是时序,时钟和数据信号对不上
 楼主| qq805838622 发表于 2018-12-10 09:13 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <reg52.h>
  4. #include <string.h>

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

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


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

  22. unsigned char code IC_DAT2[]={
  23.         "                "
  24.         "                "
  25.         " 天若有情天亦老 "
  26.         " 月如无恨月常圆 "
  27. };

  28. void initinal(void)           //初始化,12864有要求的要写上
  29. {
  30.         delay(40);
  31.         PSB=1;   //并口工作模式
  32.         delay(1);
  33.         RES=0; //复位
  34.         delay(1);
  35.         RES=1;   //复位置高
  36.         delay(10);
  37.         TransferData(0x30,0);
  38.         delay(100);
  39.         TransferData(0x30,0);
  40.         delay(37);
  41.         TransferData(0x08,0);
  42.         delay(100);
  43.         TransferData(0x10,0);
  44.         delay(100);
  45.         TransferData(0x0C,0);
  46.         delay(100);
  47.         TransferData(0x01,0);
  48.         delay(10);
  49.         TransferData(0x06,0);
  50.         delay(100);
  51. }


  52. void main(void)            //分两屏来不断显示上面定义的IC_DAT和IC_DAT2汉字
  53. {        x1=0;
  54.         while(1)
  55.         {
  56.            initinal();//调用LCD字库初始化程序
  57.            delay(100);
  58.            lcd_mesg(IC_DAT);
  59.            delayms(240);                   //延时程序必要的,长与短,自己调节
  60.            delayms(240);
  61.        
  62.            initinal();
  63.            delay(100);
  64.            lcd_mesg(IC_DAT2);
  65.            delayms(240);
  66.            delayms(240);
  67.         }
  68. }


  69. void lcd_mesg(unsigned char code *addr1)   //显示汉字函数,8*4=32
  70. {
  71.         unsigned char i;
  72.         TransferData(0x80,0);
  73.         delay(100);
  74.         for(i=0;i<32;i++)
  75.            {
  76.             TransferData(*addr1,1);
  77.             addr1++;
  78.            }
  79.            TransferData(0x90,0);
  80.            delay(100);
  81.            for(i=32;i<64;i++)
  82.            {
  83.             TransferData(*addr1,1);
  84.             addr1++;
  85.            }
  86. }
  87.    
  88. void TransferData(char data1,bit DI) //传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据
  89. {
  90.         WRD=0;
  91.         RS=DI;
  92.         delay(1);
  93.         P0=data1;
  94.         E=1;
  95.         delay(1);
  96.         E=0;
  97. }
  98. void delayms(unsigned int n)    //延时子程序
  99. {
  100.         unsigned int i,j;
  101.         for(i=0;i<n;i++)
  102.         for(j=0;j<2000;j++);
  103. }
  104. void delay(unsigned int m)
  105.         {
  106.                 unsigned int i,j;
  107.                 for(i=0;i<m;i++)
  108.                 for(j=0;j<10;j++);
  109.         }
这是从网上抄来的程序,
 楼主| qq805838622 发表于 2018-12-10 09:14 | 显示全部楼层
这是第一个图片,这是第二个.....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
df_flying 发表于 2018-12-10 14:49 | 显示全部楼层
8楼应该是正解,这玩意又不是RGB,字符都过去了,通信当然OK了。建议换个可调电阻调一下,确认下对比度。
 楼主| qq805838622 发表于 2018-12-10 15:02 | 显示全部楼层
现在改用串口程序就好了.....晕了
 楼主| qq805838622 发表于 2018-12-15 14:34 | 显示全部楼层
现在想从1302中读取时间,结果出来是65;85;85;85;85;85五。就星期是对的,年月日时分秒都不对啊
 楼主| qq805838622 发表于 2018-12-17 14:39 | 显示全部楼层
通电先显示这个,然后怎么办啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
enderman1 发表于 2018-12-21 14:36 | 显示全部楼层
在12864中写入数据之前,要写读出12864当前数据,然后对当前数据以及要写入数据进行操作;另外,记得每次写入数据时要检测12864是否忙碌;按照这两点再检查一下程序吧
 楼主| qq805838622 发表于 2018-12-21 16:54 | 显示全部楼层
写了个检测忙碌的函数,这回彻底不显示了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

8

主题

99

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部