【问题标题】:Making a timer for an LCD screen using C使用 C 为 LCD 屏幕制作计时器
【发布时间】:2016-03-16 21:27:11
【问题描述】:

我正在尝试为 LCD 屏幕制作计时器。我通常不编程,因为它与我的学位无关,但我认为我会这样做是为了好玩。我正在使用一个朋友设计的内置库。
我已经设计了下面的 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);
}

【问题讨论】:

  • 创意文字设计肯定有一席之地。但不适用于程序代码。
  • time2 确实等于 0,但当它等于 0 时,time1 不会从 9 开始倒计时。
  • @Olaf 我对你的评论有点困惑
  • 和我一样,你的源代码的创造性格式。
  • 先生。 @Olaf 如果您认为您可以帮助我解决我遇到的这个问题,我将非常乐意为您提供我获得 LCD_cursor() 和 LCD_display_value() 函数的整个 C 源代码。

标签: c embedded


【解决方案1】:

改变

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

【讨论】:

  • 非常感谢@xvan 先生!这样可行!我知道我的问题并没有我希望的那么清楚,我会努力在未来更清楚地解释我的问题。再次感谢您:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2019-11-02
相关资源
最近更新 更多