找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4024|回复: 13
收起左侧

关于单片机数码管不灭的原因

[复制链接]
ID:371895 发表于 2020-2-12 17:00 来自手机 | 显示全部楼层 |阅读模式
我的数码管是直接和单片机连接的,没有用锁存器之类的。在按住按键时本来数码管是全部灭的,因为按键有松手检测,一直在那里死循环。可是我的秒钟十位那个数码管却亮着,而程序和分钟的十位一样,分钟十位的数码管却是灭的,真是搞不懂啊,我已经换了一个IO楼还是不行的。
回复

使用道具 举报

ID:168996 发表于 2020-2-12 21:59 | 显示全部楼层
检查一下是不是消隐问题
回复

使用道具 举报

ID:272119 发表于 2020-2-12 22:32 | 显示全部楼层
你看下按下按键循环前单片机做的最后一个动作是啥,一般这个就是在按键循环前IO最后的状态没有清零.
回复

使用道具 举报

ID:235200 发表于 2020-2-12 23:34 | 显示全部楼层
换IO口当然不能解决问题,只能修改程序去控制IO口的电平状态符合你想要的结果才能做到
回复

使用道具 举报

ID:235200 发表于 2020-2-13 02:26 | 显示全部楼层
至少有4位数码管,分钟2位 ,秒钟2位,按键前数码管全灭,但按键后程序有相应的显示控制(数码管要点亮),你的问题是按键未松开时,秒钟的十位亮了,而分钟也控制了且与秒钟程序完全一样,我想你这4个数码管一定是采用动态显示方式,动态显示就要去控制某一位点亮(某一时间),通过分析刚才是这时你控制了秒钟的十位亮了,最关键的是按键未松开怎么会有控制(你提到一直在那里死循环),最有可能的是你的按键在按下去抖动了,即你以为是一次按键,殊不知程序认为按下了几次,这样分析不知道是不是能解决你的困惑
回复

使用道具 举报

ID:584814 发表于 2020-2-13 09:19 | 显示全部楼层
如果没有电平的转换指令,没有锁存也一样的效果。
回复

使用道具 举报

ID:281828 发表于 2020-2-13 10:22 | 显示全部楼层
不知道楼主的程序也搞不清现象,只能笼统的说了,一般都是设置一个数组做显示缓存,比如4位显示的数码时钟,设dat[4];调整小时的时候,显示数据为:
dat[0]=hour/10;
dat[1]=hour%10;
dat[2]=10;
dat[3]=10;
显示输出的时候就是;
for(i=0;i<4;i++)
{
Display_out(SEG7[dat[i]]);
****
}
其中:10的含义为------SEG7[10]=熄屏码,就是关闭不需要显示的数位。
回复

使用道具 举报

ID:462827 发表于 2020-2-13 12:56 | 显示全部楼层
程序有问题呗
回复

使用道具 举报

ID:371895 发表于 2020-2-13 14:49 | 显示全部楼层
banalsheep 发表于 2020-2-12 21:59
检查一下是不是消隐问题

谢谢,找到问题了,秒钟十位是放在数码管显示函数的最后一个,没有消隐,所以会显示。我现在也找到一个按住按键不放时会数码管会显示的方法,就是把显示函数放在松手检测死循环里了,具体见后面的程序截图。
回复

使用道具 举报

ID:371895 发表于 2020-2-13 14:51 | 显示全部楼层
不在一一回复谢谢各位了。
找到问题了,秒钟十位是放在数码管显示函数的最后一个,没有消隐,所以会显示。我现在也找到一个按住按键不放时会数码管会显示的方法,就是把显示函数放在松手检测死循环里了,具体见后面的程序截图。
回复

使用道具 举报

ID:371895 发表于 2020-2-13 14:56 | 显示全部楼层
程序部分截图
02.jpg
01.jpg
回复

使用道具 举报

ID:687694 发表于 2020-2-14 23:37 | 显示全部楼层
应该是扫描法驱动数码管的,一般扫描都会有最后一位显示过后不带消隐。如果想按键不妨碍显示,可以用分时序执行来解决。
回复

使用道具 举报

ID:377268 发表于 2020-2-15 14:48 来自手机 | 显示全部楼层
进去循环前把断码清零,
回复

使用道具 举报

ID:693613 发表于 2020-2-15 18:22 | 显示全部楼层
没有消隐,所以会显示
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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