|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
如何解决数码管复位瞬间偶尔乱显示的问题 |
作者:xinking500 栏目:单片机 |
我用2051做了个时钟电路,用数码管显示时间,当按下复位按钮瞬间,数码管偶尔会出现乱显示,即花屏,瞬间而已,这种几率,按10次复位会出现2次,不知道为什么? |
2楼: | >>参与讨论 |
作者: huxiangbin 于 2006/8/15 20:44:00 发布:
硬件和软件都有可能造成此现象 请上传图片和软件。 |
3楼: | >>参与讨论 |
作者: xinking500 于 2006/8/15 20:58:00 发布:
本来应该显示1-9, 但实际不知道显示啥东西? |
4楼: | >>参与讨论 |
作者: conwh 于 2006/8/15 21:35:00 发布:
很有可能是关键字没有被保护 |
5楼: | >>参与讨论 |
作者: xinking500 于 2006/8/15 21:51:00 发布:
楼上的朋友可以说清楚一点吗? 我的程序太到了,不方便传上来. 这种现象不是常发生的呀,10次就只有一次 |
6楼: | >>参与讨论 |
作者: conwh 于 2006/8/15 22:06:00 发布:
你是否使用了看门狗? 你的复位是硬件复位,既RESET是高电位,还是指你的系统复位? 前面的我看错了,以为是中断引起的乱码 |
7楼: | >>参与讨论 |
作者: xinking500 于 2006/8/15 22:33:00 发布:
我没有使用看门狗,是热键复位不是上电复位,谢谢~ |
8楼: | >>参与讨论 |
作者: sanwa_chen 于 2006/8/16 15:59:00 发布:
那上电复位就没有这样的问题么? 查查看你接数码管的IO口,在复位时是处于什么状态,再看看你的连线图,在你不作初始化的时候,IO口的复位状态会导致数码管怎样。检查你的复位初始化流程。 |
9楼: | >>参与讨论 |
作者: xinking500 于 2006/8/16 17:36:00 发布:
这个现象出现在复位键按下去的时候,松开按键一切恢复正常 |
10楼: | >>参与讨论 |
作者: conwh 于 2006/8/17 1:24:00 发布:
显示是采用中断方式? 如果是这样可能是没有对PSW和A以及Ri没有保护造成的 |
11楼: | >>参与讨论 |
作者: xinking500 于 2006/8/17 10:03:00 发布:
显示不是用中断,用的是查询 |
12楼: | >>参与讨论 |
作者: xinking500 于 2006/8/17 10:05:00 发布:
这个现象不常出现,所以很头疼,不知道怎么避免 |
13楼: | >>参与讨论 |
作者: zhangjins 于 2006/8/17 10:38:00 发布:
问题解决了吗? 首先搞明白问题是出在硬件上还是软件上,因为修改软件比检查硬件要容易的多,所以最好先从软件入手解决. 这里有一点楼主还没说清,就是复位键指的是单片机系统的复位,还是时钟电路(我的意思是指单片机没有被复位,复位仅指时钟的一个功能,比如重新回到12:00)。这里我按单片机系统复位分析一下,我分析事情并不是像楼主所说的那样乱闪出现在按下复位键的瞬间,复位是在瞬间完成,单片机首先按着程序执行初始化命令,当初始化完成之后,才会进入到你的主循环中去。我想乱闪正式出现在初始化过程中,在你未对显示驱动发送初始化命令时,显示会有一瞬间处于不定状态,出现非0-9的显示内容是很正常的,而初始化很快完成,进入到主循环中后显示内容被刷新,自然也就恢复了过来。建议你在程序中把显示驱动的初始化放在比较靠前的位置上,必要时可以在开机瞬间先关闭显示。 如果通过修改软件还不能解决问题,那就检查你的硬件。 因为你说是在按下复位键瞬间出现乱码,而不是在上电瞬间,我想软件上出现问题的可能性更大。 * - 本贴最后修改时间:2006-8-17 10:42:21 修改者:zhangjins |
14楼: | >>参与讨论 |
作者: xinking500 于 2006/8/17 10:57:00 发布:
好的,谢谢楼上热心的朋友,我先按照您的意思试试! |
15楼: | >>参与讨论 |
作者: xinking500 于 2006/8/17 11:03:00 发布:
我的复位指的是单片机的复位,重新从0000h地址开始 还有一个问题请教一下,程序是在按下键后开始从头运行,还是等松开按键后才运行的.我松开按键后程序才开始运行,而出错是在按键按下去的这个过程,按下不松开,一直显示乱码,松开按键后即恢复正常,这样可以说明初试化没问题吗? |
16楼: | >>参与讨论 |
作者: zhangjins 于 2006/8/17 13:47:00 发布:
这样看来乱码出现在单片机不工作的时候 根据你的叙述,乱码出现在单片机不工作的过程中,也就是还没有执行程序的时候。虽然这不能断定初始化没问题,但可大致确定乱码的出现是由于单片机不工作时,其与数码管驱动芯片的数据线或控制线在单片机复位时的状态有关。不知数码管驱动你用的是什么芯片,你再查一下复位过程中单片机各口线是什么状态,在这种状态下,数码管驱动会输出什么内容,和你看到的显示内容是否吻合? |
17楼: | >>参与讨论 |
作者: xinking500 于 2006/8/17 16:27:00 发布:
谢谢楼上的兄弟.问题解决了 初始化是没问题. 问题也的确是出现在单片机不工作的时候 我用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 于 2006/8/17 17:31:00 发布:
回复 其实可以在单片机送复位数据的时候 先让数码管全部熄灭 等数据送好后再选通数码管 |
19楼: | >>参与讨论 |
作者: dengm 于 2006/8/17 19:10:00 发布:
把图贴上 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |