当前位置: 首页 > news >正文

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)

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

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)

仿真图proteus7.8及以上

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0053

讲解视频

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)

1.主要功能:

基于51单片机的日期时间闹钟秒表倒计时多功能电子钟万年历仿真设计

1、数码管显示当前日期,时间,可以通过按键修改日期时间;

2、设置闹钟时间,时间到播放音乐;

3、具有秒表功能;

4、具有倒计时功能;

5、具有整点报时功能,多少点蜂鸣器响多少次;

6、具备闰年判断功能,设置日期的时候遵守正常大小月规律。

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

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

2.仿真

开始仿真

打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真默认进入时间显示模式,显示电脑当前时间。

img

显示时间的情况下,按下设置键进入设置模式,时间指示灯亮。整点会有蜂鸣器报时,多少点就响多少次。

按下设置按键分别设置时钟,分钟和秒钟,设置模式下对应设置的变量会闪烁,方便用户设置。设置到秒钟再按下设置按键退出设置模式。通过按键加和减调整设置的时分秒。

img

通过按下日期按键切换到现实日期模式,数码管显示年月日,日期指示灯亮。

按下设置键进入设置模式,先设置年份,年份闪烁,通过按键加和减完成年份的设置。设置完年份再设置月份,操作同年份调整。再按下设置按键设置日。设置完日期再按下设置键退出设置。

img

通过按下闹钟按键进入闹钟显示模式,闹钟指示灯亮。显示默认闹钟时间16.30。需要修改闹钟时间的话按下设置键,时间闪烁表示设置时钟,再按下表示设置分钟,设置完分钟再按下设置键退出闹钟设置模式。闹钟时间到了会通过蜂鸣器播放闹钟铃声。期间如果想停止闹铃可以按下停止闹铃按键。

img

通过按下闹钟按键进入闹钟显示模式,秒表指示灯亮。开始按键启动秒表计时,暂停按键暂停当前秒表计时并显示计时时间。按下复位键复位计时时间为0。

img

通过按下倒计时按键进入倒计时模式,倒计时指示灯亮。开始按键启动倒计时,暂停按键暂停当前倒计时时间并显示在数码管上。按下复位键复位计时时间为0。

以上仿真结果均符合设计要求。

3. 程序代码

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

