8个数码管动态显示高位为0时怎么清除?

2020-02-08 09:13发布

显示有8个数码管 比如现在 显示的是 12345678  但是如果是 显示 00000001的话 我只需要他显示 一个 1  其他的 0 就全部熄灭
  如果是  00000010 的话  我只要他显示  10 其他的 0 也全部熄灭   

请求 这种算法 怎么实现  ?   谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
20条回答
vjcmain
2020-02-09 09:16
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned int flag=0;
unsigned char count=0;
unsigned int num=0;
//==================================================
const unsigned char seg[]={        0xC0, // 0
        0xF9, // 1
        0xA4, // 2
        0xB0, // 3
        0x99, // 4
        0x92, // 5
        0x82, // 6
        0xF8, // 7
        0x80, // 8
        0x90 // 9
};


//==================================================

//IO端口初始化
void PortInit(void)
{
        DDRA=0XFF;
        PORTA=0X00;
        DDRB=0XFF;
        PORTB=0XFF;
       
}

//Timer0初始化
void Timer0Init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x06; //set count
OCR0  = 0xFA;  //set compare
TCCR0 = 0x03; //start timer
}

//==================================================

//定时器0溢出中断服务程序
ISR(TIMER0_OVF_vect)
{
        TCNT0=0X06;
        flag++;
        count++;
        switch(count)
        {
                case 1:if(num/1000){PORTA=0X01;PORTB=seg[num/1000];}else PORTB=0XFF;break;
                case 2:if(((num/1000)+(num%1000/100))){PORTA=0X02;PORTB=seg[num%1000/100];}else PORTB=0XFF;break;
                case 3:if(((num/1000)+(num%1000/100)+(num%100/10))){PORTA=0X04;PORTB=seg[num%100/10];}else PORTB=0XFF;break;
                case 4:PORTA=0X08;PORTB=seg[num%10];break;
                case 6:count=0;break;
                default:break;
        }
        if (flag==100)
        {
                flag=0;
                num++;
                if(num==9999)
                {
                        num=0;
                }
        }
}

//==================================================

//主函数
int main(void)
{
        cli();
    TIMSK = 0x01; //timer interrupt sources
        PortInit();
        Timer0Init();
        sei();
       
        //在这继续添加你的代码
        while(1){
    ;
        }
}

一周热门 更多>