C 2位七段显示器
我正在为一个计数高达99的两位数七段显示器编码,它在一个足够快的计时器函数中被调用,因此两个数字同时显示,没有闪烁。 然而,显示器没有输出我想要的正确数字 对于分数为0到9的情况,它会在SSD的右侧显示该值, 然而,一旦点击10,它将显示11而不是10,因此它将在左右两侧显示十的数字。我不确定我的代码中的错误是什么,因此我需要修复,以便它显示右侧代码的正确数字。不过,我得到的是左侧十位数的正确显示,所以唯一的问题是右侧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
// 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
或更多。