找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助大佬!我的LCD1602显示屏一直没有显示!

  [复制链接]
楼主
ID:161164 发表于 2021-7-6 11:02 | 显示全部楼层
kriswang 发表于 2021-7-6 09:45
怎么能够显示出来的,能不能教一下

如7楼所说的,delay里的数据类型不能改
先看楼主的代码


  1. void delay()   //延时1ms
  2. {
  3. unit i,j;
  4.    i=2;
  5.    j=239;
  6.    do
  7.     {
  8.           while(--j);
  9.         }while(--i);
  10. }
复制代码

看看代码是在干什么
j = 239 -> while(--j)
先把j减一,再看看是否不等于零(不等于零为真,等于零为假)
当减了239下,while(--j)会跳出进入do...while(--i)
i会被减一再进入while(--j)
重点来了,此是j已经是0,再减就会变回65535 (uint = unsigned int 范围是0~65535)
所以楼主的delay会轮回239 + 65536= 65775 次
如改为七楼的unsigned char(0~255)的delay则会轮回239 + 256 = 495 次
是楼主的132分之一
12T 8051在12Mhz 的运行速度大概是 2us一行
七楼的delay约等于1ms
而楼主的delay就要132ms
对于1602来说太久了

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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