基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子钟闹钟12/24小时制LCD显示

  • 1. 主要功能:
  • 2. 讲解视频:
  • 3. 仿真设计
  • 4. 程序代码
  • 5. 设计报告
  • 6. 设计资料内容清单&&下载链接

基于51单片机电子钟闹钟12/24小时制LCD显示( proteus仿真+程序+设计报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0082

1. 主要功能:

基于51单片机的电子钟12/24小时制万年历设计

1.电子钟设计能设定起始时间,按下复位键恢复初始化时间;

2.具有闹钟功能,可以通过按键设定闹钟闹铃时间;

3.有12 小时/24 小时两种制式可选;

4.能显示年月日星期;

5.使用DS1302计时,LCD1602液晶显示;

需注意仿真中51单片机芯片是兼容的,AT89C51,AT89C52是51单片机的具体型号,内核是一样的。相同的原理图里,无论stc还是at都一样,引脚功能都是一样的,程序是兼容的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

img

以下为本设计资料展示图:

2. 讲解视频:

讲解视频包含仿真运行讲解和代码讲解

https://www.bilibili.com/video/BV17p421978t/

3. 仿真设计

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。

img

显示时间的情况下,按下切换键进入设置模式,设置的变量闪烁,默认先设置年份,通过按键加和按键减调整,通过下一个按键切换设置月份,设置月份时同样通过加减键调整。如此类推设置日期,星期,时分秒。

img

设置好时钟后按下切换按键设置闹钟。同样通过按键加减调整闹钟时间,通过下一个按键切换设置时钟/分钟。

img

按下12/24小时制切换可以切换时制。上午显示AM,下午显示PM,方便区分时间。

img

img

4. 程序代码

使用keil4或者keil5编译,代码有注释,可以结合视频理解代码含义。

#include <reg51.h>
#include "lcd1602.h"
#include"ds1302.h" #define uchar unsigned char
#define uint unsigned int
//功能设计:调整时间、调整闹钟、正常sbit key1=P3^6;//功能切换
sbit key2=P3^5;//下一个设置点
sbit key3=P3^4;//加
sbit key4=P3^3;//减
sbit key5=P3^2;//12,24小时制切换sbit beep=P3^7;//蜂鸣器
//===============================================================
uchar mode=0;//模式	  设置,工作
uchar t=0;
uchar fen=1,shi=12;//闹钟分钟和闹钟时间设置
uchar cixu=0,flag=0;//小模式
uchar moshi=0;//12,24控制uchar hang1[]="2000/00/00  0";//日期 + 星期
uchar hang2[]="00:00:00     ";//时间
uchar hang3[]="00:00        ";	  //闹钟  时+分void suan()//计算
{	uchar i=0;hang1[2]=(TIME[6]>>4)+0x30;hang1[3]=(TIME[6]&0x0f)+0x30;hang1[5]=(TIME[4]>>4)+0x30;hang1[6]=(TIME[4]&0x0f)+0x30;hang1[8]=(TIME[3]>>4)+0x30;hang1[9]=(TIME[3]&0x0f)+0x30;hang1[12]=TIME[5]+0x30;if(moshi==0)//小时{hang2[0]=(TIME[2]>>4)+0x30;hang2[1]=(TIME[2]&0x0f)+0x30;hang2[11]=' ';hang2[12]=' ';}else{i=(TIME[2]>>4)*10+(TIME[2]&0x0f);if(TIME[2]<=0x12){hang2[0]=i/10+0x30;hang2[1]=i%10+0x30;hang2[11]='A';hang2[12]='M';}else{hang2[0]=(i-12)/10+0x30;hang2[1]=(i-12)%10+0x30;hang2[11]='P';hang2[12]='M';}}hang2[3]=(TIME[1]>>4)+0x30;//分钟hang2[4]=(TIME[1]&0x0f)+0x30;hang2[6]=(TIME[0]>>4)+0x30;hang2[7]=(TIME[0]&0x0f)+0x30;hang3[0]=shi/10+0x30;hang3[1]=shi%10+0x30;hang3[3]=fen/10+0x30;hang3[4]=fen%10+0x30;
}void xian()//显示
{suan();//计算if(mode==0)//正常{		write_string(1,0,hang1);write_string(2,0,hang2);}else{switch(cixu){case 0:		 //年if(flag){hang1[2]=(TIME[6]>>4)+0x30;hang1[3]=(TIME[6]&0x0f)+0x30;}else{hang1[2]=' ';hang1[3]=' ';}break;case 1:		 //月if(flag){hang1[5]=(TIME[4]>>4)+0x30;hang1[6]=(TIME[4]&0x0f)+0x30;}else{hang1[5]=' ';hang1[6]=' ';}break;case 2:		 //日if(flag){hang1[8]=(TIME[3]>>4)+0x30;hang1[9]=(TIME[3]&0x0f)+0x30;}else{hang1[8]=' ';hang1[9]=' ';}break;case 3:		 //星期if(flag){hang1[12]=TIME[5]+0x30;}else{hang1[12]=' ';}break;case 4:		 //时if(flag){hang2[0]=(TIME[2]>>4)+0x30;hang2[1]=(TIME[2]&0x0f)+0x30;}else{hang2[0]=' ';hang2[1]=' ';}break;case 5:		 //分if(flag){hang2[3]=(TIME[1]>>4)+0x30;hang2[4]=(TIME[1]&0x0f)+0x30;}else{hang2[3]=' ';hang2[4]=' ';}break;case 6:		 //秒if(flag){hang2[6]=(TIME[0]>>4)+0x30;hang2[7]=(TIME[0]&0x0f)+0x30;}else{hang2[6]=' ';hang2[7]=' ';}break;case 7:		 //时,闹钟if(flag){hang3[0]=shi/10+0x30;hang3[1]=shi%10+0x30;}else{hang3[0]=' ';hang3[1]=' ';}break;case 8:		 //分,闹钟if(flag){hang3[3]=fen/10+0x30;hang3[4]=fen%10+0x30;}else{hang3[3]=' ';hang3[4]=' ';}				}if(cixu<7)	//显示结果{write_string(1,0,hang1);write_string(2,0,hang2);}else{write_string(1,0,"CLOCK:          ");write_string(2,0,hang3);}}}//主函数
void main()
{uchar i,j,k;TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。TH0=0X3C;	//定时50msTL0=0Xb0;	ET0=1;//打开定时器0中断允许EA=1;//打开总中断TR0=1;//打开定时器init_1602();//LCD初始化write_string(1,0,hang1);write_string(2,0,hang2);
//	Ds1302ReadTime();//启动DS1302TIME[0]=0;Ds1302Init();while(1){if(!key5)//12,24切换{moshi=!moshi;while(!key5);}//判断k=0;i=(shi/10<<4)+shi%10;j=(fen/10<<4)+fen%10;if((TIME[2]==i)&&(TIME[1]==j))//闹钟{beep=0;}else{beep=1;}//按键检测if(!key1)//功能{cixu=0;mode=!mode;while(!key1);}if(!key2)//next{if(cixu<8)cixu++;elsecixu=0;while(!key2);}if(!key3)//加{switch(cixu){case 0:	//年i=(TIME[6]>>4)*10+(TIME[6]&0X0F);if(i<99)i++;TIME[6]=(i/10<<4)+i%10;Ds1302Init();break;case 1:	//月i=(TIME[4]>>4)*10+(TIME[4]&0X0F);if(i<12)i++;TIME[4]=(i/10<<4)+i%10;Ds1302Init();break;case 2:	//日i=(TIME[3]>>4)*10+(TIME[3]&0X0F);if(i<30)i++;TIME[3]=(i/10<<4)+i%10;Ds1302Init();break;case 3:	//星期i=(TIME[5]>>4)*10+(TIME[5]&0X0F);if(i<7)i++;TIME[5]=(i/10<<4)+i%10;Ds1302Init();break;case 4:	//时i=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(i<23)i++;TIME[2]=(i/10<<4)+i%10;Ds1302Init();break;case 5:	//分i=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(i<59)i++;TIME[1]=(i/10<<4)+i%10;Ds1302Init();break;case 6:	//秒i=(TIME[0]>>4)*10+(TIME[0]&0X0F);if(i<59)i++;TIME[0]=(i/10<<4)+i%10;Ds1302Init();break;case 7:	//闹钟,时if(shi<23)shi++;break;case 8:	//闹钟,分if(fen<59)fen++;}while(!key3);}if(!key4)//减{switch(cixu){case 0:	//年i=(TIME[6]>>4)*10+(TIME[6]&0X0F);if(i>0)i--;TIME[6]=(i/10<<4)+i%10;Ds1302Init();break;case 1:	//月i=(TIME[4]>>4)*10+(TIME[4]&0X0F);if(i>1)i--;TIME[4]=(i/10<<4)+i%10;Ds1302Init();break;case 2:	//日i=(TIME[3]>>4)*10+(TIME[3]&0X0F);if(i>1)i--;TIME[3]=(i/10<<4)+i%10;Ds1302Init();break;case 3:	//星期i=(TIME[5]>>4)*10+(TIME[5]&0X0F);if(i>1)i--;TIME[5]=(i/10<<4)+i%10;Ds1302Init();break;case 4:	//时i=(TIME[2]>>4)*10+(TIME[2]&0X0F);if(i>0)i--;TIME[2]=(i/10<<4)+i%10;Ds1302Init();break;case 5:	//分i=(TIME[1]>>4)*10+(TIME[1]&0X0F);if(i>0)i--;TIME[1]=(i/10<<4)+i%10;Ds1302Init();break;case 6:	//秒i=(TIME[0]>>4)*10+(TIME[0]&0X0F);if(i>0)i--;TIME[0]=(i/10<<4)+i%10;Ds1302Init();break;case 7:	//闹钟,时if(shi>0)shi--;break;case 8:	//闹钟,分if(fen>0)fen--;}while(!key4);}}
}void Timer0() interrupt 1 //定时器0中断
{if(t<10)t++;else{t=0;flag=!flag;Ds1302ReadTime();//读取时间xian();}TH0=0X3C;	//定时50msTL0=0Xb0;
}

5. 设计报告

6377字设计报告,内容包括硬件设计、软件设计、软硬件框图、调试等

img

随着嵌入式技术的迅速发展和广泛应用,单片机作为其核心组成部分,在日常生活的诸多领域展现出了无可比拟的优势。尤其在智能化、微型化和功能集成化的趋势下,51系列单片机因其结构简单、成本低廉且易于学习的特点,在教育与工业应用中扮演了至关重要的角色。其中,基于51单片机制作的电子钟和万年历产品由于其高度实用的功能特性以及便捷友好的用户操作界面,受到了广大用户和工程技术人员的广泛认可和青睐。

本课程设计项目正立足于这一时代背景和技术潮流,旨在通过理论联系实践的教学方式,借助Proteus这一强大的电子电路仿真软件平台,引领学生亲自动手设计并实现一款融合了多种实用功能于一体的电子钟万年历系统。该系统不仅包含了基本的时间显示及设置功能,还具备了闹钟设定、时间制式切换(12小时/24小时)、精确日期和星期显示等功能模块,充分体现了嵌入式系统的灵活性和智能性。

6. 设计资料内容清单&&下载链接

资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

0、常见使用问题及解决方法–必读!!!!

1、程序

2、proteus仿真

3、功能要求

4、软硬件流程图

5、开题报告

6、设计报告

7、讲解视频

Altium Designer 安装破解

KEIL+proteus 单片机仿真设计教程

KEIL安装破解

Proteus元器件查找

Proteus安装

Proteus简易使用教程

单片机学习资料

相关数据手册

答辩技巧

设计报告常用描述

鼠标双击打开查找嘉盛单片机51 STM32单片机课程毕业设计.url

img

资料下载链接:

https://docs.qq.com/doc/DS3BobENMR1hLZHVm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何自动监控WordPress网站的运行状态

近来有不少Hostease的客户来咨询关于监控网站在线情况的方法&#xff0c;确实&#xff0c;尽管我们采取了各方面的措施来维护和保护WordPress网站&#xff0c;网站依然有可能由于一些不可控的原因关闭&#xff0c;这种情况往往事发突然&#xff0c;如果没有提前做好准备&#x…

评分卡制作过程中关键参数设定的思考

评分卡制作过程中关键参数设定的思考 评分卡、列线图和网络APP都是预测模型进入生产场景的形式。评分卡&#xff0c;常用于银行或金融机构的贷款审批过程中。其原理在于通过一系列与借款人相关的因素&#xff08;如年龄、收入、职业、信用记录等&#xff09;来为每个人打分&am…

一文速览Llama3:含8B和70B、长度8K、15T训练数据、组合PPO和DPO等方法

前言 4.19日凌晨正准备睡觉时&#xff0c;突然审稿项目组的文弱同学说&#xff1a;Meta发布Llama 3系列大语言模型了 一查&#xff0c;还真是 本文以大模型开发者的视角&#xff0c;帮你迅速梳理下LLama的关键特征&#xff0c;并对比上一个版本的LLama2&#xff0c;且本文后…

Python 字符串 Base64

因消息传输的需要&#xff0c;我们需要对大量文本的字符串进行一下 Base64 转换。 这样的好处是因为在传输的字符串中可能有存在一些特殊字符&#xff0c;这些特殊在经过网络传输的时候会出现编码的问题&#xff0c;并且会影响传输稳定性。 使用 Base64 可以避免这个问题。 方…

面试遇到的算法题

1.字符串转换整数 读入字符串并丢弃无用的前导空格检查下一个字符&#xff08;假设还未到字符末尾&#xff09;为正还是负号&#xff0c;读取该字符&#xff08;如果有&#xff09;。 确定最终结果是负数还是正数。 如果两者都不存在&#xff0c;则假定结果为正。读入下一个字…

GitOps 和 DevOps 有什么区别?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…

03 JavaScript学习:浏览器中执行 JavaScript

我比较习惯Chrome浏览器。 Chrome 是由 Google 开发的免费网页浏览器&#xff0c;调试代码非常方便。 Chrome 官网地址&#xff1a;https://www.google.com/intl/zh-CN/chrome/。 控制台输出 浏览器的控制台是开发者工具中的一个重要组成部分&#xff0c;它可以用来查看网页…

【氮化镓】GaN HEMT失效物理和可靠性

概述: 本文是一篇关于AlGaN/GaN基高电子迁移率晶体管(HEMTs)的失效物理和可靠性研究的综述文章,发表在2013年10月的《IEEE Transactions on Electron Devices》上。文章由Enrico Zanoni等人撰写,主要关注了影响栅极边缘和肖特基结的失效机制,并探讨了提高这些器件可靠性…

springboot的开发流程

文章目录 springboot的开发流程 1.创建maven项目2.引用依赖 1&#xff09;起步依赖2&#xff09;项目依赖3.启动类4.配置文件5.业务代码 1)dto2)controller6.restful测试7.部署 1&#xff09;打包2&#xff09;部署 springboot的开发流程 1.创建maven项目 新建maven项目 配置…

若依框架后台管理系统_修改后台管理密码

若依框架后台管理系统_修改后台管理密码 1. 找见加密函数&#xff1a; /*** 生成BCryptPasswordEncoder密码** param password 密码* return 加密字符串*/public static String encryptPassword(String password){BCryptPasswordEncoder passwordEncoder new BCryptPasswordE…

linux 的Jdk1.8详细安装部署教程

一、环境准备 1.下载安装包 下载地址&#xff0c;这是1.8的你也可以选择安装别的版本的 https://www.oracle.com/java/technologies/downloads/#java8-windows 选择想要的系统和对应的位数&#xff0c;点击下载即可 2.上传安装包 选择自己要安装的路径&#xff0c;&#x…

软阈值函数的应用实例!

让我们通过一个简单的例子来展示软阈值的功能。 假设我们有一个包含一些信号的向量 ( x )&#xff0c;如下所示&#xff1a; [ x [3, -2, 5, -1, 7, -4, 2, 0] ] 现在&#xff0c;我们希望对这个信号进行软阈值处理&#xff0c;以去除幅值较小的分量&#xff0c;并减少噪音。…

Feign的使用

目录 一.概念 二.使用 2.1依赖 2.2启动类注释 2.3.创建service包&#xff0c;写接口 2.4.生产者方法 2.5效果 三.openfeign的服务降级 3.1理论 3.2使用 一.概念 Feign是Spring Cloud提供的声明式、模板化的HTTP生产者&#xff0c;它使得调用远程服务就像调用本地服…

创建SpringBoot控制台程序并打包运行(Windows)

1. 新建一个Springboot项目Study (PS&#xff1a; 这个不需要演示了吧?) 注意pom.xml&#xff0c;是spring-boot-starter&#xff0c;不是spring-boot-web-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

蓝桥杯备赛(C/C++组)

README&#xff1a; 本笔记是自己的备考笔记&#xff0c;按照官网提纲进行复习&#xff01;适合有基础&#xff0c;复习用。 一、总考点 试题考查选手解决实际问题的能力&#xff0c;对于结果填空题&#xff0c;选手可以使用手算、软件、编程等方法解决&#xff0c;对于编程大…

BTP连接cloud connector中配置的SAP

登录地址 登录之后可以看到我们已经配置成功的后端系统SAP。 从cloud connector中获取location ID ,然后在BTP中配置Destination 选择目标标签页&#xff0c;点击‘新建目标’&#xff0c;如下图&#xff1a; 新建连接 暂时不知道错误原因 创建目标-HTTP  新建目标&…

软考134-上午题-【软件工程】-进度管理

一、甘特图&#xff08;了解&#xff09; 1-1、定义 Gantt图是一种简单的水平条形图&#xff0c;它以日历为基准描述项目任务。 水平轴表示日历时间线(如时、天、周、月和年等)&#xff0c;每个条形表示一个任务&#xff0c;任务名称垂直地列在左边的列中&#xff0c;图中水…

DIY mybatisPlus的分页插件

目录 起因修改定义接口重写MyPage的方法 实践测试 起因 在我们通过list返回的列表页&#xff0c;出现了一个需要数据合计的需求&#xff0c;例如一个订单1块钱&#xff0c;那么所有订单加起来多少钱&#xff0c;那么list一般都通过分页返回&#xff0c;而统计所有订单又不能只…

量化研究---小果因子分析系统使用教程,可转债macd因子为例子

文章链接 量化研究---小果因子分析系统使用教程&#xff0c;可转债macd因子为例子 (qq.com) 因子分析是一种多维变量统计分析方法&#xff0c;用于从多个变量中提取少数公共因子。 具体来说&#xff0c;因子分析的核心目的是通过研究变量之间的相关性&#xff0c;将多个相关联…

Spring 事务 (编程式 声明式, Spring 事务传播机制)

事务 事务是一组操作的集合, 是一个不可分割的整体 事务会把所有的操作作为一个整体, 一起向数据库提交或是撤销操作请求. 所以这组操作要么同时成功, 要么同时失败 Spring 中事务的实现 编程式 (手动写代码操作事务)声明式 (通过注解自动开启和提交事务) 编程式事务 开启事务 …