Как я могу отобразить цифровые часы на модуле ЖК-дисплея powertip pc1602f b 16x2? - PullRequest
0 голосов
/ 19 октября 2018

Мне нужна помощь с отображением цифровых часов на powertip pc1602f b 16x2 LCD модуле дисплея, код работает хорошо, но мне нужно, чтобы я мог его запустить atmel studio 7 ... Я используюSTK300 AVR Board и время, отображаемое на ЖК-экране.Программа в идеале должна быть в c / встроенном c

/*
 * A1.c
 *
 * Created: 19/10/2018 11:51:29
 * Author : mk3101f
 */ 


#include <stdio.h>
#include <time.h> //for sleep() function

int main(void)
{
    int hour, minute, second;

    hour=minute=second=0;

    while (1) 
    {
        //clear output screen
        system("clear");

        //print time in HH : MM : SS format
        printf("%02d : %02d : %02d ",hour,minute,second);

        //clear output buffer in gcc
        fflush(stdout);

        //increase second
        second++;

        //update hour, minute and second
        if(second==60){
            minute+=1;
            second=0;
        }
        if(minute==60){
            hour+=1;
            minute=0;
        }
        if(hour==24){
            hour=0;
            minute=0;
            second=0;
        }

    sleep(1);   //wait till 1 second
    }

  return 0;
}

1 Ответ

0 голосов
/ 20 октября 2018

Мне нужно, чтобы я мог запустить его в Atmel Studio 7 ... Я использую STK300 AVR Board

В основном вам нужно:

  • aспособ надежного измерения времени
  • способ отправки вывода на дисплей

Сон в течение 1 секунды, а затем добавление секунды к текущему времени составляет , а не aнадежный способ следить за временем.Если используемая микросхема не содержит часов реального времени (RTC), в часах микросхемы обязательно будет какая-то ошибка, и даже небольшие ошибки приведут к значительному смещению в течение нескольких часов или дня.Если это часы, которые должны быть точными, ищите модуль RTC, с которого вы можете считывать время.

Отображение информации на ЖК-модуле обычно включает запись данных на некоторые выходные выводы в соответствии с протоколом, которыйдисплей требует.Если вам нужно написать весь код самостоятельно, вам придется покопаться в документации к дисплею и выяснить, что нужно сделать.Вы не упомянули, какой дисплей используете, поэтому невозможно узнать, имеет ли он интерфейс I 2 C, параллельный интерфейс и т. Д.

Платформа AVR невероятно популярна.и для него доступно множество библиотек, которые поддерживают дополнительные модули, такие как часы и дисплеи.Пока вам не нужно писать весь код самостоятельно, выясните, какой у вас дисплей, а затем Google для библиотеки AVR, которая его поддерживает.

Кстати, то же самое относится и к RTC -если вы используете модуль часов, скорее всего, есть библиотека, которая поддерживает этот модуль и упрощает его использование.Тогда цикл в вашем коде будет выглядеть примерно так:

while (true) {
    time = read_the_clock();
    write_time_to_display(time);
    sleep(1);
}

Это даст вам гораздо более точные часы, так как время, сообщаемое RTC, не будет страдать от дрейфа, который ваш контроллербудет.

...