我正在尝试为液晶屏制作一个计时器。我通常不会编程,因为它与我的学位无关,但我认为我会这样做很有趣。我正在使用朋友设计的内置图书馆
我在下面设计了if循环,只是我的循环上的一些快速信息。
LCD_cursor
语句将光标移动到屏幕上,这样我就可以在正确的位置打印字母。
LCD_display_value
函数用于打印整数的值。
我遇到的问题是,它打印一切都很好,直到它到达time2
,然后它只是跳过10位数并继续照常进行。它适用于在正确的点完成循环。
time1 = 1; time2 = 4; time3 = 4; finish = 3;
while (finish != 1) {
if (time1 == 0 && time2 == 0 && time3 == 0)
finish = 1;
if (time1 != 0)
time1 = time1 - 1;
else {time2 = time2 - 1;
time1 = 9;}
if (time2 == 0){
LCD_cursor(14,0);
LCD_display_value(time2);
Delay_ms(200);
if (time3 != 0){
time2 = 5;
time3 = time3 - 1;
time1 = 9;
}
}
LCD_cursor(15,0);
LCD_display_value(time1);
LCD_cursor(14,0);
LCD_display_value(time2);
LCD_cursor(13,0);
LCD_putch(':');
LCD_cursor(12,0);
LCD_display_value(time3);
delay_ms(200);
}
答案 0 :(得分:0)
更改
if (time2 == 0)
到
if (time2 == 0 && time1==0)
重新排列代码块您也可以修复退出条件:
#include <stdio.h>
int main(){
int time1 = 1;
int time2 = 4;
int time3 = 4;
while (time1 || time2 || time3) {
if (time1 != 0)
time1 = time1 - 1;
else {
time2 = time2 - 1;
time1 = 9;
}
printf("%d:%d%d\n", time3, time2, time1);
if (time2 == 0 && time1 == 0){
if (time3 != 0){
time2 = 5;
time3 = time3 - 1;
time1 = 9;
printf("inner %d:%d%d\n", time3, time2, time1);
}
}
}
return 0;
}