单片机定时器实现的数字时钟
利用51单片机的定时器,设计一个数字时钟,具有时间、年月日和星期显示功能,并且可以通过按键设置调整年时间年月日和星期的功能。
1.系统功能模块图
系统主要有LED灯显示模块、电源模块、单片机最小系统、LCD1602液晶显示电路、按键设置模块。
2.系统原理图
按键控制电路中共有4个按键,按键1的功能是进行日期,时间的设置。按下1次,进入“秒”设置;按下2次,进入“分”设置;按下3次,进入“时”设置;按下4次,进入“星期”设置;按下5次,进入“日”设计;按下6次;进入“月”设置;按下7次,进入“年”设置。按键2的功能是增加时间或日期。按键3的功能是减少时间或日期。按键4的功能是数码管显示的相应时间进行加或减。
LED灯用来是指示当前设置参数:D1亮起表示设置秒,D2亮起表示设置分,D3亮起表示设置时,D4亮起表示设置星期,D5亮起表示设置日,D6亮起表示设置月,D7亮起表示设置年。
3.系统主程序流程图
系统上电首先初始化LCD1602和定时器,设置定时器模式、开启定时器中断,然后循环执行更新显示时间,实时扫描按键状态。当单片机上电以后,LCD上会立即显示出2021. 12.12 SUN 7 21:42:00即2021年12月12号,周日,21 时 42 分 0 秒,通过与实时扫描单片机 IO 口相连接的按键的控制可以实现对时间以及模式的调整,以调整到正确的时间和模式。主程序流程图如下:
void main()
{InitLcd1602();
init();
LcdShowStr(4,0, "00:00:00");
LcdShowStr(0,1, "0000.00.00");
while(1)
{
show();
key();
}
}
4.系统运行展示见连接--------------单片机定时器实现的数字时钟
5.关键代码(完整代码,可发送公众号消息《数字时钟代码》获取下载连接)
定时器中断处理:
void timer0() interrupt 1
{ TH0=0XB8;TL0=0X00;
m++;
if(m>=50)
{m=0;second++;}
if(second==60)
{second=0;minute++;}
if(minute==60)
{minute=0;hour++;}
if(hour==24)
{hour=0;week++;day++;}
if(week==8)
{week=1;}
if(day==31)
{day=1;month++;}
if(month==13)
{month=1;year++;}
}
按键的处理
void jia()
{if(second==60)
{second=0;minute++;}
if(minute==60)
{minute=0;hour++;}
if(hour==24)
{hour=0;week++;day++;}
if(week==8)
{week=1;}
if(day==31)
{day=1;month++;}
if(month==13)
{month=1;year++;}
}
void jian()
{if(second==-1)
{second=59;minute--;}
if(minute==-1)
{minute=59;hour--;}
if(hour==-1)
{hour=23;week--;day--;}
if(week==0)
{week=7;}
if(day==0)
{day=31;month--;}
if(month==0)
{month=12;year--;}
}
void key()
{if(K0==0)
{delay(1000);
if(K0==0)
{s1num++;
while(!K0);di();
switch(s1num) //光标闪烁点定位
{ case 1: P1=0xFE;break;
case 2: P1=0xFD;break;
case 3: P1=0xFB;break;
case 4: P1=0xF7;break;
case 5: P1=0xEF;break;
case 6: P1=0xDF;break;
case 7: P1=0xBF;break;
case 8: s1num=0;P1=0xFF;break;
}
}
}
if(s1num!=0)
{
if(K1==0)
{delay(1000);
if(K1==0)
while(!K1); di();
switch(s1num)
{ case 1: second++; jia();break;
case 2: minute++; jia();break;
case 3: hour++; jia();break;
case 4: week++; jia();break;
case 5: day++; jia();break;
case 6: month++; jia();break;
case 7: year++; jia();break;
}
}
}
if(K2==0)
{delay(1000);
if(K2==0)
while(!K2); di();
switch(s1num) //根据功能键次数调节相应数值
{ case 1: second--;jian();break;
case 2: minute--;jian();break;
case 3: hour--; jian();break;
case 4: week--; jian();break;
case 5: day--; jian();break;
case 6: month--; jian();break;
case 7: year--; jian();break;
}
}
if(K3==0)
{delay(100);
if(K3==0)
{s1num=0;P1=0XFF;
}
}
}
单片机定时器实现的数字时钟相关推荐
- 单片机课程学习的数字时钟系统模块化设计研究
摘要:随着人们生活环境的不断改善和美化,人们希望通过在生活中得到更多的乐趣,来满足我们日益增长的精神需求.单片机课程学习的数字时钟系统模块化设计研究能够给人们的生活带来丰富多彩的滋味,低廉的造价以及控 ...
- 基于单片机的多功能数字时钟设计
文末下载完整资料 二 硬件系统方案设计 2.1电话拨号防盗报警器硬件系统方案 2.1.1 硬件系统方案设计 图2.1为电话拨号报警器的系统构成方框图,由单片机控制器.键盘输入.数码管显示.触发电 ...
- 51单片机驱动ds12887c语言,51单片机+DS12887+12864大数字时钟程序+电路
/*--------------------------------------------------------------------------- 电子智能时钟程序 单 片 机:STC89C5 ...
- 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
1 一个普通的万年历 仿真图和hex文件 点我 仿真软件proteus 8.9 的安装 点我 硬件:DS1302.按键.LCD.蜂鸣器 要求: 1.读出DS1302芯片当前的内容,在LCD上显示. 2 ...
- 基于 AT89C51 单片机的数字时钟设计
目录 1.设计目的.作用 2.设计要求 3.设计的具体实现 3.1 设计原理 3.2 硬件系统设计 3.2.1 AT89C51 单片机原理 3.2.2 晶振电路设计 3.2.3 复位电路设计 3.2. ...
- 基于单片机的数字时钟系统
设计简介: 本设计是基于单片机的数字时钟系统,主要实现以下功能: 可通过LCD1602显示时间.温度: 可通过按键切换到倒计时.秒表的界面: 可通过按键设置闹钟时间: 可通过按键语音播报时间和温度. ...
- 基于51单片机的数字时钟(万年历)
具体实现功能 系统由STC89C52单片机+DS1302时钟芯片+按键模块+LCD1602显示+电源构成. 具体功能: 1.可以显示年.月.日.时.分.秒.星期.农历: 2.按键可以设置闹钟及报警: ...
- c语言51单片机数字时钟设计,51单片机数字时钟功能需求及设计实现(带闹钟)...
1设计要求 l.1 功能需求 (1) 实现数字时钟准确实时的计时,lj显示功能: (2)实现闹钟功能,即系统时问到达闹钟时问时闹铃响: (3) 实现时问和闹钟时问的调时功能: (4)刚启动系统的时候在 ...
- 基于51单片机的手动数字时钟
具体实现功能 实现功能: (1)利用数码管显示时分秒,显示格式为"时-分-秒": (2)利用6个按键控制时.分.秒: (3)设置秒复位按键,可实现秒钟复位. 单片机介绍 51单片是 ...
最新文章
- java short字段_Java Field setShort()用法及代码示例
- java无向图代码实例_Java 图示例 · JavaTutorialNetwork 中文系列教程 · 看云
- python类定义全局变量_python之全局变量
- 网络分流器-网络分流器-网络安全评估探讨
- SpringBoot项目去除druid监控的底部广告
- Android开发常用工具推荐
- MariaDB多源复制环境搭建(多主一丛)
- 'utf8' codec can't decode byte --python
- 全民果园为什么服务器在维修中,你在果园管理中遇到的问题这里可以解决
- 了解机器学习框架CoreML
- Oracle----oracle小知识总结
- manjaro安装nvidia显卡驱动
- 计算机软件卸载不了怎么办,有的软件卸载不干净,应该怎么办?
- 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
- 苹果退款48小时审核结果_iPhone退款
- 从史上最热“五一”黄金周,聊聊中国人在百度地图大数据中“看”到什么
- Web服务器和客户端
- Revit建模:使用技巧【软件操作类】希望能帮大家提高效率(上)
- C++ CMake入门和进阶(二):CMake语法
- 什么是物联网卡?物联卡有哪几种类型?