2位七段显示

2 digit seven segment display

我正在为一个计数为 99 的两位数七段显示器编码,它在一个足够快的定时器函数中被调用,因此两个数字同时显示而没有闪烁。 但是显示器没有输出我想要的正确数字 对于分数为 0 到 9 的情况,它会在 SSD 的右侧显示, 然而,一旦它达到 10,它就会显示 11 而不是 10,因此它会在左右两侧显示十位数字。我不确定我的代码中有什么错误,因此我需要修复它才能为右侧的代码显示正确的数字。不过,我得到的是左侧十位数的正确显示,所以唯一的问题是右侧。

// 0 = right digit; 1 = left digit.
volatile uint8_t seven_seg_cc = 0; 

    void seven_segment_display(){
        uint8_t score = get_score();
        seven_seg_cc = 1 ^ seven_seg_cc;

        if (score < 10){
            PORTC = seven_segment_display_one[score];
        }
        else if(score >= 10){
            if(seven_seg_cc == 0){
                //Display right dig
                PORTC = seven_segment_display_one[(score/10)%10];
            }else{
                //Display left dig
                PORTC = seven_segment_display_one[score/10];
            }
            PORTA = (seven_seg_cc << DDRA4);
        }
     }


您只需要最右边数字的模数

        if(seven_seg_cc == 0){
            //Display right dig
            //PORTC = seven_segment_display_one[(score/10)%10];
            PORTC = seven_segment_display_one[score%10];
        }else{
            //Display left dig
            PORTC = seven_segment_display_one[score/10];
        }