51单片机1602液晶显示屏上显示当前的年月日代码(D$1302)

时间: 2023-11-13 12:04:41 浏览: 95
以下是基于51单片机和1602液晶显示屏的代码,可以在屏幕上显示当前的年月日(使用DS1302实时时钟模块来获取当前时间): ```c #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define nop() _nop_() #define LCD_RS P2_0 #define LCD_RW P2_1 #define LCD_EN P2_2 #define LCD_DAT P1 void delay(uint z) { uint x, y; for (x = z; x > 0; x--) for (y = 110; y > 0; y--); } void write_com(uchar com) { LCD_RS = 0; LCD_RW = 0; nop(); LCD_EN = 1; nop(); LCD_DAT = com; delay(5); LCD_EN = 0; delay(5); } void write_data(uchar dat) { LCD_RS = 1; LCD_RW = 0; nop(); LCD_EN = 1; nop(); LCD_DAT = dat; delay(5); LCD_EN = 0; delay(5); } void init() { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); } void write_str(uchar *p) { while (*p != '\0') { write_data(*p); p++; } } void write_time() { uchar year, month, day; DS1302_Init(); year = DS1302_Get_Year(); month = DS1302_Get_Month(); day = DS1302_Get_Date(); write_com(0x80 + 0x40); write_str("20"); write_data(year / 10 + '0'); write_data(year % 10 + '0'); write_data('-'); write_data(month / 10 + '0'); write_data(month % 10 + '0'); write_data('-'); write_data(day / 10 + '0'); write_data(day % 10 + '0'); } void main() { init(); while (1) { write_time(); delay(1000); } } ``` 在这个代码中,我们定义了一些常量和变量,以及一些函数。其中,write_com()函数和write_data()函数用来向液晶显示屏写入命令或数据;delay()函数用来延时;init()函数用来初始化液晶显示屏;write_str()函数用来向液晶显示屏写入字符串;write_time()函数用来获取当前时间,并将其显示在液晶显示屏上;main()函数则是程序的主函数,其中的while循环用来不断地更新液晶显示屏上的时间信息。

相关推荐

C51编程:利用DS1302实时时钟芯片完成一个数字钟,修正程序,在LCD1602液晶屏(接P0口)上显示从设置的时间开始计时的时钟,设置时间为:第一行23-06-10 第二行:00-00-00,第一行显示:年-月-日;第二行显示:时-分-秒。 #include <reg52.h> #define uchar unsigned char #define uint unsigned int void DS1302Init() { // 初始化DS1302时钟芯片 DS1302WriteByte(0x8E, 0x00); // 关闭写保护 DS1302WriteByte(0x90, 0x00); } void DS1302ReadTime(unsigned char *p) { // 读取DS1302时钟芯片的时间 unsigned char i; DS1302WriteByte(0xBF, 0x00); for (i = 0; i < 7; i++) { p[i] = DS1302ReadByte(); } } void DS1302WriteTime(unsigned char *p) { // 设置DS1302时钟芯片的时间 unsigned char i; DS1302WriteByte(0xBE, 0x00); for (i = 0; i < 7; i++) { DS1302WriteByte(p[i], 0x00); } } // 从DS1302读取一个字节的数据 void DS1302ReadByte(uchar *dat) { uchar i; for (i = 0; i < 8; i++) { SCLK = 0; nop(); *dat |= IO << i; SCLK = 1; nop(); } } sbit beep=P3^6; //定义蜂鸣器接口 void main() { uchar year, month, day, hour, minute, second; //年月日时分秒 uchar str_data[11], str_time[11]; //用于存放LCD上显示的日期和时间 LCD_Init(); //初始化LCD显示屏 DS1302_Init(); //初始化DS1302时钟芯片 //将时间初始化为2023年2月21日0时0分0秒 DS1302_Write(0x8e,0); //关闭写保护 DS1302_Write(0x80,0x23); //年份 DS1302_Write(0x82,0x02); //月份 DS1302_Write(0x84,0x21); //日期 DS1302_Write(0x86,0x00); //时钟 DS1302_Write(0x88,0x00); //分钟 DS1302_Write(0x8a,0x00); //秒钟 DS1302_Write(0x8e,0x80); //开启写保护 while(1) { //读取DS1302时钟芯片中的年月日时分秒 year = DS1302_Read(0x80); month = DS1302_Read(0x82); day = DS1302_Read(0x84); hour = DS1302_Read(0x86); minute = DS1302_Read(0x88); second = DS1302_Read(0x8a); //将年月日时分秒转换成字符串 sprintf(str_data, "Data: 20%02x-%02x-%02x", year, month, day); sprintf(str_time, "Time: %02x:%02x:%02x", hour, minute, second); //在LCD上显示日期和时间 LCD_Write_String(0,0,str_data); LCD_Write_String(0,1,str_time);

最新推荐

recommend-type

基于AT89C51单片机的LED汉字显示屏设计方案

研究了基于AT89C51单片机16×16 LED汉字滚动显示屏的设计与运用Proteus软件的仿真实现。主要介绍了LED汉字显示屏的硬件电路、汇编程序设计与调试、Proteus软件仿真等方面的内容,本显示屏的设计具有体积小、硬件少、...
recommend-type

字符液晶LCD1602显示字符串实例

上一篇文章我们用字符液晶LCD1602显示单个字符,这次,我们任务升级用字符液晶LCD1602显示字符串实例。
recommend-type

基于AT89S52单片机的LCD12864液晶显示模块设计

本文介绍以AT89S52单片机为控制核心,利用四位按键输入,以LCD12864液晶作为屏幕的显示模块。该模块硬件结构结单、功能齐全,工作稳定,可完成目前绝大部分设备的显示工作。
recommend-type

STM32单片机驱动LCD1602液晶程序

最近看到网上很多人都在找STM32单片机驱动LCD1602液晶程序,有的人写的比较复杂刚好自己最近也在搞STM32单片机。就花了点时间写出一份仅供参考和学习。单片机IO驱动能力弱这里用的是10K上拉电阻,也可以采用74HC245...
recommend-type

基于单片机的LED汉字显示屏的设计与Proteus仿真

本文 基于单片机的LED汉字显示屏的设计与Proteus仿真,虽然 只使用了一块16×16LED点阵,电路简单,但是已经包涵了LED汉字滚动显示屏的电路基本原理、基本程序和Proteus软件仿真,只要扩展单片机的10接口,并增加...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

spring添加xml配置文件

1. 创建一个新的Spring配置文件,例如"applicationContext.xml"。 2. 在文件头部添加XML命名空间和schema定义,如下所示: ``` <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。