1. 系统概述
点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/92081545
基于单片机的图书馆智能座位管理平台是一套针对公共自习区域设计的智能化管理系统。系统以 AT89C52 单片机作为核心控制器,通过人体检测模块实时判断座位是否被占用,并利用灯光与数码管显示的联动实现座位占用情况的可视化展示。整个系统共设有 16 个座位,每个座位均具备独立检测能力,当有人坐下时立即点亮对应指示灯,同时统计总占用人数,使管理人员或学生能够实时了解自习室的座位使用情况。
系统采用延时确认机制来避免误触发,例如短暂离座或误检测导致的状态波动。在检测到座位由有人变为无人时,系统会启动 5 秒延时计时器,在二次确认无人状态后才关闭座位对应 LED 灯并更新数码管的占用人数。此机制提高了管理系统的准确性,使座位使用状态更加真实可信。本平台结构清晰、功能稳定、易于扩展,是图书馆、自习室、阅览室智能管理的有效解决方案。
2. 系统功能介绍
2.1 座位状态实时检测功能
系统在 16 个座位上分别安装红外人体检测模块或压力传感器。当有人坐下时,传感器立即输出高电平或触发信号,单片机检测到该变化后立即执行以下操作:
- 点亮与该座位对应的座位灯;
- 若原状态为空座,则将占用人数计数器加一;
- 更新数码管的实时显示数字。
该功能实现了对座位占用情况的即时响应,保证信息的实时性。
2.2 无人状态确认与延时处理功能
为了避免用户短暂离座、身体移动等造成错误判断,系统采用 5 秒延时确认机制。当某个座位从有人变为无人时,系统并不会立即执行熄灯与计数减一,而是启动以下流程:
- 首次检测为空座 → 系统启动 5 秒定时器;
- 5 秒后再次检测座位;
- 若仍为空座,则:
- 熄灭对应座位灯,
- 占用人数计数器减一,
- 更新数码管显示;
- 若 5 秒后检测到座位有人,则:
- 保持灯亮,
- 数据维持不变。
此功能有效减少了因误检测造成的座位显示错误,从而提高系统整体可靠性。
2.3 座位占用总数显示功能
系统通过四位数码管(或 LCD 显示模块)实时显示当前共有多少个座位处于占用状态。数字范围为 0–16,当所有座位均有人时显示“16”,所有座位无人时显示“0”。
本系统采用扫描式动态显示方式,保证显示稳定且清晰。占用人数通过单片机内部变量维护,每次座位状态发生变化时立即刷新显示。
3. 系统电路设计
本系统硬件由单片机控制模块、人体检测模块、LED 座位指示灯模块、数码管显示模块、定时电路、电源电路等组成,各部分之间紧密配合实现完整功能。
3.1 单片机控制模块(AT89C52)
AT89C52 是系统的大脑,负责采集 16 个座位的状态信号,执行延时判断逻辑、人数计数逻辑,并控制座位灯与显示屏的刷新。其特点包括:
- 稳定的时序控制;
- 多 IO 口支持 16 路座位检测;
- 支持定时器生成精确 5 秒延时;
- 易于扩展更多传感器或座位。
单片机采用 11.0592MHz 晶振,保证系统执行效率,同时为未来扩展串口通信提供兼容性。
3.2 人体检测模块
每个座位配置一个人体检测模块,如:
- 红外热释电人体检测模块(PIR)
- 压力开关传感器
- 红外对射模块
系统常用方法为 PIR 红外人体检测,其输出特点为:
- 有人 → 输出高电平;
- 无人 → 输出低电平;
- 响应灵敏度适中,不易误触发。
传感器输出信号进入单片机 IO 口,为后续状态判断提供依据。
3.3 LED 座位指示灯模块
每个座位对应一个 LED 指示灯,采用如下原则设计:
LED 作为状态提示灯,使用户或管理者可直接看到哪些座位已经被占用。
3.4 数码管显示模块
显示模块采用四位共阴或共阳数码管,显示当前占用座位总数(0–16)。采用动态扫描方式实现:
- 单片机依次点亮各个数码管位;
- 刷新频率高于 60Hz 人眼无闪烁感;
- 数字显示稳定易辨识。
数码管的数据口与位选口分别连接单片机两个端口,方便扩展与移植。
3.5 定时模块
系统的 5 秒延时由单片机内部定时器 T0 或 T1 生成。定时精度高,避免因时间误差造成误判断。
3.6 电源模块
系统电源一般使用 5V 稳压电源模块,包括:
电源为传感器、单片机、LED 等模块提供稳定供电。
4. 程序设计
程序设计主要包括主程序框架、座位状态检测程序、延时与二次判断模块、LED 指示灯控制模块、人数计数模块、数码管显示模块等部分。
整体程序采用循环扫描方式,确保系统实时响应。
4.1 主程序结构
主程序用于初始化系统、实时扫描座位状态,并刷新显示:
void main()
{
System_Init();
while(1)
{
Scan_Seats();
Update_Display();
}
}
4.2 座位扫描程序设计
系统为 16 个座位分别维护一个状态数组:
unsigned char seat_state[16]; // 1 有人,0 无人
unsigned int seat_timer[16]; // 延时时间计数器(用于 5 秒判断)
unsigned char seat_confirm[16]; // 延时确认标志
扫描程序示例:
void Scan_Seats()
{
for(int i=0; i<16; i++)
{
unsigned char current = Read_Sensor(i);
// 当前有人
if(current == 1)
{
seat_state[i] = 1;
seat_timer[i] = 0;
seat_confirm[i] = 0;
LED_On(i);
}
else // 当前无人
{
if(seat_state[i] == 1 && seat_confirm[i] == 0) // 开始延时
{
seat_timer[i]++;
if(seat_timer[i] >= DELAY_5S)
{
seat_confirm[i] = 1;
}
}
else if(seat_confirm[i] == 1) // 二次确认无人
{
if(current == 0)
{
seat_state[i] = 0;
LED_Off(i);
}
seat_confirm[i] = 0;
seat_timer[i] = 0;
}
}
}
Update_Count();
}
4.3 读取传感器程序设计
unsigned char Read_Sensor(unsigned char id)
{
if(SENSOR_PORT & (1 << id))
return 1;
else
return 0;
}
根据传感器信号判断座位是否有人。
4.4 LED 指示灯控制程序
void LED_On(unsigned char id)
{
LED_PORT |= (1 << id);
}
void LED_Off(unsigned char id)
{
LED_PORT &= ~(1 << id);
}
4.5 座位人数统计程序
void Update_Count()
{
total_count = 0;
for(int i=0; i<16; i++)
{
if(seat_state[i] == 1)
total_count++;
}
}
统计结果实时更新显示模块。
4.6 数码管动态显示程序
void Update_Display()
{
Display_Num(total_count);
}
显示模块包括字体表、段码刷新、位扫描等内容,通过动态扫描保证数字稳定显示。
5. 总结
本系统实现了一套基于单片机的图书馆智能座位管理平台,具备 16 个座位实时检测、延时确认、自动计数、LED 指示与数码管显示等完整功能。系统不仅能实时显示座位占用情况,还能避免误触发,提高数据准确性。该设计结构清晰、逻辑严谨、稳定可靠,可广泛应用于图书馆、自习室、阅览室等需要座位管理的场所,并具备良好的扩展能力和工程应用价值。
64