急!急!小白问一个关于1602显示的问题

2019-07-15 20:25发布

本帖最后由 dingwenke 于 2014-3-28 20:46 编辑

事情是这样的,小白编写了一个51单片机驱动1602LCD的小程序,希望显示的内容是:第一行,空两格+welcome!!  第二行,空一格+I am LCD。结果程序烧入单片机后显示第一行没有空格,但第二行正常,即第一行,welcome!!  第二行,空一格+I am LCD。(这个程序是分为三个文件,一个main.c文件,一个1602.c文件,一个1602.h文件,模块化编程嘛。。结果不成功)                 后来小白又重新编了一边,程序内容几乎和第一个程序完全相同,只是把所有东西都弄到main.c里面了,即只有一个main.c文件,令人意外的是这样就正确显示了。。鼓捣好几天也没有一点头绪,请大神们指点指点。。。小白把程序和1602的文档压缩成附件了。。第一次发帖,不知道合不合规矩
1602.zip 下载积分: 积分 -1 分
596.65 KB, 下载次数: 4, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
少年农民工
1楼-- · 2019-07-15 22:52
这么奇葩的问题!!期待大神解答!!
dingwenke
2楼-- · 2019-07-16 01:10
少年农民工 发表于 2014-3-28 21:03
这么奇葩的问题!!期待大神解答!!

不用了,我找到原因所在了,while(--i);和while(i--);这两者的问题。本来以来这两个语句在延时的时候差别很小,可以忽略的,所以我两次编的程序其中这地方有点不一样,开始没放心上,后来又试了下,就找到问题所在了。。。还有,我说的显示的时候空格显示不出,是因为延时不够的原因。。看到的同志们可以引以为戒     最后,while(--i);和while(i--)这两个语句差别怎么会这么大?希望有懂得大神解释下      唉,让这个问题纠结了好几天,结果居然是这么不起眼的地方出错误。。。。
olive2003
3楼-- · 2019-07-16 02:59
程序没看。
单单说while(--i);和while(i--)的话
while(--i)是i自减1后执行后面的,while(i--)是执行完后面的语句再自减;
举个例子,i初值为2时,while(--i)则语句循环一次;while(i--)循环两次(当然前提是while循环语句里面不改变i的值)。

一周热门 更多>