51单片机学习之旅——在LCD1602上显示时钟

新建工程

打开软件

LCD1602模块代码添加

因为我们在LCD1602上显示时钟,因此我们需要添加LCD1602的模块代码

跳转到这条博客51单片机学习之旅------模块化编程集_51单片机ruminant-CSDN博客,复制相关代码跳转到这条博客51单片机学习之旅------模块化编程集_51单片机ruminant-CSDN博客,复制相关代码

定时器0模块代码添加

本次项目在LCD1602上显示时钟,要用到定时器中断,因此我们下来添加定时器中断模块代码跳转到这条博客51单片机学习之旅------模块化编程集_51单片机ruminant-CSDN博客,复制相关代码跳转到这条博客51单片机学习之旅------模块化编程集_51单片机ruminant-CSDN博客,复制相关代码

main.c文件代码:
复制代码
#include <REGX52.H>
#include "LCD1602.h"//头文件的作用是声明,我这里要用到啥啥啥
#include "timer0.h"//让程序知道到哪里去找,相当于"任意门"

unsigned char s=0,m=0,h=0;//s秒m分钟h小时

void main()//键盘Insert键会让输入竖线变下划线
{
	//初始化
	LCD_Init();//LCD1602屏幕初始化
	Timer0_Init();//定时器0初始化
	//不用实时更新的部分
	LCD_ShowString(1,1,"Clock:");//从第一行第一列开始显示Clock:
	LCD_ShowString(2,1,"  :  :");//从第二行第一列开始显示  :  :
	while(1)//需要实时更新的部分写在循环里
	{
		LCD_ShowNum(2,1,h,2);//从第二行第一列开始以两位宽显示变量h
		LCD_ShowNum(2,4,m,2);//从第二行第四列开始以两位宽显示变量m
		LCD_ShowNum(2,7,s,2);//从第二行第七列开始以两位宽显示变量s
	}
}

void Timer0_Routine() interrupt 1//定时器0中断函数
{
	static unsigned int T0Count;//累计1秒
	TL0=0x18;//定时器0配置的是01模式1:16位不重载模式,且单片机是12MHz,12T分频
	TH0=0XFC;//所以TL0=(65536-1000)%256,TH0=(65536-1000)/256
	T0Count++;
	if(T0Count==1000)//如果时间够1秒
	{
		T0Count=0;//归零重新计数
		s++;//秒累加1s++等同于s=s+1
	}
	if(s==60)
	{
		s=0;//满60秒进位1分钟,秒归零重新累加
		m++;
	}
	if(m==60)
	{
		m=0;//满60分钟进位1小时,分钟归零重新累加
		h++;
	}
	if(h==24)
	{
		h=0;//一天24个小时
	}
}
相关推荐
无垠的广袤2 小时前
【萤火工场GD32VW553-IOT开发板】流水灯
c++·单片机·嵌入式硬件·物联网
深圳市尚想信息技术有限公司2 小时前
【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】
单片机·嵌入式硬件
肥肠可耐的西西公主3 小时前
前端(小程序)学习笔记(CLASS 2):WXML模板语法与WXSS模板样式
前端·学习·小程序
speop3 小时前
TASK05【Datawhale 组队学习】系统评估与优化
android·java·学习
江畔柳前堤3 小时前
PyQt学习系列07-数据库操作与ORM集成
数据库·学习·算法·机器学习·架构·pyqt
Magnetic_h3 小时前
【iOS】类结构分析
开发语言·笔记·学习·ios·objective-c
小灰灰搞电子3 小时前
STM32+腾讯物联网平台OTA升级详细教程
stm32·嵌入式硬件·物联网
与己斗其乐无穷3 小时前
数据结构(6)线性表-队列
数据结构·学习
张彦峰ZYF4 小时前
解锁内心的冲突:神经症冲突的理解与解决之道
学习
小石(努力版)4 小时前
嵌入式STM32学习——ESP8266 01S的基础介绍
stm32·嵌入式硬件·学习