【TB作品】基于STM32单片机的实验室器材管理登记二维码系统

news2024/11/26 23:40:52

在这里插入图片描述

这个单片机代码实现了一个实验室管理系统,该系统的主要功能包括记录和管理ID信息、日期和时间、以及显示这些信息到OLED屏幕上。以下是对代码主要功能的分析:

全局变量定义

  • 定义了多个全局变量来存储系统状态、页面、密码、ID列表等信息。
  • time 结构体用于存储DS1302时间。
  • pagestate 分别表示当前界面和选择状态。
  • xianshitmpcal 用于OLED显示和临时计算。

主要功能函数

  1. 时间计算函数:

    • cal_total_min 计算给定日期和时间到2000年1月1日的总分钟数。
    • cal_two_time_diffcal_two_time_diff_str10 计算两个日期之间的分钟差。
  2. EEPROM读写函数:

    • read_2402_to_ram 从AT24CXX EEPROM读取数据到RAM。
    • write_ram_to_2402 将RAM中的数据写回到EEPROM。
  3. 显示函数:

    • display_main_page 根据当前页面和状态在OLED屏幕上显示相应的内容。

主程序

  • main 函数初始化各种硬件模块和系统状态,包括时钟、UART、LED、按键、OLED、EEPROM、DS1302等。
  • 主循环中,通过扫描按键,处理不同页面和状态下的用户输入,更新显示内容,并执行相应的操作,如查看信息、修改时间、管理ID等。

中断处理

  • TIM4_IRQHandler 处理定时器中断,用于计时和数据接收处理。
  • USART1_IRQHandler 处理串口接收中断,用于接收并处理二维码数据。

页面和功能

  1. 主页面 (page 0): 显示当前日期和时间。
  2. 次级页面 (page 1): 提供查看信息、修改时间、用户管理等选项。
  3. 查看信息页面 (page 2): 显示所有ID和相应时间。
  4. 修改时间页面 (page 3): 允许用户调整当前时间。
  5. 添加、修改和删除ID页面 (page 4, 7, 8, 9): 允许用户管理ID信息。
  6. 密码输入页面 (page 5, 6): 验证用户身份。

数据处理

  • 从二维码接收数据,验证数据有效性,并处理ID和时间信息。
  • 根据接收到的ID和时间,计算时间差并更新记录。

详细说明

  • OLED显示:通过 OLED_Show16x16OLED_P8x16Str 函数在OLED屏幕上显示字符和图标。
  • 密码验证:用户需要输入正确的密码才能查看或管理信息。
  • 数据持久化:将ID和时间信息存储在EEPROM中,确保掉电后数据不丢失。

功能总结

该系统主要用于管理实验室的ID和时间记录,提供了通过OLED屏幕显示信息的功能,并通过按键操作进行用户交互。通过二维码扫描,系统能够记录用户的进入时间,并计算两次进入的时间差。

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

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

相关文章

邮件钓鱼--前置-攻击防范 7 看

