找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2472|回复: 16
收起左侧

萌新求大神指导,为啥我写的程序数码管有时显示出来有时又是乱码

[复制链接]
ID:598622 发表于 2019-8-9 23:13 | 显示全部楼层 |阅读模式
这是我的写的程序,有时会显示两个8,然后我重启几次开发板后就显示不出来了,这是咋回事 求解答

#include<reg52.h>
sbit WE = P2^1;
sbit DU = P2^0;
void main()
{
  DU=1;
  P0=0x7f;
  DU=0;

  WE=1;
  P0=0xFC;
  WE=0;
  while(1);

}
                       



回复

使用道具 举报

ID:332444 发表于 2019-8-10 03:56 | 显示全部楼层
看门狗作用,应该把代码写到无限循环中
回复

使用道具 举报

ID:542954 发表于 2019-8-10 08:51 来自手机 | 显示全部楼层
数码管的显示一般都是用的扫描,得循环你的显示程序并且设置一个比较好的间隔比较好
回复

使用道具 举报

ID:437615 发表于 2019-8-10 09:58 | 显示全部楼层
要延时,还要有无限循还,最好先看下例程,
回复

使用道具 举报

ID:512979 发表于 2019-8-10 10:44 | 显示全部楼层
数码管的显示程序放到while(1)中无限循还
回复

使用道具 举报

ID:551606 发表于 2019-8-10 13:20 | 显示全部楼层
sbit WE = P2^1; sbit DU = P2^0;
回复

使用道具 举报

ID:598622 发表于 2019-8-11 10:29 | 显示全部楼层
xianfajushi 发表于 2019-8-10 03:56
看门狗作用,应该把代码写到无限循环中

放进去了也不行,能帮我改改吗?
回复

使用道具 举报

ID:554258 发表于 2019-8-11 12:28 | 显示全部楼层
DU=1;
   P0=0x7f;
delay(10);
   DU=0;

  WE=1;
   P0=0xFC;
delay(10);
   WE=0;
回复

使用道具 举报

ID:213173 发表于 2019-8-11 17:31 | 显示全部楼层
爱似麻烦 发表于 2019-8-11 10:29
放进去了也不行,能帮我改改吗?

程序没有明显毛病,位码P0=0xFC;当然是显示两个8,想要显示一个8,位码P0=0xFE;
发生乱码是因为段码和位码共用P0,对锁存器控制顺序就显得非常重要。修改如下:
#include<reg52.h>
sbit WE = P2^1;
sbit DU = P2^0;
void main()
{
  P0=0x7f;
  DU=1;
  DU=0;

  P0=0xFE;
  WE=1;
  WE=0;
  while(1);
}
回复

使用道具 举报

ID:598622 发表于 2019-8-11 21:34 | 显示全部楼层
zlzfc 发表于 2019-8-11 12:28
DU=1;
   P0=0x7f;
delay(10);

还是不行,可能是我的板子有问题
回复

使用道具 举报

ID:598622 发表于 2019-8-11 21:35 | 显示全部楼层
wulin 发表于 2019-8-11 17:31
程序没有明显毛病,位码P0=0xFC;当然是显示两个8,想要显示一个8,位码P0=0xFE;
发生乱码是因为段码和 ...

还是不行,可能我的板子有问题。 我看你在别的贴子的回复,是先消隐,然后送位码,再送段码。 我按照这个思路写也是不行  哭了。。困扰我2天了
回复

使用道具 举报

ID:462827 发表于 2019-8-11 23:15 | 显示全部楼层
不太是板子的问题,估计是你的程序写得不对,可以私聊帮你
回复

使用道具 举报

ID:213173 发表于 2019-8-12 06:58 | 显示全部楼层
爱似麻烦 发表于 2019-8-11 21:35
还是不行,可能我的板子有问题。 我看你在别的贴子的回复,是先消隐,然后送位码,再送段码。 我按照这个 ...

因为你的显示代码是一次性静态显示,不是循环动态显示,无需消隐。给你一个示例+仿真。 示例+仿真.zip (96.87 KB, 下载次数: 4)
回复

使用道具 举报

ID:598622 发表于 2019-8-14 21:54 | 显示全部楼层
wulin 发表于 2019-8-12 06:58
因为你的显示代码是一次性静态显示,不是循环动态显示,无需消隐。给你一个示例+仿真。

这两天工作好忙抱歉这么晚才回去。。。大神你给我一堆文件,我不是很懂,我用烧写程序只能下载一个DSQ.hex  然后我烧录之后发现还是那个样子,就是一会儿是乱码重启后又是8  然后重启又是乱码。。
回复

使用道具 举报

ID:598622 发表于 2019-8-14 21:55 | 显示全部楼层
hantu 发表于 2019-8-11 23:15
不太是板子的问题,估计是你的程序写得不对,可以私聊帮你

好的好的,我这两天工作太忙了 没及时回复。  我私聊你了
回复

使用道具 举报

ID:210139 发表于 2019-8-15 09:12 | 显示全部楼层
你要不程序放在 while(1){} 里面;你这样的操作等于单片机 执行一次就不在执行你的程序了,因为while(1){}里面是空的;把你要显示的程序,放在{}内,让单片机一直执行程序
回复

使用道具 举报

ID:213173 发表于 2019-8-16 07:09 | 显示全部楼层
爱似麻烦 发表于 2019-8-14 21:54
这两天工作好忙抱歉这么晚才回去。。。大神你给我一堆文件,我不是很懂,我用烧写程序只能下载一个DSQ.he ...

不知道你用的是什么样的开发板,从现象看有可能是P0没有接上拉电阻或P0还接有其它设备导致异常。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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