这个单片机代码实现了一个实验室管理系统,该系统的主要功能包括记录和管理ID信息、日期和时间、以及显示这些信息到OLED屏幕上。以下是对代码主要功能的分析:
定义了多个全局变量来存储系统状态、页面、密码、ID列表等信息。
time
结构体用于存储DS1302时间。
page
和 state
分别表示当前界面和选择状态。
xianshi
和 tmpcal
用于OLED显示和临时计算。
时间计算函数:
cal_total_min
计算给定日期和时间到2000年1月1日的总分钟数。
cal_two_time_diff
和 cal_two_time_diff_str10
计算两个日期之间的分钟差。
EEPROM读写函数:
read_2402_to_ram
从AT24CXX EEPROM读取数据到RAM。
write_ram_to_2402
将RAM中的数据写回到EEPROM。
显示函数:
display_main_page
根据当前页面和状态在OLED屏幕上显示相应的内容。main
函数初始化各种硬件模块和系统状态,包括时钟、UART、LED、按键、OLED、EEPROM、DS1302等。
主循环中,通过扫描按键,处理不同页面和状态下的用户输入,更新显示内容,并执行相应的操作,如查看信息、修改时间、管理ID等。
TIM4_IRQHandler
处理定时器中断,用于计时和数据接收处理。
USART1_IRQHandler
处理串口接收中断,用于接收并处理二维码数据。
主页面 (page 0): 显示当前日期和时间。
次级页面 (page 1): 提供查看信息、修改时间、用户管理等选项。
查看信息页面 (page 2): 显示所有ID和相应时间。
修改时间页面 (page 3): 允许用户调整当前时间。
添加、修改和删除ID页面 (page 4, 7, 8, 9): 允许用户管理ID信息。
密码输入页面 (page 5, 6): 验证用户身份。
从二维码接收数据,验证数据有效性,并处理ID和时间信息。
根据接收到的ID和时间,计算时间差并更新记录。
OLED显示:通过 OLED_Show16x16
和 OLED_P8x16Str
函数在OLED屏幕上显示字符和图标。
密码验证:用户需要输入正确的密码才能查看或管理信息。
数据持久化:将ID和时间信息存储在EEPROM中,确保掉电后数据不丢失。
该系统主要用于管理实验室的ID和时间记录,提供了通过OLED屏幕显示信息的功能,并通过按键操作进行用户交互。通过二维码扫描,系统能够记录用户的进入时间,并计算两次进入的时间差。
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!