银行叫号系统设计..
银行排队叫号系统设计实验报告(范本模板)
2011年至2012年第一学期《银行排队叫号系统设计》课程设计班级1006402指导教师涂立、李旎学生人数 3设计份数 12011年12月23日银行排队叫号系统设计报告一.设计时间2011年12月 19日——---12月23日二.设计地点湖南城市学院实验楼计算机机房三.设计目的1.进一步熟悉和掌握单片机的结构及工作原理。
2.掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,详细使用Protel软件绘制原理图的过程.4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
四.实验成员及分工五。
指导老师涂立副教授、李旎讲师.六.设计课题设计一个银行排队叫号系统。
理由: 1、系统原理容易理解,更贴近我们的生活。
2、怎个系统简洁明了,适于初学者。
3、能提高我们的综合应用能力。
七.基本思路及关键问题的解决方法用八个二极管表示客户取号的号码和营业员准备给那位客户办理业务的号码,用二进制表示,亮的二极管表示0,灭的二极管表示为1 。
开关KEY为客户取号码是所用,KEY闭合时八个二极管的亮灭顺序就是客户的号码。
开关KEY1,KEY2,KEY3,KEY4是分别在四个营业窗口,其中任意一个按下,八个二极管的亮灭会显示一个号码,此号码对应要办理业务客户的号码,与此同时蜂鸣器也会提醒客户。
八.算法及流程图算法:程序利用循环结构检测整个系统中的客户端和叫号端是否有按键被按下,如果检测到有按下的信号,首先判断按下按键的端口的类型,然后相应的计数变量加一,并把计数变量的信息以二进制的形式传送到相应的端口;如果没检测到按下信号,程序则跳入下一个循环继续检测按键信息。
表1 元件清单芯片晶振发光二级管电容电源按键蜂鸣器导线P87C52X2BN11.0592MHZLED10uf、30pf5V非自锁式1183181若干图1。
银行排队叫号系统原理图图2. 银行排队叫号系统流程图九、调试过程中出现的问题及相应解决办法1.开打keil软件,建立一个新工程单击【Project】在下拉菜单中找到【New project。
叫号系统设计方案
叫号系统设计方案
叫号系统(或叫做排队系统)是一种广泛应用于医院、银行、餐厅等场所的信息处理系统,其作用是为顾客提供个性化的服务。
以下是一个叫号系统的设计方案:
1. 硬件设备:
- 取号机:顾客可以通过取号机自行获取一个号码。
取号机
应该具有简洁明了的指导,使顾客能够迅速完成取号操作。
- 显示屏:显示屏应当包含当前叫号的号码以及窗口的信息,以便顾客能够了解自己的等待时间。
- 叫号器:叫号器用于发出声音或者光信号,以提醒顾客到
某个窗口办理业务。
2. 软件系统:
- 编号算法:为了能够有效地进行号码管理,可以采用一种
优化的编号算法,以确保号码分配合理、顾客等待时间最短。
- 队列管理:队列管理系统用于记录当前等待的顾客数量、
等待的时间以及正在服务的顾客信息等,以便在需要时能够查看和分析数据。
- 窗口分配策略:根据不同场所的需求,可以采用不同的窗
口分配策略,以实现最佳的服务效果。
- 数据分析:通过对叫号系统的数据进行分析,可以得到一
些有价值的信息,如高峰期的等待时间长短、业务处理的瓶颈等,以便进一步优化服务效果。
3. 用户体验优化:
- 用户界面设计:叫号机的界面应当简洁明了,易于操作,能够方便地为顾客取号。
- 音视频提醒:可以在叫号时配备音响系统,通过声音或者语音提示顾客到某个窗口办理业务。
- 等候环境设计:餐厅等场所可以提供舒适的座位、阅读杂志、免费Wi-Fi等待避免顾客长时间站立等候。
以上是一个叫号系统的设计方案,总体来说,叫号系统的设计需要考虑实际场景的需求,并通过硬件设备、软件系统以及用户体验的优化来提供个性化、高效的服务。
叫号机设置说明
a)填写“类别名称”,银行卡的刷卡内容有一定的规律,银行会要求设定一定规则,保证VIP客户的卡能够出票,一般客户刷卡不能出票,因此要在VIP卡设置界面对刷卡规则进行设置。如下图
b)填写“卡号长度”,代表卡内容的总长度,包含所有的字符(?,*等也要计算在内,可以打开记事本,用一张VIP卡刷一下,进行测试),如下图
业务设置:
用户根据实际的情况,添加所要的所有业务:具体操作如下:
业务设置框里,在业务编码,字母编码,数字编码的下拉列表各选中一个(注意:业务名称的编码都是唯一),填写业务名称,点击保存即可。编辑、删除同上。
窗口显示屏设置:
主要设置柜台屏的信息(注意:柜台屏的显示信息的设置输入必须是半角输入,在这可以调整中英文对照,方法是:在中文后面直接添加英文)
选中“使用图片按键”,在触摸屏显示的是用户定义好的图片。具体操作
在:把要显示的按钮图片(*jpg)放在安装目录下,以业务的编码命名图片。
按钮排列方式,排列触摸屏显示的按钮的位置,分为单列按键,双列按键,两列间距。具体操作:选中需要按钮排列的方式和设置按钮间的距离,点击保存即可。
◆呼叫逻辑:
对业务的优先级的设置
a)选择窗口号,具体操作:在窗口的下拉类表选择一个窗口,如下图
b)
c)为窗口选择能办理的业务。如下图
d)选择插入主、次队列还的队列是备用对列,具体操作:在第三步右边位置选中需要。如上图。备注:备用优先级:主对列当该窗口以外的其他窗口中,能办理该项业务的窗口都关闭或暂停了,则本窗口备用队列中的业务自动激活,并按照预设的优先级进行呼叫
h)回到第以步选择第二个窗口并完成设置,以此类推完成所有窗口的设置
i)设置主次队列的阀值,分为主对列和次队列的阀值,具体操作是第一和第二的右边在设置主次队列阀值的,点击保存即可。如上图
银行叫号系统设计plc国内外研究现状
银行叫号系统设计plc国内外研究现状银行叫号系统是用于管理银行客户排队和办理业务的一种自动化系统。
在设计银行叫号系统时,PLC(可编程逻辑控制器)可以用于控制硬件设备,如显示屏、语音播报器和按钮等,以实现客户叫号、业务处理和服务优化等功能。
以下是银行叫号系统设计的国内外研究现状的一些概述:国内研究现状:1.基于PLC的银行叫号系统设计:通过使用PLC控制叫号硬件设备,对银行叫号系统进行自动化控制和管理。
这种设计可以提高服务效率和客户满意度,并优化银行内部工作流程。
2.利用人工智能技术的银行叫号系统:结合人工智能技术,如自然语言处理和机器学习等,用于智能化处理客户需求和提供个性化服务。
这种系统可以根据客户的需求和历史数据进行智能预测和推荐,提高整体服务质量。
3.移动端银行叫号系统:结合移动互联网技术,开发手机应用程序,允许客户远程预约叫号、查询业务信息和获取实时排队状态。
这种系统可以提高客户便捷性,减少等待时间,同时实现银行资源的合理分配。
国外研究现状:1.队列理论在银行叫号系统中的应用:通过队列理论的建模和分析,研究如何在银行环境中优化业务处理流程,减少客户等待时间和提高服务质量。
2.利用传感器和物联网技术的智能银行叫号系统:通过传感器和物联网技术,实时监测银行大厅的人流量和客户需求,以实现自适应的叫号服务和智能资源调度。
3.客户行为分析在银行叫号系统中的应用:利用客户行为数据和分析方法,研究客户的行为模式和需求,以优化银行叫号系统的设计和服务策略。
综上所述,银行叫号系统的设计在国内外都有相关研究和应用。
通过结合PLC技术以及其他前沿技术,如人工智能、移动互联网和物联网等,可以不断改进和提升银行叫号系统的效率、智能化和客户体验。
办事大厅排队叫号系统(排队机,呼叫器,LED显示屏等)解决计划1.doc
办事大厅排队叫号系统(排队机,呼叫器,LED显示屏等)解决方案1聚宝SMARTQ大厅版排队系统一、SMARTQ排队系统简介(2)二.系统综述(3)2.1系统概述(3)2.2系统组成(3)2.2.1系统组成平面结构示意图(4)2.2.2系统组成拓展结构示意图(4)三、服务大厅场地布局(6)四、系统产品介绍及布线安排(8)4.1 产品介绍(8)4.1.1 自动取号机(8)4.1.2 物理呼叫终端(10)4.1.3 窗口显示终端(屏)(10)4.1.4语音系统(12)4.1.5星级评价系统(13)4.1.6系统分配器(15)4.2系统连接方式(15)4.3系统的布线安排(16)4.4 系统的故障检测(16)4.5 各硬件设备接口类型(16)五、系统的使用方法(17)5.1办事流程(17)5.2案例说明(17)5.3系统功能介绍(19)六、售后服务承诺及技术保障(19)前言非常感谢您选用SMARTQ排队系统!聚宝科技(杭州)有限公司是新加坡SMARTQ SYSTEMS 公司与海外上市公司:聚宝科技在中国杭州设立的一家专业从事排队叫号管理系统销售与服务于一体的高科技代理企业,直接负责中国市场的开拓与服务.母公司新加坡SMARTQ SYSTEMS公司成立于1980年,从事于排队管理系统至今已有20余年历史,完成项目数以千计,业务遍及全世界,成绩斐然。
SMARTQ排队管理系统是近年来为改善服务机构及医院传统排队管理所存在的一些混乱、无序等弊端而开发的,系统能很好地解决顾客在排队中所遇到的各种拥挤和混乱等现象,为顾客办事及单位管理带来莫大的方便和愉悦,做到人人公正,合理有序.同时,系统也对顾客情况及服务员工的工作状况作出各种统计,为管理层进一步正确决策提供了有力的依据.。
公司依拓新加坡总部研发中心,现已开发了电脑型PCQS、程控型CTQS、立队型SAQS、简易型SCQS四类排队管理系统,它们广泛适用于银行、医院、移动、电信、邮政、工商、公安、税务、交通等各等候区域和办事大厅.产品自投放市场以来,赢得了用户的信赖和好评,取得了良好的经济效益和社会效益。
银行排队叫号系统-V6.1版本
调鼎科技
2
13488858092 肖霞
二、公司产品介绍
——调鼎排队系统 调鼎科技为使排队管理系统设备成为国际上最合理化、个性化的产品,先后派出研 发人员考察了众多国内外的厂商,吸取精华,根据我国的国情,研发设计出了集众家排队 机生产厂商优势为一体的“调鼎现场客户管理系统”设备,为使产品更具广泛性和普及性, 我司研发人员群策群力,睿智地将排队管理系统打造成了操作方便、设置简单(系统设置 完全可以由客户自主操作)的精品,打破了一直以来都要专业人员才能操作设置系统的模 式,被誉为“傻瓜式”排队系统设备。 调鼎现场客户管理系统软、硬件均已经过多次的版本更新,目前软件版本已升级至 TD-V6.1,并已注册登记。 “调鼎管理”作为一种全新的服务理念从此走进全国区域的服务 窗口行业。 “调鼎管理”无疑是这种全新服务理念的开拓者和代言人。 调鼎管理系统系完全自主知识产权,产品实行智能化模块设计,各种外接设备即插即 用,超薄的显示屏工艺技术均属国内首创。其中许多功能版本均是根据众多用户的实际业 务应用需求而设计研发的,客户合理的个性化要求和技术要求我们都可以实现。 调鼎科技凭借其丰富的代理商和经销商资源,形成以北京为中心,覆盖东北、华北、 华中、西北、西南和华南等地区的销售与售后服务网络,都能在最大程度上满足不同区域 客户的需求。
三、调鼎系统功能特点:
1、调鼎发号机可自动出票、按键出票、触摸屏出票; 2、号票或发号机上的显示屏会显示每个顾客前面的等待人数和大约等待时间; 3、号码可在不同服务类别的柜台窗口之间相互转移,顾客不必重复排队; 4、调鼎系统设有多个优先级,可及时处理柜台窗口前滞留的顾客; 调鼎科技
13488858092 肖霞
调鼎 现场客管理系统之 调鼎现场客户管理系统之
行政大厅、银行排队叫号系统
行政大厅、银行排队叫号系统行政大厅、银行排队叫号系统是指在工商、税务、办事大厅,交通违章处理中心、银行等场所所使用的智能化排队呼叫系统,系统能兼容网上预约,预约人员根据预约时间到办事大厅的取号机上取号,系统还具有现场取号功能。
系统能够将预约人员和现场取号人员添加到排队呼叫队列并进行有序的呼叫,呼叫时有语音播报,并且液晶电视屏(LED屏)主屏上显示详细的呼叫提示信息,各工作人员窗口处还有窗口屏显示呼叫信息。
一、系统概述:系统基于C/S架构,采用SQL SERVER数据库(适用于sql server2000, sql server 2005版本)。
系统包含业务流程所需的所有功能:包括取号、呼叫、重呼、选择性呼叫、语音播报、液晶显示屏信息提示、统计报表等。
当网上预约号人员到达现场并取号后系统能够将预约号加入排队呼叫队列,预约号人员在预约时间内有优先呼叫的权利。
本系统设备安装简便,兼容性好,配置灵活,升级及维护方便。
软件采用一键式安装,界面操作便捷。
二、系统排队流程:(1)取号(有两种取号方式):1.1 申请办理业务人员进入办事大厅门户网站填写信息进行预约,预约成功后在预约时间内到现场的预约取号机上取号1.2 申请办理业务人员到办事大厅现场的取号窗口或取号机上取号(2)申请办理业务人员持号票进入休息区,等待工作人员的呼叫(3)工作人员通过叫号器进行呼叫申请办理业务人员(4)办理业务人员听到语音播报或看到液晶屏提示信息后,前往相应的窗口办理业务(系统排队流程示意图)三、系统接线示意图:四、系统组成部件设备:1.取号主机2.触摸无线叫号器3.语音控制盒4.液晶电视+多媒体控制盒5.窗口显示屏6.吸顶式喇叭五、部件设备详细介绍:5.1取号机(型号:HS-BS-QH)(有线、无线取号机实物图)(取号界面)(后台设置界面)5.1.1功能介绍:1.基于局域网传输,可分为无线取号机和有线取号机,取号机界面显示美观,取号便捷只需点击业务类型即可打印出排队号票2.一台取号主机可管理多个叫号器、窗口显示屏和主显示屏3.可实现多台取号机联机取号4.办事大厅可根据实际情况任意新增、修改、删除业务类型5.可为办事大厅的各窗口设置不同的办理业务类型6.可设置语音呼叫时的音量、语速和声音类型(女声、男声)7.可任意设置票头信息和取号机标题文字。
银行排队叫号系统设计
图1 硬 件 设 计 总体 设 计
¨ l 、 邗
一
一 =强
、
・
1
一 一 一 硼 一 眦 … ; : 一 一 咖 ~ ∞ 一 仲 嘟 而 最 l 啪 一 一
掰 嚣嚣
・
; 一 j
;
一
寻每薯鲁晕;
L”J
) } 【・ }.
通过排 队 自 动化 、 规 范化来解决客户排 队的混乱秩 序, 同时通过这种现代化信息处理, 提 高银行 的服务水平和质量
关键 词 : 单 片机 : 排 队叫号 ;系统 开 发
1 系统 需求 分析 和 整 体 设 计 , 嗵 过 运 用 银 行 能 排 队 叫 系 统 进 行 排 队 米 好 地 f J I J } i 务过 程 中 “ 行 的 服 务 效 率 , 解 决 排 队 过 - } n , J 种 题 。此 系 统 能 够 提 高 行 的 服 务 效率 神1 窖 厂l 的J j } { 驽 体 验 。系 统 的 ^ 水 分 为 功 能 需 求 和 非 助 能 求 两 个疗 J n 系统 的 功 能 需 求 :( 1 ) 迎 过 钾 能 排 队 叫 号系 统 , 客 选 择I l L L 昕 的 务类 系统接收客, 、 需要的目 f 童 秀的类 , , 1 j 牟 的 信息 。( 2 ) 智能排队叫 ‘ 系统 通 过 系统 自吁软 什 编 写 吱脱 能排 队。( 3 ) 能 排 队 叫 号系统 根据 客户 求 卡 l l 软 什 运 行 。 一 成 客户排 队 通 过 扪 Ⅲ机 反馈 给 客 ( 4 ) 系统 将排队信息通过L E D 静实时更新显 示。( 5 ) ] 作人贝通过 汁 机 等 蚀 什 哎备 J i = l 1 . 控 J J 播 呼 叫 客户进 行服 务, 实 { J I 队 系统 的 劫更 新。 系统 的 非 功 能 求 :( 1 ) 使 独 的 网 络 系 统 进 . 连接 , 障 系 统 的 发 个 。 ( 2 ) 通 过 各种 硬 件 设 汁干 f l 针埘 的 研技 银 行排 队 系统 软什 结 合, 来 提 高 银 行排 队 系统 的 稳 定 。 2 系统 硬 件 设 计 2 . 1硬 件总 体j 殳 计 幺 系统 设 汁的 核心 足 迎 过 取 、 进 队、 排 队等 、 I I L l 号 } J } i 纡儆 拟 人 排 队过 , I t I 银 行 智 能排 队叫号系 统代 错 人排 队 的过 。首先征 银 仆 、 人¨ : 摆 放一 台银 行智 能排 队 叫 L I 机, J 迎 过 点 排 队机 选 取 服 务, 1 系统 在 接 受 客 请求 作} { J 反成 , 反 馈 给 排 队 , 用 户通 过 打 f { { 的 码 和 I 电 r屏 幕进 等 待 , 、 1 州: 队进行到客』 , 时, 工作人 会通 过 系统 声 音提 示 告 1 髯 接 受 服 务。T作人 员通 过 I I 叫 机进 仃l l L I 呼 叫 机 “卜 ‘ 化” 键, 系 统就 会 切 换 订 I : I 到 卜 一f 客 户的 弓 ‘ 码, 』 i : 商 ㈠ 示 J 拜显 示 。 呼 叫 机 仃 “ 复 1 I ' ] 2 ; I L l ” 键, 可 以重 复什 求办 理 业务。 图3 馊什 汁总 体 汁如 l 所示。
银行叫号系统设计
摘要排队叫号管理系统是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。
该题研究的目的是研制一款无人排队的排队叫号机,它主要由主控制器、键盘、显示电路、蜂鸣器电路等部分构成。
系统利用单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在LCD1602上显示排队的号码以及当前正在等待的人数;通过按键叫号,在LCD1602上显示叫到的号码,由扬声器发出声音提示客户。
同时免除了令客户不舒服的站立式排队,这种现代化的高科技产品彻底解决了银行普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。
本系统采用单片机进行控制,利用LCD1602显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。
操作简便,控制灵活,显示清晰,制作成本低,性价比较高。
关键词STC89C52 LCD1602 蜂鸣器目录1 系统方案论证 (1)1.1 设计要求 (1)1.2 单片机芯片的选择方案和论证 (1)1.3 显示模块选择方案和论证 (1)1.4 系统方案设计 (2)2 系统硬件设计 (3)2.1 系统总电路 (3)2.2 单片机处理部分设计 (3)2.3 显示电路部分 (4)2.4 时钟振荡电路 (5)2.5 复位电路 (6)2.6 叫号电路 (6)2.7 按键电路 (7)3 系统软件设计 (8)4系统测试 (9)5 小结 (10)参考文献 (11)附录 (12)源程序: (12)银行叫号排队系统的设计1 系统方案论证1.1 设计要求(1)实地调研,了解银行叫号过程;(2)画出一个实例的状态转移图;(3)程序设计,用单片机实现。
(汇编语言或C语言)注:根据实际情况,制定可行的技术路线,满足客户要求。
(如,等待时间最短;VIP 优先;老人优先(专柜);“飞号”不清除等。
银行叫号系统-数据结构(大连理工)
#include <iostream>#include <string>#include <algorithm>#include <time.h>#include <stack>usingnamespace std;////////////////////////////银行叫号系统//////////////////////////////////////class ord_window{public :int number;int leave_time;ord_window(){leave_time=0;}};class vip_window{public : int number;int leave_time;vip_window(){leave_time=0;}};class off_window{public : int number;int leave_time;off_window(){leave_time=0;}};class banksystem{ord_window *ord;vip_window *vip;off_window *off;int ord_w_n;int vip_w_n;int off_w_n;public :banksystem(banksystem(int int ord,ord,int int vip,vip,int int off);bool add_user();boolfunction(chainqueue<function(chainqueue<int int >ord_user,chainqueue<>ord_user,chainqueue<int int >ord__usertime,chainqueue<>ord__usertime,chainqueue<int int >vip_user,chai nqueue<nqueue<int int >vip__usertime,chainqueue<>vip__usertime,chainqueue<int int >off_user,chainqueue<>off_user,chainqueue<int int > off__usertime);};banksystem::banksystem(banksystem::banksystem(int int ord,ord,int int vip,vip,int int off){this ->ord=->ord=new new ord_window[ord];this ->vip=->vip=new new vip_window[vip];this ->off=->off=new new off_window[off];ord_w_n=ord; vip_w_n=vip;off_w_n=off;}bool banksystem::function(chainqueue<banksystem::function(chainqueue<int int >ord_user,chainqueue<>ord_user,chainqueue<int int >ord_user_time,chainque ue<ue<int int >vip_user,chainqueue<>vip_user,chainqueue<int int >vip_user_time,chainqueue<>vip_user_time,chainqueue<int int >off_user,chainqueue<>off_user,chainqueue<int int >off_us er_time) {int a=0;int b=0;int c=0;long t;while (1){a=0;b=0;c=0;while (a<ord_w_n){if ((ord+a)->leave_time==0&&!ord_user.isempty()){(ord+a)->number=ord_user.dequeue();(ord+a)->leave_time=ord_user_time.dequeue();cout<<cout<<"\n""\n"<<a+1<<<<a+1<<""号普通窗口叫号->"<<(ord+a)->number<<<<(ord+a)->number<<""号顾客";}a++;}while (b<vip_w_n){if ((vip+b)->leave_time==0&&!vip_user.isempty()){(vip+b)->number=vip_user.dequeue();(vip+b)->leave_time=vip_user_time.dequeue();cout<<cout<<"\n""\n"<<b+1<<<<b+1<<""号vip 窗口叫号->"<<(vip+b)->number<<<<(vip+b)->number<<""号顾客";} elseif ((vip+b)->leave_time==0&&!ord_user.isempty()){(vip+b)->number=ord_user.dequeue();(vip+b)->leave_time=ord_user_time.dequeue();cout<<cout<<"\n""\n"<<b+1<<<<b+1<<""号vip 窗口叫号->"<<(vip+b)->number<<<<(vip+b)->number<<""号顾客";}b++; }while (c<off_w_n){if ((off+c)->leave_time==0&&!off_user.isempty()){(off+c)->number=off_user.dequeue();(off+c)->leave_time=off_user_time.dequeue();cout<<cout<<"\n""\n"<<c+1<<<<c+1<<""号对公窗口叫号->"<<(off+c)->number<<<<(off+c)->number<<""号顾客"; }elseif ((off+c)->leave_time==0&&!ord_user.isempty()){(off+c)->number=ord_user.dequeue();(off+c)->leave_time=ord_user_time.dequeue();cout<<cout<<"\n""\n"<<c+1<<<<c+1<<""号对公窗口叫号->"<<(off+c)->number<<<<(off+c)->number<<""号顾客";} c++;} t=(t=(long long )time(NULL);while (t==time(NULL));a=0;b=0;c=0;while (a<ord_w_n){(ord+a)->leave_time--;a++;}while (b<vip_w_n){(vip+b)->leave_time--;b++;}while (c<off_w_n){(off+c)->leave_time--;c++;}if (vip_user.isempty()&&ord_user.isempty()&&off_user.isempty()&&off->leave_time<=0&&vip ->leave_time<=0&&ord->leave_time<=0)->leave_time<=0&&ord->leave_time<=0)break break ;}cout<<cout<<"\nthe end!\n""\nthe end!\n";return 1;}//intmain()//{////chainqueue<int>ord_user; //chainqueue<int>ord_user_time; //chainqueue<int>vip_user; //chainqueue<int>vip_user_time; //chainqueue<int>off_user; //chainqueue<int>off_user_time; ////输入三*2个队列 // intn,temp,i,time; //i=1; //cout<<"输入办业务总人数:\n"; //cin>>n; //while(n--) //{ // cout<<"输入类型1(普通业务),2(vip 业务),3(对公业务)\n";// cin>>temp; // if(temp==1){ord_user.enqueue(i);cout<<"时间:";cin>>time;ord_user_time.enqueue(time);}// if(temp==2){vip_user.enqueue(i);cout<<"时间:";cin>>time;vip_user_time.enqueue(time);}// if(temp==3){off_user.enqueue(i);cout<<"时间:";cin>>time;off_user_time.enqueue(time);}// i++;// }////// banksystema(3,1,1);// a.function(ord_user,ord_user_time,vip_user,vip_user_time,off_user,off_user_time); //////////}。
Linux操作系统利用信号量实现银行叫号排队系统
Linux操作系统课程设计题目:进程通信与进程同步机制实践(银行叫号排队模拟系统)所在学院:所在班级:学生姓名:学生学号:指导教师:一、题目某银行提供5个服务窗口(3个对私服务窗口,1个对公服务窗口,1个理财服务窗口)和10个供顾客等待的座位。
顾客到达银行时,若有空座位,则到取号机上领取一个号,等待叫号;若没有空座位,则在门外等待或离开.取号机每次仅允许一位顾客使用,有对公、对私和理财三类号,每位顾客只能选取其中一个.当营业员空闲时,通过叫号选取一位顾客,并为其服务。
请用P、V操作写出进程的同步算法。
二、目的1、掌握基本的同步与互斥算法。
2、学习使用 Linux 中基本的同步对象,掌握相关 API 的使用方法。
3、了解 Linux 中多任务的并发执行机制,实现进程的同步与互斥。
三、实验环境Linux CentOS、Ubuntu、Fedora等Linux系统编译器GCC编程语言 C语言四、要求1、当有顾客取号的时候,不允许其他顾客取号。
2、当服务窗口满的情况下,其他人必须等待.3、当没有顾客的情况下,服务窗口必须等待。
4、打印:A、初始状态B、中间变化的状态信息C、以及最终状态信息。
五、原理及算法本程序中设计6个信号量,其中signal_A、signal_B和signal_C分别是对私、对公、理财窗口的同步信号量。
若信号量值的等于0,说明当前没有空闲空口,顾客需要等待。
另设置一个signal_seat同步信号量,记录当前的座位情况,若该信号量等于0,说明当前没有空座位,顾客需要等待。
另有一个signal_customer同步信号量用于记录当前已经取过票的总人数,用于生成票号信息。
还有一个mutex互斥信号量,用于实现各进程在对信号量进行操作时的互斥。
顾客进入银行之后,先看通过一个依据系统时间的随机数来确定自己是需要对私、对公还是理财服务(在本程序中分别对应于A类顾客,B类顾客和C类顾客),这三个类型的顾客的比例为3:1:1.然后顾客根据自己需要的服务类型,查看提供相应类型服务的窗口是否空闲,若窗口有空闲,则系统直接按照signal_customer记录的信息,生成票面信息;若窗口没有空闲,则再去查看signal_seat信号量看看是否有空座位,若有空座位,则根据signal_customer 记录的信息,生成票面信息;若没有空座位,则通过一个以系统时间为种子的随机数生成器生成一个随机数,帮助顾客确定是要继续等待还是离开,这两种情况的比例为1:1.若顾客选择离开,则相应的进程退出.当顾客取到票后,便开始查看对应类型的窗口是否有空闲,如果有空闲,则上前办理业务。
基于单片机的银行排队叫号系统设计
随着社会经济转型工作的持续推进,第三产业持续不断的发展已经成为经济发展的主旋律。
为了提高服务质量,排队叫号系统应运而生。
银行排队叫号系统通过客户排队和工作人员叫号服务两个环节来实现。
排队叫号系统的出现加强了企业对客户和工作人员的管理,使办事流程更加透明化,人性化,同时还能大大提高企业的办事效率。
银行排队叫号系统的出现,不仅提高了顾客满意度,增强了企业竞争力,而且也为企事业单位改善了服务品质,提升了服务形象,提高了办事效率,为企业走向更加辉煌的未来打下了坚实基础。
关键词单片机;叫号系统;排队摘要 (I)1.引言 (1)2.系统总体设计 (2)2.1系统性能分析 (2)2.2 方案论证 (2)2.3 设计方案 (3)2.4 方案原理 (4)2.5 系统结构 (6)2.6 系统的基本功能 (6)2.6.1 排队系统的基本功能 (6)2.6.2工作原理 (7)3.硬件电路设计 (8)3.1 显示部分 (8)3.2 按键输入部分 (9)3.3 蜂鸣器电路 (10)3.4 单片机最小系统电路 (10)4.系统Proteus仿真实现 (12)4.1系统的硬件实现 (12)4.2 系统集成与仿真 (12)5.总结 (15)参考文献 (16)1.引言一个合格的银行排队叫号系统除了可以满足基本的排队和叫号服务的基本功能外,还应考虑银行工作人员的办事效率。
设计银行排队叫号系统的目的是为了更好的为客户服务,通过智能化排队,让顾客通过更舒适的方式享受到优质服务。
排队叫号系统适用于任何需要进行排队服务的企业,可以改善服务质量,提高服务效率。
它能够为客户提供方便快捷的服务和舒适的等候环境,为客户节约时间。
能够更好的维护社会公共场所的治安秩序,提高全民的文明素养。
本毕业设计论文系统描述了基于AT89C51单片机及其外围电路实现排队叫号系统。
在这次设计中,涉及到芯片的选择、引脚的功能,系统的原理,硬件设计,电路连接,程序的编写,系统的仿真等等。
基于单片机银行排队叫号系统设计
基于单片机银行排队叫号系统设计河北工业大学本科毕业设计(论文)中期报告河北工业大学本科毕业设计(论文)中期报告学生信息:学号:姓名:班级:指导教师信息:姓名:职称:告提交日期:2021年4月4日- -2021年4月14日 1 总体概述本课题设计要求实现银行排队无线呼叫功能,由一个叫号系统和一个取号系统组成,叫号系统和取号系统的单片机都采用STC89C52。
叫号系统由MCU控制器、nRF24L01无线模块、12864液晶显示模块和按键,用以显示银行的处理序号和下一位要处理的序号;取号系统主要由MCU控制器、nRF24L01无线模块、12864液晶显示模块组成,实现排队的处理序号。
叫号系统和取号系统通过无线收发模块进行通信,实现对电路的控制。
电路总体框架如下:按键A 按键B 叫号机图1-1电路总体框图取号机 STC89C52单片机无线网络模块nRF24l01 无线网络模块nRF24l01STC89C52单片机 12864 12864 按键C 注释:1.按键A、B分别用于叫号机系统控制客户普通号和贵宾号的类型;2.按键C分别用于取号机系统控制客户在排队系统中的序列。
2 硬件电路的各模块设计 2.1总电路原理图取号机和从号机的原理图如下:(1)叫号机原理图1河北工业大学本科毕业设计(论文)中期报告(2)取号机原理图图2-1-1 叫号机系统原理图图2-13:从机电路原理图图2-1-2 取号机系统原理图 2河北工业大学本科毕业设计(论文)中期报告2.单片机复位电路及时钟电路设计51单片机的复位电路由按键、10uf电容、10k电阻组成,用于单片机的上电复位和按键复位。
当给单片机上电时由于电容两端电压的不可突变性,使单片机的RESET为高电平,使单片机复位;同理,当按键按下时,单片机RESET为高电平,使单片机复位。
51单片机的时钟电路由12M晶振、2个小于47pf的电容组成,用以给单片机提供内部工作时钟。
电路图如图2-1:图2-2:单片机复位电路和时钟电路3. nRF24L01无线模块与单片机接口电路设计nRF24L01与单片机的接口电路如图所示。
银行排队叫号系统的设计-20210612163731
《银行排队叫号系统的设计》一、系统背景随着金融业务的不断发展,银行网点客流量日益增大,客户在银行办理业务时排队等待的问题日益突出。
为提高银行服务效率,优化客户体验,设计一套高效、便捷的银行排队叫号系统显得尤为重要。
二、系统目标1. 减少客户排队等待时间,提高业务办理效率。
2. 实现客户分流,缓解网点拥堵现象。
3. 提升银行服务质量,增强客户满意度。
4. 降低银行工作人员的工作强度,提高工作效率。
三、系统功能模块1. 客户取号模块客户到达银行网点后,通过自助取号机选择所需办理的业务类型,系统自动分配一个唯一的排队号码,并打印出排队小票。
2. 叫号显示模块系统根据客户取号顺序,自动显示当前办理业务的客户号码,并通过语音播报提醒客户前往指定窗口。
3. 窗口业务办理模块银行工作人员在办理业务时,通过呼叫器告知系统当前窗口状态,系统根据窗口状态自动调整叫号顺序。
4. 数据统计与分析模块系统实时统计各业务窗口的办理情况,报表,为银行管理层提供决策依据。
5. 客户满意度调查模块系统在客户办理业务结束后,邀请客户进行满意度评价,收集客户反馈,以便持续优化服务。
四、系统设计要点1. 易用性:系统界面简洁明了,操作简便,便于客户快速上手。
2. 稳定性:系统运行稳定,确保24小时不间断服务。
4. 安全性:系统采用加密技术,确保客户信息安全。
五、系统技术选型与架构1. 技术选型前端:HTML5、CSS3、JavaScript,采用Vue.js框架进行页面开发。
后端:采用Java语言,结合Spring Boot框架进行业务逻辑处理。
数据库:MySQL,用于存储客户信息、业务数据等。
语音播报:采用TTS(文本转语音)技术实现语音叫号功能。
2. 系统架构银行排队叫号系统采用B/S(Browser/Server)架构,分为客户端和服务端两部分。
客户端负责与用户交互,服务端负责处理业务逻辑和数据存储。
六、系统详细设计与实现1. 客户取号模块取号机界面设计:采用触摸屏设计,界面包含业务类型选择、取号按钮等元素,方便客户操作。
银行叫号系统课程设计
银行叫号系统课程设计
一、设计目的
银行叫号系统是一种广泛应用于银行业务处理的系统,它能够有效地管理客户业务办理的顺序,提高银行的工作效率。
本课程设计旨在让学生了解和掌握银行叫号系统的基本原理、设计和实现方法,提高学生的实际动手能力和编程技巧。
二、设计任务
1. 系统功能要求:
(1) 支持多窗口操作,即支持多个柜员同时为不同的客户办理业务;
(2) 客户可以通过叫号系统选择要办理的业务类型,并获得相应的号码;
(3) 柜员可以通过叫号系统查看当前等待的客户列表,并选择其中一个客户进行业务办理;
(4) 客户可以通过叫号系统查询自己的号码和等待状态;
(5) 系统支持优先级处理,如VIP客户可以优先办理业务。
2. 数据库设计:
(1) 客户表:包括客户ID、姓名、电话、身份证号等信息;
(2) 业务表:包括业务类型、办理时间、所需材料等信息;
(3) 等待队列表:包括客户ID、业务类型、等待时间等信息。
3. 界面设计:要求使用图形用户界面(GUI)进行设计,界面应友好、易于操作。
三、设计步骤
1. 系统需求分析:分析系统的功能需求,确定系统的基本业务流程;
2. 数据模型设计:根据需求分析,设计数据库中的表结构和字段,并确定表之间的关系;
3. 系统架构设计:根据需求分析,选择合适的开发框架和工具,设计系统的整体架构;
4. 界面设计:根据需求分析,使用GUI设计工具设计系统的界面;
5. 功能实现:编写代码实现系统的各个功能模块,包括数据库操作、界面交互等;
6. 系统测试:对系统进行测试,确保各个功能模块能够正常工作;
7. 系统部署与维护:将系统部署到实际环境中,并进行后续的维护和升级。
银行叫号系统
#include<iostream>#include<string>usingnamespace std;template<class T>class LinkNode//用户的节点类{public:T data;LinkNode<T> *link;LinkNode(LinkNode<T> *ptr=NULL){link=ptr;}};template<class T>class LinkQueue//模拟用户队列{public:int size;int cal;LinkNode<T> *front;LinkNode<T> *rear;LinkQueue(){size=0;front=rear=NULL;cal=0;}~LinkQueue(){Clear();}void Clear(){while(front!=NULL){rear=front;front=front->link;delete rear;}rear=NULL;size=0;}void EnQueue()//向队列新插入一个节点,并分配一个新ID {if(size==0){front=rear=new LinkNode<T>(NULL);}else{rear->link=new LinkNode<T>(NULL);rear=rear->link;}size++;cal++;(rear->data).ID+=cal;}T Top()//返回队列的第一个元素{return front->data;}int TopID(){return (front->data).ID;}void Pop()//删除队列的第一个元素{LinkNode<T> *temp;if(size==0){cout<<"队列为空!"<<endl;}else{temp=front;front=front->link;delete temp;size--;}}void Cou()//队列的输出函数{if(size==0){cout<<"队列为空!"<<endl;}else{while(front!=NULL){cout<<(front->data).ID<<" ";front=front->link;}cout<<endl;}}};class User//用户类{public:int ID;//用户IDint isWait;//等候时间int Servetime;//服务时间User(){Servetime=0;isWait=0;}void getServed();};class NormalUser:public User//普通用户类{public:NormalUser(){ID=1000;}void getServed();};class VIPUser:public User//VIP用户类{public:VIPUser(){ID=2000;}void getServed();};class OfficalUser:public User//公务用户类{public:OfficalUser(){ID=3000;}void getServed();};class BankWindow//窗口类{public:int ID;//用户IDint serivetime;//窗口服务时间void HandleUser();};int main(){LinkQueue<NormalUser> p1;//普通用户队列LinkQueue<VIPUser> p2;//VIP用户队列LinkQueue<OfficalUser> p3;//公务用户队列string str;int ii=1,jj=1,mm=2,nn=3;int norServetime[3];//普通窗口服务时间for(int n=0;n<3;n++){norServetime[n]=0;}int vipServetime=0;//VIP窗口服务时间int offServetime=0;//公务窗口服务时间for(int n=0;n<7;n++)//模拟用户取号{cout<<"*********************************当前时间为:"<<2*n<<"s********************************"<<endl;cout<<"请输入当前时间新进入银行的客户,用1、2、3表示(1:普通用户、2:VIP用户、3:公务用户)"<<endl;cin>>str;int len=str.length();for(int n=0;n<len;n++){if(str[n]=='1'){p1.EnQueue();}elseif(str[n]=='2'){p2.EnQueue();}elseif(str[n]=='3'){p3.EnQueue();}}if(ii==1)//普通窗口{if(p1.size!=0)//1号普通窗口{if(norServetime[0]==0){cout<<"1号窗口空闲,请"<<p1.front->data.ID<<"号顾客到1号窗口!"<<endl;norServetime[0]+=2;p1.Pop();}elseif(norServetime[0]==2){cout<<"1号窗口忙!"<<endl;norServetime[0]=0;}}elseif(p1.size==0){if(norServetime[0]==2){cout<<"1号窗口忙!"<<endl;norServetime[0]=0;}else{cout<<"1号窗口空闲!"<<endl;norServetime[0]=0;}}if(p1.size!=0)//2号普通窗口{if(norServetime[1]==0){cout<<"2号窗口空闲,请"<<p1.front->data.ID<<"号顾客到2号窗口!"<<endl;norServetime[1]+=2;p1.Pop();}elseif(norServetime[1]==2){cout<<"2号窗口忙!"<<endl;norServetime[1]=0;}}elseif(p1.size==0){if(norServetime[1]==2){cout<<"2号窗口忙!"<<endl;norServetime[1]=0;}else{cout<<"2号窗口空闲!"<<endl;norServetime[1]=0;}}if(p1.size!=0)//3号普通窗口{if(norServetime[2]==0){cout<<"3号窗口空闲,请"<<p1.front->data.ID<<"号顾客到3号窗口!"<<endl;norServetime[2]+=2;p1.Pop();}elseif(norServetime[2]==2){cout<<"3号窗口忙!"<<endl;norServetime[2]=0;}}elseif(p1.size==0){if(norServetime[2]==2){cout<<"3号窗口忙!"<<endl;norServetime[2]=0;}else{cout<<"3号窗口空闲!"<<endl;norServetime[2]=0;}}}if(mm==2)//VIP窗口叫号{if(p2.size!=0){if(vipServetime==0){cout<<"VIP窗口空闲,请"<<p2.front->data.ID<<"号顾客到VIP窗口!"<<endl;vipServetime+=2;p2.Pop();}elseif(vipServetime==2){cout<<"VIP窗口忙!"<<endl;vipServetime=0;}}elseif(p1.size!=0){if(vipServetime==0){cout<<"VIP窗口空闲,请"<<p1.front->data.ID<<"号顾客到VIP窗口!"<<endl;vipServetime+=2;p1.Pop();}elseif(vipServetime==2){cout<<"VIP窗口忙!"<<endl;vipServetime=0;}}else{if(vipServetime==2){cout<<"VIP窗口忙!"<<endl;}else{cout<<"VIP窗口空闲!"<<endl;}vipServetime=0;}}if(nn==3){if(p3.size!=0)//公务窗口叫号{if(offServetime==0){cout<<"公务窗口空闲,请"<<p3.front->data.ID<<"号顾客到公务窗口!"<<endl;offServetime+=2;p3.Pop();}elseif(offServetime==2){cout<<"公务窗口忙!"<<endl;offServetime=0;}}elseif(p1.size!=0){if(offServetime==0){cout<<"公务窗口空闲,请"<<p1.front->data.ID<<"号顾客到公务窗口!"<<endl;offServetime+=2;p1.Pop();}elseif(offServetime==2){cout<<"公务窗口忙!"<<endl;offServetime=0;}}else{if(offServetime==2){cout<<"公务窗口忙!"<<endl;}else{cout<<"公务窗口空闲!"<<endl;}offServetime=0;}}cout<<"***********************等待用户数:**************************"<<endl;cout<<"普通用户:"<<p1.size<<endl;cout<<"VIP用户 :"<<p2.size<<endl;cout<<"公务用户:"<<p3.size<<endl;cout<<"*********************************"<<endl;}return 0;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要排队叫号管理系统是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。
该题研究的目的是研制一款无人排队的排队叫号机,它主要由主控制器、键盘、显示电路、蜂鸣器电路等部分构成。
系统利用单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在LCD1602上显示排队的号码以及当前正在等待的人数;通过按键叫号,在LCD1602上显示叫到的号码,由扬声器发出声音提示客户。
同时免除了令客户不舒服的站立式排队,这种现代化的高科技产品彻底解决了银行普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。
本系统采用单片机进行控制,利用LCD1602显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。
操作简便,控制灵活,显示清晰,制作成本低,性价比较高。
关键词STC89C52 LCD1602 蜂鸣器目录1 系统方案论证 (1)1.1 设计要求 (1)1.2 单片机芯片的选择方案和论证 (1)1.3 显示模块选择方案和论证 (1)1.4 系统方案设计 (2)2 系统硬件设计 (3)2.1 系统总电路 (3)2.2 单片机处理部分设计 (3)2.3 显示电路部分 (4)2.4 时钟振荡电路 (5)2.5 复位电路 (6)2.6 叫号电路 (6)2.7 按键电路 (7)3 系统软件设计 (8)4系统测试 (9)5 小结 (10)参考文献 (11)附录 (12)源程序: (12)银行叫号排队系统的设计1 系统方案论证1.1 设计要求(1)实地调研,了解银行叫号过程;(2)画出一个实例的状态转移图;(3)程序设计,用单片机实现。
(汇编语言或C语言)注:根据实际情况,制定可行的技术路线,满足客户要求。
(如,等待时间最短;VIP 优先;老人优先(专柜);“飞号”不清除等。
飞号是指叫了该号3次后,而该号人没出现服务窗口,就不再呼叫,该号被清除了,该号就称之为飞号。
可用户又回来了,只好再取一个新号。
)1.2 单片机芯片的选择方案和论证方案一:采用AT89S51芯片作为硬件核心,内部具有4KB ROM 存储空间,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,所以在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:采用STC89C52芯片,STC89C52是一种低功耗、高性能的8位CMOS微控制器,具有8K的可编程Flash存储器。
同样具有AT89S51的功能,且具有在线编程可擦除技术,当对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
综上所述,选择采用STC89C52作为主控制系统核心。
1.3 显示模块选择方案和论证方案一:采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。
方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。
方案三:采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。
综上所述,在设计中采用1602液晶显示屏。
1.4 系统方案设计系统采用如图1所示的电路,通过STC89C52单片机直接扩展的独立键盘,完成排队取号流程(本系统直接利用系统的中断0按键控制),单片机控制LCD1602显示排队等待情况,控制蜂鸣器发声完成叫号功能。
图1采用独立键盘实现功能因为采用矩阵键盘完成排队取号流程,但客户较多的时候要实现排队取号的功能,就要占去过多的I/O端口,操作起来也比较复杂,而方案二的独立键盘操作控制简单,占用主机资源少,所以选择方案二,采用独立键盘控制排队取号,通过串行通信的方式,模拟排队取号管理系统的流程显得更加方便、科学。
2 系统硬件设计2.1 系统总电路系统电路由单片机部分,显示电路,时钟振荡电路,复位电路,叫号电路和按键电路组成。
图2 系统总电路图2.2 单片机处理部分设计设计的思想是简单实用,中心处理部分采用STC89C52单片机。
STC89C52单片机完全可以满足本系统的设计要求,相对于其他具有相当功能的器件来说,具有价格便宜,对环境要求不高,工作稳定等优点。
STC89C52高性能COMS 8位单片机,片内含4K Bytes的可反复擦写的只读程序存储器(ROM)和128 Bytes的随机存取数据存储器(RAM)。
具有32个可编程的I/O口,其中P 0口为一个8位漏极开路双向I/O口,编程时作为原码输入口,校验时,输出原码;P1口是一个内部提供上拉电阻的8位双向I/O口,在编程和校验时,作为第八位地址接收;P2口为一个内部上拉电阻的8位双向I/O口,在编程和校验时接收高八位地址信号和控制信号;P3口为8个带内部上拉电阻的双向I/O口,同时也偶一些特殊功能,我们所使用到的P3.6/WR可作为外部数据存储器写选通,P3.7/RD可作为外部数据存储器读选通;RST口为复位输入;XTAL1口为反向振荡放大器的输入及内部时钟工作电路的输入;XTAL2口为反向振荡器的输出。
89C52管脚功能如下图3 STC89C52管脚2.3 显示电路部分显示电路部分如下图所示,采用的是液晶显示屏1602模块,1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。
它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。
STC89C52的P0.0至P0.7的8个端口用来控制数码管的显示。
图4 显示电路部分2.4 时钟振荡电路SCT98C52中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,震荡电路如图5所示。
因为一个机器周期含有6个状态周期,而每个状态周期为2个震荡周期,所以一个机器周期共有12个震荡周期,如果外接石英晶振的震荡频率为12MHz,故而一个机器周期为1uS 。
图5 时钟振荡电路外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程度及温度稳定性。
外接石英晶体,电容使用30pF。
2.5 复位电路复位电路虽然简单,但其作用非常重要,一个单片机系统能否正常运行,首要检查是否能复位成功。
复位操作有上电自动复位和手动复位两种方式,本文采用手动复位方式。
手动复位是通过开关实现的其电路如图6所示。
在通电瞬间电容C通过电阻R充电,RST出现正脉冲,用以复位。
只要电源Vcc上升时间不超过1ms,就可以实现手动复位,即按下开关就可以实现系统的复位初始化。
关于参数的选定在震荡稳定后应保证复位高电平持续时间大于2个机器周期。
这里选用的是12MHz的石英晶振可取C=4.7uF,R=4.7K。
图6 复位电路2.6 叫号电路实现叫号的接口电路比较简单,其发音原件通常采用压电蜂鸣器,当在蜂鸣器两引脚加上+3V—+15V只留工作电压时,就能产生3KHz左右的蜂鸣器震荡音响。
压电式蜂鸣器结构简单、耗电少、更适合于单片机系统的应用。
压电式蜂鸣器,需要10mA的驱动电流,可在P3.1口接上一直三极管和电阻组成的驱动电路来驱动,如图7所示。
图7 叫号电路在图中,P3.1接三极管的极端输入端,当P3.1输出高电平时,三极管导通,蜂鸣器通电而发音,当P31输出低电平时,三极管截止,蜂鸣器停止发音。
2.7 按键电路按键电路实现的功能是取号和叫号,客户通过按键实现取号,工作人员通过按键实现叫号,使客户前来相应的窗口就诊,按键电路如图8所示。
图8 按键电路3 系统软件设计本程序可实现设计的基本要求,设备上电后,显示器屏幕亮,无信息显示。
当客户按键后,每按一下,队伍加1,显示器显示客户队伍号;排满20位后,再按取号键,屏幕显示“队伍满”。
当客服叫号时,队伍减1,程序进行信息处理,在显示器上显示“几号客户到几号窗口”,同时进行声音提示。
1602通过D0~D7的8位数据端传输数据和指令,其模块内的控制器有11条控制指令。
当液晶显示屏的接口电路与单片机系统I/O按照并行数据传输方式连接完成以后,即可以对STC89C52单片机进行编程。
在液晶屏完成显示之前首先要对液晶进行初始化。
程序流程图如图9所示。
图9总程序流程图4系统测试在Proteus上画出电路图,用C语言编写的程序,在Keil中生成hex文件,这样可在prteus中运行和仿真,实现排队叫号。
客户取号图如下图10 客户取号图服务叫号图如下图11 服务叫号图5 小结本次课程设计所做的是基于单片机的排队叫号机系统。
主要是为了解决大量客户的拥挤排队的问题,并同时使事业单位改善服务品质、提升营业形象。
排队系统完全模拟了人群排队全过程,通过取号进队、排队等待、叫号服务等功能,代替了人们站队的辛苦,把顾客排队等待的烦恼变成一段难得的休闲时光,使客户拥有了一个自由的空间和一份美好的心情。
在整个设计过程中,我充分发挥了人的主观能动性,自主学习,学到了许多课堂上没学到的知识。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,再加上先前做计算机控制技术课程设计积累的经验,完成对程序的编写。
进一步提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。
通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术。
最终较好的完成了设计,达到了预期的目的,完了最初的设想。
经过了一个星期课设,我学到了不少课堂上未曾接触过的知识。
同时又把把以前没有学好的程序专业知识进行了补充和加强,加深了我对于单片机和数字电路的认识和理解,巩固了自己所学的专业知识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应手。
参考文献[1] 四海科技.逸众排队管理系统[EB/OL].http://www.sea366.com/paidui _gs.asp.[2] 北京平安力合科技发展(集团)有限公司.中国排队产品市场分析[EB/OL].http://www.p-an.com/default.asp.[3] 刘守义.单片机应用技术[M].西安:西安电子科技大学出版社,2002.[4] 刘勇.数字电路[M].北京:电子工业出版社,2004.[5] 谭浩强.C程序设计[M].(第三版)北京:清华大学出版社,2005.256-278[6] 戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M]北京:电子工业出版社,2006.附录源程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar num,num1,a,b,c,d,e,f;uchar code table[]="number is "; uchar code table1[]="too much people"; uchar code table2[]="one two "; sbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcde=P2^2;sbit buz=P3^1;sbit qu0=P3^2;sbit call1=P3^3;sbit call2=P3^4;void lcd_com(uchar com);void lcd_dat(uchar dat);void display(uchar add,uchar dat);void display1(uchar add,uchar dat);void keyscan();void delay(uint z);void startlcd();void start();void main(){start();startlcd();while(1){keyscan();}}void startlcd(){lcd_com(0x01);lcd_com(0x38);lcd_com(0x0c);lcd_com(0x06);lcd_com(0x80);for(num1=0;num1<16;num1++){lcd_dat(table[num1]);}lcd_com(0x80+0x40);for(num1=0;num1<16;num1++){lcd_dat(table2[num1]);}}void start(){buz=1;a=0;b=0;c=0;d=0;e=0;f=0;}void lcd_com(uchar com) {lcdrs=0;lcdrw=0;lcde=0;P0=com;lcde=1;lcde=0;delay(1);}void lcd_dat(uchar dat) {lcdrs=1;lcdrw=0;P0=dat;lcde=1;lcde=0;lcdrs=0;delay(1);}void display(uchar add,uchar dat) {uchar shi,ge;shi=dat/10%10;ge=dat%10;lcd_com(0x80+0x40+add);lcd_dat(0x30+shi);lcd_dat(0x30+ge);}void display1(uchar add,uchar dat) {uchar shi,ge;shi=dat/10%10;ge=dat%10;lcd_com(0x80+add);lcd_dat(0x30+shi);lcd_dat(0x30+ge);}void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<123;y++);}void keyscan(){if(qu0==0){delay(10);if(qu0==0){while(qu0==0); //松手检测,必须a++;if((a-e)>20){lcd_com(0x80);for(num1=0;num1<16;num1++){lcd_dat(table1[num1]);}buz=0;}else{for(num1=0;num1<16;num1++){lcd_dat(table[num1]);}buz=1;display1(10,a);}}}if(call1==0){delay(10);if(call1==0){while(call1==0); //松手检测,必须e++;if(e>a)e=a;display(4,e);if(e>100){e=e-100;a=a-100;}}}if(call2==0){delay(10);if(call2==0){while(call2==0); //松手检测,必须e++;if(e>a)e=a;display(13,e);if(e>100){e=e-100;a=a-100;}}}}//***液晶初始化函数****lcd_init(){write_1602com(0x38); //设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c); //开显示不显示光标write_1602com(0x06); //整屏不移动,光标自动右移write_1602com(0x01); //清显示write_1602com(yh+1); //日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a<14;a++){write_1602dat(tab1[a]); //向液晶屏写日历显示的固定符号部分//delay(3);}write_1602com(er+2); //时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a<8;a++){write_1602dat(tab2[a]); //写显示时间固定符号,两个冒号//delay(3);}}。