【问题标题】:How can i display a digital clock on a powertip pc1602f b 16x2 LCD display module?如何在 powertip pc1602f b 16x2 LCD 显示模块上显示数字时钟?
【发布时间】:2018-10-19 12:08:23
【问题描述】:

我需要在 powertip pc1602f b 16x2 LCD 显示模块上显示数字时钟方面的帮助,代码运行良好,但我需要能够在 atmel studio 7 上运行它...我是使用 STK300 AVR 板和液晶屏上显示的时间。理想情况下,该程序应该在 c/embedded 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;
}

【问题讨论】:

  • 请正确格式化您的问题。
  • 这很大程度上取决于您使用的液晶屏。它是一个普通的液晶屏吗?你需要控制 HSYNC 和 VSYNC 线吗?还是液晶屏上面有SSD1963之类的控制器芯片?
  • 添加一些随机的、不相关的代码并不会减少这个问题。有数百万种不同的 LCD,所以您基本上是在问绳子有多长。

标签: c atmelstudio


【解决方案1】:

我需要能够在 atmel studio 7 上运行它...我正在使用 STK300 AVR 板

基本上,您需要:

  • 一种可靠地测量时间的方法
  • 一种将输出发送到显示器的方法

睡眠 1 秒,然后在当前时间上增加一秒不是一种可靠的方法来记录时间。除非您使用的芯片包含实时时钟 (RTC),否则芯片的时钟肯定会出现一些错误,即使是很小的错误也会在几个小时或一天的过程中导致明显的漂移。如果这是一个需要准确的时钟,请寻找可以从中读取时间的 RTC 模块。

在 LCD 模块上显示信息通常涉及根据显示器所需的协议将数据写入某些输出引脚。如果您需要自己编写所有代码,则必须深入研究显示文档并找出需要做什么。您没有提到您使用的是什么显示器,因此无法知道它是否具有I2C接口,并行接口等。

AVR 平台非常受欢迎,并且有许多库可用于支持时钟和显示器等附加模块。只要您不必自己编写所有代码,请弄清楚您拥有什么显示器,然后谷歌搜索支持它的 AVR 库。

顺便说一下,R​​TC 也是如此——如果您使用时钟模块,那么很可能有一个库支持该模块并使其易于使用。然后代码中的循环将如下所示:

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

这将为您提供更准确的时钟,因为 RTC 报告的时间不会像您的控制器那样受到漂移的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多