找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1721|回复: 15
收起左侧

关于单片机+LCD12864无法显示问题,请求大佬帮忙看下如何解决,非常感谢

  [复制链接]
ID:1051434 发表于 2022-12-4 23:37 | 显示全部楼层 |阅读模式
50黑币
是这样的,本人刚学单片机不久,最近玩这个12864没玩好,就杠上了。已经连续一个多星期晚上弄这个LCD12864了,没弄好,吃不好睡不好奈何能力有限,硬是拿他没辙,所以想请各位大佬帮忙看下,不胜感激!
本人自己焊的板子,板子肯定是没问题的,因为本人拿另一个软件(软件2)跑起来是正常的,见图2
但是这个软件1仿真跑起来是正常可以跑的,但是一上板子就什么都没有了,见图1.最后反复核查了板子没发现问题,所以认为是软件1有问题。
百度过有说是时序有问题,有说是延时的问题,反正我自己试了很久是没有能力解决的,所以想请网上的大佬帮忙看看,不胜感激
图3是软件1在仿真上跑起来
程序1里面有仿真文件

图3

图3

图2

图2

图1

图1

036-贪吃蛇 俄罗斯方块 万年历.rar

150.94 KB, 下载次数: 9

程序1

SMR12864-L.zip

712.29 KB, 下载次数: 10

程序2

回复

使用道具 举报

ID:155507 发表于 2022-12-5 10:02 | 显示全部楼层
程序1和程序2的接口都不一样,你是根据哪一个程序做的接口?

程序1
  1. #ifndef _12864_H__
  2. #define _12864_H__       
  3. #define uchar unsigned char
  4. #define uint unsigned int           //宏义
  5. sbit E=P2^0;
  6. sbit RW=P2^1;
  7. sbit RS=P2^2;
  8. sbit CS2=P2^3;
  9. sbit CS1=P2^4;                         //端口定义
  10. /*1ms延时程序*/
  11. void delay1ms(uint k)
  12. {
  13.   k=k*125;
  14.   while(k--);
  15. }
  16. /*12864判忙 */
  17. void chekbusy12864(void)
  18. {
  19.   uchar dat;
  20.   EX0=0;
  21.   RS=0;       //指令模式
  22.   RW=1;       //读数据
  23. do{
  24.    P0=0x00;                         //
  25.    E=1;
  26.    dat=P0&0x80;
  27.    E=0;
  28.   }while(dat!=0x00);
  29.   EX0=1;
  30. }
复制代码




程序2
  1. //                12864  
  2. //***************************************************************************
  3. //LCD IC: SBN6400&SBN0064  or  NT7107&NT7108
  4. //CPU=89C52   SysClock=12MHz                                                *
  5. //RS=P3.3            R/W=P3.1       E=P3.0  CS1=P3.4        CS2=P3.5        *
  6. //     DB0-DB7=P1.0-P1.7     (WR)=P3.1      /Reset=InBoard                  *
  7. // CS1  CS2 都为低有效                                                                                                            *
  8. //***************************************************************************

  9. #include <reg52.h>
  10. #include <intrins.h>

  11. sbit CS1=P3^4; //Master chip E
  12. sbit CS2=P3^5; //Slave chip E
  13. sbit E=P3^0; //6800 mode E single
  14. sbit RS=P3^3; //Data or Instrument Select
  15. sbit RW=P3^1; //Write or Read
  16. sbit RES=P3^2; //Lcm reset

  17. #define Lcd_Bus P1 //MCU P1<------> LCM

  18. #define        LcmXPixel 128        //横像素
  19. #define        LcmYPixel 64        //纵像素

  20. unsigned char Page;        //页 地址
  21. unsigned char Col;        //列 地址

  22. void int_zhongduan();
  23. unsigned char busy_flag;
复制代码




回复

使用道具 举报

ID:965189 发表于 2022-12-5 13:19 | 显示全部楼层
通信端口不同,把端口调到对应位置。
回复

使用道具 举报

ID:584814 发表于 2022-12-5 14:50 | 显示全部楼层
程序2能正常跑,移植到程序1中就可以
回复

使用道具 举报

ID:1051434 发表于 2022-12-6 23:17 | 显示全部楼层
angmall 发表于 2022-12-5 10:02
程序1和程序2的接口都不一样,你是根据哪一个程序做的接口?

