单片机课程设计报告 排队叫号系统设计_第1页
单片机课程设计报告 排队叫号系统设计_第2页
单片机课程设计报告 排队叫号系统设计_第3页
单片机课程设计报告 排队叫号系统设计_第4页
单片机课程设计报告 排队叫号系统设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与接口技术课程设计(报告)《单片机原理与接口技术》课程设计(报告)题目:排队叫号系统设计摘要排队叫号系统(排队机、叫号机)是针对银行、医院、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。本课题研究的是一款智能排队叫号机,排队系统主要由单片机,完整的键盘,显示电路,蜂鸣器电路组成。通过串行通信方式传输处理数据;通过按键取号,在LCD1602上显示排队的号码以及当前正在等待的人数;通过按键叫号,在LCD1602液晶显示屏显示叫到的号码,蜂鸣器发出声音提示客户。本文设计的系统有良好的人机交互界面,模拟排队管理,论文主要研究了排队叫号系统的实现方法,研究结果对现实具有重要的指导意义。研究结果肯定了单片机完成排队叫号系统的可能性。科学地处理各种排队情况,操作简便,控制灵活,显示清晰,制作成本低,性价比较高。本文的特色是采用通俗易懂的语言,向大家介绍了排队叫号系统的原理以及设计思路,对日常的生产生活具有一定的影响。关键词:单片机;AT89C51;排队叫号;LCD1602目录TOC\o"1-3"\h\u17588第1章概述 第1章概述1.1课题背景近年来,随着我国社会经济的持续快速发展,资金流动加快,服务行业的不断增加,加之我国政府正在努力构建和谐社会、服务型政府,大量的用户越来越频繁的光顾金融系统、电信、医疗、政府办事大厅等服务部门,时代的发展给这些服务型行业提出新的服务理念,也给这些行业和部门带来了巨大的压力。伴随着经济全球化的大浪潮,各行各业之间的竞争逐渐加剧、每个服务行业业.务量在不断增长,业务种类也日益增多,排队等候已成为人们经常面临的实际问题。在银行、医院、电信、税务、工商等营业大厅里,前拥后挤、杂乱无章的排队等候,己是司空见惯的现象,很多窗口也因而秩序混乱,为保护用户隐私而设置的“l米线”也形同虚设。一方面客户因为长时间的站立排队透支体力和精力而疲惫不堪,另一方面工作人员也为长时间遭受众多客户的围绕而不胜其烦,影响了服务质量。因此,改善服务质量、树立良好的企业形象,解决客户劳累的排队现象、创造人性化务环境已成为急需解决的问题。长时间的站立排队使用户疲惫和厌烦,用户渴望尊重隐私,期望“个性化服务”,只排一个队,只接受“一对一服务”。对服务部门来讲,使用排队机是提高服务质量,提升服务形象,吸引顾客的有利措施。随着信息技术的突飞猛进,智能排队管理系统应运而生。智能排队管理系统是一种综合运用计算机技术、网络技术、多媒体技术、通信控制技术等的高新技术产品,此系统完全模拟人群的排队过程,实现了计算机系统代替客户进行排队的过程曰。使用排队系统后,用户在票号机上取票后,在休息区舒适地等待,听到呼叫后才去对应的窗口办理事务,服务人员面对一个安静的环境,面对一个客户,可以专心办理业务,提高了工作效率。我国人口众多,办事排队一直是一个令人头痛的问题。现今,随着服务行业业务种类的细化和增加,服务内容和工作量加大,这个问题变得尤为突出。嘈杂、无序、不公平、不合理、低效等一直是排队中困扰顾客和服务人员的问题.电子排队管理系统很好地解决了这些问题,可以广泛地应用于银行、医院等窗口服务单位.银行自动叫号系统就是电子排队管理统的一种―,是针对银行服务窗口的特点而设计的.这里以ATMEL公司的AT89C51单片机为核心,设计了一个简单的把客户与服务机构相结合的主从机排队叫号系统。模拟排队叫号管理,科学地处理各种排队情况1.2课题现状排队技术的应用是体现了科技以人为本的需要,是全社会文明发展的产物,也是人类文明发展的必然趋势。排队技术最早出现在欧美等西方国家,开始的排队系统仅限于工作人员的人工呼叫,随着现代技术的不断发展特别是计算机技术的应用,使排队技术的发展也突飞猛进,目前己具备多种功能如乐音提示、语音合成呼叫(voice一calling);呼叫终端(operationterminal);以柜台显示(counterdisplay)和综合显示(MainDisplay)为主的各种数码管显示、LCD显示、LED显示、PDP显示…;号码发放也由取号机自动打印(TicketDispenser)到触摸屏查询取号、按键取号、特殊识别取号等等。排队技术产品的出现彻底改变了以前许多需要长时间排队场所的无序模式,也被越来越多的行业所采用,以提高管理水平和自身竞争力。在我国,排队产品概念的引进时间也不长,特别是在中国加入WTO以后,大批国人走出国门,将很多优秀和先进的服务方法、理念带回国内。“排队技术”也随之被引进国内,并在我国特有的高速经济发展的环境里得到迅速的普及和应用。客户对排队系统的使用也逐渐习惯,并乐于接受131。我国的排队技术产品也经由1998年--2001年的起步期、2001--2003年的发展期、到现阶段的高速发展期,市场也逐渐成熟,逐渐生产出多种适应我国国清的排队系统产品,并具有应用领域广、工作流程复杂、综合技术要求高的等特点。我国是一个人口大国,随着经济发展速度的加快,大量的用户越来越多的光顾金融、电信、医疗、政府办事大厅等场所,使得窗口服务的快捷和舒适越来越被人们所重视。随着精神文明与物质文明的进一步提高,电子排队技术必将为更多的用户所接受,并由日常工作中的辅助设备逐渐成为必备的设施之一,人们期待低成本、功能完善、可靠性高的排队管理系统来使工作和生活变得轻松、和谐。第2章总体设计方案2.1设计要求1、主机通过按键完成叫号,数码管显示被叫的号码;蜂鸣器响,提醒顾客接受服务;语音播报提醒顾客;2、从机通过串行通信方式完成排队取号功能;3、从机显示队列排在前面的顾客数;4、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。2.2方案论证排队技术在国内外都已经达到相当智能的水平。智能排队叫号系统有我了解的基本三种方案:都是基于ATMEL公司生产51系列单片机芯片,第一种是基于AT89C51单片机为核心由主从机的按键控制、数码显示和蜂鸣器提示音综合设计;第二种是基于AT89C52单片机为核心通过STC89C52单片机直接扩展的独立键盘,完成排队取号流程(本系统取号、叫号都是直接利用系统的中断О按键控制),单片机控制数码管显示排队等待情况,控制蜂鸣器发声完成叫号功能。方案一系统采用如图2.1所示的主要硬件电路,运用串行通信原理通过按键给计数器脉冲,达到计数+1和销号-1的功能,并通过译码器驱动数码管显示,完成取号、叫号功能,同时叫号按键外接有源蜂鸣器实现提示客户的作用。在选用我们常用单片机芯片AT89C51和数码显示管LM016L,运用较简单的延时和循环C语言程序设计来实现。这样设计可以使客户的视觉和听觉都得到相应的信息提示。主机主机主机芯片AT89C51显示LCD按键蜂鸣器从机从机芯片AT89C51显示LCD按键图2.1方案一系统方框图方案二系统采用如2.2所示的电路,通过STC89C52单片机直接扩展的独立键盘,完成排队取号流程(本系统取号、叫号都是直接利用系统的中断О按键控制单片机控制数码管显示排队等待情况,控制蜂鸣器发声完成叫号功能。系统采用STC89C52单片机完成整个系统的控制流程。从机通过单片机的中断О按键,当系统检测到按下时完成取号功能。主机同样通过单片机的中断0按键,当系统检测到按下时完成叫号功能。运用的芯片和程序相对较为复杂,不易实现。图2.2方案二系统方框图方案三系统采用如图2.3所示的电路,通过按键给计数器脉冲,并通过译码器驱动数码管显示,完成取号、叫号功能,同时叫号按键外接有源蜂鸣器实现提示客户的作用。图2.3方案三系统方框图方案一通过综合使用计数器、译码器、数码管为一体的数码显示管LM016L。可以较好的实现排队叫号的基本功能,而且在客户端和服务机构两方面都能很方便的使用和控制,利用串行通信原理,由简单的51单片机芯片实现,达到复杂问题简单化的目的,是设计理论的趋势;方案二的电路设计相对而言复杂,可操作性不强,故不采用;方案三通过综合使用计数器、译码器,数码管,可以较好的实现排队叫号的基本功能,但需要较多的硬件电路,实现复杂。综合各条件从简单实现考虑,我选择方案一。2.3系统组成与工作原理2.3.1系统组成本设计主要利用单片机AT89C51芯片和1602液晶显示,采用按键来对显示器和蜂鸣器加以控制来完成一个主从机分别管理排队和叫号的系统。其主要功能是分别利用客户端使用一个从机排队﹐服务机构使用一个主机来管理从机的排队信息。具体功能如下:(1)从机:客户通过按键依次加1完成取号,由1602液晶显示当前客户在排队中的位置。设定最大的排队人数是10人,当排队人数超过10时,显示排队已满,并停止排队。(2)主机:设有4个办理业务的窗口,通过按键来完成叫号,由1602液晶显示“NO.**cometoNO.**window,Please”,并配有蜂鸣器发出蜂鸣声“叮咚”加以提示;排队是否空或已满,空、满都在1602液晶上显示相关字样;在服务机构端可按键显示剩余排队人数等信息。2.3.2系统工作原理本系统选用我们常用单片机芯片AT89C51和1602液晶,运用C语言程序设计编写较简单的延时和循环来实现。以AT89C51单片机为核心,由主从机的按键控制1602液晶显示和蜂鸣器提示音。系统采用如图2.4所示的主要硬件电路,运用串行通信原理通过按键给计数器脉冲,达到计数+1和销号-1的功能,并通过1602液晶显示,完成取号、叫号功能,同时叫号按键外接有源蜂鸣器实现提示客户的作用。主机主机主机芯片AT89C51显示LCD按键蜂鸣器从机从机芯片AT89C51显示LCD按键图2.4系统原理图第3章硬件设计3.1硬件系统介绍本智能排队叫号系统这一课题,其具体要求和功能完全模拟人群排队过程,通过取号、排队等待、叫号服务等功能代替人们站队,实现机器自动代替人排队的过程。在大厅明显处放置一台主从机,顾客来到后按“取号”键,从机自动排号并在显示器上显示你在队列中的位置;顾客根据显示器上的序号与等待人数,可选择在大厅休息处休息或办别的事,当某窗口号显示顾客序号,同时音响提示音响起时,该顾客便可前往相应窗口接受“一对一”的服务。每位窗口工作人员使用蜂鸣器接受主机命令,可按键受理下一位序号客户业务,每服务完一位顾客后再按键,呼叫器上的号码自动跳到下一个序号受理序号,同时此号码显示在窗口显示屏上显示并用蜂鸣提示,以提示顾客前来接受服务。总体设计框图如图3.1硬件设计总体框图所示。图3.1硬件总体设计方框图综合以上情况,我们采用上位单片机(主机)实现综合管理和控制,将蜂鸣器模块、主要按键模块、显示器模块等集成在主机内。下位从机包括一个按键模块和窗口显示模块,这些设备相互独立,均由AT89C51单片机芯片控制。通过按键KO传送数据到主机,主机接受从机发送来的命令和数据作出相应的显示,操作简单并有1602液晶显示显示、蜂鸣器与窗口显示器一一对应,使用时将用于设置窗口号的拨码开关拨到相应位置即可。用AT89C51单片机芯片、独立按键叫号(顾客使用)、独立按键(代表四个窗口营业员控制端)、无源蜂鸣器(起到发出提示音的作用)、1602液晶显示信息以及相应的辅助外围电路部分。3.2主要电路设计单片机AT89C51、6M晶震、lnF电容、22uf/10V电容、10K和100电阻共阳极数码显示管、按键、蜂鸣器、与门。3.2.1主机部分电路如图3.2所示,主机部分实现的功能是服务机构接收从取号终端发送的票号信息并对排队进行智能管理,主要包括:窗口叫号、液晶显示、蜂鸣器“叮咚”声提示、统计剩余排队人数、插队管理等。图3.2主机部分电路图3.2.2从机部分电路如图3.3所示,从机部分主要实现的功能是客户按键取号,通过按键KO依次加1取号并在1602液晶屏上显示客户抽取的票号,上限为10人,当取号达到上限后,通过液晶屏显示“Thequeueisfull,pleasewait”的信息提示队列已满。当客户抽取票号后,从机会通过串行通信将票号信息发送至主机。图3.3从机部分电路图3.3功能部分电路设计3.3.1单片机最小系统电路单片机AT89C51的最小系统电路。包括时钟振荡电路、复位电路两个部分图3.4即为AT89C51单片机的最小系统结构图。图3.4最小系统电路图在AT89C51中有一个构成内部震荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外接石英或陶瓷震荡器一起构成自激震荡器震荡电路。外接石英晶体(或陶瓷震荡器)及电容C1、C2接在放大器的震荡回路中构成并联震荡电路。对外接电容C1、C2虽然没有非常严格的要求,但电容的大小会轻微影响震荡频率的高低、震荡工作的稳定性、起震的难易程序及温度稳定性,如果使用石英晶体,推荐使用30pF±10pF,而如果使用陶瓷谐振器建议选择40pF士10pF图3.5即为本系统用到的外部震荡电路。图3.5外部震荡电路图复位电路中采用手动按键产生复位信号,完成单片机启动,确定单片机的初始状态。单片机要复位,本质上是在其RESET脚上保持一定时间的高电平,单片机检测到这个电平保持时间大于它要求的时间就会自动复位。通常在单片机工作出现混乱或“死机”时,使用手动复位可实现单片机“重启”。它们是单片机进行正常工作所必需的部分。RST/VPD(9脚)复位信号时钟电路工作后,在引脚上出现两个机器周期的高电平,芯片内部进行初始复位,复位后片内存储器的状态如表所示,P1—P3口输出高电平,初始值07H写入堆栈指针SP、清0程序计数器PC和其余特殊功能寄存器,但始终不影响片内RAM状态,只要该引脚保持高电平,89C51将循环复位,RAT/VPD从高电平到低电平单片机将从0号单元开始执行程序,另外该引脚还具有复用功能,只要将VPD接+5V备用电源,一旦Vcc电位突然降低或断电,能保护片内RAM中的信息不丢失,恢复电后能正常工作。AT89C81通常采用上电自动复位和开关手动复位,我们采用的是手动复位开关如图4.6手动开关所示。手动开关未按下之前,电容正极处于家电状态,当按键按下去后,VCC与GND导通,电容放电,从而实现放电。图3.6所示即为本系统的复位电路。图3.6复位电路图3.3.21602液晶显示部分电路在数字测量仪表和各种数字系统中,都需要将数字量直观的显示出来,一方面供人们直接读取测量和运算的结果;另一方面用于监视数字系统的工作情况。因此,数字显示电路是许多数字设备不可缺少的部分。数字显示电路通常由译码器、驱动器和显示器等部分组成,如图3.7显示器原理所示。按键按键输入按键输入按键输入按键输入输入信号图3.7显示器原理图在本次设计中主要由1602液晶显示器及排阻构成显示电路部分。PO口是一个三态双向口,除了高、低态以外还有一个高阻态,如果不接上拉电阻,当端口处于高电平1的状态下,实际上端口对地、对Vcc电阻都是无穷大,即本质上是不确定状态,因此需要上拉电阻RESPACK-8.P2口为一个内部上拉电阻的8位双向I/0口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入,故不要再加上拉电阻。由1602液晶的引脚功能可知其电路连接如图3.8所示。在排号按键KO操作的时候,其显示的是“YourNo.is**!”并按键依次+1,当队列为空时会显示“Sorry,thequeueisempty!”,当队列满时会显示“Thequeueisfull,pleasewait”;在排号按键K1、K2、K3、K4操作的时候,其显示的是“No.**cometono.**window,please!”;按键waiting时,显示的是剩余队列人数;按键insert时,其显示是“insert”。图3.81602液晶显示部分电路图3.3.3按键部分电路由与门和开关按键组成,由其完成的功能设计硬件原理如图3.9所示。按键接口都主要在P1输入口处按键输入,运用按键中断的方式达到队列排号的取号和叫号的功能。在取号操作由从机的KO键实现。初始化内部程序,使计数从01开始,当按键次数小于10时,由循环加1,当取号等于10时,停止排队。叫号主机的按键设计就要复杂一点,采用的中断要和与门一起完成。4个独立的窗口叫号按键实时的取得输入排在最前的号码,当4个窗口中任意一个窗口已经使用了该号码后,就进行销号处理。此时中断中的号码通过与门消号-1和延时的效果。另外的功能按键与其设计原理基本一致。图3.9按键部分电路图3.3.4蜂鸣器电路如图3.10蜂鸣器部分所示。在按键K1、K2、K3、K4操作的时候,其蜂鸣器会发出“叮咚”提示顾客的提示音。本设计运用延时程序控制接蜂鸣器的端口输出。图3.10蜂鸣器部分电路图3.3.5TXD串行发送和RXD串行接收电路按照通信方式,可将数据传输线路分为单工、半双工、全双工三种通信方式。在单工方式下,通信线的一端连接发送器,另一端连接接收器,它们形成单向连接,只允许数据按照一个固定的方向传送;在半双工方式下,系统中的每个通信设备都由一个发送器和一个接收器组成,通过收发开关接到通信线路上,数据可以双向传输,但是不能同时在两个方向上同时传送,即每次只能一个站发送,另一个接收,其收发开关并不是实际的物理开关,而是由软件控制的电子开关;全双工通信系统的每一端都包含发送器和接收器,数据可以同时在两个方向上传送。尽管许多串行通信接口电路具有全双工通信能力,在实际应用中,由于半双工方式简单、实用,因而大多数情况采用半双工方式。本设计的传送数据是在半双工方式下运行的,两AT89C51芯片的串行发送和串行接收端口对应连接,如图3.11所示。图3.11串行口通信部分电路图第4章软件设计4.1排队系统主从机软件总体设计4.1.1系统从机(取号终端)软件设计取号终端的事件发生概率服从随机按先来先排的公平排队﹐由于只有一台专门的从机来负责,可以简单其流程,而在逻辑上服从队列的先入先出算法。通过单片机的中断KO按键,当系统检测到按下时完成取号功能。队列的上限是10人,当队列中排一人时,队列加1,直到满队。主要的流程如下图4.1从机流程图所示。图4.1从机流程图4.1.2系统主机(叫号终端)软件设计主机初始化后,主机通过单片机的中断按键,当系统检测到按下时完成相应功能。(1)接收从机发送来的信息,若队列为空显示“Hello!”;若队列未满,则在队列取号按键的时候调用叫号程序实现“**isleft”的字样;若队列已满,则重复显示“11isleft”。(2)如有窗口应答并命令时,运用延时程序控制蜂鸣器的运作,4个独立的按键代表4个窗口实现显示叫号两用功能。(3)可以根据统计程序来统计此队列中还有多少人在排队等待中。总的流程是从机将最前顾客号码发送到该主机,主机接收后可以窗口显示并提示音呼叫.统计剩余人数、重置排队等功能。主要的流程如下图4.2主机流程图所示。图4.2主机流程图4.2各功能模块的软件设计4.2.1蜂鸣器蜂鸣器子程序的主要功能是运用延时函数实现不同频率的声音输出。序中主要的结构流程如下图4.3蜂鸣器子程序所示。图4.3蜂鸣器流程图4.2.2LCD显示子程序程序中主要的结构流程如下图4.4LCD显示流程图所示。图4.4LCD显示流程图4.2.3窗口消号处理子程序利用与门和循环左移的方式实现器消号的功能,其主要的流程结构如下图4.5窗口消号处理子程序所示。图4.5窗口消号处理流程图第5章系统仿真运行当点击PROTUES软件的全速运行按钮时2,软件提示没有错误,并得到如图5.1所示的仿真图。我们可以再PROTEUS中仿真人们在排队时的几种必要的过程:取号、叫号、蜂鸣、显示、统计。图5.1运行开始图当点击全速运行按钮,将出现如下图5.2所示仿真结果,表示的是判断队列为空时主从机运行的结果,没有人进行排队。图5.2运行结果图当有人进行排队时,按KO键中的排队输入号码,即是现实中排在队伍中等待的模拟部分,在此过程中你的顺序已经在队列中确定,此时你可以节省时间从事另外的某些事情,最大排队数是10。当排队数达到最大时,从机部分显示的是“Thequeueisfull,pleasewaiting!”,(这队列已经满了,请等一等)而主机部分的号码显示为“**isleft”。如图5.3所示。图5.3按K0键5次的结果图当某窗口需要叫号时,可以按K1/K2/K3/K4键代表不同的独立窗口并有提示音,即相当于模拟人排在队伍中等待窗口内的呼叫。由按键中断方式实现LCD数码显示功能,由延时程序控制蜂鸣器的提示音。达到双重保险效果:看显示器的“No.(排队号码)cometoNo(按键代表的窗口)window,Please",(请几号到几号窗口来),同时有“叮咚”加以提示客户,这样确保不会因不留意二错过机会。如图5.4所示。图5.4按K1键4次的结果图当你在窗口前想要了解你所在的队伍中还剩余多少人要办理业务时,即在人们排队时焦急等待的在计算何时轮到自己时的现象。可按waiting键,运用窗口消号处理和键盘中断来处理此项功能。即为显示还有多少人在排队等待中,其LCD数码显示为共办理了几人业务。如图5.5所示为排队6人,1号窗口已经办理了前2人的业务,按waiting键时,LCD显示的是“04isleft”(剩余4人)。图5.5按WAITING键的结果图

总结本设计论文系统描述了应用ATMEL公司的AT89C51单片机及其外围电路实现排队叫号系统。通过这次的课程设计,使我对单片机有了更深的认识,从理论和实践上都得到了很大的提高,所以这次任务的完成是我学到了很多东西。本设计讨论了排队按键模块,语音提示呼叫模块,显示模块等主要功能模块。期中重点和难点是实现排队的+1程序、叫号按键-1程序与相应的显示和按键中断设计。从基本要实现的方案制定,再到硬件电路的选择,到制作原理电路,最后进行程序调试的4个阶段的设计。在此期间我遇到很多困难,在一次一次的失败尝试中迫使我不得不更加努力的学习深入的内容。从课程设计中,学到了单片机AT89C51的内部结构及其工作原理,了解了最小系统电路的工作原理,还有LCD1602液晶显示器的工作原理,巩固了单片机的使用能力,提高了自己动手的能力,学到了很多经验,并且提高了自己分析问题的能力和创新能力,得到了理论联系实际的机会,做出了成果。使自己在硬件设计方面树立了信心,为以后从事这方面的工作打好了基础,这也是这次课程设计的最大收获。

参考文献[1]康万新.毕业设计指导及案例剖析—应用电子技术方向[M].北京:清华大学出版社,2007.[2]杨连国.医院智能排队叫号系统的设计与实现[D].南京:东南大学,2006.[3]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.[4]郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009.[5]阎石.数字电子技术[M].北京:高等教育出版社,1998.[6]滕丽丽.基于单片机的银行排队系统的设计[J].信息科技,2010,11(2):246-247.[7]史毓达,曲豪.嵌入式排队系统叫号器终端设计与实现[J].湖北第二师苑学院学报,2009,26(8):94-95.[8]彭伟.单片机C语言程序设计实训100例:基于8051+Proteus仿真[M].北京:电子工业出版社,2009.[9]郑锋,王巧芝,陈绘兵等.51单片机应用系统典型模块开发大全[M].北京:中国铁道出版社,2010.[10]张靖武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2007.

附录主机程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^0;sbitRW=P2^1;sbitE=P2^2;sbitkey0=P1^0;sbitkey1=P1^1;sbitkey2=P1^2;sbitkey3=P1^3;sbitkey4=P1^4;sbitkey5=P1^5;sbitkey6=P1^6;sbitkey7=P1^7;sbitcd=P2^7;sbitBEEP=P2^6;sbithold=P3^4;uintsev=0;uintsev1=0;uintsev2=0;uintsev3=0;uintsev4=0;uintm=0,i=0;uintrank[10]={0};uintnum=0;uintjz=0;uintLengthFlag=0;uintnum_count=1;uchardatatest[]="Hello!";uchardataprompt1[]="YourNo.is00!";uchardataprompt2[]="No.00cometoNo";uchardataprompt3[]="0.window,please!";ucharpdataprompt4[]="Thequeueis";ucharpdataprompt5[]="full,pleasewait";ucharpdataprompt6[]="Sorry,thequeue";ucharpdataprompt7[]="isempty!";uchardataprompt8[]="00isleft";ucharpdataprompt9[]="Allis00";ucharpdataprompt10[]="W1-00";ucharpdataprompt11[]="W2-00";ucharpdataprompt12[]="W3-00";ucharpdataprompt13[]="W4-00";uchardataprompt14[]="Insert";voiddelay(intn){intk,j; for(k=0;k<=n;k++) for(j=0;j<=10;j++);}voiddelay1s(intn){intk,j; for(k=0;k<=n;k++) for(j=0;j<=120;j++);}voidSPEAKER(uintx){for(i=0;i<=200;i++) { delay(x); BEEP=~BEEP; } BEEP=1;}voiddelay1ms(unsignedintms){uintk,j; for(k=0;k<ms;k++) for(j=0;j<100;j++);}voidLCD_w_com(unsignedcom){RW=0; RS=0; E=1; P0=com; delay1ms(40); E=0; RW=1;}voidLCD_w_dat(uchardat){RW=0; RS=1; E=1; P0=dat; delay1ms(40); E=0; RW=1;}voidgotoxy(unsignedx,unsignedy){if(x==1)LCD_w_com(0x80+y); elseLCD_w_com(0xC0+y);}voidclear_LCD(void){LCD_w_com(0x01);LCD_w_com(0x02);}voidinit_LCD(void){LCD_w_com(0x38); LCD_w_com(0x0c); LCD_w_com(0x06); gotoxy(1,0); for(i=0;i<=5;i++) {LCD_w_dat(test[i]); }}voidQueueNumProcess(){rank[LengthFlag]=num_count; LengthFlag++; if(LengthFlag>10){hold=0;} //else{LengthFlag++;}}voidClearNumProcess(){num=rank[0]; for(i=0;i<LengthFlag;i++) rank[i]=rank[i+1]; LengthFlag--; if(LengthFlag<10){hold=1;} sev++;}voidmain(void){EA=1; EX0=1; EX1=1; IT0=1; IT1=1; clear_LCD(); init_LCD(); while(1) { delay1s(10000); clear_LCD(); gotoxy(1,0); for(i=0;i<=5;i++) { LCD_w_dat(test[i]); } delay1s(10000); clear_LCD(); prompt8[0]=LengthFlag/10+'0'; prompt8[1]=LengthFlag%10+'0'; gotoxy(1,0); for(m=0;m<=9;m++) { LCD_w_dat(prompt8[m]); } delay1s(10000); clear_LCD(); ClearNumProcess(); prompt2[3]=(num)/10+'0'; prompt2[4]=(num)%10+'0'; prompt3[1]=jz+'0'; gotoxy(1,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt2[m]); } gotoxy(2,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt3[m]); } }}voidint_x0()interrupt0{if(!key1){jz=1;sev1++;} if(!key2){jz=2;sev2++;}if(!key3){jz=3;sev3++;} if(!key4){jz=4;sev4++;} if(!key0) { while(!key0); if(LengthFlag<=10) { clear_LCD(); QueueNumProcess(); prompt1[11]=(num_count)/10+'0'; prompt1[12]=(num_count)%10+'0'; num_count++; } else { clear_LCD(); gotoxy(1,2); for(m=0;m<=10;m++) { LCD_w_dat(prompt4[m]); } gotoxy(2,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt5[m]); } } key5=0; } if((!key1||!key2||!key3||!key4)&&key0) { while((!key1||!key2||!key3||!key4)&&key0); { SPEAKER(11); delay(200); SPEAKER(15); if(LengthFlag<1) { clear_LCD(); gotoxy(1,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt6[m]); } gotoxy(2,0); for(m=0;m<=8;m++) { LCD_w_dat(prompt7[m]); } } else { clear_LCD(); ClearNumProcess(); prompt2[3]=(num)/10+'0'; prompt2[4]=(num)%10+'0'; prompt3[1]=jz+'0'; gotoxy(1,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt2[m]); } gotoxy(2,0); for(m=0;m<=15;m++) { LCD_w_dat(prompt3[m]); } } }}}voidint_x1()interrupt2{if(!key5) { key5=1; clear_LCD(); prompt8[0]=LengthFlag/10+'0'; prompt8[1]=LengthFlag%10+'0'; gotoxy(1,0); for(m=0;m<=9;m++) { LCD_w_dat(prompt8[m]); } } if(!key6) { clear_LCD(); prompt9[7]=(sev)/10+'0'; prompt9[8]=(sev)%10+'0'; gotoxy(1,0); for(m=0;m<=9;m++) { LCD_w_dat(prompt9[m]); } } if(!key7) { clear_LCD(); prompt10[5]=sev1/10+'0'; prompt10[6]=sev1%10+'0'; prompt11[5]=sev2/10+'0'; prompt11[6]=sev2%10+'0'; prompt12[5]=sev3/10+'0'; prompt12[6]=sev3%10+'0'; prompt13[5]=sev4/10+'0'; prompt13[6]=sev4%10+'0'; gotoxy(1,0); for(m=0;m<=7;m++) { LCD_w_dat(prompt10[m]); } gotoxy(1,8); for(m=0;m<=7;m++) { LCD_w_dat(prompt11[m]); } gotoxy(2,0); for(m=0;m<=7;m++) { LCD_w_dat(prompt12[m]); } gotoxy(2,8); for(m=0;m<=7;m++) { LCD_w_dat(prompt13[m]); } } if(!cd) { clear_LCD(); gotoxy(1,0); for(m=0;m<=6;m++) { LCD_w_dat(prompt14[m]); } LengthFlag++; for(i=1;i<LengthFlag;i++) rank[LengthFlag-i]=rank[LengthFlag-i-1]; rank[0]=10; } IT1=0;}从机程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitRS=P2^0;sbitRW=P2^1;sbitE=P2^2;sbitkey0=P1^0;sbithold=P3^4;bitflag=0;uintm=0,i=0;uintrank[10]={0};uintLengthFlag=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论