C语言 如何在电源提示 pc1602f b 16x2 LCD 显示模块上显示数字时钟?



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

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

从根本上说,您需要:

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

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

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

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

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

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

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

最新更新