标题: 求教用38译码器做位选的四位数码管电路能做到某一位闪烁吗 [打印本页]

作者: 非凡科技    时间: 2021-5-23 00:08
标题: 求教用38译码器做位选的四位数码管电路能做到某一位闪烁吗
想调节某一位数值时这一位的数字闪烁,试了几次没成功,求思路。
作者: nongweida    时间: 2021-5-23 02:57
用38译码器,一个数码管就要扫描输出,数码管多了恐怕显示起来就暗了!每个数码管都有一个共阴(阳)脚可以用来控制是否点亮这一数码管,一般控制多个数码管会选择一组8位IO口来输出数码管显示的数据,另外用几个io口控制是哪个数码管显示(如果控制多个数码管的话)如P0口整个接到a-g,用P1.0 P1.1 P1.2 P1.3 连接到4个数码管的共阳(阴)端,这样想控制数码管1显示数据只需将P1.0置高,用P0口输出想显示的数就好
作者: wulin    时间: 2021-5-23 08:08
在能够正常显示的条件下,只要在特定的时间段关闭显示就能达到某一位闪烁的目的。简单示例如下:

  1. #include <reg51.H>

  2. unsigned char code table[]={//共阴数码管段码"0~f"
  3.                 0x3f,0x06,0x5b,0x4f,
  4.                 0x66,0x6d,0x7d,0x07,
  5.                 0x7f,0x6f,0x77,0x7c,
  6.                 0x39,0x5e,0x79,0x71};
  7. unsigned char i;
  8. unsigned int j,k;
  9. bit b;

  10. void main()
  11. {
  12.         unsigned char x=2;//闪烁位范围0~3
  13.         while(1)
  14.         {
  15.                 P2&=0xe3;        //清138位码
  16.                 P2|=(i<<2);        //送138位码
  17.                 if(i==x && b==1)
  18.                         P0=0x00;//段码关闭显示
  19.                 else
  20.                         P0=table[i+1];//段码正常显示
  21.                 i=++i%4;//数码管动态扫描计数

  22.                 k=250;
  23.                 while(--k);//延时约1ms
  24.                 j++;
  25.                 if(j==500)
  26.                 {
  27.                         j=0;
  28.                         b=~b;//约500ms闪烁标志取反
  29.                 }
  30.         }
  31. }
复制代码





作者: 非凡科技    时间: 2021-5-23 10:27
wulin 发表于 2021-5-23 08:08
在能够正常显示的条件下,只要在特定的时间段关闭显示就能达到某一位闪烁的目的。简单示例如下:



感谢老师!我试试!
作者: 非凡科技    时间: 2021-5-23 10:27
nongweida 发表于 2021-5-23 02:57
用38译码器,一个数码管就要扫描输出,数码管多了恐怕显示起来就暗了!每个数码管都有一个共阴(阳)脚可以 ...

谢谢老师!
作者: 非凡科技    时间: 2021-5-23 17:52
已经搞定特别感谢wulin老师




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1