通信工程技术用FPGA实现银行叫号系统.docx

上传人:牧羊曲112 文档编号:2094621 上传时间:2023-01-09 格式:DOCX 页数:32 大小:274.58KB
返回 下载 相关 举报
通信工程技术用FPGA实现银行叫号系统.docx_第1页
第1页 / 共32页
通信工程技术用FPGA实现银行叫号系统.docx_第2页
第2页 / 共32页
通信工程技术用FPGA实现银行叫号系统.docx_第3页
第3页 / 共32页
通信工程技术用FPGA实现银行叫号系统.docx_第4页
第4页 / 共32页
通信工程技术用FPGA实现银行叫号系统.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《通信工程技术用FPGA实现银行叫号系统.docx》由会员分享,可在线阅读,更多相关《通信工程技术用FPGA实现银行叫号系统.docx(32页珍藏版)》请在三一办公上搜索。

1、武汉理工大学通信工程应用技术课设报告书目录摘要1Abstract21、设计内容32、系统整体设计原理42.1 排队系统的基本功能42.2 系统工作原理42.3 软件操作流程53、电路硬件模块设计63.1 业务调度模块设计63.1.1 时钟电路63.1.2 复位电路73.2 排队子系统模块设计83.3 工作人员服务模块设计83.4 业务提示模块设计83.4.1 LCD液晶屏单元83.4.2 语音播放单元93.5电源设计104、整体电路图115、系统软件设计125.1 通信协议125.2 业务调度系统程序设计135.3排队子程序设计145.4 服务子程序设计145.5业务提示子程序设计156、电路

2、仿真结果167、总结198、参考文献20附录 C源程序代码21摘要目前,在以银行营业大厅为代表的窗口业务,大量客户的拥挤排队已成为了这些企事业单位改善服务品质、提升企业形象的主要障碍。排队叫号系统的使用将成为改变这种情况的有力手段。排队系统完全模拟了人群排队的全过程,通过取票进队。排队等待、叫号服务等功能,很好的解决了客户在服务机构办理业务是所遇到的各种排队、拥挤和混乱现象,代替了人们站队的辛苦,把顾客等待的烦恼变成了一段难得的休闲时光,使客户拥有了一个自由的空间和一份美好的心情。本次课程设计详细的介绍了设计的整过程,各个子系统的设计规则,而且还基于MATLAB做了简单的仿真。关键字:窗口业务

3、、排队等待、呼叫服务、设计、MATLABAbstractAt present, in the business hall of the bank as the representative of the window service, a large number of customers queuing has become the main obstacle to these enterprises to improve service quality, enhance corporate image. The use of queuing system will become a pow

4、erful means to change this situation. Queuing system is fully simulates the whole process of the crowd queuing, the ticket into the team. Queuing, queuing and service functions, is a very good solution to customers in the service business is encountered queuing, crowded and chaotic phenomena, instea

5、d of people line up hard, make customer waiting annoyance into a rare leisure time, so that customers have a free space and a good mood.Keywords: window service, waiting in line, call service, design, MATLAB1、设计内容 由于嵌入式的电路板比较复杂,而次设计用单片机可以实现,所以相对来说用单片机设计比较简单,程序设计也比较方便。通过编程对SYC89C52输入/输出接口进行控制,并对1602液

6、晶显示屏进行操作,使之显示相关信息。 当两个业务办理窗口中的某一个有一个人的事务办理完毕时对应窗口的工作者便按下叫号键,通过液晶显示“Now No.X come to No.X window!”的信息,通知持有下一个号码的人前来。当前来办理事务的人按下领号键后,若能正常领号,则液晶显示“Your number is X.”的信息。若检测到等待的人数(通过液晶显示)达到20时,蜂鸣器“报警”,任一窗口处的叫号键被按下,则液晶显示“Queue is full,come later.”的信息,同时领号被禁止,但仍可以叫号,即持有号码的人继续办理业务,直到等待的人数小于20才能继续领号。另外有一个统计

7、客流量的按键,按下则显示“Now the total num is X”,即到目前为止领过号的总人数,并在液晶右侧显示仍在等待的人数。系统工作过程中每按下任一个按键时蜂鸣器发出响声。叫号系统每次结束工作时恢复到初始状态。焊好电路确定芯片与外围电路的接口后,只需写程序对芯片I/O口进行操作,便可实现信息的显示、传递等功能。单片机芯片相对集成度更高,成本也比较低。并且电路连接比较简单,调试过程中只需改动程序,信息显示也更直观。系统稳定性足够满足设计要求。2、系统整体设计原理智能排队叫号系统是提高窗口服务行业的办公效率,解决顾客排队等候问题的有利工具。本文设计的嵌入式智能排队叫号系统基本完全模拟人群

