1. 系统概述
点击链接下载protues仿真资料:https://download.csdn.net/download/m0_51061483/92081464
基于51单片机的医院银行排队叫号系统是一种用于服务窗口排队管理的嵌入式控制系统,广泛应用于医院挂号、银行业务办理、政务服务大厅等场景。系统通过主从机架构实现排队号生成、叫号提示以及队列状态显示功能,从而提高窗口服务效率,减少人工管理成本。
系统以51单片机作为核心控制器,通过按键输入实现叫号操作,并通过数码管实时显示当前叫号号码,同时配合蜂鸣器进行声音提示。在通信层面,主机与从机之间采用串行通信方式,实现排队数据同步,从机负责显示当前排队队列状态,使管理者能够直观了解等待人数及队列情况。
该系统结构清晰、扩展性强、可靠性高,适用于多窗口排队管理系统的基础设计方案。
2. 系统功能设计
2.1 主机叫号功能
主机系统负责核心叫号控制。操作人员通过按键触发叫号指令,每按一次按键,系统自动生成新的叫号编号,并通过数码管显示当前被叫号码。
控制流程如下:
按键触发 → 号码+1 → 数码管显示 → 蜂鸣器提示
叫号逻辑保证号码递增且不重复,适用于连续排队系统。
2.2 蜂鸣器提示功能
当主机执行叫号操作时,蜂鸣器发出短促提示音,用于提醒等待顾客。
控制逻辑:
CALL_EVENT → BEEP ON → DELAY → BEEP OFF
该功能增强系统交互性与提示效果。
2.3 从机排队接收功能
从机通过串行通信接收主机发送的叫号数据,实现排队信息同步。
通信流程:
主机发送号码 → 串口通信 → 从机接收 → 更新队列
从机根据接收数据进行队列更新与显示。
2.4 队列显示功能
从机负责显示当前排队人数或前排等待数量,使管理人员能够实时掌握排队情况。
显示内容包括:
- 当前排队人数
- 即将叫号数量
- 队列状态
显示逻辑:
Queue_Count → 数码管显示
2.5 系统扩展功能设计
系统具备良好的扩展能力,可增加以下功能:
- 多窗口叫号系统
- LED屏幕显示
- 语音播报模块
- 数据存储功能
3. 系统总体方案设计
系统采用主从机架构设计:
- 主机:负责叫号控制与数据发送
- 从机:负责队列接收与显示
系统组成如下:
- 51单片机主控模块(主机)
- 51单片机控制模块(从机)
- 按键输入模块
- 数码管显示模块
- 蜂鸣器报警模块
- 串行通信模块
- 电源模块
系统运行流程如下:
系统初始化
↓
主机等待按键
↓
生成叫号
↓
数码管显示
↓
蜂鸣器提示
↓
串口发送数据
↓
从机接收数据
↓
更新队列显示
↓
循环执行
4. 系统电路设计
4.1 51单片机最小系统设计
系统主控采用51单片机,负责逻辑处理与通信控制。
组成部分:
4.1.1 晶振电路设计
提供系统运行时钟信号。
常用频率:
11.0592MHz
作用:
- 提供稳定时序
- 保证串口通信精度
- 支持定时器运行
4.1.2 复位电路设计
保证系统可靠启动。
功能:
- 上电复位
- 手动复位
- 异常恢复
4.2 按键输入电路设计
用于主机叫号控制。
按键功能:
| 按键 | 功能 |
|---|---|
| CALL | 叫号 |
| RESET | 清零 |
输入方式:
低电平触发
4.3 数码管显示电路设计
用于显示当前叫号号码。
显示方式:
- 动态扫描
- 多位显示
显示内容:
当前叫号:001 → 999
作用:
- 实时显示号码
- 提高用户可视性
4.4 蜂鸣器电路设计
用于叫号提示。
结构:
单片机IO → 三极管 → 蜂鸣器
作用:
- 提示叫号
- 增强系统交互
4.5 串行通信电路设计
主从机之间通过UART通信。
通信结构:
主机TX → 从机RX
从机TX → 主机RX
通信参数:
9600bps, 8N1
作用:
- 数据传输
- 队列同步
4.6 从机数码管显示电路
用于显示队列信息。
显示内容:
- 当前排队人数
- 等待数量
结构:
单片机 → 数码管驱动 → 显示队列值
4.7 电源模块设计
提供系统稳定供电。
功能:
- 5V稳压输出
- 滤波处理
- 电源保护
5. 系统程序设计
5.1 主机主程序设计
void main()
{
System_Init();
while(1)
{
Key_Scan();
if(Call_Key == 0)
{
Number++;
Display(Number);
Buzzer();
UART_Send(Number);
}
}
}
5.2 数码管显示程序设计
void Display(int num)
{
Segment_Display(num);
}
5.3 蜂鸣器控制程序设计
void Buzzer()
{
BUZZ = 1;
Delay(200);
BUZZ = 0;
}
5.4 串口发送程序设计
void UART_Send(int data)
{
SBUF = data;
while(TI == 0);
TI = 0;
}
5.5 从机串口接收程序设计
void UART_ISR() interrupt 4
{
if(RI)
{
RI = 0;
Queue = SBUF;
}
}
5.6 队列显示程序设计
void Queue_Display()
{
Display(Queue);
}
5.7 按键扫描程序设计
void Key_Scan()
{
if(CALL_KEY == 0)
Call_Event = 1;
if(RESET_KEY == 0)
Number = 0;
}
6. 系统运行过程分析
系统上电后主机进入待机状态,等待用户按键触发叫号操作。当按下叫号键时,系统自动生成新的排队号码,并通过数码管显示,同时蜂鸣器发出提示音提醒用户。随后主机通过串口将叫号信息发送给从机。从机接收到数据后更新队列状态,并在数码管上显示当前排队人数或等待信息。整个系统通过主从机协同工作,实现排队叫号、状态显示与数据同步功能。
7. 系统总结
基于51单片机的医院银行排队叫号系统采用主从机架构设计,实现了叫号控制、队列管理以及串行通信功能。系统通过按键控制叫号、数码管显示号码、蜂鸣器提示以及串口通信实现数据同步,从而构建出一个完整的排队管理系统。该系统结构清晰、实现简单、可靠性高,适用于医院、银行及各类服务窗口排队管理场景,并具有良好的扩展性与工程应用价值。
68