【51单片机】【protues仿真】 基于51单片机叫号系统
目录
一、主要功能
二、使用步骤
三、硬件资源
四、软件设计
五、实验现象
一、主要功能
1、LCD1602液晶显示当前号数和各窗口号数
2、按键取号和叫号
二、使用步骤
基于51单片机的排队叫号系统设计通常包含取号管理、窗口叫号、语音播报和显示控制等核心功能模块。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、LCD1602显示模块
四、软件设计
#include "common.h"
#include "lcd1602.h"
#include "WT588D.h"
//按键引脚
sbit key3 = P1^2;//排队取号
sbit key2 = P1^1;//窗口2键
sbit key1 = P1^0;//窗口1键
unsigned char WaitNumber = 0;//等待人数
unsigned char Number = 0;//排队号
unsigned char CallNumber = 0;//呼叫号
unsigned int Time = 500;//延时时间
bit flag = 0;
void VoicePlayback(uchar num,uchar temp)//语音播报
{
unsigned char a,b,wei;
a = num/10;//十位
b = num%10;//个位
if(num >= 10)wei = 2;
else wei = 1;
Line_1A(11);//请
delay_ms(Time);
delay_ms(Time);
if(wei == 1)
{
Line_1A(b);
delay_ms(Time);
}
else
{
Line_1A(a);
delay_ms(Time);
delay_ms(Time);
Line_1A(10);//十
delay_ms(Time);
if(b != 0)
{
delay_ms(Time);
Line_1A(b);
delay_ms(Time);
}
}
delay_ms(Time);
Line_1A(12);//号
delay_ms(Time);
delay_ms(Time-50);
Line_1A(13);//到
delay_ms(Time);
delay_ms(Time);
if(temp == 1)//1
{
Line_1A(1);
}
else if(temp == 2)//2
{
Line_1A(2);
}
delay_ms(Time);
delay_ms(Time);
Line_1A(12);//号
delay_ms(Time);
delay_ms(Time-50);
Line_1A(14);//窗口
}
void qiping()//清屏第一行
{
if(flag == 0)
{
flag = 1;
lcd_write_str(0,0," ");
}
}
void main()
{
lcd_init();//1602初始化
lcd_write_str(0,0," Welcome ");
lcd_write_str(0,1,"Wait:00 Num:00");
while(1)
{
KeyScan();//按键扫描
delay_ms(1);
}
}
五、实验现象
演示视频: