单片机==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

相关文章

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

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

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

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

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

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

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

海龟绘图简易教程|Turtle for Python

turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟绘图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。 原文链接|海龟绘图简易教程 1. 基本

基于stm32的河流检测系统-单片机毕业设计

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口

MCU5.51单片机的最小系统

1.最小系统的组成部分 晶振电路(时钟),复位电路,电源电路(控制电压,保持稳定),下载电路(外加的,用于烧录程序) 烧录: 通过下载电路,把程序下载到单片机中用于运行 2.晶振电路 电路图: 是晶振 是电容 为了防止晶振起振时产生影响,因此加电容 3.复位电路 电路图: 按按钮RSTK1(保持一段时间的高电平)即可实现STC芯片的复位 4.电源电路 电路图: