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文件路径,然后开始仿真。开始仿真默认进入时间显示模式,显示电脑当前时间。
显示时间的情况下,按下设置键进入设置模式,时间指示灯亮。整点会有蜂鸣器报时,多少点就响多少次。
按下设置按键分别设置时钟,分钟和秒钟,设置模式下对应设置的变量会闪烁,方便用户设置。设置到秒钟再按下设置按键退出设置模式。通过按键加和减调整设置的时分秒。
通过按下日期按键切换到现实日期模式,数码管显示年月日,日期指示灯亮。
按下设置键进入设置模式,先设置年份,年份闪烁,通过按键加和减完成年份的设置。设置完年份再设置月份,操作同年份调整。再按下设置按键设置日。设置完日期再按下设置键退出设置。
通过按下闹钟按键进入闹钟显示模式,闹钟指示灯亮。显示默认闹钟时间16.30。需要修改闹钟时间的话按下设置键,时间闪烁表示设置时钟,再按下表示设置分钟,设置完分钟再按下设置键退出闹钟设置模式。闹钟时间到了会通过蜂鸣器播放闹钟铃声。期间如果想停止闹铃可以按下停止闹铃按键。
通过按下闹钟按键进入闹钟显示模式,秒表指示灯亮。开始按键启动秒表计时,暂停按键暂停当前秒表计时并显示计时时间。按下复位键复位计时时间为0。
通过按下倒计时按键进入倒计时模式,倒计时指示灯亮。开始按键启动倒计时,暂停按键暂停当前倒计时时间并显示在数码管上。按下复位键复位计时时间为0。
以上仿真结果均符合设计要求。
3. 程序代码
使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。
//主函数
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绘制,可供实物参考。
Proteus仿真和实物作品的区别:
1.运行环境:Proteus仿真是在计算机上运行的,而实物则是在硬件电路板上运行。
2.调试方式:在Proteus仿真中,可以方便地进行单步调试和观察变量值的变化,而在实物中则需要通过调试器或者串口输出等方式进行调试。
电路连接方式:在Proteus仿真中,可以通过软件设置进行电路连接的修改,而在实物中则需要通过硬件电路板和连接线进行修改。
3.运行速度:Proteus仿真通常比实物运行速度快,因为仿真是基于计算机运行的,而实物则需要考虑电路板上的物理限制和器件的响应时间等因素。
4.功能实现:在Proteus仿真中,可以通过软件设置实现不同的功能,而在实物中则需要根据电路设计和器件的性能进行实现。
参考元器件清单
元件 | 型号 | 数量 |
---|---|---|
单片机 | AT89C51 | 1 |
电容 | 10uf | 1 |
电容 | 30pf | 2 |
晶振 | 12MHZ | 1 |
电阻 | 10k | 1 |
按钮 | 17 | |
译码器 | 74LS138 | 1 |
存储器 | 24C02 | 1 |
实时时钟 | DS1302 | 1 |
LED | 绿色 | 2 |
LED | 黄色 | 2 |
LED | 红色 | 3 |
电阻 | 100欧 | 5 |
电阻 | 1k | 1 |
三极管 | PNP | 1 |
蜂鸣器 | 无源 | 1 |
数码管 | 8位共阴 | 1 |
排阻 | 10k | 1 |
晶振 | 32.768khz | 1 |
5. 设计报告
7027字设计报告,内容包括引言,硬件设计、软件设计、软硬件框图、调试、总结和展望等
6. 设计资料内容清单
资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。
0、常见使用问题及解决方法–必读!!!!
1、仿真图
2、程序源码
3、开题报告
3、原理图
5、功能要求
6、元器件清单
7、设计报告
8、软硬件流程框图
9、讲解视频
Altium Designer 软件资料
filename.bat
KEIL软件资料
Proteus软件资料
单片机学习资料
目录清单.txt
答辩技巧
设计报告常用描述
74HC138(中文资料).pdf
鼠标双击打开查找更多51 STM32单片机课程毕业设计.url
资料下载链接(可点击):
https://docs.qq.com/doc/DS0NsTWlHRFRSWmNM
更多资源 点击下方链接:
https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
微信公众号:嘉盛单片机
(可点击):
https://docs.qq.com/doc/DS0NsTWlHRFRSWmNM
更多资源 点击下方链接:
https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
微信公众号:嘉盛单片机
[外链图片转存中…(img-KgN9htrx-1695978329675)]
相关文章:
51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真+程序+原理图+报告+讲解视频)
51单片机音乐闹钟秒表倒计时整点报时多功能电子钟万年历数码管显示( proteus仿真程序原理图报告讲解视频) 讲解视频1.主要功能: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——例子:与中国建交的国家 一、概要二、整体架构流程三、完整代码 一、概要 这段代码主要执行以下任务: 1. 定义辅助函数:首先,定义了两个辅助函数。has_chinese_chars函数用于检查给定的字符串中是否…...
uni-app:js修改元素样式(宽度、外边距)
效果 代码 1、在<view>元素上添加一个ref属性,用于在JavaScript代码中获取对该元素的引用:<view ref"myView" id"mybox"></view> 2、获取元素引用 :const viewElement this.$refs.myView.$el; 3、修改…...
day36-单元测试
1. 单元测试Junit 1.1 什么是单元测试?(掌握) 对部分代码进行测试。 1.2 Junit的特点?(掌握) 是一个第三方的工具。(把别人写的代码导入项目中)(专业叫法:…...
7、脏话检测
6、片花关联长视频 脏话检测功能本身远不如上一篇介绍的片花关联长视频有技术挑战性,不过还是值得说说,因为这是我们采用技术方式提高工作效率的第一次尝试。 游戏解说是审核难度比较大的一类短视频内容,一方面是时间比较长,很多…...
Godot信号教程(使用C#语言)| 创建自定义信号 | 发出自定义信号 | 使用代码监听信号
文章目录 信号是什么连接信号使用编辑器连接信号使用代码连接信号Lambda 自定义信号声明信号发射信号带参数的信号 其他文章 信号是什么 在Godot游戏引擎中,信号是一种用于对象之间通信的重要机制。它允许一个对象发出信号,而其他对象可以连接到这个信号…...
分布式文件存储系统minio、大文件分片传输
上传大文件 1、Promise对象 Promise 对象代表一个异步操作,有三种状态: pending: 初始状态,不是成功或失败状态。fulfilled: 意味着操作成功完成。rejected: 意味着操作失败。 只有异步操作的结果,可以决定当前是哪一种状态&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中,您可以根据身份证号码的规则来判断性别。中国的身份证号码通常采用的是以下规则: 第17位数字代表性别,奇数表示男性,偶数表示女性。 通常,男性的出生日期的第15、16位数字是01,女性是02。 请注意&…...
信息服务上线渗透检测网络安全检查报告和解决方案4(XSS漏洞修复)
系列文章目录 信息服务上线渗透检测网络安全检查报告和解决方案2(安装文件信息泄漏、管理路径泄漏、XSS漏洞、弱口令、逻辑漏洞、终极上传漏洞升级)信息服务上线渗透检测网络安全检查报告和解决方案信息服务上线渗透检测网络安全检查报告和解决方案3(系统漏洞扫描、相对路径覆…...
【SQL】mysql创建定时任务执行存储过程--20230928
1.先设定时区 https://blog.csdn.net/m0_46629123/article/details/133382375 输入命令show variables like “%time_zone%”;(注意分号结尾)设置时区,输入 set global time_zone “8:00”; 回车,然后退出重启(一定记得重启&am…...
安全基础 --- MySQL数据库解析
MySQL的ACID (1)ACID是衡量事务的四个特性 原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离性(Isolation)持久性(Durability) &…...
软件设计师考试学习3
开发模型 瀑布模型 现在基本被淘汰了 是一种结构化方法中的模型,一般用于结构化开发 问题在于需求阶段需求不可能一次搞清楚,很可能做完推翻重做 适用于需求明确或二次开发 原型模型、演化模型、增量模型 原型是为了解决需求不明确的问题 原型在项目…...
使用LDA(线性判别公式)进行iris鸢尾花的分类
线性判别分析((Linear Discriminant Analysis ,简称 LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 [Fisher,1936] 提出,亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术,也就是说它的数据集的每个样本都…...
王学岗生成泛型的简易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实现消息队列的简单例子: 引入依赖 在pom.xml中添加以下依赖: <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.7.5&l…...
性能优化实战使用CountDownLatch
1.分析问题 原程序是分页查询EventAffinityScoreDO表的数据,每次获取2000条在一个个遍历去更新EventAffinityScoreDO表的数据。但是这样耗时比较慢,测试过30万的数据需要2小时 private void eventSubjectHandle(String tenantId, String eventSubject) …...
基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案
一、方案背景 近年来,随着居民体育运动意识的增强,体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时,可能发生受伤意外,甚至牵扯责任赔偿纠纷问题。同时,物品丢失、人力巡逻成本问题突出,体育场…...
leetcodetop100(29) K 个一组翻转链表
K 个一组翻转链表 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单纯的改…...
最新影视视频微信小程序源码-带支付和采集功能/微信小程序影视源码PHP(更新)
源码简介: 这个影视视频微信小程序源码,新更新的,它还带支付和采集功能,作为微信小程序影视源码,它可以为用户 提供丰富的影视资源,包括电影、电视剧、综艺节目等。 这个小程序影视源码,还带有…...
C++:vector 定义,用法,作用,注意点
C 中的 vector 是标准模板库(STL)提供的一种动态数组容器,它提供了一组强大的方法来管理和操作可变大小的数组。以下是关于 vector 的定义、用法、作用以及一些注意点: 定义: 要使用 vector,首先需要包含 …...
Firecamp2.7.1exe安装与工具调试向后端发送SocketIO请求
背景: 笔者在python使用socket-io包时需要一个测试工具,选择了firecamp这个测试工具来发送请求。 参考视频与exe资源包: Firecamp2.7.1exe安装包以及基本使用说明文档(以SocketIO为例).zip资源-CSDN文库 15_send方法…...
MySQL到TiDB:Hive Metastore横向扩展之路
作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整…...
算法通关村-----寻找祖先问题
最近公共祖先 问题描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一…...
Sentinel结合Nacos实现配置持久化(全面)
1、前言 我们在进行分布式系统的开发中,无论是在开发环境还是发布环境,配置一定不能是内存形式的,因为系统可能会在中途宕机或者重启,所以如果放在内存中,那么配置在服务停到就是就会消失,那么此时就需要重…...
Verilog中什么是断言?
断言就是在我们的程序中插入一句代码,这句代码只有仿真的时候才会生效,这段代码的作用是帮助我们判断某个条件是否满足(例如某个数据是否超出了范围),如果条件不满足(数据超出了范围)࿰…...
Oracle分区的使用详解:创建、修改和删除分区,处理分区已满或不存在的插入数据,以及分区历史数据与近期数据的操作指南
一、前言 什么是表分区: Oracle的分区是一种将表或索引数据分割为更小、更易管理的部分的技术。它可以提高查询性能、简化维护操作,并提供更好的数据组织和管理。 表分区和表空间的区别和联系: 在Oracle数据库中,表空间(Tablespace)是用于存储表、索引和其他数据库对…...
SLAM从入门到精通(amcl定位使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 学习slam,一般就是所谓的边定位、边制图的知识。然而在实际生产过程中,比如扫地机器人、agv、巡检机器人、农业机器人&…...
网站建设及数据分析/成都调查事务所
k个男生和k个女生站成一列,前面k个是男生,后面k个是女生,从第一个男生开始报数,报到队列最后一个同学,循环到队首继续报,并且如果一个同学报到的数是m,这个同学就出列,然后后面的同学…...
微网站怎么自己做/销售怎么做
为了最大程度地减少USB的功耗,整个USB核心需要实现在DesignWare USB 2.0 nanoPHY中所采用的各种功耗节省策略。Synopsys已经在DesignWare高速USB 2.0 On-the-Go控制器(HS OTG)核心中实现了这些策略以及其它能够理想地适用于电池供电应用的策略…...
多说评论插件对网站优化/yy直播
文/苏格兰折耳猫 图片来源于网络Social Listening可以帮助企业实现如下图所示的几个商业目标,这引起了一些新媒体、咨询从业者浓厚的兴趣,他们强烈要求笔者继续对Social Listening的分析方法和应用场景做进一步的阐述。作为回应,笔者将在本文…...
机械厂做网站到底有没有效果/刷关键词排名seo
注意:当你发现你设置了所有改设置的后,下拉刷新还是不能使用的话就去找找你的代码是不是存在俩个下拉刷新的方法 json文件夹 {"enablePullDownRefresh": true,"backgroundTextStyle": "dark" }需要刷新的数据 /** 小程…...
梅州网站建设/seo外包方案
select * from slot_value_temp force index(idx_slot_type_id) WHERE slot_type_id xxxxxx; 不定期更新转载于:https://www.cnblogs.com/zhzhang/p/8127586.html...
福州市代办注册公司/惠州seo代理
这个话题比较永恒,关注的人很多,特别是学校刚出来的学生几乎对“企业不愿意招聘新人”那是关心的厉害。社会上对这个现象讨论已久,说企业没有社会责任的有之,说新人培养成本高的有之,说现在新人娇气难伺候的有之&#…...