4位数码管扫描程序

[复制链接]
 楼主| ningling_21 发表于 2009-5-24 20:20 | 显示全部楼层 |阅读模式
void  display(void)
{  uint i,j;
   j=0xfe;
  for(i=0;i<4;i++)
  {
   P2=shu[tm[3-i]];
   P0=~(0x01<<i)|0x80;
  
   delay(2);
  }
  

  }

为何最后一位比其它的位亮?
zhaoyu2005 发表于 2009-5-24 20:22 | 显示全部楼层

可能是最后一位停留的时间长

李冬发 发表于 2009-5-24 20:59 | 显示全部楼层

哎,显示程序不是这样写的

Display$Temp:PROCEDURE PUB;
    Temp = Temperature / 16;
    Disp$Buf(0) = Char$Img(Temp MOD 10);
    Disp$Buf(1) = Char$Img((Temp / 10) MOD 10);
END Display$Temp;

System$Clock:PROCEDURE USING 1;
/* 1ms 一次 */
    MSecond$Cnt = MSecond$Cnt + 1;

    IF MSecond$Cnt MOD 4 = 0 THEN
    DO;
        LED1 = 1;
        LED2 = 1;
        P1 = Disp$Buf(Disp$Buf$Ptr);
        IF Disp$Buf$Ptr = 0 THEN
            LED1 = 0;
        ELSE IF Disp$Buf$Ptr = 1 THEN
            LED2 = 0;

        Disp$Buf$Ptr = Disp$Buf$Ptr + 1;
        IF Disp$Buf$Ptr >= 2 THEN
            Disp$Buf$Ptr = 0;
    END;

    IF MSecond$Cnt < 1000 THEN
        RETURN;
        
    MSecond$Cnt = 0;
    Second = Second + 1;

    IF FanOutDelay > 0 THEN
        FanOutDelay = FanOutDelay - 1;

END System$Clock;


/*=========================================================================*/
clk$Inter: PROCEDURE INTERRUPT 1 USING 1;
    TR0 = 0;
    TH0 = HIGH(-Timer0Cnt + 34);
    TL0 = LOW(-Timer0Cnt + 34);
    TR0 = 1;

    CALL System$Clock;
END clk$Inter;
 楼主| ningling_21 发表于 2009-5-24 21:22 | 显示全部楼层

楼上写的怎么那么乱呢?

mcufan001 发表于 2009-5-25 00:22 | 显示全部楼层

要这么做~~

在void  display(void)里,
for循环完了,把数码管全部关掉,最后一位的亮度就一致了,一般人我不告诉他!

不过显示程序最好用定时器中断~~
 楼主| ningling_21 发表于 2009-5-25 07:44 | 显示全部楼层

多谢提醒!

显示程序为何用定时器中断?
xzq1019 发表于 2009-5-25 09:22 | 显示全部楼层

看我的博客,里面有定时器中断扫描的程序。

http://xzq1019.blog.163.com/

博客里我是用Atmega8单片机做的4位数码管扫描程序
有电路图和程序,都是经过本人通过ICC编译器编译通过的
硬件也调试稳定了。各位可以参考~
smileagain 发表于 2009-5-25 21:40 | 显示全部楼层

to 6楼

显示程序用中断的好处是:如果不用中断的话,则扫描延时需要占用大量的CPU时间
如果CPU还想做点别的,那么就会造成数码管闪烁或变暗
 楼主| ningling_21 发表于 2009-5-25 22:06 | 显示全部楼层

多谢楼上几位指点迷津

saul2006 发表于 2009-5-26 09:02 | 显示全部楼层

5楼正解,

要关掉的,不然会拖影
李冬发 发表于 2009-5-29 22:40 | 显示全部楼层

4L,我这个程序还会乱啊?你当是C代码啦

hotyong 发表于 2009-5-29 23:25 | 显示全部楼层

re:

3楼貌似什么Basic语言吧,,
$应该不是运算符之类的吧,,难道高手们喜欢用"$"?看起来怪怪的呀,,应该就是一般的字符,如"_"  ??
OUCHANGHUA 发表于 2010-8-3 15:59 | 显示全部楼层
大侠前辈们我有这个问题,,能帮解决下吗,,
https://bbs.21ic.com/frame.php?fr ... c.com/icnewest.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5014

主题

17806

帖子

51

粉丝
快速回复 在线客服 返回列表 返回顶部