Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 2位七段显示器_C_Loops_Avr_Seven Segment Display - Fatal编程技术网

C 2位七段显示器

C 2位七段显示器,c,loops,avr,seven-segment-display,C,Loops,Avr,Seven Segment Display,我正在为一个计数高达99的两位数七段显示器编码,它在一个足够快的计时器函数中被调用,因此两个数字同时显示,没有闪烁。 然而,显示器没有输出我想要的正确数字 对于分数为0到9的情况,它会在SSD的右侧显示该值, 然而,一旦点击10,它将显示11而不是10,因此它将在左右两侧显示十的数字。我不确定我的代码中的错误是什么,因此我需要修复,以便它显示右侧代码的正确数字。不过,我得到的是左侧十位数的正确显示,所以唯一的问题是右侧 // 0 = right digit; 1 = left digit. vo

我正在为一个计数高达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);
        }
     }


//0=右位;1=左数字。
易失性uint8七段cc=0;
无效七段显示(){
uint8_t score=获取_score();
七段cc=1^七段cc;
如果(分数<10){
PORTC=七段显示一[分数];
}
否则如果(分数>=10){
如果(七段cc==0){
//显示右挖
PORTC=七段显示一[(分数/10)%10];
}否则{
//显示左挖
PORTC=七段显示一[分数/10];
}

PORTA=(seven_seg_cc最右边的数字只需要模数

        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];
        }

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

        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];
        }

语句
seven\u seg\u cc=1^seven\u seg\u cc;
出现错误。
seven\u seg\u cc
以前没有定义。抱歉,seven\u seg\u cc定义了它是
//显示的七段显示数字//0=右数字;1=左数字。volatile uint8\u t seg\u cc=0;
@John3136我们想同时显示这两个数字,所以基本上是什么我们要做的就是将seven_seg_cc快速地变为0,然后变为1,这样两个数字就可以同时显示。这是什么奇怪的东西:
PORTA=(seven_seg_cc@Lundin)这段代码已经被稍微修改为已经给我们的代码,所以我为这段代码道歉"因为这就是我们被教导的方式,我复制了给我们的例子。语句
seven_seg_cc=1^seven_seg_cc;
似乎是错误的。
seven_seg_cc
以前没有定义。很抱歉,seven_seg_cc定义为
//正在显示的七段显示数字//0=右数字;1=左digit.volatile uint8_t seven_seg_cc=0;
@John3136我们想同时显示这两个数字,所以基本上它所做的是将seven_seg_cc翻转为0,然后非常快地翻转为1,所以两个数字同时显示这是什么奇怪的东西:
PORTA=(seven_seg_cc@Lundin此代码已被略微更改为已提供给我们的代码,因此我为以下原因道歉:"因为这就是我们被教导的方式,我复制了给我们的例子。非常感谢,我一直在努力解决这个问题,现在你可能还想防止
分数
100
或更多。非常感谢,我一直在努力解决这个问题,现在你您还希望防止
得分
值为
100
或更多。