单片机==LCD1602之简易万年历

2024-01-14 07:30

本文主要是介绍单片机==LCD1602之简易万年历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  LCD1602可以简单的显示一些字母数字,但是对于汉字来说,显示起来还是不太好,不怎么好显示,毕竟像素比较低,这次用LCD1602显示了一下简易的万年历。

效果图:



程序:

/*******lcd.h*******/
#ifndef _LCD_H_
#define _LCD_H_#include <reg51.h>
#include <intrins.h>sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;#define RS_CLR  RS = 0
#define RS_SET  RS = 1
#define RW_CLR  RW = 0
#define RW_SET  RW = 1
#define EN_CLR  EN = 0
#define EN_SET  EN = 1
#define dataport  P0
#define uchar unsigned charextern void DelayUs2x(uchar t);
extern void DelayMs(uchar t);
extern void LCD_Write_COM(uchar com);				//写指令
extern void LCD_Write_Data(uchar Data);
extern void LCD_Clear();
extern void LCD_Write_String(uchar x, uchar y, uchar* s);
extern void LCD_Write_Char(uchar x, uchar y, uchar c);
extern void LCD_Init();	 #endif

/*****lcd.c********/
#include "lcd.h"void DelayUs2x(uchar t)
{while(--t);
}void DelayMs(uchar t)
{while(t--){DelayUs2x(245);DelayUs2x(245);}
}/* bit LCD_Check_busy(void)
{dataport = 0xff;RS_CLR;RW_SET;EN_CLR;_nop_();EN_SET;return (bit)(dataport&0x80);
} *///写指令void LCD_Write_COM(uchar com)
{DelayMs(5);RS_CLR;RW_CLR;EN_SET;dataport = com;_nop_();EN_CLR;
}//写数据
void LCD_Write_Data(uchar Data)
{DelayMs(5);RS_SET;RW_CLR;EN_SET;dataport = Data;_nop_();EN_CLR;
}//清屏
void LCD_Clear()
{LCD_Write_COM(0x01);DelayMs(5);
}//输入字符,x为横坐标,y为纵坐标
void LCD_Write_String(uchar x, uchar y, uchar* s)
{if(y == 0){LCD_Write_COM(0x80+x);}else{LCD_Write_COM(0xC0+x);}while(*s){LCD_Write_Data(*s);s++;}
}//输入字符,x为横坐标,y为纵坐标
void LCD_Write_Char(uchar x, uchar y, uchar c)
{if(y == 0){LCD_Write_COM(0x80+x);}else{LCD_Write_COM(0xC0+x);}LCD_Write_Data(c);
}void LCD_Init()	 					//LCD初始化子程序
{EN_CLR;LCD_Write_COM(0x38);  			//设置显示模式DelayMs(5);LCD_Write_COM(0x38);  			//设置显示模式DelayMs(5);LCD_Write_COM(0x38);  			//设置显示模式DelayMs(5);LCD_Write_COM(0x38);  			//设置显示模式DelayMs(5);LCD_Write_COM(0x0c);  			//开显示不显示光标,光标闪烁LCD_Write_COM(0x06);  			//写一个指针加一LCD_Write_COM(0x01);  			//清屏LCD_Write_COM(0x80);  			//设置数据指针起点
}


/*****main.c*******/
#include "lcd.h"uchar hour = 21, min = 43, sec = 0, count, date = 28, monse = 4;
unsigned int year = 2017;void init_T0()
{EA = 1;ET0 = 1;TMOD = 0X01;TH0 = 0X3C;TL0 = 0XB0;TR0 = 1;
}void main()
{init_T0();LCD_Init();LCD_Clear();while(1){		LCD_Write_String(0, 0, "Date:");LCD_Write_Char(5, 0, year/1000+48);LCD_Write_Char(6, 0, year%1000/100+48);LCD_Write_Char(7, 0, year%100/10+48);LCD_Write_Char(8, 0, year%10+48);LCD_Write_Char(9, 0, '-');		LCD_Write_Char(10, 0, monse/10+48);LCD_Write_Char(11, 0, monse%10+48);LCD_Write_Char(12, 0, '-');		LCD_Write_Char(13, 0, date/10+48);LCD_Write_Char(14, 0, date%10+48);					LCD_Write_String(0, 1, "Time:");LCD_Write_Char(5, 1, hour/10+48);LCD_Write_Char(6, 1, hour%10+48);LCD_Write_Char(7, 1, '-');LCD_Write_Char(8, 1, min/10+48);LCD_Write_Char(9, 1, min%10+48);LCD_Write_Char(0xa, 1, '-');LCD_Write_Char(0xb, 1, sec/10+48);LCD_Write_Char(0xc, 1, sec%10+48);}
}void inter()	interrupt 1
{TH0 = 0X3C;TL0 = 0XB0;count++;if(count >= 20){count = 0;sec++;}if(sec >= 60){sec = 0;min++;}if(min >= 60){min = 0;hour++;}if(hour >= 24){hour = 0;date++;}if(date > 31){date = 0;monse++;}if(monse > 13){monse = 0;year++;}}


这篇关于单片机==LCD1602之简易万年历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604395

相关文章

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服