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检测算法的体育场馆远程视频智能化监控方案
一、方案背景 近年来,随着居民体育运动意识的增强,体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时,可能发生受伤意外,甚至牵扯责任赔偿纠纷问题。同时,物品丢失、人力巡逻成本问题突出,体育场…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
