基于51单片机的银行排队系统方案
基于AT89C51单片机的排队叫号系统设计

排队叫号机的实现目录1.引言 (1)2.系统功能分析及设计要求 (2)3.系统框图 (4)4.主要应用器件及技术原理 (6)4.1 微处理器介绍 (6)4.1.1、MCS-51单片机的特点 (6)4.1 2、MCS-51 单片机的结构 (6)4.2液晶LCD1602的介绍 (7)4.2.1 字符型液晶显示器的显示原理 (7)4.2.2 液晶LCD1602的简介 (8)5.系统硬件电路设计 (11)5.1晶振电路 (12)5.2液晶显示电路 (13)5.3声音提示电路 (14)6.系统测试 (16)7.系统软件设计 (15)7.1系统软件流程图........................................................... 错误!未定义书签。
7.2系统程序设计............................................................... 错误!未定义书签。
7.2.1 主程序............................................................... 错误!未定义书签。
7.2.2 液晶LCD1602显示处理程序...................... 错误!未定义书签。
7.2.3 按键检测程序...........................................................................错误!未定义书签。
8.结束语 (19)9.致谢辞.................................................................................. 错误!未定义书签。
10.参考文献............................................................................ 错误!未定义书签。
基于单片机银行排队叫号系统设计

单片机原理与应用技术课程设计设计题目:基于单片机银行排队叫号系统设计目录1 设计目的 (3)2 设计的任务与要求 (3)3 设计方案与论证 (3)3.2设计论证 (4)4 硬件电路设计 (5)4.1 单片机及外围电路 (5)4.2 显示电路 (6)4.3 按键电路 (8)4.4 蜂鸣器电路 (8)5 系统软件设计 (9)5.1 主程序设计 (9)5.2显示处理程序 (10)6 系统调试 (10)7 总结 (11)附录1:总体电路原理图 (14)附录2:元器件清单 (15)附录4:源程序 (17)附录4:源程序 ......................................................... 错误!未定义书签。
1设计目的近年来,随着科学技术的迅猛发展和人们生活水平的日益提高,各行各业特别是服务行业的竞争也逐渐激烈。
服务质量作为体现企业的公众形象、服务理念、管理水平的标准已越来越受到服务和被服务双方所关注,而营业窗口正是代表银行、医院、电信、税务、工商等企业服务质量的重要场所。
随着服务行业业务量的增长及业务种类的增加,排队等候已成为人们面临的实际问题。
长期以来,人们在银行、医院、电信、税务、工商等营业大厅里前拥后挤、杂乱无章地排队等候,有时一站就是一个多小时,这已是司空见惯的现象,极大地影响了服务质量。
员工坐着服务、客户站着等待的服务方式与“用户就是上帝”的服务宗旨完全背道而驰!改善服务质量、树立良好形象,解决劳累的排队现象、创造人性化服务环境已成为急需解决的问题。
设计一套排队抽号的服务系统,可以很好的解决因排队引起的种种问题,排队系统应运而生此系统完全模拟人群排队过程,通过取票进队、排队等待、叫号服务等功能,诠释了人性化的服务理念,舒缓顾客等待的急噪情绪,使人们在等候服务的过程中拥有一个相对自由的空间,是科技以人为本的真正体现。
本文基于单片机的排队叫号系统,由客户端和主机终端组成,有LCD大屏幕显示信息,让客户知道自己的队号,并有叫号提示音提醒客户,方便快捷,可以满足日常的服务行业排队叫号,所以非常有意义。
基于单片机的排队叫号系统设计

