51单片机_10-2 DS1302可调时钟
文章目录
- 要求
- 效果
- 资源
- main函数
要求
1、设置DS1302时钟芯片时间
2、读取DS1302时钟芯片时间并显示在LCD1602上
3、通过独立按键可修改当前时间,在修改模式中,对选中的属性进行闪烁以提示用户该属性被选中
K1:进入/退出修改模式
K2:选择修改的具体属性
K3:选中属性值加1
K4:选中属性值减1
4、修改后的时间增加合法判定(平年闰年,大月小月),比较简单,我写的代码没有给出,可自行添加
提示:
1、可将法和判定做成一个函数,传入time数组,函数将time数组修改为合法的时间
2、该函数紧跟在对time[flag]增减的代码之后(修改之后立马判定)
效果
资源
工程文件压缩包
链接:https://pan.baidu.com/s/1EapEC862yxjL8rWxXXnX4w
提取码:9mmm
main函数
#include <REGX52.H>
#include "Delay.H"
#include "LCD1602.H"
#include "Key.H"
#include "DS1302.H"//时间显示
void ShowTime(unsigned char *time){//静态字符初始化显示LCD_ShowString(1,3,"-");LCD_ShowString(1,6,"-");LCD_ShowString(2,3,":");LCD_ShowString(2,6,":");LCD_ShowNum(1,1,time[0],2); //显示年LCD_ShowNum(1,4,time[1],2); //显示月LCD_ShowNum(1,7,time[2],2); //显示日LCD_ShowNum(2,1,time[3],2); //显示时LCD_ShowNum(2,4,time[4],2); //显示分LCD_ShowNum(2,7,time[5],2); //显示秒
}//被选中时间属性闪烁
void Selected(unsigned char *time,unsigned char flag){unsigned char column;if(flag<3){column=3*flag+1;LCD_ShowString(1,column," ");Delayms(600);LCD_ShowNum(1,column,time[flag],2);Delayms(600);}else{column=3*(flag-3)+1;LCD_ShowString(2,column," ");Delayms(600);LCD_ShowNum(2,column,time[flag],2);Delayms(600);}
}void main(){unsigned char time[]={22,4,27,16,33,20,3};unsigned char KEY;unsigned char flag;//状态初始化LCD_Init();DS1302_Init();//时间初始化DS1302_SetTime(time);while(1){DS1302_ReadTime(time); //读取时间ShowTime(time); //显示时间KEY=get_key();if(KEY==1){ //读取到K1按下,进入修改模式KEY=0; //复位flag=0; //指向time数组中待修改的值while(1){Selected(time,flag);//flag指向的值闪烁KEY=get_key(); //获取按键值if(KEY==2){flag=(flag+1)%6;KEY=0;Delayms(400);} //指向下一个待修改的值if(KEY==3){time[flag]+=1;KEY=0;Delayms(400);} //将指向的值加1,复位if(KEY==4){time[flag]-=1;KEY=0;Delayms(400);} //将指向的值减一,复位if(KEY==1){DS1302_SetTime(time);break;KEY=0;} //完成修改,退出,复位}Delays(1); //延迟1秒(用户按下的K1时间过长,延迟一下防止被下一条get_key捕捉)}}
}
51单片机_10-2 DS1302可调时钟相关推荐
- 51单片机——DS1302可调时钟
目录 一.功能介绍 二.主要模块介绍 2.1 DS1302模块 2.1.1 DS1302芯片介绍 2.1.2 DS1302的使用 三.程序汇总 3.1测试文件test.c 3.2 LCD1602模块 ...
- 【DS1302可调时钟】
DS1302可调时钟 0.原理图 1.DS1302介绍 2.引脚定义与应用电路 3.内部结构框图 4.寄存器定义 5.时序定义 6.BCD码 7.源码 ==main.c== ==DS1302.c== ...
- 基于51单片机 数控恒流源设计 可调电流源
设计硬件组成: 基于51单片机 数控恒流源设计 可调电流源基于单片机可调电流源设计 项目定制觉得选题不错 分享一下 由51单片机+LCD1602液晶+变压器+整流桥+开关电源LM2596+TLC56 ...
- 基于51单片机数字温度报警器_DS18B20可调上下限
51单片机数字温度报警器_DS18B20可调上下限 (仿真+程序+原理图) 原理图:Altium Designer 仿真版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言: ...
- 51单片机+直流电机PWM 10级调速控制
51单片机+直流电机PWM 10级调速控制 Proteus仿真演示 示例程序代码 #include <STC89C5xRC.H> typedef unsigned char u8; typ ...
- 51单片机PCB实物DCDC可调负电源负压+12V输入-2.5V~-9V输出500MA电流
实践制作DIY- GC0048-PCB实物DCDC可调负电源 一.功能说明: 基于51单片机设计-PCB实物DCDC可调负电源 功能介绍: STC89C52单片机. LCD1602显示器 .PCF85 ...
- DS1302可调时钟
文章目录 前言 模块划分 模块化编程 1. Key 2. LCD1602 3. Timer0 4. Delay 5. DS1302 6. Main 总结 前言 上节 " DS1302详解 & ...
- 【51单片机学习】PWM电机调速
简单的PWM电机调速--基于51单片机 (一)51单片机需要用到的寄存器 (二)PWM波的产生及调速原理 (三)电机调速的实现 (一)51单片机需要用到的寄存器 中断允许寄存器,详情可以看STC51单 ...
- 51单片机—使用PWM对直流电机调速
文章目录 - 什么是PWM - PWM是怎么对直流电机进行调速的 - 通过定时器中断实现PWM调速 - 上代码 - 什么是PWM PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制 ...
- 基于51单片机 数控稳压电源设计 可调电压源
设计硬件组成: 数控可调电压源系统 51单片机最小系统电路+数码管+TLC5615+稳压模块+LM358+TIP122+变压器设计而成. 设计功能介绍: 1.采用数码管显示当前电压数值 2.通过变压器 ...
最新文章
- 今年CVPR,我们填补了3D场景布局数据集空白,并向全世界开源!
- 人工智能数学基础----导数
- 小学生python编程教程入门-围观~山东省的小学生Python编程入门都学的什么?
- 使用Silverlight for Embedded开发绚丽的界面(4)
- visio2016中插入大括号
- 口罩日产量破1亿背后:近3000家企业疯狂增产转产
- css alpha滤镜
- 文末福利 | 学习如何构建行业知识图谱(以医疗行业为例)
- (转)先锋伯格:选择一条少有人走的路,所有的不同由此开始
- 遗传算法Python代码实现
- 屏蔽KEmulator的内存查看功能
- 国际通用计算机编码,计算机中的编码知识
- 如何提取微信公众号内视频 (高清 无水印)
- java getbytes 乱码_深入解析java String中getBytes()的编码问题
- 直播系统解决方案:直播平台如何开发搭建
- khadas与树莓派_抛弃电信机顶盒,单板电脑打造家庭多媒体中心
- HDU 	5944 Fxx and string BestCoder Round #89 1001(细节)
- nginx禁止某些指定的浏览器标识来爬我们网站
- linux ps2键盘驱动,Linux下USB模拟ps2鼠标驱动
- 数据库之快照读与当前读
热门文章
- 浮点型数据计算面积方法
- Speckle核心概念【3D数据引擎】
- ios无限体验服务器,ios变态无限元宝的手游-ios手游无限元宝公益服
- 免费在线markdown转pdf
- 【Proteus仿真】【51单片机】交通灯控制系统设计
- firebase推送
- 污水除重金属工艺,吸附重金属的树脂
- 23个Python爬虫开源项目代码:爬取微信、淘宝、豆瓣、知乎、微博
- java狗具有特别的接飞盘的方法_【狗飞盘】狗接飞盘怎么练,好用的狗飞盘推荐_什么值得买...
- iPad Pro 2022版最新渲染图曝光,刘海屏来了!