img

  
//主函数
void main()
{uchar i=0;TMOD=0X11;//定时器0,工作方式1。TH0=0XFC;	//定时1msTL0=0X18;TH1=(65536-10000)/256;TL1=(65536-10000)%256;ET1=1;TR1=1;	ET0=1;//打开定时器0中断允许EA=1;//打开总中断
//	Ds1302Init();   //解注释 显示初始时间	2023年9月3日星期天12点00分00秒 可到ds1302.c修改
while(1)
{	disp();//显示switch(mode)//LED{case 0:led1=0;led2=1;led3=1;led4=1;led5=1;break;case 1:led1=1;led2=0;led3=1;led4=1;led5=1;break;case 2:led1=1;led2=1;led3=0;led4=1;led5=1;break;case 3:led1=1;led2=1;led3=1;led4=0;led5=1;break;case 4:led1=1;led2=1;led3=1;led4=1;led5=0;}i=key_scan();//按键检测if(i==1)//日期{mode=0;flag=0;}if(i==2)//时间{mode=1;flag=0;}if(i==3)//闹钟{mode=2;flag=0;}if(i==4)//秒表{mode=3;flag=0;}if(i==5)//倒计时{mode=4;flag=0;}if(i==9)//停止响铃{TR0=0;num=0;}if(i==6)//设置{if(mode<2){if(flag<3)flag++;elseflag=0;}if(mode==2){if(flag<2)flag++;elseflag=0;}if(mode==4){if(flag<3)flag++;elseflag=0;}}if(i==7)//加{if(mode==0)//日期设置// ds1302_time[7] = {秒, 分, 时, 日, 月, 星期, 年};{if(flag==1)	//年{if(ds1302_time[6]<99)ds1302_time[6]++;					Ds1302Init();}if(flag==2)	//月{if(ds1302_time[4]<12){ds1302_time[4]++;}else{ds1302_time[4] = 1;}Ds1302Init();}if(flag==3)	//日{if(ds1302_time[3]<MonthDays(ds1302_time[6],ds1302_time[4])){ds1302_time[3]++;//如果日期小于于当前月份最后一天 }else{ds1302_time[3] = 1;}Ds1302Init();}}if(mode==1)//时间设置{if(flag==1)	//时{if(ds1302_time[2]<99)ds1302_time[2]++;					Ds1302Init();}if(flag==2)	//分{if(ds1302_time[1]<59)ds1302_time[1]++;					Ds1302Init();}if(flag==3)	//秒{if(ds1302_time[0]<59)ds1302_time[0]++;					Ds1302Init();}}if(mode==2)//闹钟设置{if(flag==1)	//时{if(shi<23)shi++;					
//				At24c02Write(0,shi);}if(flag==2)	//分{if(fen<59)fen++;					
//				At24c02Write(1,fen);}}if(mode==4)//倒计时设置{if(flag==1)	//时{if(shi1<23)shi1++;		}if(flag==2)	//分{if(fen1<59)fen1++;	}if(flag==3)	//秒{if(miao1<59)miao1++;}}}if(i==8)//减{if(mode==0)//日期设置{if(flag==1)	//年{if(ds1302_time[6]>0)ds1302_time[6]--;					Ds1302Init();}if(flag==2)	//月{if(ds1302_time[4]>1){ds1302_time[4]--;}else{ds1302_time[4] = 12;}					Ds1302Init();}if(flag==3)	//日{if(ds1302_time[3]>1){ds1302_time[3]--;		}else{ds1302_time[3] =MonthDays(ds1302_time[6],ds1302_time[4]);//日期从1变为当前月份最后一天 }Ds1302Init();}}if(mode==1)//时间设置{if(flag==1)	//时{if(ds1302_time[2]>0)ds1302_time[2]--;					Ds1302Init();}if(flag==2)	//分{if(ds1302_time[1]>0)ds1302_time[1]--;					Ds1302Init();}if(flag==3)	//秒{if(ds1302_time[0]>0)ds1302_time[0]--;					Ds1302Init();}}if(mode==2)//闹钟设置{if(flag==1)	//时{if(shi>0)shi--;					
//				At24c02Write(0,shi);}if(flag==2)	//分{if(fen>0)fen--;					
//				At24c02Write(1,fen);}}if((mode==4)&&(start==0))//倒计时设置{if(flag==1)	//时{if(shi1>0)shi1--;		}if(flag==2)	//分{if(fen1>0)fen1--;	}if(flag==3)	//秒{if(miao1>0)miao1--;}}}//倒计时,秒表控制if(mode>2){if(i==10)//开始{start=1;flag=0;}if(i==11)//暂停start=!start;if(i==12)//复位{start=0;fen2=0;miao2=0;haomiao=0;shi1=0;fen1=0;miao1=0;}}}
}

4.原理图

原理图使用AD绘制,可供实物参考。

img

Proteus仿真和实物作品的区别:

1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。

2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。

电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。

3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。

4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。

参考元器件清单

元件型号数量
单片机AT89C511
电容10uf1
电容30pf2
晶振12MHZ1
电阻10k1
按钮17
译码器74LS1381
存储器24C021
实时时钟DS13021
LED绿色2
LED黄色2
LED红色3
电阻100欧5
电阻1k1
三极管PNP1
蜂鸣器无源1
数码管8位共阴1
排阻10k1
晶振32.768khz1

5. 设计报告

7027字设计报告,内容包括引言,硬件设计、软件设计、软硬件框图、调试、总结和展望等

img

6. 设计资料内容清单

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

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

1、仿真图

2、程序源码

3、开题报告

3、原理图

5、功能要求

6、元器件清单

7、设计报告

8、软硬件流程框图

9、讲解视频

Altium Designer 软件资料

filename.bat

KEIL软件资料

Proteus软件资料

单片机学习资料

目录清单.txt

答辩技巧

设计报告常用描述

74HC138(中文资料).pdf

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

img

资料下载链接(可点击):

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

更多资源 点击下方链接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW

微信公众号:嘉盛单片机

img

(可点击):

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

更多资源 点击下方链接:

https://docs.qq.com/sheet/DS0xIa0llTmtNakRW

微信公众号:嘉盛单片机

[外链图片转存中…(img-KgN9htrx-1695978329675)]

相关文章:

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)

