登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

如何解决数码管复位瞬间偶尔乱显示的问题

作者:xinking500 栏目:单片机
如何解决数码管复位瞬间偶尔乱显示的问题
我用2051做了个时钟电路,用数码管显示时间,当按下复位按钮瞬间,数码管偶尔会出现乱显示,即花屏,瞬间而已,这种几率,按10次复位会出现2次,不知道为什么?

2楼: >>参与讨论
huxiangbin
硬件和软件都有可能造成此现象
请上传图片和软件。

3楼: >>参与讨论
xinking500
本来应该显示1-9,
但实际不知道显示啥东西?

4楼: >>参与讨论
conwh
很有可能是关键字没有被保护
 
5楼: >>参与讨论
xinking500
楼上的朋友可以说清楚一点吗?
我的程序太到了,不方便传上来.
这种现象不是常发生的呀,10次就只有一次

6楼: >>参与讨论
conwh
你是否使用了看门狗?
你的复位是硬件复位,既RESET是高电位,还是指你的系统复位?
前面的我看错了,以为是中断引起的乱码

7楼: >>参与讨论
xinking500
我没有使用看门狗,是热键复位不是上电复位,谢谢~
 
8楼: >>参与讨论
sanwa_chen
那上电复位就没有这样的问题么?
查查看你接数码管的IO口,在复位时是处于什么状态,再看看你的连线图,在你不作初始化的时候,IO口的复位状态会导致数码管怎样。检查你的复位初始化流程。

9楼: >>参与讨论
xinking500
这个现象出现在复位键按下去的时候,松开按键一切恢复正常
 
10楼: >>参与讨论
conwh
显示是采用中断方式?
如果是这样可能是没有对PSW和A以及Ri没有保护造成的

11楼: >>参与讨论
xinking500
显示不是用中断,用的是查询
 
12楼: >>参与讨论
xinking500
这个现象不常出现,所以很头疼,不知道怎么避免
 
13楼: >>参与讨论
zhangjins
问题解决了吗?
首先搞明白问题是出在硬件上还是软件上,因为修改软件比检查硬件要容易的多,所以最好先从软件入手解决.
这里有一点楼主还没说清,就是复位键指的是单片机系统的复位,还是时钟电路(我的意思是指单片机没有被复位,复位仅指时钟的一个功能,比如重新回到12:00)。这里我按单片机系统复位分析一下,我分析事情并不是像楼主所说的那样乱闪出现在按下复位键的瞬间,复位是在瞬间完成,单片机首先按着程序执行初始化命令,当初始化完成之后,才会进入到你的主循环中去。我想乱闪正式出现在初始化过程中,在你未对显示驱动发送初始化命令时,显示会有一瞬间处于不定状态,出现非0-9的显示内容是很正常的,而初始化很快完成,进入到主循环中后显示内容被刷新,自然也就恢复了过来。建议你在程序中把显示驱动的初始化放在比较靠前的位置上,必要时可以在开机瞬间先关闭显示。
如果通过修改软件还不能解决问题,那就检查你的硬件。
因为你说是在按下复位键瞬间出现乱码,而不是在上电瞬间,我想软件上出现问题的可能性更大。

* - 本贴最后修改时间:2006-8-17 10:42:21 修改者:zhangjins

14楼: >>参与讨论
xinking500
好的,谢谢楼上热心的朋友,我先按照您的意思试试!
 
15楼: >>参与讨论
xinking500
我的复位指的是单片机的复位,重新从0000h地址开始
还有一个问题请教一下,程序是在按下键后开始从头运行,还是等松开按键后才运行的.我松开按键后程序才开始运行,而出错是在按键按下去的这个过程,按下不松开,一直显示乱码,松开按键后即恢复正常,这样可以说明初试化没问题吗?

16楼: >>参与讨论
zhangjins
这样看来乱码出现在单片机不工作的时候
根据你的叙述,乱码出现在单片机不工作的过程中,也就是还没有执行程序的时候。虽然这不能断定初始化没问题,但可大致确定乱码的出现是由于单片机不工作时,其与数码管驱动芯片的数据线或控制线在单片机复位时的状态有关。不知数码管驱动你用的是什么芯片,你再查一下复位过程中单片机各口线是什么状态,在这种状态下,数码管驱动会输出什么内容,和你看到的显示内容是否吻合?

17楼: >>参与讨论
xinking500
谢谢楼上的兄弟.问题解决了
初始化是没问题.
问题也的确是出现在单片机不工作的时候
我用6B595来驱动7段显示码,当按复位键的时候,控制6B595锁存信号的单片机引脚输出高电平,这样就可能出现当我送到6B595的8位数据还没送完,就锁存了.
我的解决办法如下:
sbit d_st=P1^7;

P1=0xfe;//定义为输出
  d_st=1;//锁存信号
  d_st=0;
  P1=0xff;//定义为输入,这样在复位时就不会送出高电平了
void seg_out(uchar uy)
{
uchar j;
  for(j=0;j<8;j++)
  {
   
   d_clk=0;
  
   if(uy&0x80)
   d_dat=1;
   else d_dat=0;
   uy<<=1;
   
   d_clk=1;
  }
}


18楼: >>参与讨论
feynman521
回复
 其实可以在单片机送复位数据的时候 先让数码管全部熄灭

  等数据送好后再选通数码管

19楼: >>参与讨论
dengm
把图贴上
 
参与讨论
昵称:
讨论内容:
 
 
相关帖子
问一个弱问题,标准51在12M下P口最高速度能达到多少?
求助:flash的时钟上升下降时间有没有要求?
奉献:AT45DB041读写程序
p89v51rd2的isp功能,使用flash magic
请教keil 的调试
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号