我有一个功能,可以显示使用多路复用的7段显示的编号。根据我所知道的如何进行多路复用,您需要在禁用第二段时启用您希望显示的fisrt段,并打印第二段,您需要禁用第一段并启用第二段,然后您需要放置这是一个无限循环,以便数据成功打印。
现在我的问题是要显示的数据正在发生变化,并且需要不断更新,但在我的代码中,我无法更新无限循环内的数据,因此它被卡在其收到的第一个值中。
我的代码:
对于我的主要功能:
Void main(){
while(1){
displaytemp(TEMP);
}
}
Void displaytemp(int temp){
While(1){
Int tens = temp/10;
Int ones = temp%10;
Print(tens);
Enable first 7seg
Disable second 7seg
Delay();
Print(ones);
Disable first 7seg
Enable second 7seg
}
}
TEMP来自中断源,如果我不将其置于无限循环内,它会不断更新,但它只能显示1位数。 TEMP是整个房间的温度。
答案 0 :(得分:1)
你有2个无限循环 - 内循环(在displaytemp中)阻塞第一个循环。这是处理它的一种方法:
void main(){
while(true){
int temperature = get_temp();
display_digit(first, temp/10);
display_digit(second, temp%10);
}
}
void display_digit(segment, int digit){
if (segment == first) enable_7seg(first);
else disable_7seg(first);
if (segment == first) enable_7seg(second);
else disable_7seg(second);
Print(digit);
Delay();
}