51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真程序原理图报告讲解视频&#xff09; 讲解视频1.主要功能&#xff1a;2.仿真3. 程序代码4.原理图5. 设计报告6. 设计资料内容清单 51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显…...

Scala第九章节

Scala第九章节 scala总目录 章节目标 理解包的相关内容掌握样例类, 样例对象的使用掌握计算器案例 1. 包 实际开发中, 我们肯定会遇到同名的类, 例如: 两个Person类. 那在不改变类名的情况下, 如何区分它们呢? 这就要使用到包(package)了. 1.1 简介 包就是文件夹, 用关…...

arduino - UNO-R3,mega2560-R3,NUCLEO-H723ZG的arduino引脚定义区别

文章目录 arduino - UNO-R3,mega2560-R3,NUCLEO-H723ZG的引脚定义区别概述笔记NUCLEO-H723ZGmega2560-R3UNO-R3经过比对, 这2个板子(NUCLEO-H723ZG, mega2560-R3)都是和UNO-R3的arduino引脚定义一样的.mega2560-r3和NUCLEO-H723ZG的区别补充arduino uno r3的纯数字IO和模拟IO作…...

提取多个txt数据并合成excel——例子:与中国建交的国家

提取多个txt数据并合成excel——例子&#xff1a;与中国建交的国家 一、概要二、整体架构流程三、完整代码 一、概要 这段代码主要执行以下任务&#xff1a; 1. 定义辅助函数&#xff1a;首先&#xff0c;定义了两个辅助函数。has_chinese_chars函数用于检查给定的字符串中是否…...

uni-app:js修改元素样式(宽度、外边距)

效果 代码 1、在<view>元素上添加一个ref属性&#xff0c;用于在JavaScript代码中获取对该元素的引用&#xff1a;<view ref"myView" id"mybox"></view> 2、获取元素引用 &#xff1a;const viewElement this.$refs.myView.$el; 3、修改…...

day36-单元测试

1. 单元测试Junit 1.1 什么是单元测试&#xff1f;&#xff08;掌握&#xff09; 对部分代码进行测试。 1.2 Junit的特点&#xff1f;&#xff08;掌握&#xff09; 是一个第三方的工具。&#xff08;把别人写的代码导入项目中&#xff09;&#xff08;专业叫法&#xff1a;…...

7、脏话检测

6、片花关联长视频 脏话检测功能本身远不如上一篇介绍的片花关联长视频有技术挑战性&#xff0c;不过还是值得说说&#xff0c;因为这是我们采用技术方式提高工作效率的第一次尝试。 游戏解说是审核难度比较大的一类短视频内容&#xff0c;一方面是时间比较长&#xff0c;很多…...

