找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2264|回复: 19
打印 上一主题 下一主题
收起左侧

为什么我的LCD12864显示程序无法在实物中显示出来?

  [复制链接]
跳转到指定楼层
楼主
ID:986562 发表于 2021-11-30 20:56 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
程序如下!!求求大佬教一下我!!!

单片机源程序如下:
  1. include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. sbit LCD_RS=P3^4;       //数据/命令选择端
  5. sbit LCD_RW=P3^6;       //读/写选择端
  6. sbit LCD_EN=P3^5;       //液晶使能控制

  7. uchar code dis_l1[]={"白日依山尽"};   //定义所要被显示的数据
  8. uchar code dis_l2[]={"黄河入海流"};
  9. uchar code dis_l3[]={"欲穷千里目"};
  10. uchar code dis_l4[]={"更上一层楼"};

  11. void delayms(uint ms)
  12. {
  13.    uint i,j;
  14.    for(i=ms;i>0;i++)
  15.       for(j=110;j>0;j--);
  16. }

  17. /*写指令到LCD中,指令通过单片机的P0口输入,
  18.   写指令操作顺序按照RS=0;RW=0;EN=0;延时;EN=1;写指令;延时;EN=0的顺序*/
  19. void write_comd(uchar cmd)
  20. {
  21.    LCD_RS=0;
  22.    LCD_RW=0;
  23.    LCD_EN=0;
  24.    delayms(5);
  25.    LCD_EN=1;
  26.    P0=cmd;
  27.    delayms(5);
  28.    LCD_EN=0;
  29. }
  30. /*写数据到LCD中,数据通过单片机的P0口输入,
  31.   写数据操作顺序按照RS=1;RW=0;EN=0;延时;EN=1;写数据;延时;EN=0的顺序*/
  32. void write_dat(uchar dat)
  33. {
  34.    LCD_RS=1;
  35.    LCD_RW=0;
  36.    LCD_EN=0;
  37.    delayms(5);
  38.    LCD_EN=1;
  39.    P0=dat;
  40.    delayms(5);
  41.    LCD_EN=0;
  42. }

  43. /*设定LCD的显示位置 X表示所要显示的行数,Y表示所要显示的列数*/
  44. void lcd_posi(uchar X,uchar Y)
  45. {
  46.    uchar posi;
  47.    if(X==1)
  48.       X=0x80;
  49.    else if(X==2)
  50.            X=0x90;
  51.            else if(X==3)
  52.                    X=0x88;
  53.                    else if(X==4)
  54.                         X=0x98;
  55.     posi=X+Y;
  56.     write_comd(posi);
  57. }

  58. /*LCD初始化*/
  59. void lcd_init()
  60. {
  61.    write_comd(0x30);     //LCD功能设定指令,采用八位数据,基本指令集
  62.    delayms(5);
  63.    write_comd(0x0c);     //LCD显示状态开关指令,显示开,游标开,不允许反白显示
  64.    delayms(5);
  65.    write_comd(0x01);    //LCD清除显示指令,清除LCD显示内容,为后面显示做准备
  66.    delayms(5);
  67. }


  68. void main()
  69. {
  70.    uchar i;
  71.    lcd_init();    //初始化

  72.    lcd_posi(1,0);//设定显示位置为第一行第一个字符
  73.    i=0;
  74.    while(dis_l1[i]!='\0')
  75.       {
  76.          write_dat(dis_l1[i]);//显示字符
  77.          i++;
  78.       }

  79.    lcd_posi(2,0);//设定显示位置为第二行第一个字符
  80.    i=0;
  81.    while(dis_l2[i]!='\0')
  82.       {
  83.          write_dat(dis_l2[i]);
  84.          i++;
  85.       }

  86.    lcd_posi(3,0);//设定显示位置为第三行第一个字符
  87.    i=0;
  88.    while(dis_l3[i]!='\0')
  89.       {
  90.          write_dat(dis_l3[i]);
  91.          i++;
  92.       }

  93.    lcd_posi(4,0);//设定显示位置为第四行第一个字符
  94.    i=0;
  95.    while(dis_l4[i]!='\0')
  96.       {
  97.          write_dat(dis_l4[i]);
  98.          i++;
  99.       }

  100. }
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:976493 发表于 2021-11-30 22:08 | 只看该作者
得用字库,给汉字取模,本不能直接显示汉字
回复

