前言
大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁
主要内容含:
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!
一.前置知识
- 要实现该项目需要大家先阅读,前置知识:
- 以下是前置知识博客大概内容:传送门在下方
- 【51单片机】从零开始手把手带你【查手册】配置定时器,并完成小项目(定时器&中断的应用)(代码演示&单片机现象对照LCD闪烁)(9)
- 在上个实验中,我们已经成功控制小灯以1s为频率闪动
- 最主要的是成功利用了软件配置定时器
- 并成功实现了了【定时器】和【中断函数】的配合
二.学习使用LCD1602驱动函数
1.LCD1602前置知识
- 学习LCD1602可以前往下方传送门学习
- 【51单片机】LCD1602(可视化液晶屏)调试工具的使用(6)
- 部分知识如下图所示
2.根据需求调用函数
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.明确需求
我们要实现的需求有
- 上电显示静态字符串"Clock:"
- 显示时分秒:Hour Min Sec
- 1秒到,Sec自增
- 60秒到,Sec清0,Min自增
- 60分钟到,Min清0,Hour自增
- 24小时到,Hour清0
2.设计主函数与中断函数
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
}
}
}
}
}
四.烧入单片机观察现象
- 烧入的相关博客传送门在下方,本博客相关资源解压后烧写即可观察现象
- 【51单片机】烧写教程:将代码下载到单片机中(图示&解析)
- 现象:
- 上电显示静态字符串"Clock:"
- 显示时分秒:Hour Min Sec
- 1秒到,Sec自增
- 60秒到,Sec清0,Min自增
- 60分钟到,Min清0,Hour自增
- 24小时到,Hour清0