目录 1、什么是 SPF: 2、如何判断 SPF: 3.邮件钓鱼防范:7 看 1、什么是 SPF: SPF 记录:原理、语法及配置方法简介 (zhetao.com) SPF记录详解_spf写法-CSDN博客 发件人策略框架(Sender Policy Frame…

搭建知识付费APP平台教学:在线教育系统源码详解

如何搭建一个高效的知识付费APP平台呢?今天,笔者将详细解析在线教育系统的源码,帮助您快速搭建自己的知识付费APP平台。 一、平台的核心功能 一个完整的知识付费APP平台通常需要具备以下核心功能: 用户管理 内容管理 支付 课…

MySQL 日志(二)

本篇将继续介绍MySQL日志的相关内容 目录 一、二进制日志 简介 注意事项 删除二进制日志 查看二进制日志 二进制日志的格式 二、服务器日志维护 一、二进制日志 简介 二进制日志中主要记录了MySQL的更改事件(不包含SELECT和SHOW),例如:表的…

springer 在线投稿编译踩坑

springer投稿,在线编译踩坑总结 注意: 有的期刊需要双栏,而预定义的模板中可能为单栏,需要增加iicol选项。 例如: \documentclass[sn-mathphys-num]{sn-jnl}% —>\documentclass[sn-mathphys-num, iicol]{sn-jnl}…

【iOS】如何断点看系统方法在哪一个库

如何断点看系统方法在哪一个库 开源网站如何断点看系统方法在哪一个库1 下符号断点2 符号断点中输入 load ,并且开启断点(Enable)。3 运行程序,触发断点,在堆栈信息中找到load方法,可以看到其在libobjc.A.d…

互联网应用主流框架整合之构建REST风格的系统

REST(Representational State Transfer),中文译为“表述性状态转移”,是由Roy Fielding博士在他的博士论文中提出的一种软件架构风格,特别适用于网络应用的设计。REST不是一个标准,而是一种设计原则和约束集…

web错题(1)

action属性是form标签的必须属性&#xff0c;用于指定表单提交时表单数据将被发往哪里 dir能够指定文本显示方向的属性 可以产生下拉列表的标记时<select> multiple属性设为true&#xff0c;表示输入字段可以选择多个值 lable标签的for属性可以把lable绑定到另一个元…

【Echarts系列】水平柱状图

【Echarts系列】水平柱状图 序示例数据格式代码 序 为了节省后续开发学习成本&#xff0c;这个系列将记录我工作所用到的一些echarts图表。 示例 水平柱状图如图所示&#xff1a; 数据格式 data [{name: 于洪区,value: 2736},{name: 新民市,value: 2844},{name: 皇姑区,…

抢占人工智能行业红利,前阿里巴巴产品专家带你15天入门AI产品经理

前言 当互联网行业巨头纷纷布局人工智能&#xff0c;国家将人工智能上升为国家战略&#xff0c;藤校核心课程涉足人工智能…人工智能领域蕴含着巨大潜力&#xff0c;早已成为业内共识。 面对极大的行业空缺&#xff0c;不少人都希望能抢占行业红利期&#xff0c;进入AI领域。…

LeetCode 230.二叉搜索树中第K小的元素

各位看官们&#xff0c;大家好啊&#xff0c;今天这个题我用的方法时间复杂度比较高&#xff0c;但也是便于便于理解的一种方法&#xff0c;大家如果觉得的好的话&#xff0c;就给个免费的赞吧,谢谢大家了^ _ ^ 题目要求如图所示: 题目步骤&#xff1a; 1.我们可以一维数组来接…

【枚举】564. 寻找最近的回文数

本文涉及知识点 枚举 LeetCode564. 寻找最近的回文数 给定一个表示整数的字符串 n &#xff0c;返回与它最近的回文整数&#xff08;不包括自身&#xff09;。如果不止一个&#xff0c;返回较小的那个。 “最近的”定义为两个整数差的绝对值最小。 示例 1: 输入: n “123”…

Linux网络-HttpServer的实现

文章目录 前言一、请求报文的解析URL的解析 二、响应报文的发送Content-LenthConten-TypeCookie和Set-CookieCookie的风险 三、尝试发送一个HTML网页404网页Location 重定向 四、浏览器的多次请求行为总结 前言 之前我们简单理解了一下Http协议&#xff0c;本章我们将在LInux下…

00 - matlab m_map地学绘图工具安装及简单使用教程

00 - matlab m_map地学绘图工具安装及简单使用教程 0. 引言1. m_map工具的获取及配置过程2. 绘图示例3. 结语 0. 引言 m_map是MATLAB中的一个绘图工具包&#xff0c;用于绘制地图和地理数据。它提供了一系列函数&#xff0c;可以用来绘制地理投影、添加地理特征、绘制等值线图等…

wps-文档-js宏-批量修改表格格式

目录 前言开启JS宏我的脚本参考API文档 前言 由于需要修改word的表格的格式&#xff0c;一个一个的修改太慢了&#xff0c;所以需要通过宏的方式来修改&#xff0c;需要注意的是低版本可能没有JS宏… 开启JS宏 切换到工具–>点击开发工具 点击之后功能栏会变化成这样 选…

Fluent固体运动的设置方法(1)

1 概述 固体运动是某些CFD问题中必须要考虑的因素&#xff0c;如风扇的旋转。相关问题可分类如下&#xff1a; 问题类型是否为刚体运动规律是否已知无特定称呼YY六自由度运动问题YN流固耦合问题NN 在 Fluent 中&#xff0c;有多种方法表征固体运动&#xff0c;包括&#xff1…

js编程环境配置-vscode

1、安装Node.js 官网下载 选择适合你Windows系统架构&#xff08;32位或64位&#xff09;的安装包。windows系统选择“Windows Installer (.msi)”或“Windows Binary (.exe)”进行下载。 双击下载的.msi或.exe文件进行安装。 在cmd中输入node --version和npm --version&…

word中根据上级设置下级编号

如上级是3.13.4&#xff0c;如下图 现在想设置下级编码跟随上级逐级显示成3.13.4.1 则在标题功能说明这点击顶部菜单栏的编号按钮&#xff0c;如下图 然后&#xff0c;选择自定义编号-自定义列表-自定义按钮 然后重点是编号格式这一栏&#xff0c;需要手动填写下前三级的编号&…

统计信号处理基础 习题解答10-16

题目&#xff1a; 对于例10.1&#xff0c;证明由观察数据得到的信息是&#xff1a; 解答&#xff1a; 基于习题10-15的结论&#xff0c;&#xff0c;那么&#xff1a; 而根据习题10-15的结论&#xff1a; 此条件概率也是高斯分布&#xff0c;即&#xff1a; 根据相同的计算&a…

Hexo 搭建个人博客(ubuntu20.04)

1 安装 Nodejs 和 npm 首先登录NodeSource官网&#xff1a; Nodesource Node.js DEB 按照提示安装最新的 Node.js 及其配套版本的 npm。 &#xff08;1&#xff09;以 sudo 用户身份运行下面的命令&#xff0c;下载并执行 NodeSource 安装脚本&#xff1a; sudo curl -fsSL…

训练营第三十六天| 337.打家劫舍 III121. 买卖股票的最佳时机

337.打家劫舍 III 力扣题目链接(opens new window) 在上次打劫完一条街道之后和一圈房屋后&#xff0c;小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为“根”。 除了“根”之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察…