目录
[六、实验效果 编辑](#六、实验效果 编辑)
一、前言
项目成品图片:

哔哩哔哩视频链接:
(资料分享见文末)
二、项目简介
1.功能详解
基于STM32智能叫号系统
功能如下:
- STM32F103C8T6单片机作为主控芯片
- 主机显示:当前取号数、当前状态(xx号/空闲/休息)、前方剩余数、请XX号准备,每按一下按键1即取一个号,当前状态、前方剩余数、请XX号准备等数据来源于从机
- 从机显示:当前取号数、当前状态(xx号/空闲/休息)、前方剩余数、请XX号准备,当前取号数来源于主机
- 语音播报:JR6001自动播报下一个号进入
- 按键控制:主机按键:取号
从机按键1:开始接待患者,
从机按键2:代表当前患者已看完,下一位患者可以进入,
从机按键3:跳号(下一位)
从机按键4:暂停接诊(休息)系统不再接入新患者
2.主要器件
- STM32F103C8T6单片机
- OLED 屏幕
- BT04A蓝牙模块
- HC05蓝牙模块
- JR6001语音模块
- 有源蜂鸣器
- LED灯
三、原理图设计


四、PCB硬件设计
PCB图
主机

从机

五、程序设计
cpp
#include "stm32f10x.h"
#include "oled.h"
#include "led.h"
#include "key.h"
#include "tim2.h"
#include "tim3.h"
#include "Modules.h"
#include "flash.h"
#include "usart2.h"
#include "usart.h"
#include "beep.h"
#include "delay.h"
#include "adcx.h"
#include "string.h"
#include "usart3.h"
/****************异方辰电子工作室******************
STM32
* 项目 : 智能叫号系统-主机(蓝牙版)
* 版本 : V1.0
* 日期 : 2026.6.25
* MCU : STM32F103C8T6
* 接口 : 见代码
* IP账号 : 异方辰电子/辰哥单片机设计(同BILIBILI|抖音|快手|小红书|CSDN|公众号|视频号等)
* 作者 : 辰哥
* 工作室 : 异方辰电子工作室
* 授权IP : 辰哥单片机设计、异方辰电子、YFC电子、异方辰系列
* 官方网站 : www.yfcdz.cn
**********************BEGIN***********************/
uint8_t dakai = 0;
uint8_t Flag_dakai = 0;
// 主机同步来的取号总数
uint16_t total_num = 0;
// 当前正在看诊的号码
uint16_t current_num = 0;
// 已经完成患者数量(代码中未直接使用,可能预留)
uint16_t finish_num = 0;
// 等待人数
uint16_t wait_num = 0;
// 是否正在接诊标志
uint8_t work_flag = 0;
// 医生休息标志
uint8_t pause_flag = 0;
// 下一位号码
uint16_t next_num = 0;
// 蓝牙发送缓冲区
char tx_buf[32];
// 用于语音播报去抖的变量
uint16_t last_play_num = 0; // 上一次播报的号码
uint8_t play_init = 0; // 未使用
// 用于检测显示数据是否变化
uint16_t last_current = 0;
uint16_t last_wait = 0;
uint16_t last_next = 0;
// 休息标志
uint8_t rest_flag = 0;
// 未使用的变量
//uint16_t last_num = 0;
/**
* @brief 主函数
*/
int main(void)
{
SystemInit();
delay_init(72);
ADCx_Init();
OLED_Init();
LED_Init();
BEEP_Init();
Key_Init();
USART2_Init();
TIM2_Init(72-1, 1000-1);
KeyNum = 0;
delay_ms(1000);
OLED_Clear();
USART1_Config();
USART3_Config();
USART3_SendString("AF:30"); // 设置音量30
delay_ms(500);
USART3_SendString("A7:00012"); // 播放"欢迎"或其他提示音
delay_ms(1000);
// 主循环
while (1)
{
USART2_ProcessCmd(); // 处理蓝牙命令
CallControl(); // 处理按键操作
// 如果当前就诊号发生变化,触发语音播报
if(current_num != last_play_num)
{
last_play_num = current_num;
// 只有在工作状态且当前号有效时才播报
if(work_flag && current_num != 0)
{
Voice_PlayNum(current_num);
}
}
Bluetooth_SendStatus(); // 定时向主机发送状态
// 检测显示数据是否变化,更新显示"上次值"
if(current_num != last_current ||
wait_num != last_wait ||
next_num != last_next)
{
last_current = current_num;
last_wait = wait_num;
last_next = next_num;
}
// 刷新OLED显示(固定文字+动态数据)
OLED_autoPage1();
SensorDataDisplay1();
OLED_Refresh(); // 将显存内容更新到OLED
AutoControl();
}
}
/***************************************************/
#include "stm32f10x.h"
#include "oled.h"
#include "led.h"
#include "key.h"
#include "tim2.h"
#include "tim3.h"
#include "Modules.h"
#include "flash.h"
#include "usart2.h"
#include "usart.h"
#include "beep.h"
#include "delay.h"
#include "adcx.h"
#include "string.h"
/****************异方辰电子工作室******************
STM32
* 项目 : 智能叫号系统-从机(蓝牙版)
* 版本 : V1.0
* 日期 : 2026.6.25
* MCU : STM32F103C8T6
* 接口 : 见代码
* IP账号 : 异方辰电子/辰哥单片机设计(同BILIBILI|抖音|快手|小红书|CSDN|公众号|视频号等)
* 作者 : 辰哥
* 工作室 : 异方辰电子工作室
* 授权IP : 辰哥单片机设计、异方辰电子、YFC电子、异方辰系列
* 官方网站 : www.yfcdz.cn
**********************BEGIN***********************/
SensorModules sensorData; //声明传感器数据结构体变量
uint16_t current_num = 0; //正在看诊号码
uint16_t wait_num = 0; //等待人数
uint8_t work_flag = 0; //0暂停 1接诊
uint8_t pause_flag = 0; //暂停接诊
uint16_t last_num = 0;
char tx_buf[64];
uint16_t now;
uint16_t wait;
uint16_t next;
uint16_t rest;
int main(void)
{
SystemInit();
delay_init(72);
ADCx_Init();
OLED_Init();
LED_Init();
BEEP_Init();
Key_Init();
USART2_Init();
TIM2_Init(72-1,1000-1);
KeyNum = 0;
delay_ms(1000);
OLED_Clear();
USART1_Config();
while (1)
{
if(KeyNum ==1)
{
KeyNum = 0;
sensorData.num++;
}
if(KeyNum ==2&sensorData.num>0)
{
KeyNum = 0;
sensorData.num--;
}
//检测数据变化
if(sensorData.num != last_num)
{
last_num = sensorData.num;
Bluetooth_SendNum(sensorData.num);
}
USART2_ProcessCmd();
SensorScan();
OLED_autoPage1();
SensorDataDisplay1();
AutoControl();
// OLED_Refresh(); // 统一刷新一次
}
}
六、实验效果 
七、包含内容
