版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论近年来,随着科学的发展和人们消费水平的提高,社会各界尤其是在办公商务服务业竞争的生活越来越大。越来越多的企业将营业厅服务质量作为企业形象的一个重要指标,这种做法得到了客户的认可。经济增加肯定会增加企业的办事质量,营业厅的排队问题也更加明显。根据调查显示,客户服务,高峰,有时需要等待几个小时,这似乎已经成为司空见惯的现象,这将影响消费者的情绪。对于营业厅的服务质量低下,越来越多的客户感到不满意,因此排队拥挤带来的疲劳、烦感问题成为人们需要考虑的问题,营造更加高效、人性化服务环境已成为当前急需解决的现实问题。排队叫号系统是利用电脑的科学管理客户排队的系统,为银行、通讯、税务、工商、政府机构等部门的大厅工作设计而成的,完美地解决了客户在办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的便利。本课题探索的是研制一款无人排队的排队叫号机,它主要由主控制器、键盘、数码管显示电路、蜂鸣器电路等部分组成。
系统使用中央处理器进行控制,通过按键取号,在数码管上显示排队的号码,通过按键叫号,在数码管上显示叫到的号码,由扬声器发出声音提示客户。本系统采用单片机STC89C52进行控制,利用数码管显示信息,蜂鸣器发声进行提示方式,模拟排队管理系统,科学地处理各种排队情况。操纵灵活,控制简单,制作成本较低,性价比较高。排队技术目前已集成音乐,语音合成,呼叫,呼叫终端等多种功能,号码发放也由取号机自动打印到触摸屏查询取号、按键取号、特殊识别取号等等。目前国内外的排队叫号系统广泛应用于金融、医院、电信以及各级政府对外服务窗口等行业,已经非常的成熟,免除了不舒服的站立式排队,现代的高科技产品,彻底解决了银行,医院和其他服务企业站队等待,服务障碍问题,深化和提高服务质量。
第2章系统分析及原理介绍2.1系统的基本功能和工作原理2.1.1基本功能本系统主要利用STC89C52单片机和液晶1602显示,采用开关来对液晶和蜂鸣器加以控制以完成一个排队和叫号过程的系统。客户通过取号开关进行取号操作,当取号步骤完成后,系统会记录客户的队伍号,并由窗口工作人员通知客户,此时窗口工作人员点击窗口按钮,蜂鸣器发声,提示客户到窗口办理业务2.1.2工作原理本系统采用单片机STC89C52和我们用1602液晶显示器,由延迟和简单的C语言程序设计实现周期写。以单片机STC89C52为核心,通过编程控制1602液晶显示信息和蜂鸣器发声提示。串行通信原理的应用,使1602液晶显示,完成取号、叫号功能。2.2排队系统工作流程排队系统基本工作流程十分简单,客户到达服务大厅后,先到取号端上按键取号,得到自己的服务票号后,到相应的休息位置等待工作人员,同时关注相关显示屏信息和蜂鸣器提醒,当被叫到自己的票号时,根据语音提示和显示屏幕的显示信息到相应窗口办理业务工作人员在指定窗口,可以看到叫号终端上显示的等待人数,开始为客户服务时按下开关键开始工作,每服务完一个客户后就可以按开关键呼叫下一位顾客,当所呼叫的客户在规定时间内不到就可以跳过此客户,按开关呼叫下一位客户。2.3系统整体设计2.3.1硬件概要设计智能排队的排队系统,其具体要求和的全功能仿真,通过取号,排队,服务基站代替人群排队的过程,。根据客户按下的按钮,机器自动排号显示编号,并在液晶显示器上面显示。客户可以在休息室休息或做别的选择,当一个窗口显示客户的编码时,蜂鸣器会在同一时间的发出声音,用以提醒客户接受服务。各窗口工作人员按下开关,可以接受当前一位客户并为其服务,此次服务结束后工作人员按钮呼叫下一位客户,液晶显示号码自动跳转到下一个。上述情况,我们用单片机实现综合性的管理和控制,蜂鸣器模块,主要模块,显示模块集成在主机。这些设备是相互独立的,由STC89C52单片机控制,通过按键传送数据到单片机,操作简单,并且有蜂鸣器与窗口显示器提示相对应。用STC89C52芯片,独立的关键站(客户),独立的键(代表四个窗口店员控制端),无源蜂鸣器(播放蜂鸣声的作用),1602液晶显示的信息和相应的外围电路。2.3.2软件概要设计本文排队叫号系统软件设计使用Keil进行调试,Protues进行仿真。Keil把用户的每个工程都当作一个项目。当打开一个项目时,所有相关联的程序也进入了调试窗口。即使是只有一个源程序,没有工程也不能进行编译、链接和仿真。客户端通过按键完成取号,数码管显示排队、等待人数情况;主机通过按键完成叫号,数码管显示叫到的号码,并通过蜂鸣器发声提示;客户端和主机通过串行通信方式完成排队取号功能。(1)信息处理部分客户通过取号按键完成取号过程,然后单片机通过处理将取号信息发送到打印机部分进行排队号码的打印。(2)主系统信息处理主系统由单片机负责完成对整个叫号机排队系统的运作,首先STC89C52接收来自取号机的取号数据,处理之后将信息反馈给取号机,并将数据保存,当窗口有提示服务信息的时候,单片机会将排队的序号信息发送到窗口,并且将信息及时的发送到大厅液晶屏幕显示及蜂鸣器。及时的通知客户办理业务。(3)叫号系统设计第一位顾客开始窗口叫号时,工作人员通过按键将信息输入到单片机,经处理过后,将客户排队的号码发送到窗口端,此时窗口端的液晶显示器即可显示客户的号码,客户就可以根据提示来到相应的窗口进行业务服务。(4)语音系统设计此模块采用无源蜂鸣器发声,通过单片机向P15端口低电平,经过三极管的放大电路放大,使蜂鸣器的发声提示。(5)液晶显示部分液晶显示部分采用的是LCD1602液晶,此液晶显示器可以显示汉字,字母和数字,当有呼叫信息时,会将客户信息将显示在屏幕上,提示客户接受人工服务。
第3章主要硬件参数3.1STC89C52RC单片机宏晶科技推出的STC89C52RC单片机是新一代高速低功耗超强抗干扰的单片机,它的指令代码完全适合传统8051单片机,6时钟/机器周期和12时钟/机器周期可以随意选择。由于使用protues仿真时软件中并没有STC89C52RC单片机,由于STC89C52RC指令代码完全适合传统8051单片机,因此我们使用AT89C51代替STC89C52RC进行仿真。在实物制作中仍使用STC89C52RC。3.1.1单片机的CPU结构单片机的中央处理器是整个单片机的核心部件,主要由运算器和控制器两个部分组成。(1)运算器是计算机的运算部件,可以完成各种算术运算,逻辑运算,并可以进行位运算。算术逻辑部件是运算器的核心,此外,运算器中还有暂存器1、暂存器2、累加器、程序状态字、寄存器B、ALU、和布尔处理器。运算的结果将影响程序状态中的标。布尔处理器是单片机的一个重要组成部分,有自己的位累加器Cy和相应的指令系统及位寻址区和I/O空间。布尔处理器在位测试,外设的控制及复杂组合逻辑电路的求解方面提供了方便的方法。(2)控制器是单片机的指挥控制部件,它主要包括程序计数器,指令寄存器,指令译码器,数据指针寄存器,堆栈指针,缓冲器及定时控制电路等。它的主要任务是对指令进行译码,通过定时和控制电路发出各种控制信号,使各部件协调工作,完成指令所需的操作。3.1.2STC89C52RC引脚功能说明1电源引脚(2根)(1)VCC(引脚40):电源电压(2)VSS(引脚20):接地2时钟电路引脚(2根)(1)XTAL1(引脚19):接外部振荡晶体和微调电容的一端。在片内它是振荡电路反相放大器的输入端,在采用外部时钟时,该引脚接地。(2)XTAL2(引脚18):来自片内反向振荡器的输出。若采需用外部时钟电路时,该引脚输入外部时钟脉冲。单片机正常工作时,该引脚应有脉冲信号输出。3控制引脚(4根)(1)ALE/EQ\*jc2\*hps12\o\ad(\s\up11(___________),PROG)(引脚30):地址锁存控制信号/编程脉冲输入端当访问外部存储器时,该引脚输出的信号作为锁存低8位地址的控制信号。在编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的六分之一,因此它可用作对外部输出脉冲或用于定时目的。(2)EQ\*jc2\*hps12\o\ad(\s\up11(__________),PSRN)(引脚29):外部程序存储器的选通信号当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。在外部程序存储器取指期间,每个机器周期两次EQ\*jc2\*hps12\o\ad(\s\up11(__________),PSEN)信号有效。但在访问外部数据存储器时,这两次有效的EQ\*jc2\*hps12\o\ad(\s\up11(__________),PSEN)将不出现。(3)EQ\*jc2\*hps12\o\ad(\s\up11(_____),EA)/VPP(引脚31):外部程序存储器地址输入端/编程电压输入端。当EQ\*jc2\*hps12\o\ad(\s\up11(_____),EA)保持低电平时,只访问片外程序存储器,不管是否有内部程序存储器;当EQ\*jc2\*hps12\o\ad(\s\up11(_____),EA)端保持高电平时,只访问片内程序存储器,而超过4KB地址则自动转到片外存储器1000H读取指令。8031单片机片内无ROM,所以该引脚接地。对于EPROM型单片机,在编程写入期间,此引脚也用于施加12V编程电压。(4)RESET/TPD(引脚9):复位/备用电源输入引脚该引脚上输入24个时钟周期以上的高电平,系统即初始复位。VCC掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。4输入/输出引脚(1)P0.0~P0.7(引脚39~引脚32):8位准双向并行I/O口P0口可作为通用双向I/O口。在外接数据、程序存储器时,可作为低8位地址/数据总线复用引脚。(2)P1.0~P1.7(引脚1~引脚8):8位准双向并行I/O口P1口可用作通用双向I/O(3)P2.0~P2.7(引脚21~引脚28):8位准双向并行I/O口P2口可用作通用双向I/O口。在外接数据、程序存储器时,可作为高8位地址输出引脚。P2口在FLASH编程和校验时接受高8位地址信号和控制信号。(4)P4.0~P4.7(引脚10~引脚17):8位准双向并行I/O口P3口除了作为通用I/O口使用以外,每一个引脚都可以复用。STC89C52引脚图如图3.1所示:图3.1STC89C52引脚图3.1.3单片机的存储器单片机程序存储器和数据存储器相互独立,在物理结构上有四个存储空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。单片机的外部数据存储器和I/O接口采用统一编址方式。由于仿真所使用的芯片是AT89C51,所以我们介绍单片机的存储器以AT89C51为例。1数据存储器:数据存储器包括内部数据存储器和外部数据存储器两个空间,51单片机外部数据存储器空间大小为64KB,地址空间为0000H~0FFFH,内部数据存储器为128个字节,地址空间为00H~7FH。内部数据存储器和外部数据存储器在00H~7FH范围内地址会出现重叠现象,单片机通过不同的指令格式加以区分,访问片内RAM可采用多种寻址方式。若采用间接寻址方式,间接寻址寄存器只能R0或R1。2内部RAM内部RAM共128个单元,可分为工作寄存器区、位寻址区和数据缓冲区。(1)工作寄存器区(00H~1FH):该区的32个单元被均匀的分为四组,每组包含八个8位寄存器,均以R0~R7来命名,常称这些寄存器为通用寄存器。CPU当前由程序状态字PSW中的D3和D4位来选择的。通过修改PSW中的RS0和RS1两位,就可以选择任一组工作寄存器,这有利于提高CPU的效率和响应中断的速度。(2)位寻址区(20H~2FH):片内RAM的20H~2FH单位为位寻址区,它们既可作为一般单元用字节寻址,也可以对其中某位进行寻址。位寻址区共有16个字节,128位,位地址为00H~7FH。(3)堆栈和数据缓冲区(30H~7FH):该区的地址范围为30H~7FH,用于存放用户的数据,对这部分区域的使用不作任何规定和限制,堆栈一般开辟在这个区域。3特殊功能寄存器51单片机把CPU中的专用寄存器,I/O锁存器,中断、串行口与定时/计数器内的各种控制寄存器和状态寄存器都作为特殊功能寄存器,它们离散地分布在地址为80H~FFH的范围内,该范围称为特殊功能寄存区。51单片机有21个特殊功能寄存器,它们只能通过直接寻址的方式进行访问,书写时既可用寄存器符号,也可用寄存器单元地址。4程序存储器程序存储器用于存放表格常数和程序,8051单片机内部有4KBROM,片外可扩展64KB的ROM,二者统一编址。如果EQ\*jc2\*hps12\o\ad(\s\up11(————),EA)引脚接VCC(+5V),则程序计数器PC的值在0~0FFFH(即前4KB)之间时,CPU将从片内ROM这取指令,而当PC的值大于0FFFH时,则转入外部ROM中取指令;如果EQ\*jc2\*hps12\o\ad(\s\up11(———),EA)引脚接地时,则内部ROM区间被忽略,所有的取指令操作将在片外ROM中进行。片外ROM和片外RAM的地址出现了重叠,要访问ROM这的常数,可使用MOVC指令,该指令在执行时将使EQ\*jc2\*hps12\o\ad(\s\up11(——————),PSEN)信号失效;而访问片外RAM,使用的是MOVX指令,该指令执行时将使EQ\*jc2\*hps12\o\ad(\s\up11(———),RD)和EQ\*jc2\*hps12\o\ad(\s\up11(————),WR)信号失效。程序存储器中某些单元保留给系统使用,用来存放引导程序和各个中断源的入口地址,每个中断源之间只有8个存储单元空间,8个单元通常不能存下一个完整的中断服务程序,因此往往需要在中断入口地址这存放一条无条件转移指令,转到用户设计的中断服务程序的入口地址。3.1.4单片机最小系统设计单片机的最小系统是能使单片机工作的最少器件构成的系统。对于AT89C51单片机,由于其内部有4KB可在线编程的Flash存储器,用它组成最小系统时,不需机外扩展程序存储器,只要有电源,复位电路和时钟电路即可,因此,由AT89C51单片机组成的最小系统如图3.2所示:图3.2单片机最小系统3.2液晶显示器LCD液晶显示器的主要材料是液态晶体。它本身不发光,靠液晶态物质的液晶分子排列状态在电场中的改变而调节外界光而被动显示。被动型显示适用于人眼视觉,不易引起疲劳,被动型显示还不怕光冲刷。所谓光冲刷是指环境光改变较亮时,显示的信息被冲淡,从而使显示不清晰。而被动型显示,由于它是靠反射外部光达到目的的,所以外部光越强,反射光也越强,显示的内容也越清晰。LCD主要用于低压微功耗的便携式仪表,如通信器材。计算器。电子手表等,另外电视机,计算机的用量也很大。3.2.1液晶显示器的原理及分类LCD之所以能发光显示信息,是因为它可以通过特定的驱动方式来调节光源亮度。夹在导电玻璃电极间的液晶进过加工,内部分子呈90°扭曲;若一个平面上的分子呈南北方向排列,则另一个平面上的分子呈东西方向排列,位于两个平面内的分子被迫进入一种90°的扭曲状态。由于光线顺着分子方向传播,所以光线进过液晶也被扭转90°。当液晶加上电压时,分子便会重新垂直排列,使光线能直射出去,而不发生任何扭转。自然光线是发散的,因此利用偏光片形成一张网,阻断不与这些线平行的所有光线。如果两张光片的线正好垂直,就能完全阻断那些已近极化的光线。液晶的显示是由于在显示像素上施加了电场,这个电场由显示像素前后两电极上的电位信号合成产生。在显示像素上建立直流电场是非常容易的,但过强的直流电场会导致液晶材料的化学反应以及电极老化,迅速降低液晶使用寿命,因此必须建立交流驱动电场。用于驱动的交流电场其直流成分量越小越好,通常要求小于50mV。在实际应用中,由于采用了数字电路驱动,所以这种交流电场是通过脉冲电压信号来建立的。显示像素上交流电场的强弱可由交流电压的有效值表示:当有效值大于液晶电压的阀值电压时,像素处于显示状态;当有效值小于液晶的阀值电压时,像素不产生光电效应;当有效值在液晶的阀值电压附近时,液晶将呈现较弱的光电效应,这样会影响液晶显示的对比度。液晶显示驱动通过调节施加在液晶显示器件电极上的电位信号的相位、峰值、频率等,建立驱动电场,以实现液晶显示器件的显示效果。液晶显示驱动的方式有很多种,常用的驱动方法有静态驱动和动态驱动。3.2.2LCD1602液晶1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形,1602采用标准的16脚接口,其中:第1脚:GND为电源地第2脚:VCC接5V电源正极第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。高电平1时选择数据寄存器、低电平0时选择指令寄存器。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。LCD1602引脚图如图4.2所示:图4.2LCD1602引脚图3.2.31602液晶模块的读写操作1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明: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:读数据。
第4章系统流程图本次毕业设计要求完成得系统,其具体功能可以完全模拟人群在实际生活中的排队过程。取号、排队、叫号等功能,实现系统自动代替人进行排队的过程。可以在服务大厅放置一台取号机,客户若想获得服务可以按“取号”按钮,单片机接收到输入的信息后,会在排队的人数上面加1,并将最终的号码通知客户,客户拿到号码到等候室等候呼叫自己的号码。在这个过程中取票机会将客户刚刚拿到的号码发送到系统,工作人员看见后并作出应答,通过窗口按键通知客户到所在窗口办理业务,同时此号码显示在窗口显示屏上显示并用蜂鸣提示,整个服务完成后,取票机准备下一次的取号,整个过程非常迅速。系统流程图4.1:开始开始初始化客户取号LCD显示队伍号码窗口呼叫客户LCD显示信息,蜂鸣器发声提示结束初始化客户取号LCD显示队伍号码窗口呼叫客户LCD显示信息,蜂鸣器发声提示结束图4.1系统流程图
第5章系统电路及仿真结果5.1晶振电路STC89C52单片机的时钟有两种方式:一种是内部振荡方式,它是利用单片机内部的振荡电路,产生时钟信号,这种方式单片机的时钟引脚上接石英晶体和振荡电容器;另外一种是外部振荡方式,他是把外部已有的时钟信号接入单片机。下面介绍这两种方式。(1)内部振荡方式:单片机内部有一个用于构成振荡器的高增益反向放大器,它的输入端为XTAL1引脚,输出端为XTAL2引脚,分别是单片机的19脚和18脚,其频率范围为f=0~12MHZ。(2)外部振荡方式:单片机的内部工作时钟也可以由外部振荡器提供,这时,对HMOS型芯片,外部振荡器信号接XTAL2,即内部时钟发生器的输出端,而XTAL1引脚接地。对CHMOS型芯片,外部振荡信号接XTAL1,即内部时钟发生器的输入端,而XTAL2引脚不用。对于本次课设,我们采用内部振荡方式,晶振电路图如图5.1所示:图5.1晶振电路图5.2开关电路开关电路如图5.2所示,取号开关接单片机P1.0口,窗口1开关接P1.1口,窗口2开关接P1.2口。图5.2开关电路5.3LCD1602电路要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,液晶显示在执行每条指令之前一定要确认模块的标志,低电平表示不忙,否则此指令失效。单片机P0.0到P0.7分别接液晶显示器的D0到D7口,1602的RS口接单片机P2.6,RW接单片机P2.5,E接单片机的P2.7口。电路图如图5.3所示:图5.3LCD电路图5.4蜂鸣器电路三极管主要作用是起到放大功能,单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音。输出低电平,三极管导通,电流通过蜂鸣器让蜂鸣器发出声音,当输出高电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。蜂鸣器电路如图5.4所示:图5.4蜂鸣器电路图
第6章仿真结果实验板通电后,液晶显示器亮。当客户按取号键后,每按一下,队伍加1,显示器显示客户编码;当系统排满20位后,再按取号键,屏幕就会显示“Queueisfull!”此时达到取号上限。当工作人员呼叫客户时,按窗口按钮,此时队伍减1,程序进行信息处理,液晶上显示客户的编号,同时蜂鸣器进行声音提示;当所有的客户都接受完服务时,队伍没有人,液晶显示“Queueisempty!”,显示器屏幕清空,储存的队伍号码归零处理。本次毕业设计采用protues软件进行仿真,将keil软件编译生成的hex文件导入单片机中,点击取号按键,液晶显示如图6.1所示图6.1取号仿真结果当取号步骤完成好,系统会记录客户的队伍号,并由窗口工作人员通知客户,此时窗口工作人员点击窗口按钮,蜂鸣器发声,提示客户到窗口办理业务,仿真结果显示如图6.2所示图6.2窗口仿真结果
第7章系统程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitrs=P2^6;sbitrw=P2^5;sbite=P2^7;sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitsounder=P1^5;uchars1[]="YourNo.is00!";uchars2[]="No.00GoToWin.0";uchars3[]="Queueisfull!";uchars4[]="Queueisempty!";uintnum1=0;//排队叫的号码uintrank[20]={0};//排队叫号存储的数组uintnum2=0;//窗口消的号码intFlag=0;//叫号的标志intClearFlag=0;//消号的标志uintLength=0;//队列长度叫一次号时+1,消一次号时-1/*延时函数*/voiddelay(uintn){while(n--);}/*****************************************LCD1602*显示屏命令写入函数******************************************/voidwrite_com(ucharcom){e=0;rs=0;rw=0;P0=com;delay(1000);e=1;delay(1000);e=0;}/*****************************************LCD1602*显示屏数据写入函数******************************************/voidwrite_data(uchardate){e=0;rs=1;rw=0;P0=date;delay(1000);e=1;delay(1000);e=0;}/*****************************************LCD1602*显示屏清空显示******************************************/voidclear(void){write_com(0x01);delay(1000);}/*****************************************LCD1602显示屏初始化函数*****************************************/voidinit(void){write_com(0x38);/*显示模式设置*/delay(100);write_com(0x38);delay(100);write_com(0x38);delay(100);write_com(0x38);write_com(0x08);/*显示关闭*/write_com(0x01);/*显示清屏*/write_com(0x06);/*显示光标移动设置*/delay(100);write_com(0x0C);/*显示开及光标设置*/}/*简单的蜂鸣器提示音*/voidsound(){uinta;for(a=0;a<500;a++){ sounder=0; delay(61); sounder=1;}}/*获取键值函数*/uintkey(){uintjianzhi;if(key1==0){ delay(1000); if(key1==0) jianzhi=1; Flag=1;} if(key2==0||key3==0){delay(1000); if(key2==0) jianzhi=2; if(key3==0) jianzhi=3; ClearFlag=1;} return(jianzhi);}/*****************************************叫号机按一次一号键变量+1,最大为20*****************************************/voidQueueNum(){if(Flag==1)//判断叫号标志是否有效{if(Length<20){ num1++; rank[Length]=num1;}Length++;}}/*****************************************窗口消号处理函数*****************************************/voidClearNum(){uinti;if(ClearFlag==1)//判断消号标志是否有效{num2=rank[0];//把消的号赋给全局变量numfor(i=0;i<19;i++)//让数组整体左移一个存储单元,即把消得号删除{ rank[i]=rank[i+1];}Length--;}}/*****************************************检测到按键后,检测函数处理及LCD显示处理*****************************************/voidCheckButton(uintm)//m代表检测到的键值{uintjz,i;jz=m;if((jz==1)&&(Flag==1)){ //当队列人数达到20时,提示 //Queueisfull if(Length>=20) { clear(); write_com(0x80+0x02);delay(100);for(i=0;i<16;i++){write_data(s3[i]); delay(100);} } else { QueueNum(); s1[11]=(num1)/10+'0'; s1[12]=(num1)%10+'0'; clear(); write_com(0x80+02);delay(100);for(i=0;i<15;i++){write_data(s1[i]);//"YourNo.is00!"; delay(100);}Flag=0; }}if((jz==2||jz==3)&&ClearFlag==1){ if(Length==0) { clear(); write_com(0x80+0);delay(1000);for(i=0;i<16;i++){write_data(s4[i]);//"Queueisempty"; delay(100);} delay(65535); //无人排队时屏幕自动清屏,计数归零 clear(); num1=0; } else { ClearNum();//消号处理,营业员操作 sound(); s2[3]=num2/10+'0'; s2[4]=num2%10+'0'; s2[15]=(jz-1)+'0'; clear(); write_com(0x80+0);delay(100);for(i=0;i<16;i++){write_data(s2[i]);//"No.00cometoNo.0";delay(100);} ClearFlag=0; }}}/*****************************************main函数*****************************************/voidmain(){uinta;init();while(1){ a=key();//获取键值 if(Flag==1||ClearFlag==1)//判断叫号标志和消号标志是否有效 CheckButton(a); delay(200); Flag=0;//使叫号标志无效 ClearFlag=0;//使消号标志无效 a=0;//键值清0}}
第8章总结通过本次毕业设计,加深了对单片机的理解,学单片机就是要多实践,老师领我们进入单片机世界,精通它就得靠我们自己,灵活运用自己所学知识到自己的作品当中。当然在系统的设计过程中遇到过很多问题,我们可以在设计前可以先画好程序流程图,然后对应各个模块提出解决办法,各个击破。设计过程中,遇到的问题时可以再小组里面积极讨论研究,这样有助于加深对所学知识的理解,提高自身水平。作为一个自动化专业的学生,独立完成设计是我们以后工作必需具备的能力。而这次毕业设计恰恰给我们提供了一个提高自身水平,完善知识的机会。从系统理论设计,到仿真过程的实现,再到方案的确定,最后到调试电路、系统成型。整个设计过程都要求我们利用所学的知识进行思考延伸,要求我们把自己所学的知识形成一个体系。本次毕业设计是对我们所学的知识的一次综合考研。虽然过程很辛苦,但我们收获更多的是充实,是完成项目之后的满足感。设计中,正确的想法思路直接影响你的成果,只有你的设计方针是正确的,你才可以完成整个系统的仿真。所以我们在设计前必须做好充分的准备,查找详细正确的资料,一步一步进行下去。通过这次的毕业设计,使我对单片机系统有了更加深的认识,在过程中,我学到了很多的东西,有一些前辈的设计经验,还有对知识更加熟练的掌握,具体了解了怎样去完成一个系统的设计,从总体流程图、硬件电路、软件调试到编译仿真。本次毕业设计使我认识到不管做任何事都要付出一定的努力,才会有大的收获。同时也培养了我的科学严谨的学习态度。熟练地掌握课本上的理论知识是做好本次的毕业设计的前提。只有这样,我们才能对试验中出现的问题进行一定的分析和解决。当然能完成本次设计,更离不开老师辛勤地指导,每当我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024数控机床制造一致性术语
- 说明文知识梳理及答题方法-2022-2023学年八年级语文上册知识梳理与能力训练
- 轻钢结构及彩钢板工程施工组织设计#附示意图
- 遵义2024年09版小学6年级英语第三单元真题试卷
- 中考数学专项复习:幂的乘除法运算
- 珠宝专卖店利润分析模板-记账实操
- 第2课《梅岭三章》教学设计-2024-2025学年统编版语文九年级下册
- WPS 办公应用-教学大纲
- 2.1.1 正切和坡度 同步练习
- 法人授权委托书汇编(33篇)
- 高中生物课程标准2022
- 引发火灾的原因课件
- 汽车点火系实训项目
- 注氮机司机讲义
- 传播学概论课件新版
- 内蒙古伊利实业集团股份有限公司员工奖惩制度
- 中建二局“大商务”管理实施方案20200713(终稿)
- 2023年中国铁路太原局集团有限公司校园招聘笔试题库及答案解析
- 区域医疗中心建设方案
- 流程图、结构图(优秀) 儿童教育课件 精选
- 2022年全国高中数学联赛福建赛区预赛试卷参考答案
评论
0/150
提交评论