基于单片机的排队叫号系统设计一、系统总体设计基于单片机的排队叫号系统主要由单片机控制模块、显示模块、按键输入模块、语音播报模块和通信模块等组成。
单片机控制模块是整个系统的核心,负责协调各个模块的工作,处理数据和控制流程。
我们可以选择常见的单片机型号,如STM32 系列,其具有性能稳定、资源丰富等优点。
显示模块用于显示排队号码和相关信息,可以采用液晶显示屏(LCD)或者电子纸显示屏(EPD)。
LCD 显示清晰、色彩丰富,但功耗相对较高;EPD 则具有低功耗、长续航的特点,适用于对功耗要求较高的场景。
按键输入模块用于客户取号和工作人员操作,通常采用矩阵键盘或者独立按键。
语音播报模块用于播报排队号码和提示信息,可选用语音芯片或者通过软件合成语音进行播报。
通信模块用于实现系统与服务器或其他设备的数据交互,常见的通信方式有蓝牙、WiFi 等。
二、硬件设计1、单片机最小系统单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供时钟信号,保证其正常工作;复位电路用于系统初始化和异常情况下的复位操作。
2、显示电路如果选择LCD 显示屏,需要通过接口电路将单片机与显示屏连接,并编写相应的驱动程序来控制显示内容。
对于 EPD 显示屏,需要注意其特殊的驱动方式和刷新机制,以实现低功耗和长寿命的显示效果。
3、按键电路矩阵键盘通过行列扫描的方式检测按键按下,减少了单片机引脚的使用。
独立按键则直接连接到单片机的引脚,通过检测引脚电平的变化来判断按键操作。
4、语音播报电路语音芯片可以存储预先录制的语音信息,单片机通过控制引脚发送指令来选择播放相应的语音。
软件合成语音则需要在单片机中运行语音合成算法,将文本转换为语音信号输出。
5、通信电路蓝牙模块可以实现短距离的无线通信,适用于与移动设备的连接;WiFi 模块则可以接入局域网,实现与服务器的数据交换。
三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、各个模块的初始化等。
毕业论文——银行排队叫号系统设计

本科毕业论文(设计)题目银行排队叫号系统设计学院 XXXXXXXXXXX学院专业 XXXXXXXXXX 年级 XXXXX 级学号 XXXXXXXXXXXXXXX 姓名 XXXX 指导教师 XXXXXXXX _ 成绩 ________ ____ __ __XXXX年 XX月XX日目录摘要 (1)关键字 (1)Abstract (1)Key Words (1)引言 (2)1 硬件设计 (3)1.1 主要器件 (3)1.1.1 微处理器介绍 (3)1.1.2 液晶LCD12864介绍 (5)1.1.3 语音模块介绍 (7)1.2 硬件电路 (8)1.2.1 单片机最小系统 (8)1.2.2 液晶显示电路 (10)1.2.3 声音提示电路 (10)1.3 系统硬件总电路图 (11)2 软件设计 (11)2.1 主要程序设计 (12)2.1.1 取号模块程序设计 (12)2.1.2 叫号模块程序设计 (13)2.1.3 语音模块程序设计 (14)2.2 系统源程序 (15)3 系统调试及仿真 (15)3.1 系统仿真 (15)3.2 系统调试 (17)3.3 硬件实物系统运行的效果图 (17)4 结束语 (20)参考文献 (21)致谢 (22)附录A 原理图 (23)附录B 程序 (24)·银行排队叫号系统摘要:本排队叫号系统由一个叫号系统和一个抽号系统组成,客户利用抽号系统抽取号码,客服人员通过叫号系统呼叫客户;利用液晶LCD12864显示器和WT588D语音芯片分别能及时显示出当前所呼叫号数并发出语音提示,客户就能够及时了解当前排队信息。
使用该排队叫号系统,解决了当下排队拥挤混乱状况,极大的提高了排队等侯效率,从而实现排队自动化、规范化,同时也适应科技的发展。
为实现上述功能,该系统采用AT89C51单片机进行控制,通过按键取号、叫号,利用LCD12864显示信息,再通过WT588D语音芯片提示,实现排队管理系统的模拟化,设计出一个具有控制灵活、使用方便、成本低、性价高等特点的系统。
基于单片机的银行排队呼叫系统

基于单片机的银行排队呼叫系统作者:胡浩来源:《东方教育》2018年第14期摘要:中国当今社会,经济发展达到了较高的程度,银行作为经济流通枢纽,工作流程必须顺应时代不断进行改进。
本系统是基于51单片机的原理,以51单片机为主控单元,再结合按键、液晶显示、语音播报等模块来模拟银行排队呼叫系统,通过按键模拟一行窗口的呼叫,按下其中的一个按键,显示器就将显示对应的排队号和窗口号,并同时发出语音提示。
显示器不仅能显示窗口号,还可以显示当前等待的人数,以及当时的排队号。
银行排队呼叫系统是针对银行大厅工作流程而设计,是利用计算机的智能计算来管理用户排队的系统,能很好的解决用户在银行柜台排队办理业务时所遇到的拥挤、混乱等现象,能有效的提高用户的体验舒适度。
关键词:语音播报;液晶显示;排队系统;单片机最小系统一、课题研究背景及意义中国当今社会,经济发展达到了较高的程度,人民的物质生活质量也在逐步提高,资金的存取、流动与购买各种金融理财项目已经是人们日常生活中的普遍经济行为,而银行作为社会资金的流通枢纽,在社会各个层次的企业、单位、个人的经济行为中占据了非常重要的地位。
而在银行面对用户的工作过程中,除了极少部分的VIP用户可以通过专属VIP通道快速办理业务外,大部分用户都只能通过排队到柜台窗口办理业务,而银行面向人群极其庞大,导致排队的过程漫长而难熬。
因此,传统的窗口排队服务显然无法给用户带来舒适便捷的服务,而智能排队呼叫系统的开发可以充分的解决这一矛盾,在使银行工作更加效率的同时,也能有效解决顾客站立等待、服务混乱、人员冲突等问题,还能节省顾客的等待时间,提高社会效率。
二、系统实况方框图在该系统(银行排队呼叫系统)设计的准备阶段,通过分析行业现状和需要实现的功能,再通过网络和图书等途径对国內外的各种相关设计方案进行了观察比较,对该系统硬件和相关软件的设计做了较为详细的研究和分析,确立了数个方案,结合实际情况和自身能力选取了其中最合适的一个方案,在后文中将对该设计方案的全部内容进行介绍并分析这个方案的优势及劣势。
基于单片机的银行排队系统的设计

基于单片机的银行排队系统的设计摘要采用STC89C52RC为主控芯片,设计并实现了一个模拟银行排队系统,给出了系统组成结构框图、主要的硬件电路和软件设计。
系统采用LCD12864和LCD1602进行显示,采用热敏打印机打印用户凭条,语音芯片实现叫号功能,并具有时钟显示和系统设置等功能。
实践证明,该系统性能可靠、稳定、可连续稳定地工作。
关键词STC89C52;智能排队;热敏打印机;液晶显示0 引言随着市场经济的发展,客户在市场交易中的地位越来越重要,个人化的服务已成趋势,提供舒适的服务环境已成竞争的重要手段。
多窗口类别的服务往往让人无所适从,客户盼望只排一个队,只接受“一对一”的服务。
营业窗口是形成银行、电信、航空、医院等企业的公众形象的重要因素,因此,排队管理系统应运而生,它彻底解决了银行、医院等服务性企业普遍存在的站立等候、服务无序的问题,深化并完善了服务的质量[1]。
市场上已有成品的排队机系统,但存在系统庞大、结构复杂、维护管理不便、成本普遍较高等缺陷。
本文以价格低廉的单片机为系统主控CPU,设计并研制出体积小、结构简单、可靠性高、维护操作方便、性价比较高的银行排队系统。
1 系统方案1.1 设计要求在用户机端,当顾客按下排号机上办理业务的对应按键时,打印机可打印出相应的用户凭条,凭条上显示号码和所办理的业务类型,并提示客户注意显示屏上显示的内容;对应银行工作人员工作台前的LED灯就会点亮,以提示工作人员有顾客在等候办理业务。
当工作人员按下工作台上的工作按键时,扬声器就会发出语音提示,同时LCD显示屏也显示相关内容,以提示顾客到相应窗口办理业务。
1.2 功能分析硬件系统由主控制器、键盘模块、液晶显示模块、打印机模块、语音模块、时钟模块等组成,与软件结合,实现排队叫号的功能。
主控制器中的单片机采用STC89C52RC。
键盘共设计了11个按键,其中3个按键是业务选择按键,用来给顾客选择业务。
另外8个按键分配给8个柜台,当服务完一位顾客后可直接按叫号控制按键叫下一位顾客。
毕业设计(论文)-基于单片机的智能排队叫号系统设计

第1章绪论1.1 课题来源近年来,随着我国社会经济的持续快速发展,资金流动加快,服务行业的不断增加,加之我国政府正在努力构建和谐社会、服务型政府,大量的用户越来越频繁的光顾金融系统、电信、医疗、政府办事大厅等服务部门,时代的发展给这些服务型行业提出新的服务理念,也给这些行业和部门带来了巨大的压力。
伴随着经济全球化的大浪潮,各行各业之间的竞争逐渐加剧、每个服务行业业务量在不断增长,业务种类也日益增多,排队等候已成为人们经常面临的实际问题。
在银行、医院、电信、税务、工商等营业大厅里,前拥后挤、杂乱无章的排队等候,己是司空见惯的现象,很多窗口也因而秩序混乱,为保护用户隐私而设置的“l米线”也形同虚设。
一方面客户因为长时间的站立排队透支体力和精力而疲惫不堪,另一方面工作人员也为长时间遭受众多客户的围绕而不胜其烦,影响了服务质量。
因此,改善服务质量、树立良好的企业形象,解决客户劳累的排队现象、创造人性化务环境已成为急需解决的问题。
长时间的站立排队使用户疲惫和厌烦,用户渴望尊重隐私,期望“个性化服务”,只排一个队,只接受“一对一服务”。
对服务部门来讲,使用排队机是提高服务质量,提升服务形象,吸引顾客的有利措施。
随着信息技术的突飞猛进,智能排队管理系统应运而生。
智能排队管理系统是一种综合运用计算机技术、网络技术、多媒体技术、通信控制技术等的高新技术产品,此系统完全模拟人群的排队过程,实现了计算机系统代替客户进行排队的过程曰。
使用排队系统后,用户在票号机上取票后,在休息区舒适地等待,听到呼叫后才去对应的窗口办理事务,服务人员面对一个安静的环境,面对一个客户,可以专心办理业务,提高了工作效率。
我国人口众多,办事排队一直是一个令人头痛的问题. 现今,随着服务行业业务种类的细化和增加,服务内容和工作量加大,这个问题变得尤为突出. 嘈杂、无序、不公平、不合理、低效等一直是排队中困扰顾客和服务人员的问题. 电子排队管理系统很好地解决了这些问题,可以广泛地应用于银行、医院等窗口服务单位. 银行自动叫号系统就是电子排队管理统的一种,是针对银行服务窗口的特点而设计的.这里以ATMEL 公司的AT89C51单片机为核心, 设计了一个简单的把客户与服务机构相结合的主从机排队叫号系统。
银行排队系统的设计51单片机

《单片机原理及应用》实训说明微电班。
实训名称:银行排队系统的设计实训教学内容:(一)硬件AT89S51单片机2个独立按键叫号(顾客使用)2个独立按键(代表两个窗口营业员控制端)、8个七段数码管显示信息无源蜂鸣器、发光二极管(起到提示作用)(二)任务要求1.数码管显示:(1)排队号码显示:数码管Q1Q2作普通业务,Q3Q4作VIP业务排队号码显示(显示号为“P*”,*代表序号);普通业务最大累计允许10人排队,VIP业务最大累计允许5人排队。
当排队人数超过此人数时数码管显示OV。
(2)当前业务办理号码显示:数码管Q5Q6作窗口1,Q7Q8作窗口2业务办理序号显示。
2.按键控制(1)两个按键作为“普通业务”、“VIP业务”的选择(顾客使用);(2)两个按键分别作为两个窗口叫号的选择(窗口营业员控制)。
初始叫号从号码01或P1开始。
短按表示跳到下一位办理,此时相应窗口数码管闪动显示,并加入声光提示;长按1秒表示业务办理中;3.*在定时10S后如无人办理,自动跳转显示下一位序号(要求选择时VIP业务优先于普通业务)。
4.答辩,展示、介绍程序运行结果。
已基本实现功能而有待改进的程序:P0口数码管的段选,P2口是位选。
#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define YH 10 //普通用户名额#define VP 5 //VIP名额sbit dian=P0^7; //定义数码管小数点sbit S1=P3^0; //定义普通用户按键sbit S2=P3^1; //定义贵宾用户按键sbit S3=P3^2; //定义窗口1按键sbit S4=P3^3; //定义窗口2按键sbit LED1=P1^2;sbit LED2=P1^3;sbit FM=P1^4;uint m1=1,m2=1,m3=1,m4=1; //定义全局变量m1标记S1,m2标记S2,m3标记S3,m4标记S4;uint YONGHU,VIP,CK1,CK2; //定义全局变量分别是用户,vip,窗口1,窗口2;bit out1,out2,out3,out4; //溢出标记long dengdai10s1;dengdai10s2; //等待10s标记;uchar N=0;void delay(unsigned int j ) //基本延时单位1ms{unsigned int e,f;for(e=0;e<j;e++)for(f=0;f<=110;f++);}void anjian() //按键识别{if(S1==0) //按键S1按下,用户人数+1,具有防抖功能{if(m1!=0) //判断上一次按键是否松开{m1++; //达到50ms时人数加1if(m1>50){YONGHU++;m1=0;}}}else m1=1;if(S2==0) //按键S2按下,VIP人数+1{if(m2!=0){m2++;if(m2>50){VIP++;m2=0;}}}else m2=1;if(S3==0) //按键S3按下,窗口1{if(m3!=0){m3++;if(m3>=1000){dengdai10s1=0; //长按达到1s,关断10秒计时m3=0;out3=0;}}}else{if(m3>50){CK1=99; //短按时是下一位dengdai10s1=1; //启动10s计时out3=1;}m3=1;}if(S4==0) //按键S4按下,窗口2{if(m4!=0){m4++;if(m4>=1000){dengdai10s2=0;out4=0;m4=0;}}}else{if(m4>50){CK2=99;dengdai10s2=1;out4=1;}m4=1;}}void xianshi(long a) //显示部分{int i=0;intshuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};N++;if(N==15)N=0;if(out3==1||out4==1)FM=~FM;for(i=0;i<8;i++) //输出数字{P0=0Xff;P2=0x01<<i;P0=shuzi[a%10];if(out3==1){LED1=~LED1;if(N<5)if(i==3||i==2){P0=0xff;}}else LED1=0;if(out4==1){LED2=~LED2;if(N<6)if(i==1||i==0){P0=0xff;}}else LED2=0;if(out2==1){if(i==4)P0=0xc1;if(i==5)P0=0xc0;}elseif(i==5)P0=0x8C;if(out1==1){if(i==6)P0=0xc1;if(i==7)P0=0xc0;}dian=1;if(i==2||i==4||i==6)dian=0;a=a/10;delay(2);P0=0Xff;}}main(){uint yonghu=0;uint vip=0;long he;TMOD=0x01; //使用定时器0,工作方式1,1ms计时;TH0=(65536-1000)/256;TL0=(65536-1000)%256;EA=1; //总中断允许;ET0=1; //允许定时中断;TR0=1; //启动定时器0;while(1){if(CK1==99){if(vip<VIP) CK1=++vip;else if(yonghu<YONGHU)CK1=++yonghu;elseout3=0;}if(CK2==99){if(vip<VIP) CK2=++vip;else if(yonghu<YONGHU)CK2=++yonghu;elseout4=0;}he=YONGHU*1000000+VIP*10000+CK1*100+CK2;xianshi(he);}}void TOJI(void) interrupt 1 //定时器0中断程序;{TH0=(65526-1000)/256;TL0=(65526-1000)%256;anjian(); //按键识别,得到四个数据if(dengdai10s1!=0){dengdai10s1++;if(dengdai10s1==10000){dengdai10s1=1;CK1=99;}}if(dengdai10s2!=0){dengdai10s2++;if(dengdai10s2==10000){dengdai10s2=1;CK2=99;}}if(YONGHU>YH) //判断用户名额{YONGHU=YH;out1=1;}if(VIP>VP) //判断VIP名额{VIP=VP;out2=1;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机电职业技术学院
课程设计(实训)任务书
电子1101班
根据教学计划的安排,于本学期2013年1月7日- 11日为期壹周进行课程设计(实训),望做好准备。
实训名称:银行排队系统的设计
提交成果:1.实训报告;2.编写的软件
实训容与要求(见附件)。
专业负责人:
系主任:
电气工程系
2012年12月31日
附件:《单片机原理及应用》实训说明
一、实训目的、任务与要求:
本课程实训目的:通过对单片机程序的设计,基本掌握51单片机开发系统的操作、编程技巧,实现让学生对单片机的了解从感性认识上升为理性认识。
实训任务:完成排队系统的控制功能。
二、时间安排
周一、三、五:8:00-11:30,14:30-16:30
周二:8:00-10:30 周四:8:00-10:30 ,14:30-16:30
三、实训教学容:
实训容:
1.控制数码管显示:数码管Q1-Q4分别作两个不同窗口业务办理序号显示;
2.分别用两个按键作为“普通业务”、“VIP业务”的选择,剩余两个按键分别作为两个窗口叫号的选择,长按1秒表示业务办理中;当按下“下一位”键的时候,相应窗口数码管闪动显示,并加入声光提示;
3.*在定时3S后如无人办理,自动显示下一位序号(要求选择时VIP业务优先于普通业务且显示号为“P*”,*代表序号)。
4.答辩,展示、介绍程序运行结果。
四、考核方式
1.无故不能缺勤;
2.要求按规定时间完成设计和实训报告;
3.进行答辩。
4.总成绩=10%(平时考勤)+60%(演示、答辩)+30%(实训报告)
附:实训报告要求
1.实训目的
2.实训容
3.流程图
4.源程序
5.实训心得
银行排队系统
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit b1=P3^2;//VIP用户排队键
sbit b2=P3^3;//普通用户排队键
sbit b3=P3^4;//窗口一
sbit b4=P3^5;//窗口二
sbit b5=P3^7;//蜂鸣器
uint i,j,i0,j0,i1,j1;
uchar s1,s2,s3,s4,k1,k2,k3,k4;
uchar y1,y2,v1,v3,v4,m1,m2,m3,m4;
uchar code a[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};//0到9 void delay(uint x)
{
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void xianshi1();//千位和百位显示
void xianshi2();//十位和个位显示
void jianpan(); //键盘扫描
void dingshi(); //定时
void panduan1();//窗口一判断
void panduan2();//窗口二判断
void main()
{
EA=1;
TMOD=0x11;
ET0=1;
ET1=1;
TH0=(65536-45600)/256;
TL0=(65536-45600)%256;
TH1=(65536-45600)/256;
TL1=(65536-45600)%256;
while(1)
{
jianpan();//键盘扫描
xianshi1();//扫描显示
xianshi2();
dingshi(); //定时判断
}
}
void int1() interrupt 1 //窗口一定时
{
TH0=(65536-45600)/256;
TL0=(65536-45600)%256;//定时50ms(晶振11.0592M) m1++;
if(m1==120)//定时120*50ms=6s
{
m1=0;
m3++;
}
}
void int2() interrupt 3 //窗口二定时
{
TH1=(65536-45600)/256;
TL1=(65536-45600)%256;
m2++;
if(m2==120)
{
m2=0;
m4++;
}
}
void dingshi()
{
if(m3==1) //如果m3=1,调用判断1函数 {
m3=0;
panduan1();
}
if(m4==1)
{
m4=0;
panduan2();
}
}
void xianshi1()
{
P2=0x10; //千位
if(y1>0) //y1>0,显示“P”
P0=0x8c;
else P0=a[k1];
delay(1);
P2=0x00;
P0=0xff;
P2=0x20; //百位
P0=a[k2];
delay(1);
P2=0x00;
P0=0xff;
}
void xianshi2()
{
P2=0x40; //十位
if(y2>0) //y2>0,显示“P” P0=0x8c;
else P0=a[k3];
delay(1);
P2=0x00;
P0=0xff;
P2=0x80; //个位
P0=a[k4];
delay(1);
P2=0x00;
P0=0xff;
}
void jianpan()
{
if(b1==0) //VIP用户排队
{
delay(8);
if(b1==0)
{
while(!b1);
TR0=1; //开定时器0
TR1=1; //开定时器1
y1=1;
s1++;
v1++;
s3=0;
s4=0;
k1=s1/10;
k2=s1%10;
xianshi1();
if(s1>=9)
s1=0;
}
}
if(b2==0) //普通用户排队 {
delay(8);
if(b2==0)
{
while(!b2);
TR0=1;
TR1=1;
s2++;
y2=0;
k3=s2/10;
k4=s2%10;
xianshi2();
if(s2>99)
s2=0;
}
}
if(b3==0) //窗口一
{
delay(8);
if(b3==0)
{
while(!b3)
{
j0++;
i0=110;
while(i0--);
}
if(j0>=200)//如果长按超过1s,关闭定时器0
TR0=0;
else
{
TR0=1;
panduan1();
}
j0=0;
}
}
if(b4==0) //窗口二
{
delay(8);
if(b4==0)
{
while(!b4)
{
j1++;
i1=110;
while(i1--);
}
if(j1>=200)//如果长按超过1s,关闭定时器1
TR1=0;
else
{
TR1=1;
panduan2();
}
j1=0;
}
}
}
void panduan1()
{
b5=0;
P1=0xf0;
delay(200);
b5=1;
P1=0xff;
m1=0;
s3++;
if((s1>0||s2>0)&&(s3+s4)<=v1)//显示VIP {
y1=1;
k1=(s3+s4)/10;
k2=(s3+s4)%10;
xianshi1();
}
else //显示普通
{
y1=0;
v3++;
k1=(v3+v4)/10;
k2=(v3+v4)%10;
xianshi1();
if((v3+v4)>=s2)
{
v3=0; v4=0;
s1=0; s2=0; s3=0; s4=0;
TR0=0; TR1=0;
}
}
}
void panduan2()
{
b5=0;
P1=0x0f;
delay(200);
b5=1;
P1=0xff;
m2=0;
s4++;
if((s1>0||s2>0)&&(s3+s4)<=v1)//显示VIP {
y2=1;
k3=(s3+s4)/10;
k4=(s3+s4)%10;
xianshi2();
}
else //显示普通
{
y2=0;
v4++;
k3=(v3+v4)/10;
k4=(v3+v4)%10;
xianshi1();
if((v3+v4)>=s2)
{
v3=0; v4=0;
s1=0; s2=0; s3=0; s4=0;
TR0=0; TR1=0;
}
}
}。