本系统由STM32F103C8T6单片机、LCD12864液晶、语音播报、按键及电源组成。
1、本系统默认最多3个排队客户,排队客户按下取号按键后,
LCD1602液晶显示取号总数(为1、2或3),
2、柜员(非VIP)按下呼叫按键后
音播报:1号到1号窗口,液晶显示1号到1号窗口。
再次按下,语音播报:2号到2号窗口,液晶显示2号到2号窗口。
再次按下语音播报,3号到3号窗口,液晶显示3号到30窗口。
如果没有取号,则不进行播报及显示,取几个号才会播报几个。
3、柜员(VIP)按下VIP呼叫按键后,语音播报:VIP到VIP窗口。
4、液晶每次只显示一个呼号信息,语音播报1次呼号信息。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1DTxpBNQ4SiN26AMgSfX9mg?pwd=3456
部分代码展示
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
//#include "adc.h"
#include <stdio.h>
#include "timer.h"
#include "key.h"
#include "lcd12864.h"
unsigned char rekey = 0;//防止按键按下
unsigned char disFlag=0;//定时更新显示
unsigned char count = 0;//取号计数
unsigned char yuyinFlag = 0;//语音播报
void yyReportReadAdd(unsigned int yyAdd) ;
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为115200
// uart2_init(9600) ;
TIM3_Int_Init(499,7199);//50ms
yy_rest=0; //yyxp(语音芯片的简写,下同)的复位脚为高电平//
delay_us(300); //持续 200us//
yy_rest=1; //然后复位脚置零//
delay_us(300);
Lcd12864_initGPIO();//初始化显示
Init_ST7920();
ClrScreen();
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init();
LCD_PutString(2,1,"欢迎使用",8);
LCD_PutString(0,2,"取号:00",8);
LCD_PutString(0,3,"窗口空闲",8);
LCD_PutString(0,4,"窗口空闲",8);
delay_ms(1000);
while(1)
{
if(disFlag==1) //显示
{
disFlag = 0;
if(count == 1)//显示取号
{
LCD_PutString(0,2,"取号:01",8);
}
else if(count == 2)
{
LCD_PutString(0,2,"取号:02",8);
}
else if(count == 3)
{
LCD_PutString(0,2,"取号:03",8);
}
}
if((key1==0)||(key2==0)||(key3==0)) //检测到按键按下
{
if(rekey == 0)//防止重复按下
{
delay_ms(10);
if(key1==0)//确认按键按下
{
rekey =1;
if(count < 3)
count++;
}
else if (key2==0)//数值按键处理
{
rekey =1;
if(yuyinFlag < count)//语音播报小于取号数
{
yuyinFlag++;//语音播报标志
if(yuyinFlag == 1)
{
LCD_PutString(0,3,"请01号到01号窗口",16);
yyReportReadAdd(89);//播报地址语音
}