银行排队叫号系统.docx
- 文档编号:24010571
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:19
- 大小:34.96KB
银行排队叫号系统.docx
《银行排队叫号系统.docx》由会员分享,可在线阅读,更多相关《银行排队叫号系统.docx(19页珍藏版)》请在冰豆网上搜索。
银行排队叫号系统
/*
硬件材料:
用51单片机、4个独立按键(代表四个窗口营业员消号控制端)、
1个独立按键叫号(顾客使用)、无源蜂鸣器(起到提示作用)以
及LCD1602显示信息
目的:
使人们免于排队浪费时间和体力,能在排队的时间里处理个人事务
用途:
银行的排队,医院的挂号等等*
功能:
实现自动排队并完成叫号,设置一个排号按键,以及四个柜台用消号
按键。
当按下叫号键时,1.若队列不满,LCD显示"YourNo.is01!
"的字样。
2.若队列已排满,LCD显示"Thequeueisfull,pleasewait"的字样。
当按下消号键时,1.若队列无人,LCD显示"Sorry,thequeueisempty
!
"的字样。
2.若队列有人,蜂鸣器响,LCD显示如"No.01cometoNo.1
window,please!
"的字样。
编程:
王健
显示:
用LCD1602显示如"No.01cometoNo.1window,please!
"的字样
要求:
通过控制4个独立按键实现窗口控制消号,一个键实现叫号。
最大累计
允许10人排队,当排队人数超过此人数是系统显示停止排队
*/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
sbitkey0=P1^0;
sbitkey1=P1^1;
sbitkey2=P1^2;
sbitkey3=P1^3;
sbitkey4=P1^4;
sbitkey5=P1^5;
sbitkey6=P1^6;
sbitkey7=P1^7;
sbitcd=P2^7;
sbitBEEP=P2^6;
staticuintidatasev=0;
staticuintidatasev1=0;
staticuintidatasev2=0;
staticuintidatasev3=0;
staticuintidatasev4=0;
staticuintidatarank[10]={0};//排队叫号存储的数组
uintidatanum=0;//窗口消的号码
staticuintdatajz=0;
staticuintidataLengthFlag=0;//队列长度叫一次号时+1,消一次号时-1
staticuintidatanum_count=1;//排队叫的号码
uchardatatest[]="Hello!
";//初始显示的字符
uchardataprompt1[]="YourNo.is00!
";//1062第一行显示的字符
uchardataprompt2[]="No.00cometoNo";//1062第一行显示的字符
uchardataprompt3[]=".0window,please!
";//1062第二行显示的字符
uchardataprompt4[]="Thequeueis";//1062第一行显示的字符
uchardataprompt5[]="full,pleasewait";//1062第二行显示的字符
uchardataprompt6[]="Sorry,thequeue";//1062第一行显示的字符
uchardataprompt7[]="isempty!
";//1062第二行显示的字符
ucharidataprompt8[]="00isleft";
ucharidataprompt9[]="allis00";
ucharidataprompt10[]="W1-00";
ucharidataprompt11[]="W2-00";
ucharidataprompt12[]="W3-00";
ucharidataprompt13[]="W4-00";
ucharidataprompt14[]="chadui!
";
voiddelay(intn)//延时程序
{inti,j;
for(i=0;i<=n;i++)
for(j=0;j<=10;j++);
}
voidSPEAKER(uintx)//蜂鸣器程序
{
uchari;
for(i=0;i<=200;i++)
{
delay(x);
BEEP=!
BEEP;
}
BEEP=1;
//delay(200);
}
/***********************************LCD程序**********************************************/
voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的)
{unsignedinti,j;
for(i=0;i for(j=0;j<100;j++); } voidLCD_w_com(unsignedcom)//写指令 { RW=0; RS=0; E=1; P0=com; delay1ms(40); E=0; RW=1; } voidLCD_w_dat(uchardat)//写数据 { RW=0; RS=1; E=1; P0=dat; delay1ms(40); E=0; RW=1; } voidgotoxy(unsignedx,unsignedy)//x,y分别代表行列 { if(x==1) LCD_w_com(0x80+y); else LCD_w_com(0xC0+y); } voidclear_LCD(void) { LCD_w_com(0x01);//清屏指令 LCD_w_com(0x02);//光标归位即光标置于左上位置 } voidinit_LCD(void)//初始化lcd { LCD_w_com(0x38);//lcd为两行显示8位数据线有效 LCD_w_com(0x0c);//显示字符关闭光标 LCD_w_com(0x06);//输入方式设置光标向右移动一位ac-1 gotoxy(1,0); LCD_w_dat(test[0]); LCD_w_dat(test[1]); LCD_w_dat(test[2]); LCD_w_dat(test[3]); LCD_w_dat(test[4]); LCD_w_dat(test[5]); } /***************************************** 叫号机按一次一号键变量+1,最大为20 *****************************************/ voidQueueNumProcess() { rank[LengthFlag]=num_count;//num_count为实时取得的号码 LengthFlag++; } /***************************************** 窗口消号处理函数 *****************************************/ voidClearNumProcess() { uinti; num=rank[0];//把消的号赋给全局变量num for(i=0;i rank[i]=rank[i+1]; LengthFlag--; sev++; } /**********************主函数******************************************/ voidmain(void) { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; clear_LCD(); init_LCD(); while (1); } /**************************键盘(中断方式)******************************/ voidint_x0()interrupt0 { if(key1==0){jz=1;sev1++;} if(key2==0){jz=2;sev2++;} if(key3==0){jz=3;sev3++;} if(key4==0){jz=4;sev4++;} if((key1! =0)&&(key2! =0)&&(key3! =0)&&(key4! =0)&&key0==0)/******叫号机程序*******/ { if((key1! =0)&&(key2! =0)&&(key3! =0)&&(key4! =0)&&key0==0) { if(LengthFlag>=10) {clear_LCD(); gotoxy(1,2); LCD_w_dat(prompt4[0]); LCD_w_dat(prompt4[1]); LCD_w_dat(prompt4[2]); LCD_w_dat(prompt4[3]); LCD_w_dat(prompt4[4]); LCD_w_dat(prompt4[5]); LCD_w_dat(prompt4[6]); LCD_w_dat(prompt4[7]); LCD_w_dat(prompt4[8]); LCD_w_dat(prompt4[8]); LCD_w_dat(prompt4[9]); LCD_w_dat(prompt4[10]); LCD_w_dat(prompt4[11]); gotoxy(2,0); LCD_w_dat(prompt5[0]); LCD_w_dat(prompt5[1]); LCD_w_dat(prompt5[2]); LCD_w_dat(prompt5[3]); LCD_w_dat(prompt5[4]); LCD_w_dat(prompt5[5]); LCD_w_dat(prompt5[6]); LCD_w_dat(prompt5[7]); LCD_w_dat(prompt5[8]); LCD_w_dat(prompt5[9]); LCD_w_dat(prompt5[10]); LCD_w_dat(prompt5[11]); LCD_w_dat(prompt5[12]); LCD_w_dat(prompt5[13]); LCD_w_dat(prompt5[14]); LCD_w_dat(prompt5[15]);//提示队列已满 } else { clear_LCD(); QueueNumProcess(); prompt1[11]=(num_count)/10+'0'; prompt1[12]=(num_count)%10+'0'; num_count++; gotoxy(1,0); LCD_w_dat(prompt1[0]);//"YourNo.is00! "; LCD_w_dat(prompt1[1]); LCD_w_dat(prompt1[2]); LCD_w_dat(prompt1[3]); LCD_w_dat(prompt1[4]); LCD_w_dat(prompt1[5]); LCD_w_dat(prompt1[6]); LCD_w_dat(prompt1[7]); LCD_w_dat(prompt1[8]); LCD_w_dat(prompt1[9]); LCD_w_dat(prompt1[10]); LCD_w_dat(prompt1[11]); LCD_w_dat(prompt1[12]); LCD_w_dat(prompt1[13]); delay1ms(10); } } } if(((key1==0)||(key2==0)||(key3==0)||(key4==0))&&(key0! =0))/*******消号处理******/ { if(((key1==0)||(key2==0)||(key3==0)||(key4==0))&&(key0! =0)) { SPEAKER(10); delay(200); SPEAKER(10); if(LengthFlag<=0) { clear_LCD(); gotoxy(1,0); LCD_w_dat(prompt6[0]); LCD_w_dat(prompt6[1]); LCD_w_dat(prompt6[2]); LCD_w_dat(prompt6[3]); LCD_w_dat(prompt6[4]); LCD_w_dat(prompt6[5]); LCD_w_dat(prompt6[6]); LCD_w_dat(prompt6[7]); LCD_w_dat(prompt6[8]); LCD_w_dat(prompt6[9]); LCD_w_dat(prompt6[10]); LCD_w_dat(prompt6[11]); LCD_w_dat(prompt6[12]); LCD_w_dat(prompt6[13]); LCD_w_dat(prompt6[14]); LCD_w_dat(prompt6[15]); gotoxy(2,0); LCD_w_dat(prompt7[0]); LCD_w_dat(prompt7[1]); LCD_w_dat(prompt7[2]); LCD_w_dat(prompt7[3]); LCD_w_dat(prompt7[4]); LCD_w_dat(prompt7[5]); LCD_w_dat(prompt7[6]); LCD_w_dat(prompt7[7]); LCD_w_dat(prompt7[8]);//显示队列为空 } else { clear_LCD(); ClearNumProcess(); prompt2[3]=(num)/10+'0'; prompt2[4]=(num)%10+'0'; prompt3[1]=jz+'0'; gotoxy(1,0); LCD_w_dat(prompt2[0]); LCD_w_dat(prompt2[1]); LCD_w_dat(prompt2[2]); LCD_w_dat(prompt2[3]); LCD_w_dat(prompt2[4]); LCD_w_dat(prompt2[5]); LCD_w_dat(prompt2[6]); LCD_w_dat(prompt2[7]); LCD_w_dat(prompt2[8]); LCD_w_dat(prompt2[9]); LCD_w_dat(prompt2[10]); LCD_w_dat(prompt2[11]); LCD_w_dat(prompt2[12]); LCD_w_dat(prompt2[13]); LCD_w_dat(prompt2[14]); LCD_w_dat(prompt6[15]); gotoxy(2,0); LCD_w_dat(prompt3[0]); LCD_w_dat(prompt3[1]); LCD_w_dat(prompt3[2]); LCD_w_dat(prompt3[3]); LCD_w_dat(prompt3[4]); LCD_w_dat(prompt3[5]); LCD_w_dat(prompt3[6]); LCD_w_dat(prompt3[7]); LCD_w_dat(prompt3[8]); LCD_w_dat(prompt3[9]); LCD_w_dat(prompt3[10]); LCD_w_dat(prompt3[11]); LCD_w_dat(prompt3[12]); LCD_w_dat(prompt3[13]); LCD_w_dat(prompt3[14]); LCD_w_dat(prompt3[15]); } }} } voidint_x1()interrupt2 { uinti; if(key5==0)//统计等待人数 { clear_LCD(); prompt8[0]=LengthFlag/10+'0'; prompt8[1]=LengthFlag%10+'0'; gotoxy(1,0); LCD_w_dat(prompt8[0]); LCD_w_dat(prompt8[1]); LCD_w_dat(prompt8[2]); LCD_w_dat(prompt8[3]); LCD_w_dat(prompt8[4]); LCD_w_dat(prompt8[5]); LCD_w_dat(prompt8[6]); LCD_w_dat(prompt8[7]); LCD_w_dat(prompt8[8]); LCD_w_dat(prompt8[9]); } if(key6==0)//统计客流量 { clear_LCD(); prompt9[7]=(sev)/10+'0'; prompt9[8]=(sev)%10+'0'; gotoxy(1,0); LCD_w_dat(prompt9[0]); LCD_w_dat(prompt9[1]); LCD_w_dat(prompt9[2]); LCD_w_dat(prompt9[3]); LCD_w_dat(prompt9[4]); LCD_w_dat(prompt9[5]); LCD_w_dat(prompt9[6]); LCD_w_dat(prompt9[7]); LCD_w_dat(prompt9[8]); } if(key7==0)//统计各窗口客流量 { clear_LCD(); prompt10[5]=sev1/10+'0'; prompt10[6]=sev1%10+'0'; prompt11[5]=sev2/10+'0'; prompt11[6]=sev2%10+'0'; prompt12[5]=sev3/10+'0'; prompt12[6]=sev3%10+'0'; prompt13[5]=sev4/10+'0'; prompt13[6]=sev4%10+'0'; gotoxy(1,0); LCD_w_dat(prompt10[0]); LCD_w_dat(prompt10[1]); LCD_w_dat(prompt10[2]); LCD_w_dat(prompt10[3]); LCD_w_dat(prompt10[4]); LCD_w_dat(prompt10[5]); LCD_w_dat(prompt10[6]); LCD_w_dat(prompt10[7]); gotoxy(1,8); LCD_w_dat(prompt11[0]); LCD_w_dat(prompt11[1]); LCD_w_dat(prompt11[2]); LCD_w_dat(prompt11[3]); LCD_w_dat(prompt11[4]); LCD_w_dat(prompt11[5]); LCD_w_dat(prompt11[6]); LCD_w_dat(prompt11[7]); gotoxy(2,0); LCD_w_dat(prompt12[0]); LCD_w_dat(prompt12[1]); LCD_w_dat(prompt12[2]); LCD_w_dat(prompt12[3]); LCD_w_dat(prompt12[4]); LCD_w_dat(prompt12[5]); LCD_w_dat(prompt12[6]); LCD_w_dat(prompt12[7]); gotoxy(2,8); LCD_w_dat(prompt13[0]); LCD_w_dat(prompt13[1]); LCD_w_dat(prompt13[2]); LCD_w_dat(prompt13[3]); LCD_w_dat(prompt13[4]); LCD_w_dat(prompt13[5]); LCD_w_dat(prompt13[6]); LCD_w_dat(prompt13[7]); } if(cd==0)//插队处理 { clear_LCD(); gotoxy(1,0); LCD_w_dat(prompt14[0]); LCD_w_dat(prompt14[1]); LCD_w_dat(prompt14[2]); LCD_w_dat(prompt14[3]); LCD_w_dat(prompt14[4]); LCD_w_dat(prompt14[5]); LCD_w_dat(prompt14[6]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 排队 叫号 系统