使用道具 举报

板凳
ID:97554 发表于 2021-12-1 08:52 | 只看该作者
996256177 发表于 2021-11-30 22:08
得用字库,给汉字取模,本不能直接显示汉字

如果是7920主控的话就自带字库的。
回复

使用道具 举报

地板
ID:584814 发表于 2021-12-3 08:54 | 只看该作者
大概率是硬件接法有问题,包括线序错误、跳线错误等。
查各器件与程序要求的是否一致,先显示个出任意个字符先。
点阵屏如果字库不符合要求(硬或软)、线序、时序等有问题是不会出东西的。
总之,先查器件与软件是否匹配,再查硬件接法有无问题,再查软件并调试就可以了。
象图中这种标准化的试验板,厂家都配有相关的试验程序可以直接用,然后在此基础上改更容易成功。
回复

使用道具 举报

5#
ID:908826 发表于 2021-12-7 22:15 | 只看该作者
你买这个开发板没给你12864的驱动吗???
回复

使用道具 举报

6#
ID:16255 发表于 2021-12-8 18:56 | 只看该作者
都舍不得把12864的排针焊接上吗?
回复

使用道具 举报

7#
ID:16255 发表于 2021-12-8 18:56 | 只看该作者
12864的对比度调好了没有?
回复

使用道具 举报

8#
ID:986562 发表于 2021-12-11 22:48 来自手机 | 只看该作者
mengsiu 发表于 2021-12-8 18:56
都舍不得把12864的排针焊接上吗?

不是的!是因为要和别的芯片焊,所以暂时先这样弄着
回复

使用道具 举报

9#
ID:401564 发表于 2021-12-11 23:38 | 只看该作者
1,线要焊上,在你没有保证程序完全正确的情况下,首先要保证的是硬件没有问题,你这种接法,它就是不显示,你并不能确定是软件出了问题,还是硬件出了问题
2,要以实际效果为主,仿真在12864一点用处都没有
3,看好引脚的排序,是不是这个方向,方向不对,屏幕一样的会亮的!插反了容易烧
4,看一下店家给的资料,这个带不带中文字库的,不带的话,要扫描显示的
回复

使用道具 举报

10#
ID:1012735 发表于 2022-4-21 07:50 | 只看该作者
有过这种遭遇,不过是我拧背后的罗丝显示出来字的,整个罗丝能显示的角度很窄,不超过90度
回复

使用道具 举报

11#
ID:1023254 发表于 2022-5-2 09:12 | 只看该作者
没有设置准双向看
回复

使用道具 举报

12#
ID:1023254 发表于 2022-5-2 09:12 | 只看该作者
没有设置准双向口
回复

使用道具 举报

13#
ID:121859 发表于 2022-5-2 10:23 | 只看该作者
第一,可能液晶选择不对,你的代码是控制带字库的12864的液晶的,如果你实物液晶是点阵液晶,就肯定无法正常显示了。
第二,硬件上找找原因,包括连线、焊接等。
回复

使用道具 举报

14#
ID:278457 发表于 2022-5-3 02:06 | 只看该作者
你的LCD12864是不是带字库的,如果不带你就要自己写编写一个属于自己的字库,程序帮你看过了,没有大的毛病.
回复

使用道具 举报

15#
ID:1023254 发表于 2022-5-9 09:01 | 只看该作者
设置管脚
回复

使用道具 举报

16#
ID:1013784 发表于 2022-5-10 02:08 | 只看该作者
注意对比度,还有接线之类的
回复

使用道具 举报

17#
ID:995256 发表于 2022-6-7 21:20 来自手机 | 只看该作者
我也遇见过类似的情况,应该是液晶显示器不带中文字库,换成纯英文
回复

使用道具 举报

18#
ID:230742 发表于 2022-6-7 23:52 | 只看该作者
把12864反过来拍个照。
回复

使用道具 举报

19#
ID:329625 发表于 2022-6-8 10:36 | 只看该作者
如果仿真没问题,就是需要调节背光
回复

使用道具 举报

20#
ID:965189 发表于 2022-6-8 12:12 | 只看该作者
液晶屏白茫茫,对比度调整好了吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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