前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【51单片机】初学者必会项目——定时器时钟(定时器&中断系统的应用)(11)

【51单片机】初学者必会项目——定时器时钟(定时器&中断系统的应用)(11)

作者头像
YY的秘密代码小屋
发布于 2024-02-26 00:56:30
发布于 2024-02-26 00:56:30
19000
代码可运行
举报
文章被收录于专栏:C++系列C++系列
运行总次数:0
代码可运行

一.前置知识

在这里插入图片描述
在这里插入图片描述
  • 在上个实验中,我们已经成功控制小灯以1s为频率闪动
在这里插入图片描述
在这里插入图片描述
  • 最主要的是成功利用了软件配置定时器
  • 并成功实现了了【定时器】和【中断函数】的配合
在这里插入图片描述
在这里插入图片描述

二.学习使用LCD1602驱动函数

1.LCD1602前置知识

在这里插入图片描述
在这里插入图片描述

2.根据需求调用函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void main()
{
	LCD_Init();
	Timer0Init();
	
	LCD_ShowString(1,1,"Clock:");	//上电显示静态字符串
	LCD_ShowString(2,1,"  :  :");
	
	while(1)
	{
		LCD_ShowNum(2,1,Hour,2);	//显示时分秒
		LCD_ShowNum(2,4,Min,2);
		LCD_ShowNum(2,7,Sec,2);
	}
}

三.实现时钟功能

1.明确需求

我们要实现的需求有

  1. 上电显示静态字符串"Clock:"
  2. 显示时分秒:Hour Min Sec
  3. 1秒到,Sec自增
  4. 60秒到,Sec清0,Min自增
  5. 60分钟到,Min清0,Hour自增
  6. 24小时到,Hour清0

2.设计主函数与中断函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unsigned char Sec=55,Min=59,Hour=23;

void main()
{
	LCD_Init();
	Timer0Init();
	
	LCD_ShowString(1,1,"Clock:");	//上电显示静态字符串
	LCD_ShowString(2,1,"  :  :");
	
	while(1)
	{
		LCD_ShowNum(2,1,Hour,2);	//显示时分秒
		LCD_ShowNum(2,4,Min,2);
		LCD_ShowNum(2,7,Sec,2);
	}
}

void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;
	if(T0Count>=1000)	//定时器分频,1s
	{
		T0Count=0;
		Sec++;			//1秒到,Sec自增
		if(Sec>=60)
		{
			Sec=0;		//60秒到,Sec清0,Min自增
			Min++;
			if(Min>=60)
			{
				Min=0;	//60分钟到,Min清0,Hour自增
				Hour++;
				if(Hour>=24)
				{
					Hour=0;	//24小时到,Hour清0
				}
			}
		}
	}
}

四.烧入单片机观察现象

  1. 上电显示静态字符串"Clock:"
  2. 显示时分秒:Hour Min Sec
  3. 1秒到,Sec自增
  4. 60秒到,Sec清0,Min自增
  5. 60分钟到,Min清0,Hour自增
  6. 24小时到,Hour清0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.前置知识
  • 二.学习使用LCD1602驱动函数
    • 1.LCD1602前置知识
    • 2.根据需求调用函数
  • 三.实现时钟功能
    • 1.明确需求
    • 2.设计主函数与中断函数
  • 四.烧入单片机观察现象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档