银行排队叫号系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*

硬件材料:用51单片机、4个独立按键(代表四个窗口营业员消号控制端)、1个独立按键叫号(顾客使用)、无源蜂鸣器(起到提示作用)以

及LCD1602显示信息

目的:使人们免于排队浪费时间和体力,能在排队的时间里处理个人事务

用途:银行的排队,医院的挂号等等*

功能:实现自动排队并完成叫号,设置一个排号按键,以及四个柜台用消号按键。

当按下叫号键时,1.若队列不满,LCD显示"Your No.is 01!"的字样。

2.若队列已排满,LCD显示"The queue is full,please wait"的字样。

当按下消号键时,1.若队列无人,LCD显示"Sorry,the queue is empty

!"的字样。2.若队列有人,蜂鸣器响,LCD显示如"No.01 come to No.1

window,please!"的字样。

编程:王健

显示:用LCD1602显示如"No.01 come to No.1window,please!"的字样

要求:通过控制4个独立按键实现窗口控制消号,一个键实现叫号。最大累计允许10人排队,当排队人数超过此人数是系统显示停止排队*/

#include

#define uchar unsigned char

#define uint unsigned int

sbit RS=P2^0;

sbit RW=P2^1;

sbit E=P2^2;

sbit key0=P1^0;

sbit key1=P1^1;

sbit key2=P1^2;

sbit key3=P1^3;

sbit key4=P1^4;

sbit key5=P1^5;

sbit key6=P1^6;

sbit key7=P1^7;

sbit cd=P2^7;

sbit BEEP=P2^6;

static uint idata sev=0;

static uint idata sev1=0;

static uint idata sev2=0;

static uint idata sev3=0;

static uint idata sev4=0;

static uint idata rank[10]={0}; //排队叫号存储的数组

uint idata num=0; //窗口消的号码

static uint data jz=0;

static uint idata LengthFlag=0; //队列长度叫一次号时+1,消一次号时-1 static uint idata num_count=1; //排队叫的号码

uchar data test[]="Hello!"; //初始显示的字符

uchar data prompt1[]="Your No.is 00!"; //1062第一行显示的字符

uchar data prompt2[]="No.00 come to No"; //1062第一行显示的字符

uchar data prompt3[]=".0window,please!"; //1062第二行显示的字符

uchar data prompt4[]="The queue is"; //1062第一行显示的字符

uchar data prompt5[]="full,please wait"; //1062第二行显示的字符

uchar data prompt6[]="Sorry,the queue "; //1062第一行显示的字符

uchar data prompt7[]="is empty!"; //1062第二行显示的字符

uchar idata prompt8[]="00 is left";

uchar idata prompt9[]="all is 00";

uchar idata prompt10[]="W1 - 00";

uchar idata prompt11[]="W2 - 00";

uchar idata prompt12[]="W3 - 00";

uchar idata prompt13[]="W4 - 00";

uchar idata prompt14[]="chadui!";

void delay(int n) //延时程序

{ int i,j;

for(i=0;i<=n;i++)

for(j=0;j<=10;j++);

}

void SPEAKER(uint x) //蜂鸣器程序

{

uchar i;

for(i=0;i<=200;i++)

{

delay(x);

BEEP=!BEEP;

}

BEEP=1;

//delay(200);

}

/***********************************LCD程序**********************************************/

void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)

{unsigned int i,j;

for(i=0;i

for(j=0;j<100;j++);

}

void LCD_w_com(unsigned com) // 写指令

{

RW=0;

RS=0;

E=1;

P0=com;

delay1ms(40);

E=0;

RW=1;

}

void LCD_w_dat(uchar dat) // 写数据

{

RW=0;

RS=1;

E=1;

P0=dat;

delay1ms(40);

E=0;

RW=1;

}

void gotoxy(unsigned x,unsigned y) //x,y分别代表行列

{

if(x==1)

LCD_w_com(0x80+y);

else

LCD_w_com(0xC0+y);

}

void clear_LCD(void)

{

LCD_w_com(0x01); //清屏指令

LCD_w_com(0x02); // 光标归位即光标置于左上位置

相关文档
最新文档