使用C为LCD屏幕制作计时器

时间:2016-03-16 21:27:12

标签: c embedded

我正在尝试为液晶屏制作一个计时器。我通常不会编程,因为它与我的学位无关,但我认为我会这样做很有趣。我正在使用朋友设计的内置图书馆 我在下面设计了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);
}

1 个答案:

答案 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;
}