【51毕业设计案例】【022】智能起床闹钟(随机密码)-基于51/52单片机

本文主要是介绍【51毕业设计案例】【022】智能起床闹钟(随机密码)-基于51/52单片机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、设计介绍

模块说明:

  • 1、STC89C52:主控芯片 单片机
  • 2、LCD1602:用于显示数据信息
  • 3、有源蜂鸣器:可以发出声音进行警报,有源蜂鸣器只需要给电平就可以直接发出声响,无源蜂鸣器则需要改变高低电平频率来发出声响
  • 4、DS1302实时时钟:获取当前实时时钟,模块内置纽扣电池,单片机关机后能自动给模块供电
  • 5、矩阵键盘:使用独立按键组成的4*4键盘,使用8个IO口来获取16个按键的状态
  • 6、AT24C02:存储模块,用于存储保存数据

功能介绍:

  • 1、该系统能进行时间设置、闹钟设置、闹钟未成功关闭下一次响起间隔设置
  • 2、当定时时间一到,系统闹铃响起,以叫醒用户为目的
  • 3、若未用户未完全被叫醒,则间隔一段时间再次让闹铃响起,若用户成功被叫醒,闹钟则不会继续响起
  • 4、闹铃响起时通过蜂鸣器进行提醒,并且在LCD显示屏上显示两位数相乘的公式,需要用户进行答题,答对则闹钟关闭,打错则闹钟继续
  • 5、对闹钟设置使用24C02进行数据掉电保存

硬件框图:

软件流程图:

原理图:

使用立创EDA格式打开,打开方式为将文件夹内 .json 后缀文件拖入嘉立创EDA(标准版) - 免费、易用、强大的在线电路设计软件 立创EDA编辑网站中即可

本次原理图使用立创EDA画出的,对于新手较为方便,全中文易上手,不需要安装任何软件。另,Altium Designer 格式打开后标注会有所丢失,建议使用立创EDA

Proteus仿真图:

元器件清单:

如果您不能独自完成焊接,我这边也提供付费焊接服务以及调试,完成后第一时间通过快递寄给您。

二、代码资料展示

主要代码展示:

//显示界面  每个菜单的结构
void Dis_menu()
{if (menu == 0){//判断是否在闹铃响起状态  需要输入公式答案if (Rev_shi == shi && Rev_fen == fen && Flag_Right == 0){LCD_Clear();LCD_Write_String(0, 0, "Plsease Answer");LCD_Write_String(0, 1, "  *  =    <<<<");}else{//时钟静态页面LCD_Clear();LCD_Write_String(0, 0, "  20  -  -    ");LCD_Write_String(0, 1, "     :  :     ");}}else if (menu == 1){//时间设置静态页面LCD_Clear();LCD_Write_String(0, 0, "  20  -  -    ");LCD_Write_String(0, 1, "     :  :     ");//显示时分秒LCD_Write_Char(4, 0, nian / 10 % 10 + 0x30);LCD_Write_Char(5, 0, nian % 10 + 0x30);LCD_Write_Char(7, 0, yue / 10 % 10 + 0x30);LCD_Write_Char(8, 0, yue % 10 + 0x30);LCD_Write_Char(10, 0, ri / 10 % 10 + 0x30);LCD_Write_Char(11, 0, ri % 10 + 0x30);LCD_Write_Char(3, 1, shi / 10 % 10 + 0x30);LCD_Write_Char(4, 1, shi % 10 + 0x30);LCD_Write_Char(6, 1, fen / 10 % 10 + 0x30);LCD_Write_Char(7, 1, fen % 10 + 0x30);LCD_Write_Char(9, 1, miao / 10 % 10 + 0x30);LCD_Write_Char(10, 1, miao % 10 + 0x30);}else if (menu == 7){//设置定时开始时间页面write_time();LCD_Clear();LCD_Write_String(0, 0, " Set Alarm Time ");LCD_Write_String(0, 1, "    :       min ");LCD_Write_Char(2, 1, W_shi / 10 % 10 + 0x30);		LCD_Write_Char(3, 1, W_shi % 10 + 0x30);LCD_Write_Char(5, 1, W_fen / 10 % 10 + 0x30);		LCD_Write_Char(6, 1, W_fen % 10 + 0x30);LCD_Write_Number(10, 1, Alarm_Delay, 2);}Dis_Set_Dat();//刷新数据
}

工程管理展示:

下载内容展示:

更多详细功能与代码视频讲解B站搜索易佳电子设计 主页搜索该设计编号或名称

视频链接:【51毕业设计案例】【022】智能起床闹钟(随机密码)-基于51/52单片机_哔哩哔哩_bilibili

这篇关于【51毕业设计案例】【022】智能起床闹钟(随机密码)-基于51/52单片机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829286

相关文章

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组