找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10258|回复: 8
打印 上一主题 下一主题
收起左侧

单片机数码管消影的问题解决

[复制链接]
跳转到指定楼层
楼主
一直以来就被单片机数码管消影问题困扰,网上查了资料都说是加个P0=00(共阴数码管),加了后没啥变化,还是会有重影,今天突发奇想,P0=0x00后加了dula=1;dula=0;这两句,问题解决了,我想应该是dula=1;dula=0;这两句加了后地址锁存器才会执行,单单加句P0=0x00是没用的。         (附数码管部分代,经常写的人应该看得懂,另附两种效果图)

消影之前的效果:


消影后:


单片机源程序如下:

  1. uchar code table1[]={0x3f,0x06,0x5b,0x4f,
  2.                                0x66,0x6d,0x7d,0x07,
  3.                                0x7f,0x6f,0x77,0x7c,
  4.                                0x39,0x5e,0x79,0x71,0x00};
  5. uchar code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  6. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)//显示6位数码管{
  7.          P0=table2[0];         
  8.          wela=1;
  9.          wela=0;
  10.          P0=table1[a];         
  11.          dula=1;
  12.          dula=0;         
  13.          delay(1);   
  14.          P0=0x00;dula=1;dula=0;//消影

  15.          P0=table2[1];         
  16.          wela=1;
  17.          wela=0;
  18.          P0=table1[b];         
  19.          dula=1;
  20.          dula=0;         
  21.          delay(1);         
  22.          P0=0x00;dula=1;dula=0;//消影

  23.          P0=table2[2];         
  24.          wela=1;
  25.          wela=0;
  26.          P0=table1[c];         
  27.          dula=1;
  28.          dula=0;        
  29.          delay(1);         
  30.          P0=0x00;dula=1;dula=0;//消影

  31.          P0=table2[3];         
  32.          wela=1;
  33.          wela=0;
  34.          P0=table1[d];         
  35.          dula=1;
  36.          dula=0;         
  37.          delay(1);         
  38.          P0=0x00;dula=1;dula=0;//消影

  39.          P0=table2[4];         
  40.          wela=1;
  41.          wela=0;
  42.          P0=table1[e];         
  43.          dula=1;
  44.          dula=0;     
  45.          delay(1);         
  46.          P0=0x00;dula=1;dula=0;//消影

  47.          P0=table2[5];         
  48.          wela=1;
  49.          wela=0;
  50.          P0=table1[f];         
  51.          dula=1;
  52.          dula=0;         
  53.          delay(1);         
  54.          P0=0x00;dula=1;dula=0;//消影
  55. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:386381 发表于 2018-10-2 09:36 来自手机 | 只看该作者
对的,对的,楼主这个方法非常好
回复

使用道具 举报

板凳
ID:282519 发表于 2018-10-2 13:36 来自手机 | 只看该作者
文凤轩 发表于 2018-10-2 09:36
对的,对的,楼主这个方法非常好

一起学习,分享经验
回复

使用道具 举报

地板
ID:900585 发表于 2021-4-4 15:16 | 只看该作者
会导致最后一位一直是8.
回复

使用道具 举报

5#
ID:895440 发表于 2021-4-4 16:50 | 只看该作者
我用的定时器定时,然后显示新的数据前,清空之前的
回复

使用道具 举报

6#
ID:142320 发表于 2021-4-5 10:30 | 只看该作者
这是你对硬件不理解造成的,你的数据发竤后得加段码控制才可以,要么直接控制位选,一直说一直说

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:74784 发表于 2021-4-5 15:46 | 只看该作者
gujp312365 发表于 2021-4-5 10:30
这是你对硬件不理解造成的,你的数据发竤后得加段码控制才可以,要么直接控制位选,一直说一直说

说的就是啊。
在初始化里先关闭全部的显示。

在显示代码里
先送数据到要显示的那一位,
显示完毕后关闭它,
然后再去做下一位的显示,
这样就不会有怪问题出现啦。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:777834 发表于 2021-4-5 17:45 来自手机 | 只看该作者
慧星的开发板?
回复

使用道具 举报

9#
ID:1079727 发表于 2023-8-9 01:23 | 只看该作者
说的太好了,解决了问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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