Godot信号教程(使用C#语言)| 创建自定义信号 | 发出自定义信号 | 使用代码监听信号

文章目录 信号是什么连接信号使用编辑器连接信号使用代码连接信号Lambda 自定义信号声明信号发射信号带参数的信号 其他文章 信号是什么 在Godot游戏引擎中&#xff0c;信号是一种用于对象之间通信的重要机制。它允许一个对象发出信号&#xff0c;而其他对象可以连接到这个信号…...

分布式文件存储系统minio、大文件分片传输

上传大文件 1、Promise对象 Promise 对象代表一个异步操作&#xff0c;有三种状态&#xff1a; pending: 初始状态&#xff0c;不是成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。 只有异步操作的结果&#xff0c;可以决定当前是哪一种状态&a…...

在 msys2/mingw 下安装及编译 opencv

最简单就是直接安装 pacman -S mingw-w64-x86_64-opencv 以下记录一下编译的过程 1. 安装编译工具及第三方库 pacman -S --needed base-devel mingw-w64-x86_64-toolchain unzip gccpacman -S python mingw-w64-x86_64-python2 mingw-w64-x86_64-gtk3 mingw-w64-x86_64-…...

java 根据身份证号码判断性别

在Java中&#xff0c;您可以根据身份证号码的规则来判断性别。中国的身份证号码通常采用的是以下规则&#xff1a; 第17位数字代表性别&#xff0c;奇数表示男性&#xff0c;偶数表示女性。 通常&#xff0c;男性的出生日期的第15、16位数字是01&#xff0c;女性是02。 请注意&…...

信息服务上线渗透检测网络安全检查报告和解决方案4(XSS漏洞修复)

系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)信息服务上线渗透检测网络安全检查报告和解决方案信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆…...

【SQL】mysql创建定时任务执行存储过程--20230928

1.先设定时区 https://blog.csdn.net/m0_46629123/article/details/133382375 输入命令show variables like “%time_zone%”;&#xff08;注意分号结尾&#xff09;设置时区&#xff0c;输入 set global time_zone “8:00”; 回车,然后退出重启&#xff08;一定记得重启&am…...

安全基础 --- MySQL数据库解析

MySQL的ACID &#xff08;1&#xff09;ACID是衡量事务的四个特性 原子性&#xff08;Atomicity&#xff0c;或称不可分割性&#xff09;一致性&#xff08;Consistency&#xff09;隔离性&#xff08;Isolation&#xff09;持久性&#xff08;Durability&#xff09; &…...

软件设计师考试学习3

开发模型 瀑布模型 现在基本被淘汰了 是一种结构化方法中的模型&#xff0c;一般用于结构化开发 问题在于需求阶段需求不可能一次搞清楚&#xff0c;很可能做完推翻重做 适用于需求明确或二次开发 原型模型、演化模型、增量模型 原型是为了解决需求不明确的问题 原型在项目…...

使用LDA(线性判别公式)进行iris鸢尾花的分类

线性判别分析((Linear Discriminant Analysis &#xff0c;简称 LDA)是一种经典的线性学习方法&#xff0c;在二分类问题上因为最早由 [Fisher,1936] 提出&#xff0c;亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术&#xff0c;也就是说它的数据集的每个样本都…...

王学岗生成泛型的简易Builder

github大佬地址 使用 //class 可以传参DataBean.classpublic static <T> T handlerJson(String json, Class<T> tClass) {T resultData null;if (CommonUtils.StringNotNull(json) && !nullString.equals(json)) {if (isArray(json)) {resultData BaseN…...

kafka消息队列简单使用

下面是使用Spring Boot和Kafka实现消息队列的简单例子&#xff1a; 引入依赖 在pom.xml中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.5&l…...

性能优化实战使用CountDownLatch

1.分析问题 原程序是分页查询EventAffinityScoreDO表的数据&#xff0c;每次获取2000条在一个个遍历去更新EventAffinityScoreDO表的数据。但是这样耗时比较慢&#xff0c;测试过30万的数据需要2小时 private void eventSubjectHandle(String tenantId, String eventSubject) …...

基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案

一、方案背景 近年来&#xff0c;随着居民体育运动意识的增强&#xff0c;体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时&#xff0c;可能发生受伤意外&#xff0c;甚至牵扯责任赔偿纠纷问题。同时&#xff0c;物品丢失、人力巡逻成本问题突出&#xff0c;体育场…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...