找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

仿真软件中使用锁存器无法实现单片机数码管动态显示的问题

查看数: 2127 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-9-14 11:01

正文摘要:

各位前辈,我最近重拾单片机,在实现数码管动态显示的时候遇到一个问题。我按照教程编写了使用两个锁存器实现数码管显示的代码,并使用定时器中断来进行延时的作用。当延时为1s时,可以实现前六个数码管分别从1-6流 ...

回复

ID:123289 发表于 2023-9-15 15:19
要点:
1、切换时间要尽可能短,让有效显示时间长,这样亮度才能达到最大。
2、切换前要准备好切换的数据,这样才能减少切换执行的指令。
3、切换动作的第一步是关显示,这样切换时的数据变化才不被显示,显示才不会混乱。
4、做切换动作。
5、最后一步,是打开新一显示。
切换步骤如下(切换过程仅在条指令):
1、U3 = 全关
2、U1 = 新的显示位数据(数据事先做好,如放在变量NEX_D中,在此取用)
3、U3 = 打开新显示位(数据事先做好,如放在变量NEX_W中,在此取用)
P0 = 全关 → U3.LE = 1使能 → U3.LE = 0锁存 → 关显示【消隐】
P0 = NEX_D → U1.LE = 1使能 → U1.LE = 0锁存 → 【切换显示数据】
P0 = NEX_W → U3.LE = 1使能 → U3.LE = 0锁存 → 【切换显示位】

你的错误是:
dula = 1;
错误:【这时Ux打开,但数据P0是混乱的,导致短暂显示不受控】
改正:【放在正确的数据准备好之后】   
P0 = table[numdu]
不佳:【C语言取数组中的数据,不止一条指令,也即占用时间长了】
最佳:【事先做 NEX_x = table[numdu],在此:P0 = NEX_x】
dula = 0【OK】

改正后:
P0 = NEX_x;【切换前准备好 NEX_x = table[numdu]】
dula = 1;
dula = 0;
ID:535881 发表于 2023-9-14 21:05
前两天我也遇到了,proteus上使用数码管必须消影。
当数码管切换到下一位时,这个数码管就会显示上一个数码管的数字,由于切换时间很短,一闪而过,给人一种影的感觉,为了不显示上一个数,应该在切换数码管之前把所有的灯关掉,这就是所谓的消影。
ID:272176 发表于 2023-9-14 15:41

谢谢老哥,修改成功。请问这是段选P0口赋值和位选P0口赋值相互之间的干扰吗?
我也刚意识到,上传的代码没有注释。感谢老哥!!
ID:161164 发表于 2023-9-14 14:08
要加消影
  1.                 if(aa==1)
  2.                 {
  3.                         aa = 0;
  4.                         numdu++;
  5.                         if(numdu==7)
  6.                         {
  7.                                 numdu = 1;
  8.                         }
  9.                         wela = 1;
  10.                         P0 = 0xFF;//消影
  11.                         wela = 0;
  12.                        
  13.                         dula = 1;
  14.                         P0 = table[numdu];
  15.                         dula = 0;

  16.                         wela = 1;
  17.                         P0 = tablewe[numwe];
  18.                         wela = 0;
  19.                         numwe++;
  20.                         if(numwe==6)
  21.                                 numwe = 0;

  22.                 }
复制代码



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

Powered by 单片机教程网

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