8、排队过程,通过取号、进队、排队等待、叫号服务等功能代替人们站队,实现机器自动代替人排队的过程。可以适用于银行、工商、税务、医院等窗口比较繁忙的地方2.1 排队系统的基本功能(1)银行门口有一个叫号机,在客户操作下可打印出一个顺序号;客户按照顺序号依次到银行窗口办理业务;(2)叫号机支持两类业务:现金业务和非现金业务。办理现金业务的窗口有3个,办理非现金业务的窗口有2个,称为综合窗口;现金业务窗口只能办理现金业务,而综合业务窗口可以办理现金业务和非现金业务;(3)非现金业务优先级高,综合业务窗口只有在没有非现金业务情况下,才能办理现金业务;(4)银行工作人员在办理了一个客户业务后,按一个呼叫按钮

9、,由系统安排其下一个办理业务的顺序号;顺序号在窗口前的LED屏上显示的同时进行语音播音,提示客户前来办理业务;设计一个叫号调度系统,实现对办理银行业务的排队和调度。2.2 系统工作原理集排队系统服务主机与取号机一体的嵌入式排队叫号主机服务器设置在服务大厅,客户进入大厅,选择自己需要的服务类别,记下当前排队的序号,然后到相应的休息区等待。服务大厅设有一个LED显示屏,用于对当前的操作进行提示。当窗口的工作人员开始进行客户服务时,查询相应的排队队列,响应请求,并在LED显示屏上显示相应消息,并驱动语音呼叫系统给出语音提示:请xxx号到xx号窗口。如图1所示,排队系统基本流程图以所要处理的排队信息为

10、主体,从客户在发号机上按下按键后产生的一条记录开始,给出了数据处理的整个流程。图1 系统流程图本文所设计的嵌入式系统所遵循的软件和硬件协同设计的方法和特点,即软硬件设计是并行且交叉的,两者互相支持、互相提供开发的平台。可以设计出整个系统的结构如图2所示,整个系统主要由排队子系统、业务调度系统、业务提示系统组成。图2 系统结构图排队子系统同时涉及到客户的操作和工作人员的操作,其简单的工作流程为:顾客到达服务大厅后,先到排队发号机上选择自己需要的服务类型,得到自己的服务序号后,到相应的休息位置等候语音呼叫,同时关注LCD液晶屏的显示,当被叫到自己的排队号时,根据语音提示和LCD屏显示信息到相应窗口

11、办理业务;工作人员到达指定的窗口后,待准备好服务客户时按下呼叫键开始工作,每服务完一个客户后就按呼叫键呼叫下一位客户。2.3 软件操作流程本设计中自动排队叫号软件的模拟操作流程如下:1、系统初始化主程序不断扫描按键,等待外部信号的到来。2、领号者领号需要领号的人只需按下领号键,若领号成功,则系统显示所领取的号码,否则等待片刻再前来领号。3、工作人员叫号 窗口工作者按下叫号键,通知下一位顾客前来办理业务,若无人正在等待,则返回信息给工作人员。4、若等待人数超过限制,系统报警,领号暂停。否则领号、叫号工作继续进行,到系统关闭为止。图3 软件流程框图3、电路硬件模块设计系统是一个简单的分布式控制系统

12、,系统硬件由排队子系统模块、工作人员服务模块、业务调度模块和业务提示模块等模块构成,考虑到节约系统开发成本及时间等因素,排队子系统模块和工作人员服务模块均使用按键模拟;业务调度模块的核心芯片选用价格较低且性能较佳的STC89C54单片机;业务提示模块的核心芯片选择的是ISD4004语音存储控制芯片和LCD1602。3.1 业务调度模块设计51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89

13、系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。要使得单片机能够正常工作,那么就需要时钟电路和复位电路。单片机的时钟信号用来提供单片机内各种微操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的状态运行。3.1.1 时钟电路单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相

14、放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。内部振荡方式如图3所示。图中,电容C1,C2起稳定振荡频率、快速起振的作用。电容值一般为530pF。内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。在本设计中,需要得到稳定的时钟脉冲,因而我们采用内部振荡方式,其电路图如图3所示。图4内部振荡方式3.1.2 复位电路复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当单片机的复位引脚出现5ms以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。根据应用的要求,复位操作

