武汉理工大学《通信工程应用技术课程设计》报告.docx
《武汉理工大学《通信工程应用技术课程设计》报告.docx》由会员分享,可在线阅读,更多相关《武汉理工大学《通信工程应用技术课程设计》报告.docx(38页珍藏版)》请在冰豆网上搜索。
武汉理工大学《通信工程应用技术课程设计》报告
智能排队系统
摘要
随着现代技术的不断发展特别是计算机技术的应用,使排队技术的发展也突飞猛进。
智能排队机或称智能排队系统是一种综合运用计算机技术、网络技术、多媒体技术、通讯控制技术的高新技术产品。
它完全模拟了人群排队过程,通过取号、进队、排队等待、叫号服务等功能,取代各类服务性窗口传统的由顾客站立排队的方式,实现了计算机系统代替客户进行排队的过程。
适用于各类窗口服务行业,目前在国外已经广泛应用于金融、医院、电信、以及各级政府对外服务窗口等行业。
银行自动叫号系统就是电子排队管理统的一种,是针对银行服务窗口的特点而设计的。
这里以ATMEL公司的AT89C52单片机为核心,设计了一个简单的把客户与服务机构相结合的排队叫号系统。
模拟排队叫号管理,科学地处理各种排队情况,操作简便,控制灵活,显示清晰,制作成本低,性价比较高。
关键词:
排队技术智能排队系统银行排队叫号系统AT89C52
Abstract
Withthedevelopmentofmoderntechnology,especiallytheapplicationofcomputertechnology,thequeuingtechnologyalsodevelopsbyleapsandbounds.IntelligentAutomaticCallDistributororintelligentqueuingsystemisakindofhighandnewtechnologyproductsofthecomprehensiveuseofcomputertechnology,networktechnology,multimediatechnologyandcommunicationcontroltechnology.Itcompletelysimulatesthecrowdqueueprocess.Throughthefunctionsoftakingnumber,intotheteam,waitingforthequeue,callingthenumberandsoon,itreplacesallkindsofservicewindowofthetraditionalwaybythecustomertostandinline,andrealizingthecomputersysteminsteadoftheprocessofthecustomerslineup.itissuitableforallkindsofwindowserviceindustry,andatpresentithasbeenwidelyusedinforeignfinancial,hospital,telecommunications,andgovernment'sforeignservicewindowatalllevels,etc.Bankautomaticstationsystemiselectronicqueuingmanagementsystemwhichisdesignedaccordingtothecharacteristicsofthebankservicewindow.HeretakingATMELcompany'sAT89C52single-chipmicrocomputerasthecore,idesignasimplecallingthenumbersystemwhichcombinethecustomerswiththefacilitatingagency.Itsimulatesthequeuestationmanagementandscientificlyprocessesallkindsofqueuingsituation.Itissimpletooperate,smarttocontrol,andthedisplayisclear,andtheproductionisoflowcost,highcostperformance.
Keywords:
queuingtechnologyIntelligentAutomaticCallDistributorBankqueuingstationsystemAT89C52
1设计目的与任务要求
1.1设计目的
通过课程设计,使学生加强对电子电路的理解,学会对电路分析计算以及设计。
进一步提高分析解决实际问题的能力,通过完成综合设计型和创新性实验及训练,创造一个动脑动手﹑独立开展电路实验的机会,锻炼分析﹑解决电子电路问题的实际本领,实现由课本知识向实际能力的转化。
1.2设计任务
银行叫号调度系统:
1.银行门口有一个叫号机,在客户操作下可打印出一个顺序号;客户按照顺序号依次到银行窗口办理业务;
2.叫号机支持两类业务:
现金业务和非现金业务。
办理现金业务的窗口有3个,办理非现金业务的窗口有2个,称为综合窗口;现金业务窗口只能办理现金业务,而综合业务窗口可以办理现金业务和非现金业务;
3.非现金业务优先级高,综合业务窗口只有在没有非现金业务情况下,才能办理现金业务;
4.银行工作人员在办理了一个客户业务后,按一个呼叫按钮,由系统安排其下一个办理业务的顺序号;顺序号在窗口前的LED屏上显示的同时进行语音播音,提示客户前来办理业务;设计一个叫号调度系统,实现对办理银行业务的排队和调度。
1.3设计要求
1.制定出业务调度控制规则;
2.进行系统总体设计,画出系统构成框架图;
3.进行银行业务前端排队子系统的详细设计;
4.进行银行业务调度系统的详细设计;
5.进行业务提示子系统(LED屏显示、语音提示)的详细设计;
5.设计调度系统与排队子系统、提示子系统的通信方式和通信协议;
6.总结整个系统的设计,形成文档,作为课程设计的结果提交。
7.鼓励进行完整的理论设计-编程-仿真过程。
2方案设计
由于在上课过程中接触到了单片机的有关知识,对单片机的使用及编程都比较熟悉,而嵌入式ARM板没有接触过,因此不太熟悉它的原理及使用,因此本次课程设计采用单片机来实现,即用AT89C52单片机作为整个系统的控制核心,分别设计叫号电路、取号电路、显示电路及声音提示等外围电路与单片机的对应引脚相连接,然后编写程序下载到单片机中通过单片机来控制外围电路的功能,从而实现整个系统的功能仿真
本次课程设计以单片机AT89C52为主体的模拟仿真系统。
叫号部分和业务处理部分选择键盘电路模式,显示部分选择LM016L液晶显示模块。
3基本原理
3.1键盘电路基本原理
键盘分编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生按键编码号或键值的称为编码键盘,如计算机键盘。
而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘。
非编码键盘又分为矩阵键盘和独立键盘,分别如图3.1(a)(b)所示。
图3.1(a)矩阵键盘图3.1(b)独立键盘
键盘扫描原理:
在这种非编码键盘的单片机系统中,键盘处理程序首先执行有无按键按下的程序段,当确认有按键按下后,下一步就要识别哪一个按键被按下,对键的识别常采用逐行(逐列)扫描的方法。
首先判断有无按键按下。
方法是:
向行线输出全扫描字00H,把全部行线置为低电平,然后将列线的电平状态读入到累加器A中,如果有按键按下,会使列线电平被拉至低电平,是列输入不全为1。
判断键盘哪一个键被按下。
方法是:
一次给行线送低电平,然后查所有列线状态,称为行扫描,如果全为1,则所按下键不在此行,如果不全为1,则所按下键必在此行,而且是在与零电平列线相交的交点上的那个键。
在此,按键的位置码并不等于按键的实际定义键值,因此还必须进行转换,即键值译码。
在本次课程设计中,由于只需采用两个取号键盘和五个服务窗口键盘,所以我采用了独立键盘来实现,在程序中直接对连接键盘的单片机引脚进行扫描,若引脚为0且延时去抖动之后仍为低电平则说明该键盘按下了。
3.2ATC89C52基本原理
单片机ATC89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
晶振采用12MHZ。
其芯片管脚图如图3.2所示。
图3.2ATC89C52单片机
VCC:
电源。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入1后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源。
3.3LCD液晶显示基本原理
3.3.1LM061L液晶模块
LM016L液晶模块采用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。
IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码。
CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM,LM016L液晶模块如图3.3.1-1所示,其引脚功能如表3.3.1-1所示:
图3.3.1-1LM016L液晶
表3.3.1-1LM016L液晶引脚功能
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平1时进行读操作,低电平0时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
底4位三态、双向数据总线0位(最低位)
8
DB1
底4位三态、双向数据总线1位
9
DB2
底4位三态、双向数据总线2位
10
DB3
底4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)
(也是busyflang)
LM016L液晶模块内部的控制器共有11条控制指令,如表3.3.2-1所示:
表3.3.2-1控制命令表
3.3.2LM016L的指令说明及时序
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
功能
1
复位显示器
0
0
0
0
0
0
0
0
0
1
清屏,光标归位
2
光标
返回
0
0
0
0
0
0
0
0
1
*
设置地址计数器清零,DDRAM数据不变,光标移到左上角
3
字符进入模式
0
0
0
0
0
0
0
1
I/D
S
设置字符进入时的屏幕移位方式
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
设置显示开关,光标开关,闪烁开关
5
光标或字符
移位
0
0
0
0
0
1
S/C
R/L
*
*
设置字符与光标移动
6
功能
设置
0
0
0
0
1
L
N
F
*
*
设置DL,显示行数,字体
7
设置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
设置6位的CGRAM地址以读/写数据
8
设置数据存贮器地址
0
0
1
显示数据存贮器地址
设置7位的DDRAM地址以读/写数据
9
读忙
标志或
地址
0
1
BF
计数器地址
读忙标志及地址计数器
10
写数据到CGRAM或DDRAM
1
0
写入一字节数据,需要先设置RAM地址
向CGRAM/DDRAM写入一字节的数据
11
从CGRAM或DDRAM读数据
1
1
读取入一字节数据,需要先设置RAM地址
从CGRAM/DDRAM读取一字节的数据
I/D=1递增,I/D=0递减。
S=0时显示屏不移动,S=1时,如果I/D=1且有字符写入时显示屏左移,否则右移。
D=1显示屏开,D=0显示屏关。
C=1时光标出现在地址计数器所指的位置,C=0时光标不出现。
B=1时光标出现闪烁,B=0时光标不闪烁。
S/C=0时,RL=0则光标左移,否则右移。
S/C=1时,RL=0则字符和光标左移,否则右移。
DL=1时数据长度为8位,DL=0时为使用D7-D4共4位,分两次送一字节。
N=0为单行显示,N=1时为双行显示。
F=1时为510点阵字体,F=0时为57点阵字体。
BF=1时LCD忙,BF=0时LCD就绪。
LM016L液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
与HD44780相兼容的芯片时序表如表3.3.2-2:
表3.3.2-2基本操作时序表
读状态
输入
RS=L,R/W=H,E=H
输出
D0~D7=状态字
写指令
输入
RS=L,R/W=L,D0~D7=指令码,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0~D7=数据
写数据
输入
RS=H,R/W=L,D0~D7=数据,E=高脉冲
输出
无
4系统设计
4.1业务调度控制规则设计
由于本次课设要求是叫号机支持两类业务:
现金业务和非现金业务。
办理现金业务的窗口有3个,办理非现金业务的窗口有2个,称为综合窗口;现金业务窗口只能办理现金业务,而综合业务窗口可以办理现金业务和非现金业务;非现金业务优先级高,综合业务窗口只有在没有非现金业务情况下,才能办理现金业务;银行工作人员在办理了一个客户业务后,按一个呼叫按钮,由系统安排其下一个办理业务的顺序号;顺序号在窗口前的LED屏上显示的同时进行语音播音,提示客户前来办理业务。
因此,本次我设计的银行叫号系统其业务调度规则如下:
银行设置两个取号机,分别是现金业务取号机和非现金业务取号机,顾客根据自身办理业务来选择对应叫取号机打印自己的号码;银行共设置五个叫号机,其中2个非现金业务叫号机和3个现金业务叫号机来分别对应5个服务窗口;现金业务窗口只能处理现金业务;非现金业务窗口能处理两种业务,但若有非现金业务,非现金业务窗口优先处理非现金业务,完成后才处理现金业务。
非现金业务和现金业务待处理的堆积量分别均为20人,以免引起取号过多等待服务的人数过多导致超负荷服务。
4.2前端排队子系统设计
前端排队子系统我主要是靠2个按键来模拟两个取号机,以LM016L液晶显示来模拟打印机显示客户的号码,然后通过程序来控制顾客取号排队的过程。
其电路图如图4.2-1所示,取号排队流程图如图4.2-2所示。
图4.2-1取号排队电路图
图4.2-2排队取号流程图
4.3银行业务调度系统设计
银行业务调度系统主要实现的就是对顾客业务的处理,5个处理窗口共分为2个非现金业务和3个现金业务的处理窗口,在仿真中我采用了5个按键来模拟着5个处理窗口,然后通过程序来控制单片机实现整个业务的分类处理和优先理处理的问题。
其流程图如下图所示,电路图如图4.3-1所示:
图4.3-1业务调度电路图
4.4业务提示子系统设计
4.4.1液晶显示电路
本次课设我采用了LM016L液晶来模拟显示,主要对排队取号的号码进行显示(模拟实际系统中的打印机)以及对服务窗口叫号的显示,其电路如图4.4.1-1所示,单片机P1口接LM016L的8个双向数据线接口,P3.4接LM016L的数据/命令选择端,P3.5接LM016L的使能信号。
通过对RS以及E的高低电平进行写指令和写数据操作来控制LM016L的显示。
图4.4.1-1显示系统
4.4.2声音提示电路
实际银行排队叫号系统中,当服务窗口可以服务时,会有广播播报对应的“请某某号顾客到某某号窗口”的提示音,但是由于PROTUES里面没有语音芯片,没办法进行录音仿真,于是本课设里面我采用了简单的蜂鸣器发声电路来模拟实际的语音电路,以简单的蜂鸣器发声来达到声音提示的效果,其电路图如图4.4.2-1所示。
图4.4.2-1蜂鸣器声音提示电路
4.5系统总设计
整个银行排队叫号系统的原理电路图如图4.5-1所示,其程序流程图如图4.5-2所示。
图4.5-1系统总原理图
图4.5-2系统总流程图
5仿真结果及分析
首先,我将非现金业务取号键按两次,结果如图5-1显示,说明非现金业务取号正常。
图5-1非现金业务取号
然后分别按下现金业务的叫号窗口1、2、3的对应键,结果均如图5-2所示,说明现金业务窗口不能处理非现金业务,且无现金业务排队时其窗口显示队列空。
图5-2现金业务窗口的限制
然后依次按下非现金业务处理窗口1、2对应键,结果如图5-3所示,同时蜂鸣器发声,说明非现金业务能正常处理非现金业务。
图5-3非现金业务处理
然后,我按下四次现金业务取号键,其结果如图5-4显示,说明现金业务取号正常。
图5-4现金业务取号
然后,我一次按下了现金业务处理窗口3、4、5,结果如5-5所示,同时蜂鸣器发声,说明现金业务处理正常。
图5-5现金业务处理
然后,我又按下一次非现金业务取号键,结果如5-6显示,说明现金和非现金业务共同取号正常。
图5-6综合取号
然后,我按下非现金业务处理窗口1,结果显示如图5-7,同时蜂鸣器发声,说明非现金业务的优先级在现金业务之前。
图5-6非现金业务的优先权
然后,我再次按下非现金业务处理窗口1,结果显示如图5-7,同时蜂鸣器发声,说明非现金业务处理窗口在处理完非现金业务之后也能处理现金业务。
图5-7非现金业务窗口处理现金业务
然后,我将现金业务和非现金业务取号窗口各按21次,其显示均如图5-8所示