程序1

不好意思,发的急了,我是根据程序1做的板子,程序2的代码端口我调过之后板子上运行是正常的。只是我改过的放在另一个文件夹,上传的是原始文件,我怕最后改费了连原始文件都没了改过的端口是一模一样的,程序2正常跑,程序1仿真正常,板子上不行
回复

使用道具 举报

ID:1051434 发表于 2022-12-6 23:19 | 显示全部楼层
君工创 发表于 2022-12-5 13:19
通信端口不同,把端口调到对应位置。

端口一样的,改过了,传的急,程序2是原始文件,正常跑起来的是我改过端口的程序2,端口定义和程序1一样
回复

使用道具 举报

ID:1051434 发表于 2022-12-6 23:20 | 显示全部楼层
man1234567 发表于 2022-12-5 14:50
程序2能正常跑,移植到程序1中就可以

我是过,太多的宏定义和全局变量了,我没那个能力
回复

使用道具 举报

ID:384109 发表于 2022-12-6 23:29 | 显示全部楼层
查忙没处理好吧,两个半屏,应该要单独查忙的
回复

使用道具 举报

ID:1051434 发表于 2022-12-7 00:04 | 显示全部楼层
人中狼 发表于 2022-12-6 23:29
查忙没处理好吧,两个半屏,应该要单独查忙的

怎么处理请大佬指教,我百度上查了也是说有可能判忙出了问题
回复

使用道具 举报

ID:384109 发表于 2022-12-7 19:56 | 显示全部楼层
这种屏实际分为两个半屏控制的,查忙也要两个都查,要用对CS1和CS2引脚,有可以正确执行的代码,就可以对比一下两个代码的不同
回复

使用道具 举报

ID:1056468 发表于 2022-12-8 15:22 | 显示全部楼层
端口不一样,
回复

使用道具 举报

ID:349276 发表于 2022-12-8 18:01 | 显示全部楼层
可能是查忙问题。注意正确写命令字。确定能查到。仔细对比程序二。
回复

使用道具 举报

ID:728202 发表于 2022-12-8 18:30 | 显示全部楼层
有能跑的,就改改能跑的那个程序,修改显示的字体,应该就可以了。
回复

使用道具 举报

ID:401564 发表于 2022-12-9 14:29 | 显示全部楼层
1,新手入门,不要搞太复杂程序,你说你搞个俄罗斯方块.......我当初学12864的时候,第一个程序仅仅是显示一个字母"A",当"A"显示出来之后,这后面的事就好办多了
2,不要一拿到12864就先找一个别人程序来,自己也不看数据手册,然后就开始下手改程序,这基本上就是浪费时间,当然了,烧录一次,验证一下硬件电路是可以,你只要显示有图1那样的显示,就说明硬件电路是没有问题的,接下来就是去看12864的数据手册,然后再自己慢慢的写代码,也可以抄别人的代码,但不能直接复制,你要理解代码的意思
3,学习单片机,最好有开发板,自己画的,网上买的,都可以,洞洞板不适合新手学单片机,硬件太容易出问题了,有时候你可以花几天的时间去找代码的问题,最后却发现是板子没焊好
回复

使用道具 举报

ID:996773 发表于 2023-3-7 11:25 | 显示全部楼层
14楼说的对,搞定12864要一步步走,我还是用的串行加汇编语言,比常人更难走路

我是先用字库显示一个汉字,然后再自定义自己画点阵,使用32个字节,用两个字节

都是8个1,看看它点亮屏幕一直线,编程需要自己彻底领悟才能真正掌控玩的转
回复

使用道具 举报

ID:230500 发表于 2023-3-8 11:06 | 显示全部楼层
要学习还是要投入的; 新的太贵就去咸鱼买一套别人已经学会了退役下来的; 普中单片机试验箱; 一套也就50块;再去网上下载一个配套的普中视频教程;
15年前我买的郭天祥TX-1C ;当年360块;我就靠这板入门; ​
因为你自己焊的板子; 可能会有各种问题; 其次 拿一个别人不配套的软件烧进去;由于晶振频率不对; 延时也不准; 显示也就会有问题; 对于熟手来说可以自己改了;对于新手来说 就会无从下手; 最后什么也没学好; 时间全浪费在这种乱七八糟的硬件问题排查中了;
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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