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