ds1302的时间在lcd1602上显示的源码,用c语言编译
时间: 2024-03-15 11:45:57 浏览: 68
A_代码_lcd1602_ds1302_源码
5星 · 资源好评率100%
以下是DS1302的时间在LCD1602上显示的源代码,使用了C语言:
```c
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <wiringPiI2C.h>
#include <lcd.h>
#include <ds1302.h>
// 定义DS1302引脚
const int DS1302_CE_PIN = 2;
const int DS1302_IO_PIN = 3;
const int DS1302_SCLK_PIN = 4;
// 定义LCD1602引脚
const int LCD_RS_PIN = 25;
const int LCD_E_PIN = 24;
const int LCD_D4_PIN = 23;
const int LCD_D5_PIN = 22;
const int LCD_D6_PIN = 21;
const int LCD_D7_PIN = 14;
// 初始化DS1302对象
DS1302 rtc(DS1302_CE_PIN, DS1302_SCLK_PIN, DS1302_IO_PIN);
// 初始化LCD对象
int lcd_fd;
void setup() {
// 初始化GPIO
wiringPiSetup();
// 初始化LCD
lcd_fd = lcdInit(2, 16, 4, LCD_RS_PIN, LCD_E_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN, 0, 0, 0, 0);
lcdClear(lcd_fd);
// 启动DS1302时钟
rtc.halt(false);
rtc.writeProtect(false);
// 设置DS1302时间
rtc.setDOW(SUNDAY);
rtc.setTime(12, 0, 0);
rtc.setDate(1, 1, 2021);
}
void loop() {
// 读取DS1302时间
int seconds = rtc.getSeconds();
int minutes = rtc.getMinutes();
int hours = rtc.getHours();
int dayOfWeek = rtc.getDOW();
int dayOfMonth = rtc.getDay();
int month = rtc.getMonth();
int year = rtc.getYear();
// 显示时间在LCD上
lcdPosition(lcd_fd, 0, 0);
lcdPuts(lcd_fd, "Time: ");
char time_str[16];
sprintf(time_str, "%02d:%02d:%02d", hours, minutes, seconds);
lcdPuts(lcd_fd, time_str);
// 显示日期在LCD上
lcdPosition(lcd_fd, 0, 1);
lcdPuts(lcd_fd, "Date: ");
char date_str[16];
sprintf(date_str, "%02d/%02d/%04d", month, dayOfMonth, year);
lcdPuts(lcd_fd, date_str);
// 延迟1秒钟
delay(1000);
}
int main() {
setup();
while (1) {
loop();
}
return 0;
}
```
这段代码中,通过DS1302实时时钟芯片读取时间和日期,然后将其显示在LCD1602上。其中,需要引入wiringPi、lcd和ds1302三个库,分别用于GPIO、LCD1602和DS1302的操作。同时,需要在setup函数中初始化DS1302时钟和LCD1602,然后在loop函数中不断读取时间和日期并显示。最后,在main函数中调用setup和loop函数。
阅读全文