找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新手求教,刚学12864代码调了好久,电位器也拧了好久,就是只亮不显示

[复制链接]
回帖奖励 5 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主


  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code ta1[]=" Hello 杜甫";
  5. uchar code ta2[]="E点电子工作室";
  6. uchar code ta3[]="落霞与孤鹜齐飞";
  7. uchar code ta4[]="秋水共长天一色";
  8. sbit RS=P3^5;
  9. sbit RW=P3^6;
  10. sbit EN=P3^4;
  11. sbit PSB=P3^7;
  12. void delayms(uint ms)
  13. {
  14.    uint x,y;
  15.    for(x=0;x<ms;x++)
  16.      for(y=0;y<113;y++);
  17. }
  18. void dectbusybit() //忙检测
  19. {
  20.    P0=0xff;
  21.    RS=0; //读指令
  22.    RW=1;
  23.    EN=1;
  24.    while(P0&0x80);//如果液晶是忙,停在这里
  25.    delayms(5);
  26.   }
  27. void lcd_wrcom(uchar com) //写指令函数
  28. {
  29.    dectbusybit();
  30. RS=0;
  31. RW=0;
  32. EN=1;
  33. P0=com;
  34. delayms(1);
  35. EN=0;
  36.   }
  37. void lcd_wrdat(uchar dat)
  38. {
  39.    dectbusybit();
  40. RS=1;
  41. RW=0;
  42. EN=1;
  43. P0=dat;
  44. delayms(1);
  45. EN=0;
  46.   }
  47. void lcd_init()
  48. {
  49.   lcd_wrcom(0x30);//八位数据接口,基本指令
  50.    delayms(5);
  51.    lcd_wrcom(0x0c);//开显示设置光标不显示不反白
  52.    delayms(5);
  53.    lcd_wrcom(0x01);//清屏
  54.    delayms(20);
  55.    }
  56. void lcd_wraddr(uchar x,uchar y)
  57. {
  58.   uchar X,Z;
  59.   if(x==1)
  60.   {
  61.      X=0x80;
  62.   }
  63. else if(x==2)
  64. {
  65.    X=0x90;
  66.    }
  67. else if(x==3)
  68. {
  69.    X=0x88;
  70.    }
  71. else if(x==4)
  72. {
  73.    X=0x98;
  74.    }
  75. Z=X+y;
  76. lcd_wrcom(Z);
  77. }
  78. void main()
  79. {
  80.   uchar i;
  81.   lcd_init();
  82.   delayms(5);
  83.   while(1)
  84.   {
  85.     lcd_wraddr(1,0);//第1行第1列
  86.     while(ta1[i]!='\0');
  87. {  
  88.    lcd_wrdat(ta1[i]);
  89.    i++;
  90. delayms(5);
  91. }
  92.   lcd_wraddr(2,0);//第2行第1列
  93.     while(ta2[i]!='\0');
  94. {  
  95.    lcd_wrdat(ta2[i]);
  96.    i++;
  97. delayms(5);
  98. }
  99. lcd_wraddr(3,0);//第3行第1列
  100.     while(ta3[i]!='\0');
  101. {  
  102.    lcd_wrdat(ta3[i]);
  103.    i++;
  104. delayms(5);
  105. }
  106. lcd_wraddr(4,0);//第4行第1列
  107.     while(ta4[i]!='\0');
  108. {  
  109.    lcd_wrdat(ta4[i]);
  110.    i++;
  111. delayms(5);
  112. }
  113. while(1);
  114. }
  115. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:96682 发表于 2017-11-13 13:54 | 只看该作者
首要排除的是不是用错了液晶屏(有/无字库液晶屏),再查其它的原因
回复

使用道具 举报

板凳
ID:229016 发表于 2017-11-13 16:30 | 只看该作者
我用的是QC系列的,应该是有字库液晶屏
回复

使用道具 举报

地板
ID:229016 发表于 2017-11-13 18:20 | 只看该作者
很急,麻烦大神帮忙看看,这个模块没解决,后面的没法进行了
回复

使用道具 举报

5#
ID:140489 发表于 2017-11-14 09:07 | 只看该作者
这个程序是刘平《深入浅出玩转单片机》书里面的,程序没问题的,仔细检查硬件有没有错
回复

使用道具 举报

6#
ID:240206 发表于 2017-11-14 09:27 | 只看该作者
根据电路图 检查硬件的连接
回复

使用道具 举报

7#
ID:229016 发表于 2017-11-15 19:00 | 只看该作者
lids 发表于 2017-11-14 09:07
这个程序是刘平《深入浅出玩转单片机》书里面的,程序没问题的,仔细检查硬件有没有错

一看就是老手,刘平老师的,再看看,谢谢啦!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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