1、基于单片机的智能排队提示系统摘要随着市场经济的发展,客户在市场交易中的地位越来越重要,个人化的服务已成趋势,提供舒适的服务环境已成竞争的重要手段。营业窗口是形成银行、电信、航空、医院等企业的公众形象的重要因素。因此,排队管理系统应运而生,通过使用排队系统,由传统的客户站立排队变为取票进队、排队等待、提示服务,由传统物理的多个队列变为一个逻辑的队列,它彻底解决了银行、医院等服务性企业普遍存在的站立等候、服务无序的问题,深化并完善了服务的质量。为此,我们选定了设计一个基于单片机的智能排队提示系统的设计。设计以AT89C52单片机为核心,将系统分为蜂鸣器模块、键盘模块、Id卡及Id读卡器模块、液晶显
2、示模块等几部分,与软件结合,实现排队叫号的功能1。主控制器中的单片机采用AT89C52。键盘设计了1个按键,当服务完一位顾客后可直接控制按键提示下一位顾客。其工作流程是:当顾客刷完id卡后即可坐在座位上等待提示。本文先对国内外的现状、研究成果和未来排队系统的发展趋势进行了简单的阐述。介绍了智能排队系统的总体设计,工作原理。分别对软件和硬件设计和实现的方法进行了说明。并给出了详细的电路图。给出了系统基本功能的测试结果。总结本文所完成的工作,并提出设计过程中的存在的问题,最后对系统功能的扩展进一步的展望。关键词:智能排队 LCD显示 通用读卡模块KD-01R 目 录第一章 绪论11.1 课题背景1
3、1.1.1 国内外现状11.1.2 发展趋势21.2本文主要研究的内容和任务21.3 本章小结3第二章 排队系统的整体设计方案分析42.1设计的总架构42.2 设计的思路52.2.1 单片机的选择52.2.2 Id读卡模块52.2.3 显示单元模块62.3 本章小结6第三章 系统的硬件电路设计73.1 系统的整体电路图如下73.2 单片机的控制电路设计73.2.1 STC89C52的功能说明14181073.2.2 时钟电路设计15103.2.3复位电路103.3 LCD1602显示电路123.4 125Khz射频IC卡通用读卡模块12133.5 声音提示电路143.6 本章小结15第四章 软
4、件设计与仿真164.1 软件的开发环境164.1.1 开发环境keilC51介绍164.1.2 protues仿真环境174.2 系统软件设计184.2.1 单片机的主程序流程184.2.2 id卡的卡号传输、校验、储存184.2.3 按键的检测194.2.4 LCD1602软件显示194.3 本章小结20第五章 系统的调试和总结215.1 系统硬件的实现215.2 系统软件的实现215.3 系统集成和测试225.4 本章小节22第六章 总结和展望236.1 论文主要完成的工作236.2 问题和前景展望23参考文献24致谢2527基于单片机的智能排队提示系统第一章 绪论1.1 课题背景随着经济
5、全球化的大浪潮,经济的持续快速发展,资金流动加快,每个服务行业业务量在不断增长,业务种类也日益增多,排队等候已成为人们经常面临的实际问题。在银行、医院、电信等营业大厅里,经常出现前拥后挤、杂乱无章的排队等候。这导致了客户因为长时间的站立排队透支体力和精力而疲惫不堪和工作人员也为遭受众多客户的围绕而不胜其烦,影响了服务质量增加工作人员的压力。社会的进步推动着各行各业树立新的服务观念,也促使各行各业急需改变以往的工作方式,以适应时代的要求2。服务行业的业务量不断增加,传统的排队等候方式费时费力,不符合科学发展的观念。让顾客站着排队一两个小时也与科学的“顾客是上帝”的服务理念背道而驰。随着IT行业的
6、迅猛发展,通过机器模拟的智能排队应运而生。前拥后挤的排队等候得到了改善,电子排队系统得到了广泛的应用。通过使用排队系统,由传统的客户站立排队变为取票进队、排队等待、提示服务,由传统物理的多个队列变为一个逻辑的队列, 使先来先服务的思想得到更好的贯彻,不仅优化了服务和工作环境,而且使客户和工作人员的情绪得以放松,提高了服务效率和质量,有利于树立服务部门的良好形象,有利于提高服务机构的经济效益和社会效益,更有利于营造良好社会公共秩序、创造和谐的社会环境。它彻底解决了银行、医院等服务性企业普遍存在的站立等候、服务无序的问题,深化并完善了服务的质量3。这种智能化、人性化的服务系统不仅在世界各地被广泛接
7、受,在国内也被越来越多的服务行业认同和采用。1.1.1 国内外现状智能排队模拟了人群排队过程,通过顾客进行取号、排队等待和叫号服务等功能,取代各类服务性窗口传统的让顾客站立排队办理业务的方式,实现了计算机系统代替客户进行排队的过程,适用于各种各样的窗口服务行业。排队技术最早出现于上个世纪的六、七十年代,开始主要集中在欧美等西方国家,后来迅速得到普及。刚开始,排队是顾客先取一个预先准备好的号,然后轮到该号时,服务员再用麦克风通知客户接受服务。后来排队理论得到了广泛的发展,1909年丹麦的电话工程师爱尔郎进行了长期的工作,取得了随机服务系统理论的最早成果。1940年前后排队理论开始在机器管理和陆空
8、交通等方面得到应用。1951年理论工作有了更新的发展,逐渐奠定了现代随机理论服务基础,其服务领域也得到了广泛的应用。在我国,排队产品概念的引进时间也不长,排队技术产品也经由1998起步期,即中国企业才开始从事排队技术产品的经营活动。但新技术还处于萌芽时期,使用的范围十分的有限。2001-2003年的发展期,即大家排队技术产业已经有了一定的认识。服务行业也不把排队系统当做一个摆设,顾客对这种智能的排队方式也渐渐的习惯了。到现阶段的高速发展期,市场也逐渐成熟,逐渐生产出多种适应我国国情的排队系统产品,并具有应用领域广、工作流程复杂、综合技术要求高的等特点4。1.1.2 发展趋势目前排队叫号系统有多
9、种解决方法,如:取号的有按键式排队取号,触屏式的和无线排队取号。提示音有乐音提示、语音合成呼叫、呼叫终端;显示的有以柜台显示和综合显示为主的各种数码管显示、LCD显示、LED显示、PDP显示。从排队系统的发展史来看,可以将它分为: 单片机、Pc式、嵌入式三种核心结构,其特点各异。基于单片机结构的智能排队管理系统,这个系统具有简单的形式,可以完成基本功能的实现,并且可以实现简单排队的需求,成本较低是它的优点,但是也有不足之处,如接口电路复杂,价格昂贵,体积大,这是智能排队系统的较早的产品,所以扩展功能十分有限。随着科学技术的发展,市场上现在的主流产品是基于PC机的结构形式,即由8位CPU构成的主
10、机板通过RS232接口与加装有触摸屏的PC机在线通信配合使用。这种模式占用Pc机仅用在使用频率较少的系统管理功能和完成触摸屏触摸取号的功能,这种结构方式的长处是能够方便与所服务领域主体业务进行兼容性设计,实现数据共享,不足之处是它的开发和制造的成本相对来说是比较高的,最重要的是系统的结构不严密,显得比较松散。5嵌入式系统具有消损功耗低、小体积、能够高度集成、较强的可靠性、简单紧凑等特点,适用于对功能、可靠性、体积和功耗要求严格的系统。应用嵌入式系统使产品的成本得到较大的降低。并且系统本身不具备自动开发能力,必须有一套开发环境和工具才能进行开发,这使得用户不能够对它进行修改。硬件设备、应用程序和
11、嵌入式操作系统共同组成了嵌入式系统。它的应用范围包括网络设备、个人数字助理、智能机械等6,7,8。越来越多的软件开发支持和网络功能的强大为嵌入式的发展打下了基础,所以其具有较好的开发前景。1.2本文主要研究的内容和任务本文是基于单片机的智能排队提示系统而提出的的若干问题,主要是整个设计过程中的设计方案进行了规划,进而确定了排队提示系统中所需要的主要模块设计及其实现方案,并对各个功能模块的硬件、软件设计与实现进行了比较完整的描述。本文主要对整个设计过程进行了以下几个方面的概括:第一章绪论主要介绍了智能排队系统的研究背景、研究目的和意义,国内外现状和不足,以及对智能排队系统的未来发展趋势进行了简略
12、的概括。第二章对能够实现排队提示的各种方案进行比较分析进而选择适合的方案。对整个设计的框架有正确的方向,介绍其工作原理及流程。第三章系统的介绍基于单片机的智能排队提示系统实现的硬件设计方案。选用的单片机stc89c52,显示lcd,读卡模块的进行详细的介绍。第四章对于单片机的智能排队提示系统每个模块的软件设计进行了说明,主要介绍了读卡器的读卡,lcd的显示。第五章对系统的软硬件调试和实现给予说明,并介绍软硬件集成测试的发法和结果。最后对本文进行总结和展望。1.3 本章小结本章主要针对该课题的背景及意义进行阐述,并对现阶段国内外的发展现状进行了解,最后更加深入的对它的发展趋势进行研究,进而得出该
13、课题具体所需要完成的重点,以便更快的完成该课题的任务。第二章 排队系统的整体设计方案分析2.1设计的总架构1920本课题是基于单片机的智能排队提示系统的开发研究。在进行毕业设计这个期间,我主要查询比较了各类型的系统设计的方案,对硬件设计以及相应的软件仿真设计也进行了比较详尽的了解与选择,最终确定了一个适合的设计方案。因此,接下来将介绍整个设计的方案对比与选择及设计思想。基于单片机的排队提示系统需具有能够一方面实现智能化,另一方面实现人性化,最大的方便广大群众的生活。排队提示系统的总体架构如下:主控制器按键选择Lcd显示Id卡识别蜂鸣器提示,提示灯提醒图 2-1 排队提示系统图开始系统初始化LE
14、D点亮卡号储存是否有键按下 N蜂鸣器提示 YLCD显示卡号图 2-2 总的流程图2.2 设计的思路整个设计的框架如图2.1所示,系统有几个小模块共同构成,以AT89C52单片机为核心,将系统分为蜂鸣器模块、键盘模块、Id卡及Id读卡器模块、液晶显示模块等几部分,由它们共同完成排队提示。工作过程为当顾客拿着id卡刷完后即可坐在座位上等候提示音和显示器的显示,按顺序进行办理业务而不怕被插队,既省时又省力。2.2.1 单片机的选择MCU(Micro Control Unit)中文名称为微控制单元,又称单片微型计算机(Single Chip Microcomputer)或者单片机,它将多个电路集成在一
15、块芯片,把具有数据处理能力的中央处理器CPU,随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能都集成到一块芯片上,从而构成了一块小而完善的单片微机。它具有小巧灵活、成本低、易于产品化、抗干扰能力强和适应温度范围广等特点。 单片机发展到现在,种类繁多,性能各不相同。按内部存储器类型可分为片内掩模型ROM、OTP(一次性可编程)ROM、片内FLASHROM等类型。片内掩模型的价格便宜,但程序已经固化不能修改,固定不变的应用场合比较适合这种程序;片内FALSHROM程序可以多次擦除和编程,具有很的吧灵活性,缺点是造价比较高,对价格不要求的应用场合可以使用;OTPROM
16、价格适中,允许一次编程,对于要求既灵活性又低成本的应用场合比较适合。电子产品的层次不同,对能源的需求也不断提高要求。低功耗成为主流。如今的单片机日趋向制作工艺CMOS化、尽量实现单片化、片内软件的嵌入、共性与个性共存等方向发展。单片机在经过这几年不断地研究和发展,历经4位、8位, 16位、32位,甚至64位,8位已渐成为市场主流。 STC单片机可以完全兼容51单片机,具有抗干扰性强、低功耗和具有远程升级等特点,加上市面上价格也比较便宜,也符合本课题的设计要求,所以这次的单片机选择STC89C52。2.2.2 Id读卡模块基于单片机的排队提示系统,顾客要进行排队时必须先进行取号。取号的设计方案有
17、以下几种。一种是用热敏打印机,打印机用于用户排队先取号时凭条打印,使用热敏式微型打印机比较适合,热敏打印机具有打印速度快,打印头很少出现机械损耗,噪音较小,并且不需要色带等特点。不足之处是打印出来的字保存的期限十分的有限,特别是在曝光的情况下更容易分解。但是由于打印的是用户凭条,时效性十分强的,用户业务办理完毕之后,该凭条即失效,所以普通的热敏打印机完全可以满足需求。但是由于打印机的软件设计不好控制,所以打印出来的字条可能不符合要求9。近年来随着射频IC卡技术在各领域的应用日趋成熟和广泛,采用射频卡为密码载体的射频卡读卡模块,因独具操作方便、安全性能高、使用人员无须了解复杂的射频技术、通过标准
18、输出接口就可以将读卡模块嵌入到其应用系统中、从而轻松实现各种应用开发,因此,射频读卡模块已在安防、进出控制、身份识别、产品防伪等领域中占有了举足轻重的地位。若是把射频IC卡用于顾客的取号,虽然造价较高,但可以循环使用。综上决定用射频IC卡代替打印机模块。2.2.3 显示单元模块我们在应用系统中经常会用到显示器,显示器有很多种分类,如:简称LED数码管显示器,较高级的有LCD液晶显示器(LCD1602等)和荧光显示器等。下面主要对这几种显示器的比较。LED主要7个发光段组成的8字形,还另加一个小数点,分别由字母a,b,c,d,e,f,g,d,p来表示这些段。当这些段加上电压后即可点亮,我们可以控
19、制段的亮灭来显示不同的数字。LED的驱动可以分为动态驱动和静态驱动,动态驱动可以实现轮流显示。但是由于本课题要显示多个号码数字,所以使用LED比较麻烦,不太符合。点阵式LCD显示器,LCD还可以分为LCD字段型显示屏和LCD点阵型显示屏。它的功耗十分低、有高的分辨,并且显示图形、文字、数字美观灵活等特点。所以在很多系统中应用非常广泛。相比于LED, LCD的驱动方式有很大的不同。LCD的驱动方式一般采用交流电压驱动,直流电压驱动会使LCD液晶体产生电极老化和电解,这使得LCD的使用寿命大大降低。因为LCD的两端不能够直接加恒电压,所以它的驱动具有一定的复杂性。但现在实现整个液晶显示的功能可以应
20、用专门驱动I2C,购买的LCD很多有提供现成的功能模块。我们在设计过程中,只要根据商家提供的资料就能够实现LCD显示,这样既系统的设计得到了简化,还大大的缩短开发系统的时间。排队系统按实际情况和需求,决定定以LCD液晶显示器做为本设计的显示界面。2.3 本章小结本章对基于单片机的智能排队提示系统的主要模块进行的简略的介绍,阐述了该课题的大概框架。第三章 系统的硬件电路设计3.1 系统的整体电路图如下图 3-1 整体仿真图3.2 单片机的控制电路设计3.2.1 STC89C52的功能说明141810STC89C52具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和
21、在系统可编程Flash,有8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。其引脚图如下:图 3-2 STC89c52管脚图管脚说明: VCC:供电电压,运行时加+5V。 VSS:接地。XTAL1:内部时钟工作电路的输入和输入到振荡器的反向振荡放大器。 XTAL2:输入到内部时钟发生器和来自反向振荡器的输出。 振荡器特性: 用外部振荡器时XTAL2悬空,而XTAL1接收外振荡器器信号。反向振荡放大器的输入和输出分别为XTAL1和XTAL2。该反向放大器可
22、以配置如石晶振荡和陶瓷振荡为片内振荡器。它对外部时钟信号的脉宽没有严格的要求,当然这必须保证脉冲的高低电平要求的宽度的前提下。它的剩余输入到内部时钟时会通过个二分频触发器。P0口:8位,为一个漏级开路双向I/O口,作为总线时每脚可驱动8TTL门电流。当P1口的管脚第一次写1时,则为高阻输入。P0能够用于外部程序数据存储器(ROM或RAM),作地址和数据总线分时复用。在编程时,P0 口作为原码输入口,当程序进行校验期间,P0输出指令字节是,此时P0外部必须被拉高。 P1口:P1口具有一个内部上拉电阻的8位准双向I/O口,P1口缓冲器可以驱动4TTL门电流。当P1口被下拉为低电平时,输出是电流,这
23、是由于内部上拉的缘故。P1.0是定时器的计数输入端,P1.1是定时器的外部输入端,应有程序置1。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为8位双向I/O口,具有内部上拉电阻。P2口缓冲器可接收,可以驱动4个TTL负载,当P2口被写“1”时,其管脚将被拉高,作为输入端。由于内部上拉的缘故, P2口的管脚被外部拉低,将输出电流。P2口当使用片外部程序存储器(ROM或RAM)或16位地址外部数据存储器进行存取时,P2口输出高八位的地址。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在编程和程序校验时接
24、收高八位控制信号和地址信号。 P3口:P3口是8位带内部上拉电阻的准双向I/O口,可驱动4个TTL门电流。当P3口写入“1”后,提供了各种替代功能,它们被内部上拉为高电平,并用作输入。由于外部被拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚备选功能,分别为串行口、中断、定时器计数器、数据储存器选通。 P3.0 RXD(串行输入口),输入。 P3.1 TXD(串行输出口),输入。 P3.2 /INT0(外部中断0),输入。P3.3 /INT1(外部中断1),输入。 P3.4 T0(定时器/计数器0外部输入) P3.5
25、 T1(定时器/计数器1外部输入) P3.6 /WR外部数据存储器写选通,低电平有效,输出。 P3.7 /RD外部数据存储器读选通,低电平有效,输出。RST:复位输入,高电平有效。当振荡工作时时,要保持RST脚两个机器周期以上的高电平时间,将器件复位。 ALE/PROG:地址锁存允许信号,输出。当访问外部存储器时,低字节地址锁存。在编程期间,此引脚用于输入编程脉冲。ALE端以频率为振荡器频率的1/6的不变的频率周期输出正脉冲信号。因此它可用作对外部输出的时钟或用于定时目的。但是每当用作外部数据存储器时,ALE脉冲将跳过一个,这使ALE的输出在SFR8EH地址上置0。只有在执行MOVX,MOVC
26、指令是ALE才起作用。加上因为引脚被稍微拉高,如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:片外程序存储器的选通信号,低电平有效。在由外部程序存储器取指期间,每个机器周期中,当PSEN有效时,程序存储器的内容被送到P0口,即数据总线。可以驱动8个TTL门电流。/EA/VPP:片外程序存储器允许访问信号,低电平有效。为低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电压。 3.2.2 时钟电路设计15时钟电路与单片机的连接图:选择晶振为11.0592
27、,电容为30pf图 3-3 时钟电路单片机的时钟电路可使用内部时钟和外部时钟,外部时钟方式是单片机内部由一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为单片机的引脚XTAL1,输出为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。晶振的取值范围一般为0至24MHz,常用的晶振频率有6MHz、12 MHz、11.0592 MHz、24 MHz等。一些新型的单片机还可以选择更高的频率。外接电容的作用是对振荡器进行频率微调,使振荡信号频率与晶振频率一致,同时起到稳定频率的作用,一般选用20至30pF的瓷片电容。外部时钟方式则是在单片机XTAL1引脚
28、上外接一个稳定的时钟信号源,它一般适用于多片单片机同时工作的情况,使用同一时钟信号可以保证单片机的工作同步。3.2.3复位电路单片机复位是使CPU和其他部件都恢复到原始的状态,只有通过复位后开始初始工作才可有序的执行程序而不出错。它是使单片机系统能够稳定运行的主要内部因素之一,所以对于单片机系统复位电路的设计是非常必要的。复位电路分为按键手动复位和上电自动复位,本课题使用的是前者。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。对复位电路的基本要求是:上电时使单片机可靠复位,在断电时能防止程序乱飞导致数据被修改。另外,由于各种因素的干扰影响,单片机系统在工作时,
29、一般会出现死机现象导致单片机系统不能够正常运行,这需要充分利用单片机本身的看门狗定时器,能够较好的解决这一现象11。按键复位电路中,当按键没有按下时,电路同上电复位电路。如在单片机运行过程中,按下复位键,已经充好电的电容会快速通过200电阻的回路放电,从而使得RST引脚上的电位快速变为高电平,此高电平会维持到按键释放,从而满足单片机复位的条件实现按键复位。本设计采用的是手动的按键复位。其电路图如下:图 3-4 按键复位电路总的单片机最小系统图如下:图 3-5 单片机最小系统3.3 LCD1602显示电路点阵字符型液晶显示器是用来显示字母、文字、数字、特殊符号等的显示器,因其具有重量轻、小体积、
30、低功耗的特点,所以得到广泛的应用。液晶显示器LCD1602能够显示16*02即32个字符,具有的特性有:接+5V电压,对比度可调;内含有复位电路;具有清屏、字符闪烁、光标移位等多种功能;具有80字节显示数据储存器;有160个5乘7的点阵的字型和字符发生器,另外8个可由用户自定义。主要的技术参数如下:表 3-1 LCD1602主要技术参数表名称说明显示字符数32个字符工作的电压范围5V左右工作的电流范围2.0mA左右字符大小2.954.35图 3-6 LCD1602液晶显示电路图表 3-2 LCD1602引脚功能表引脚号符号状态功能引脚号符号状态功能1Vss电源地9DB2三态数据总线2Vdd5v
31、逻辑电源10DB3三态数据总线3Vo液晶驱动电源11DB4三态数据总线4RS输入寄存器选择12DB5三态数据总线5RW输入读写操作选择13DB6三态数据总线6E输入使能信号14DB7三态数据总线7DB0三态数据总线15E1背光电源线8DB1三态数据总线16E2背光电源线3.4 125Khz射频IC卡通用读卡模块12近年来随着射频IC卡技术在各领域的应用日趋成熟和广泛,采用射频卡为密码载体的射频卡读卡模块,因独具操作方便、安全性能高、使用人员无须了解复杂的射频技术、通过标准输出接口就可以将读卡模块嵌入到其应用系统中、从而轻松实现各种应用开发。KD-01R模块属于通用型射频读卡传感器,它还可以叫读
32、卡器模块,读卡头,读卡译码模块,读卡感应器,读卡机模块等等。其主要功能是:读卡,并将卡号输出给其它控制设备其性能特点为可读取EM只读感应体(币型、钥匙型、卡片型)、干扰体存在的条件下读卡距离6090mm,读卡速度0.5秒、仿DIP40 IC引脚,特别方便嵌入到目标线路板中等。表 3-3 射频模块引脚说明表 脚号名 称说 明脚号名 称说 明1GND电源地40ANT1天线输入2VCC+5V电源30ANT2天线输入17INT有卡中断22TXD串口输出18不用21RXD串口输入(不用)表 3-4 125K射频卡读卡模块技术参数表名称说明工作频率125 Khz卡片类型EM 只读卡读卡距离= 50mm(钥
33、匙) ,=90mm(卡片)供电电源DC 4.76V/250mA工作电流读卡瞬时160mA左右 静态70mA左右通信接口TTL电平232通信波特率9600(RS232C)串口初始化9600,N,8,1感应体形式钥匙、厚卡、薄卡、塑棒天线尺寸60 x60 mm工作温度-10 - +60湿度98%相对湿度,不结霜工作方式: 卡片在感应区时,每0.4秒向串口送一次卡号。TTL232 数据传送格式如下:表 3-5 传送卡号的数据格式表 AAHFFHD0D1D2D3D4校验和数据结构(共8字节)的说明表如下:表 3-6 数据结构的说明表地 址定 义0-1命令码(AA FF)2-640位卡号( 低地址高字节
34、Motorola结构)7校验和(地址0-6位共7字节“XOR”异或值 )3.5 声音提示电路蜂鸣器可分为电磁式和压电式,我采用的是压电式的蜂鸣器。主要由多谐振荡器,压电蜂鸣片、阻抗匹配器及蜂鸣箱外壳等组成。阻抗匹配推动压电蜂鸣片发声。使用最简单的蜂鸣器来当做语音提示电路,可以通过改变高低电平来发声。可以延时来设置发声的时间。电路图如下:图 3-10 蜂鸣器连接图3.6 本章小结本章总的介绍了基于单片机智能排队提示系统硬件的总体结构,并对其中的单片机最小系统、lcd1602液晶显示模块、id读卡模块进行了较为详细的介绍。第四章 软件设计与仿真一个系统要完整的实现其功能,不但需要硬件的模块准确结合
35、,更必须有功能强、速度快、效率高的系统软件做支持。本课题对软件的设计总分总的方法,先对要实现的功能的所需的软件进行总体的把握,拟出总体设计方案。再将总的软件划分为多个功能模块,分配各部分的具体任务,然后对各功能模块进行详细、正确的设计,各功能模块写成后进行调试并通过后,将它们根据系统设计总的要求将的各模块的函数程序组合起来最终完成软件设计。这样主程序通过调用子程序,各部分模块分工使总的功能实现,具有可读性好,便于编制和扩充的优点。主控制器的软件设计采用STC89C52 单片机的汇编语言编写。该系统软件设计包括数据存储、显示控制、数据传输等模块。各个模块之间需要协调配合工作,主要要写LED 灯驱
36、动、按键驱动、液晶显示驱动、蜂鸣器驱动等,程序主要包括主控程序、用户排队处理程序、业务员操作控制程序等,整个系统的协调管理由。4.1 软件的开发环境系统软件和应用软件是单片机系统不可缺少的两部分,软件开发环境指的是为支持这两者维护和工程化开发而使用的一组软件,当然这必须要在宿主软件和基本硬件的基础上。它由软件工具(用以支持软件开发的相关过程、活动和任务)和环境集成机制构成(为工具集成和软件的开发、维护及管理提供统一的支持)。传统软件工程采用的是从时间角度对软件开发和维护的复杂问题进分解,把软件生命分成几个阶段,每个阶段的开始和结束都有严格标准,并且独立完成任务。两个相邻的阶段,前一阶段的结束就
37、意味着后阶段的开始,我们称之为“瀑布模型”。在这种模型中,灵活性比较差,复用性低。 1617随着计算机技术和软件技术的发展,软件的规模越来越大,功能越来越复杂,强调对系统中出现的对象进行分类,建立类之间的结构层次关系,如继承、关联、组合等,能支持软件组件的复用性,并采用信息封装的方式对类的数据加以隐藏,通过接口和消息传递的方式实现类之间的通信,从而得到高内聚、低祸合的软件系统。4.1.1 开发环境keilC51介绍Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统, Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界
38、面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码,效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 使用Keil的开发工具其项目开发周期和任何软件开发项目都大致一样: 1. 创建C语言或汇编语言的源程序 2. 编译或汇编源文件 3. 纠正源文件中出现的的错误4. 从汇编器和编译器中连接目标文件 5. 测试连接的应用程序 下面是Keil C语言的编译器及编译过程:图 4-1 Keil C语言的编译器及编译过程图4.1.2 protues仿真环境Proteus软件是英国Labcenter electronic
39、s公司出版的EDA工具软件。它不仅是模拟电路、数字电路、模数混合电路的设计和仿真平台,更是目前世界上最先进。最完整的多种型号为控制器电路系统的设计和仿真的平台。它真正实现了再计算机上完成从原理图设计、电路分析与仿真、单片机代码级调试与仿真、系统测试和功能验证到形成PCB的完整的电子设计、研发过程。从1989年问世至今,经历20年的使用、发展和完善,功能越来越强,性能越来越好。4.2 系统软件设计根据课题所需要完成的基本功能,再结合硬件可以将软件分id卡卡号的读取、转换、储存、LCD的显示、蜂鸣器、led灯、按键的驱动。4.2.1 单片机的主程序流程给系统上电后,进入工作状态,单片机先进行初始化
40、工作。先进行变量的设置,如单片机寄存器及软件变量的设置。对于外围器件的初始化有液晶显示器LCD1602的初始化设置,对Id卡是否有卡刷进的判断,伴随led等的亮灭提醒,按键检测工作,如检测到有按键按下,进入相应的按键程序,伴随蜂鸣器的响应,处理完后回到按键检测状态。4.2.2 id卡的卡号传输、校验、储存读卡器感应到id卡的卡号,不断的向单片机发送卡号,单片机串口接收数据。因为卡号不只发一次,所以单片机要执行卡号异或校验,选择正确的卡号,再检验是否重复,若是重复则丢弃,不重复则储存卡号。开始丢弃串口接收数据储存卡号卡号异或校验检验是否重复 Y N图 4-3 卡号传输、校验、储存图4.2.3 按
41、键的检测无卡号输入时按键按下清0,当有卡号储存时,按键按下LCD显示卡号。NEXT按键0.5s延时计数,蜂鸣器响起提示。具体得流程图如下:其中A单元是指连续的10个十进制卡号存储空间,原存储的卡号是4个连续单元存储的十六进制原始卡号,而转换后的卡号是10个连续单元的BCD码卡号(十进制)。开始有按键按下 N 把数据从A单元存入B单元 Y取最早存入的卡号转化为十进制存放LCD固定储存单元A图 4-4 按键检测图4.2.4 LCD1602软件显示LCD在显示过程的流程如下:其中第四个框框为命令循环1*2次 ,这个命令是换行命令,执行是换行命令,使LCD输入地址切换到第二行,然后接下去的数据就能显示
42、到第二行 。执行过程中是定时器自动不断执行的,数据执行,执行的是循环读取A单元和B单元,将里面的BCD码卡号显示出来。开始命令执行3*2次数据执行16*2次 循环命令执行1*2数据执行16*2次结束图 4-6 液晶显示器显示图4.3 本章小结本章对软件的开发环境keilc及仿真工具软件进行了简单的介绍。着重介绍了排队系统所能实现的几个重要的软件流程。第五章 系统的调试和总结5.1 系统硬件的实现系统硬件的调试一般是在软件调试之前,硬件系统的明显故障要进行排除,修改之后才能和各模块的软件程序相结合起来调试,这样就一步排除了故障。如果硬件调试没有通过的话,那么软件设计就无法正常运行和实现,所以硬件
43、的调试是整个系统能够完好运行的基础。硬件的调试从开始的布线、PCB板的制作、焊接直到所有的模块连接组装完成之后开始进行调试。首先要进行的是逻辑故障的排除,排除逻辑故障指的是在设计过程中线路的错误连接,使得功能不能实现,或者是PCB板的制造过程中工艺性错误而产生的故障。焊接过程中经常因为疏忽而出现电路的开路和短路,这需要认真对照之前所确定的原理图,发现不同的地方并修改直至完全相同。排除电源故障。在电路测试过程中会出现因元器件的损坏而造成的系统不能正常运行,出现这种情况的原因有:元器件没用之前就已坏了和因为在焊接或组装过程中的错误导致器件损坏。比如:电源电压过高导致芯片的烧毁,正负极的反接导致电容
44、的毁坏,所以在安装前应该认真检查元器件的型号、规格与设计要求。在保证安装无误后,用替换方法排除错误。对于电源故障先检查检查VCC与GND之间电位。本文的硬件实现分为两个步骤,首先逐个实现排队系统的各个模块,包括LCD显示屏、ID卡读取、蜂鸣器响应等。然后用跳线将各模块连接起来。5.2 系统软件的实现系统软件的实现首先要做的是以各功能模块为单位,分别对每个功能模块进行调试,一般可以先在仿真工具上进行模拟,观察其是否可以实现基本要求的功能,如果可以成功运行的话,再将调试完的各个功能模块的这些程序组合到一起进行总的组合起来调试。一般模拟仿真运行能成功,下载在硬件系统上也能够完好的运行,当然,这必须建立在硬件系统已通过硬件调试并成功的基础上。前面5.1已经介绍了硬件调试。系统中一般会存在静态的故障或者比较固定的、常见的故障,这些故障在每次的运行过程中都会重复的出现,这种情况下一般可以使用断点