15、通常有两种基本形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。本设计中,上电且开关复位的电路如图4所示。上电后,由于电容的充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=1030uF,R=10k,本设计中,选择C=10,R=10k。图5复位电路综上所述,单片机的最小系统电路图如图5所示。图6单片机最小系统3.2 排队子系统模块设计排队子系统模块是用作客户选择服务类型的,按照设计要求,本排队

16、子系统模块需要实现叫号机支持两类业务:现金业务和非现金业务。因而我们需要设定两个按键来选择不同的业务在此我使用的是两个按键来区分不同的业务,其电路图如图6。其中,当客户按下按键1时,代表其选择的是现金业务,当客户按下按键2时,代表其选择的是非现金业务。图7 用户叫号模块3.3 工作人员服务模块设计工作人员服务模块是给工作人员进行操作的,当工作人员处理完一次服务时,按下服务窗口的叫号按键,就能够对下一位客户进行服务,设计要求中要求一共要有5个服务窗口,那么,我们在这里设计5个按键分别代表5个窗口的工作人员的操作。3.4 业务提示模块设计3.4.1 LCD液晶屏单元在本设计中,我选用了LCD160

17、2作为显示模块。液晶显示器(LCD)以其具有功耗低,体积小,重量轻,超薄等许多其他显示器无法比你的优点,而被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD1602智能显示模块可以实现两行每行16个字符的显示。该LCD1602外围电路简单,程序控制易实现。其中D0D7是数据接口,用以接收单片机的数据,VSS是电源地,VDD是正5V逻辑电源,V0是驱动电源,RS选择输入的是数据还是命令,R/W选择读写操作,E为使能信号。LCD1602有很多指令供使用者调用,能够实现基本的显示功能。LCD1602接口电路如图7。图8 LCD1602显示模块电路3.4.2 语音播放单元语音播放单元的核心

18、芯片采用的是ISD公司的ISD4004语音芯片,其工作电压为3V,单片录放时间为16min,音质好。该芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮陈列,其设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Microwire)送入。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。片内信息存于闪烁存贮器中,可在断电情况下保存100年(典型值),反复录音10万次。其电路图根据芯片手

19、册要求设计如图9所示。图9 语音播放单元3.5电源设计本系统采用USB的5V供电系统,用外界的稳压器代替了传统制作电源系统的过程,减少了设计工作量。并且本系统供电电源电压稳定,电路简单易实现。本次就不算详细讲述了。4、整体电路图图10 整体电路仿真图5、系统软件设计本系统的软件设计主要包含通信协议的设定、排队子程序的设计、服务子程序的设计、业务提示子程序设计以及业务调度程序的设计。5.1 通信协议 通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序

20、,从而确保网络中数据顺利地传送到确定的地方。 常用的通信协议有串口通信协议、I2C通信协议、SPI通信协议等等。在本系统中,排队子系统模块和服务子系统模块直接与业务调度模块相连接,不需要使用通信协议,而业务调度模块与业务提示子模块之间使用的是SPI通信方式。 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是一种标准的四线同步双向串行总线。SPI是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全

21、双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线: 串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、

22、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。SDO 主设备数据输出,从设备数据输入 SDI 主设备数据输入,从设备数据输出 SCLK 时钟信号,由主设备产生 CS 从设备使能信号,由主设备控制其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同

23、一总线上连接多个SPI设备成为可能。接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个

24、优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使

25、能信号,硬件上比I2C系统要稍微复杂一些。最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。5.2 业务调度系统程序设计排队服务主机的软件设计采用模块化方法进行设计,包括了业务调度系统程序设计、排队子程序设计、服务子程序设计、业务提示子程序设计等。而由业务调度系统程序对各个子程序进行管理和协调,业务调度系统设计流程图如图10所示。图11 业务调度系统主程序流程图5.3排队子程序设计排队子程序主要用于将顾客的排队信息计入到相应队列中。如上所述,客户在叫号机上可以选择两种服务,分别是现金服务和非现金服务。在这里,我将客户状态与其所选服务及其排队需要制成一个3维数组Gue

26、stStutasQueueNumtypeisServed。当有顾客在叫号机上进行取号操作时,会将其对应取得的序号作为QueueNum的值,根据其选择的是现金服务还是飞现金服务,分别将type的值设置为0或1,当客户处于等候被服务状态时,isServed项为0,当已经为客户服务后,isServed项为1。5.4 服务子程序设计服务子程序主要是当服务人员按下按键后的一系列的调度操作。在本系统中,存在有2中不同的服务窗口,现金服务窗口和综合服务窗口,现金服务窗口是只能办理现金业务的窗口,综合服务窗口既能办理现金业务又能办理非现金业务的窗口。当服务员按下操作按键时,根据当前服务窗口的类型,选择相应的客

27、户到当前窗口进行服务。服务子程序设计流程图如图12。图12 服务子程序设计流程图5.5业务提示子程序设计业务提示子程序包含LCD液晶提示和语音提示两个部分。液晶部分程序设计较为简单,语音提示部分使用的是ISD4004芯片,其内部共有3840K单元的Flash存储阵列,共分为2400行,每行1600列,而ISD4004内部具有特殊的信息寻址机制,即对每行(行首地址)进行寻址,而每行中的列不可寻址。这样,ISD4004内部最多可录或放的语音信息为2400段,每一信息段的最小单位为1行,每一信息段由起始地址指针、记录的语音信息和信息结束标志位(EOM)3部分组成,一个信息段可占用1行或多行存储空间。

28、对行寻址是通过行地址时钟(RAC) 来实现的,对于ISD4004216MP其录放时间为960s,因此它的分辨率为400ms(即1个行地址时钟周期为400ms)。这样只要对行地址时钟输出端RAC的低电平进行计数就可以知道每一信息段占用了多少行,也就可以知道每一信息段的起始地址和结束地址。在本系统中将13段音提前录好,113段音分别是:“请”、“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“号到”、“号窗口”,然后根据所叫号码的不同及窗口号的不同进行组合放音,所播放的提示音共分为9段,例如“请”-“1”-“号到”-“2”-“号窗口”。6、电路仿真结果图13 仿真电

29、路a开机画面,程序启动。图14 仿真电路b开始叫号,客户端按键按一下,领号加一!图15 仿真电路c客户开始到窗口1办理业务。图16 仿真电路d客户到窗口2办理业务。图17 仿真电路e统计人数,当前领号人数,等待办理业务人数。图18 仿真电路f领号人数达到人数上限,停止领号。仿真的结果和我们预计的结果一致。在仿真期间出现过软件自动弹出的原因,后来重启电脑解决。7、总结经过努力,本设计仅是使用单片机完成了银行叫号系统的功能。本文首先分析了叫号系统发展现状,指出了在智能排队系统中采用嵌入式技术的优势,剖析了一般排队叫号系统的业务需求和基本功能,采用软硬件协同设计的方法,提出了排队叫号系统的整体设计方

30、案。同时本文分别对系统的硬件和软件设计与实现方法进行了说明,给出了系统基本功能的测试方法和测试结果以及仿真结果。总结了本文所做的工作和存在的问题,并对下一步系统的功能扩展进行了展望。此系统采用LCD1602显示,做起来比较简单,其中只设立了两个处理窗口,虽然很少,不过根据需要可以经行增加,具有较好的扩展功能。本设计虽不及现今比较成熟的产品,不过对需求不是很高的人还是可以的。从此次设计中,我学到了很多,对没有掌握的知识都有了一定的了解。8、参考文献1新型集成电路的应用电子技术基础课程设计梁宗善主编,华中科技大学出版社。2电子技术基础课程设计孙梅生等编著,高等教育出版社。351单片机C语言教程郭天

31、祥编著,电子工业出版社。4单片机教程一单片机基础 张迎新编著 第二版.2006.85马忠梅等编著单片机的C语言应用程序设计(第4)饭) 北京航空航天大学出版社.2007.2附录 C源程序代码#include/C51程序包含的头文件#define uchar unsigned char#define uint unsigned int/以下定义要用到的字符串数组uchar code t0=Welcome!;uchar code t1=wp;/wp意为正在等待的人数uchar code t2=Your No.is;uchar code t3=No. come to;uchar code t33=N

32、o. window!;uchar code t4=Queue is full,;uchar code t44=come later.;uchar code t5=Nobody is;uchar code t55=waiting!;uchar code t6=Now the total wp;uchar code t66=number is ;uchar num,waiting,count;/num为所领号码,waiting为正在等待的人数sbit lcden=P27; /液晶使能端sbit lcdrw=P25;/“读”或“写”选择端,要置低sbit lcdrs=P26;/写命令/数据选择端:置

33、0写命令,置1写数据sbit s0=P34;/领号键sbit s1=P31;/窗口1的叫号键sbit s2=P32; /窗口2的叫号键sbit s3=P33;/停止领号键sbit add=P35;/统计客流量sbit bee=P15;/蜂鸣器端口/函数声明void delay(uint);/延时void di();/蜂鸣void write_com(uchar);/向液晶写入命令void write_data(uchar);/向液晶写入数据void go(uchar,uchar);/移动光标void shownum(uchar);/显示数字void showstr(uchar *); /显示字

34、符串void clear();/清空动态显示void init();/初始化void keyscan();/键盘扫描/函数定义void delay(uint n)uint i,j;for(i=n;i0;i-)/不够精确地延时1msfor(j=110;j0;j-);void di() bee=0;delay(100);bee=1;void write_com(uchar com)lcdrs=0;/选择写命令lcdrw=0;/“读写”选择写P0=com;/液晶输入端接单片机P1口lcden=1;/产生上升沿delay(3);lcden=0;void write_data(uchar dat)lcd

35、rs=1;/选择写数据lcdrw=0;P0=dat;lcden=1; delay(3); lcden=0;void go(uchar x,uchar y)if(x=1)write_com(0x80+y);/从液晶第一行左端开始写入数据elsewrite_com(0x80+0x40+y);/从液晶第二行左端开始写入数据void shownum(uchar dat)uchar code t= ;uchar shi,ge;shi=dat/10; /分离十位ge=dat%10;/分离个位if(shi0)write_data(0x30+shi);/显示个位elsewrite_data(t0);write

36、_data(0x30+ge);/显示十位void showstr(uchar *t)while(*t)write_data(*t); /向液晶读入字符串t+; void clear()write_com(0x01); /清空屏幕go(1,14);/光标定位到1行14列showstr(t1);go(2,14);/光标定位到2行15列shownum(waiting);void init()lcden=0;write_com(0x38);/设置点阵显示、数据接口write_com(0x0c);/打开显示,不显示光标write_com(0x06);/写一个字符指针加一write_com(0x01);/

37、显示清零、数据指针清零go(1,4);showstr(t0);void keyscan() uchar a; if(waiting20) if(s0=0&(s1!=0)&(s2!=0)&(s3!=0) /在工作人员操作的按键未按下的情况下才能领号 delay(5);if(s0=0&(s1!=0)&(s2!=0)&(s3!=0) /确认领号键被按下while(!s0);/等待按键释放di(); /蜂鸣器响一下clear();num+;waiting+;go(1,0); /光标定位到1行1列showstr(t2);go(2,0); /光标定位到2行1列shownum(num); /显示所领的号码g

38、o(2,14);shownum(waiting);/显示等待的人数 if(s1=0) delay(5);/窗口1的叫号键被按下if(s1=0)while(!s1);di();if(waiting=0)/如果没人在等待write_com(0x01);go(1,3);showstr(t5);go(2,3);showstr(t55);elseclear();waiting-;go(1,0);showstr(t3);go(2,0);showstr(t33);go(1,3);shownum(num-waiting);go(2,3);shownum(1);go(2,14);shownum(waiting)

39、; if(s2=0)/窗口2的叫号键被按下 delay(5);if(s2=0)while(!s2);di();if(waiting=0)/如果没人在等待write_com(0x01);/清屏go(1,3);showstr(t5); go(2,3);showstr(t55);elseclear();waiting-;go(1,0);showstr(t3);go(2,0);showstr(t33);go(1,3);shownum(num-waiting);go(2,3);shownum(2);go(2,14);shownum(waiting); else if(waiting=20)/如果等待的人

40、数达到上限 if(!a)di();/报警if(s3=0)/领号停止键被按下delay(5);if(s3=0)while(!s3);di();a=1; write_com(0x01);go(1,0);showstr(t4);go(2,0);showstr(t44); if(a=1) if(s1=0)/继续叫号 delay(5);if(s1=0)while(!s1);di();clear();waiting-;go(1,0);showstr(t3);go(2,0);showstr(t33);go(1,3);shownum(num-waiting);go(2,3);shownum(1);go(2,1

41、4);shownum(waiting);a=0; if(s2=0)/继续叫号 delay(5);if(s2=0)while(!s2);di();clear();waiting-;go(1,0);showstr(t3);go(2,0);showstr(t33);go(1,3);shownum(num-waiting);go(2,3);shownum(2);go(2,14);shownum(waiting);a=0; if(add=0)&(s0!=0)&(s1!=0)&(s2!=0)&(s3!=0)/在其他按键未按下的情况下才能统计客流量 delay(add=0);if(add=0)&(s0!=0)&(s1!=0)&(s2!=0)&(s3!=0)while(!add);di();write_com(0x01);go(1,0);showstr(t6);go(2,0);showstr(t66);shownum(num);go(2,14);shownum(waiting); main() init();while(1)keyscan();31

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号