IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机_10-2 DS1302可调时钟 -> 正文阅读

[嵌入式]51单片机_10-2 DS1302可调时钟

要求

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捕捉)
		}
	}
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 12:18:17  更:2022-04-29 12:18:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:53:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码