基于单片机的排队叫号系统设计毕业论文(34页).doc
-基于单片机的排队叫号系统设计毕业论文-第 22 页毕业论文基于单片机的排队叫号系统设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日毕业设计(论文)任务书毕业设计(论文)题目: 基于单片机的排队叫号系统设计 毕业设计(论文)内容:本课题是以单片机为主控器设计排队叫号系统,具体要求如下:1、可以通过按键取号,并在LCD上显示排队的号码以及当前等待的人数;2、通过按键叫号,在LCD上显示被叫号码,并通过扬声器发声提示客户;课题包含硬件设计和软件设计两大部分,其中硬件部分要完成原理电路图的设计及制作,确定整个系统所用元器件的参数或型号规格,给出元器件明细表;软件部分包括的单片机程序设计,最后完成整机的调试运行,并做出模型进行演示。毕业设计(论文)指导教师(签字): 主 管 教 学 院 (部) 长(签字): 年 月 日 基于单片机的排队叫号系统设计学 校: 昆明理工大学 学 院: 应用技术学院 专 业: 电子信息工程 级 别: 2008级 学 号: 学 生 姓 名: 指导教师单位: 应用技术学院 指导教师姓名: 指导教师职称: 讲 师 Queue NoCalling System Design Based on SCM School: Kunming University of science and technologyFaculty: Faculty of Applied Technology Speciality: Electronic and Information Engineering Grade: 2008 Student ID: 200811513220 Author: Yin Rong Xue Organization of directing teacher: Faculty of Applied Technology Director: Du Li Xia Professional title of director: Lecture 目录目录1摘要1Abstract2正文4一、总体方案设计4二、系统硬件电路设计5单片机介绍:51、单元电路设计61.0、单片机电路61.0.0、最小系统电路图:61.0.1、单片机工作指示电路71.1、按键检测:81.1.0、按键检测原理:81.1.1、按键检测电路图:81.2、单片机通信:91.2.0、单片机和单片机通信91.2.1、单片机与语音模块通信91.3、LCD显示电路101.3.0、LCD1602引脚介绍101.3.1、LCD1602指令介绍111.3.2、LCD电路接线图131.4、语音模块驱动电路131.4.0、语音模块介绍131.4.1、功能结构图141.4.2、引脚定义151.4.3、编程指令151.4.4、SX6228A电路图17三、 系统软件设计181、按键检测部分程序182、LCD显示部分程序203、单片机通信部分程序233.0、双机通信233.1、单片机对SX6228A通信25四、 调试过程26 摘要 随着电子技术的发展,由于各行各业的信息化、智能化建设越来越普及,整个社会对各个行业的办事效率的要求也越来越高。从进门开始就要求井序有然,排队成了最好的解决方法。此设计是基于单片机设计的排队叫号系统,主要是采用按键控制取号、按键叫号、LCD显示并播报语音。其中设计通过两块单片机实现,一块作为客户机供客户按键取号,一块作为服务机供服务人员按键叫号,两块机子间采用串口通信实现数据通讯,服务机并兼有语音播报号码功能,语音播报采用集成SX6288A中文语音合成模块,显示采用LCD1602A。关键词:单片机 串口通信 语音模块 LCD Abstract With the development of electronic technology, because people from all walks of life is becoming more and more popular and intelligence information construction, the whole society to various industries to handle affairs the efficiency requirements more and more is also high. From the door began to require well sequence have however. Queuing became the best solution. This design is based on single chip computer design of queuing system, mainly is the key control take number, button your turn, LCD display and the speech. The design through two pieces of single chip microcomputer, one as a client for customers to take number keys, a piece of as a service to the machine for service personnel button your turn, serial communication be used to realization data communication between of two pieces of machine, service machine and with speech broadcast number function. Voice broadcast is integration SX6288A Chinese speech synthesis module, display using LCD1602A.Keyword: MCU Serial communication voice module LCD1602 前言 由于社会中的不同行业的服务业大规模扩大,在一些办事大厅如银行、电信、医院等公共服务场所,客户办理业务排长队的现象比较普遍,长时间的站立、拥挤,不仅使客户感到疲惫不堪,而且排队秩序也很难保持,既影响了办事效率,也容易使客户产生不满情绪。排队管理系统是为改善办事大厅传统管理所存在的一些混乱、无序等弊端而开发的。为了避免服务中的不良行为、提高服务质量效益、智能化排队管理,排队叫号系统起到了重要作用。目前已能排队系统能很好地解决客户在办理业务中所遇到的排队、等候、拥挤和混乱等现象,真正创造舒适、公平、友好的等候环境;也能对客户情况及职员的工作状况做出各种统计,为管理层决策提供依据。早期的排队是靠人员现场维护,很容易出现排队混乱的情况,容易产生事情纠纷,且工作效率不高,机动性较差,从自觉性而言,更容易使人投机取巧、乱排乱插队。排队系统的诞生很好的解决了该情况。该设计基于集成度较高的单片机排队叫号系统,其整体体积较小,方便随处随地安装使用。其还具有功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。适用于小型场所,可以制作成小型模块,随处安装使用。同时也解决了成本过高,致使很多场所混乱。其主要功能实现按键取号、按键叫号、LCD显示和语音播报。整体实现智能管理排队功能。 正文一、总体方案设计 题目:基于单片机的排队叫号系统设计 针对题目提出方案:系统由两块单片机作为基础核心(一号和二号),使用按键、显示、语音播报作为辅助,完善功能。 方案一:单片机使用I/O口作为按键输入端,通过检测按键是否按下,使一号单片机加1,LCD显示有所取号码和等待人数,同时把数据传给二号单片机;通过检测按键是否按下,使二号单片机减1,LCD显示所叫号码和窗口,通过语音芯片播报显示的字符,同时把数据传给一号单片机,一号单片机进行加减计算,在进行显示。LCD使用19264F,该LCD带有汉字库,使用方便,但成本过高,程序处理困难;语音芯片为XF-S3111,该芯片集成高,功能完善。方案二:改变方案一的LCD使用型号LCD1602A,该LCD使用简单,可显示简单字符,程序处理简单化。缺点为不能三行以上显示,且只有字符、图像简单显示。 方案三:改变使用方案二,改XF-S3111为集成SX6288A中文语音合成模块,该模块SX6288A 具有音质好、自然度高、使用方法简单、合成速度快、价格低等特点,引脚定义明确,输出端可以直接驱动0.5W 以下的喇叭。综上所有方案,本着简单、可行、成本低、使用方便设计原则,最终确定使用综合方案一、二的方案三。方案三使用单片机I/O口作为按键输入、LCD驱动、语音播报,并使用串口通信,由于二号单片机串口不够用,可以使用I/O口作为模拟串口进行通信。模块属于插针式接触,大大减少了接线错误问题。其方案中使用I/O口模拟串口通信,经多翻资料查找,可行且有程序实现其功能。LCD1602A由于做过实训,并对其有了一定的了解和掌握了一般使用方法,二、系统硬件电路设计根据电路要求,可以知道电路由按键检测、单片机通信、LCD显示、语音模块驱动、喇叭驱动组成。单片机介绍:单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。一个单片机的系统是由以下几部分组成:(1)一个8位CPU微处理器。(2)静态随机存取存储器,能够储存程序运行过程中产生的数据。(3)程序存储器ROM / EPROM中(4KB/8KB),用来保存程序和一些初始数据。但是在一些单片机中不使用ROM / EPROM中,如8031,8032,80c系列等。(4)4个8排的I / O并行接口P0 P3,每个口可以用作输入,也可以用作输出。(5)2个定时器/计数器,每个定时器/计数器可设置计数用来计数外部事件,可以设置成常用的定时方式,并可以根据计算或结果控制单片机的运行。(6)五个中断源控制系统。(7)1个双向串行I / O口的UART(通用异步接收器/发送器UART),用于实现单片机的串行通信。(8)振荡器和时钟产生电路,需要外部电源的石英晶体微调电路,允许接在12M的振荡频率上。1、单元电路设计1.0、单片机电路1.0.0、最小系统电路图:1.0.1、单片机工作指示电路该显示可以通过软件控制,观察D2的状态,判断单片机是否正常工作。 1.1、按键检测: 1.1.0、按键检测原理: 按键采用P0.0口,P0口作为输入口时,一定要接上拉电阻,电阻采用4.7K,使得P0口始终保持高电平,以免出现软件上不可实现高电平的错误。 当按键没有按下时,P0.0为高电平,把P0.0置为高电平,P0.0口没有信号变化,P0.0始终保持为“1”;当按下按键时,P0.0口接地变为低电平,P0.0口有电平变化,P0.0变为“0”。 1.1.1、按键检测电路图:1.2、单片机通信: 1.2.0、单片机和单片机通信 单片机和单片机之间使用同波特率串口通信,其引脚是P3.0P3.1、P3.1P3.0;共接一个地,这样便于单片机之间的数据交换,快捷、控制方便。1.2.1、单片机与语音模块通信单片机和语音芯片通信采用串口通信,由于二号单片机串口已经使用,采用P2.5P2.7模拟串口通信方式。同样应使用同波特率,且晶振为11.0592Mhz。1.3、LCD显示电路1.3.0、LCD1602引脚介绍 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第1516脚:空脚(接上可以最为调节显示屏对比度,以达到最佳效果)。 1.3.1、LCD1602指令介绍它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 (有些模块是 DL:高电平时为8位总线,低电平时为4位总线)。 指令7:字符发生器RAM地址设置 。指令8:DDRAM地址设置 。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 。1.3.2、LCD电路接线图1.4、语音模块1.4.0、语音模块介绍 设计中使用SX6228A中文语音合成模块,其功能特点有: 、支持GB2312、GBK、BIG5 和UNICODE 内码格式的文本; 、清晰、自然、准确的中文语音合成效果,文本处理速度超快; 、具备很强的多音字处理能力; 、音量可调,播放文本的前景音量和播放背景音乐的背景音量可分开控制 、客户可根据需求选用不同容量的数据库芯片: 可控制成本、可定制预录音、可实现各种不同人声,如青年女声、青年男声、女童声等等; 、片内高精度振荡器,不需要外接晶振; 每次合成的文本量最多可达250 字节,且具有工作状态检测引脚,实现连续无间隔的语音合成; 、采用TSSOP20 贴片封装,体积较小!1.4.1、功能结构图最小系统包括:控制器模块、SX6288A 语音合成芯片、数据库芯片spiflash、功放模块和喇叭。主控制器和SX6288A 之间通过UART 接口连接,控制器可通过通讯接口向SX6288A 发送控制命令和文本,SX6288A 把接收到的文本转化为语音信号输出,输出的信号经功率放大器进行放大后连接到喇叭进行播放。1.4.2、引脚定义1.4.3、编程指令命令说明示例<G> GBK 编码合成<G>思修电子语音合成<B> BIG5 编码合成<B>思修電子語音合成<U> UNICODE 编码合成<U>思修电子语音合成<C>取消合成<C><N>朗读模式,上电默认为00 单字模式1 自然优化模式<N>0<N>1<V>文本音量,上电默认为8范围0-80 无声1 第一级2 第二级8 第八级(最大声)<V>8<V>7<W>无文本时的背景音乐音量,上电默认为8级别同上<W>8<W>7<X>有文本时的背景音乐音量,上电默认为4级别同上<X>8<X>7<M>选择背景音乐范围1-99<M>0<M>11.4.4、SX6228A电路图直接驱动0.5W8欧喇叭电路:驱动大功率喇叭(对于SX6228A不能直接驱动的):放大电路使用NPN型三极管放大,且在BE间并联了RC电路。其中三极管起到单独放大作用,R作为反馈电阻,C作为相位补偿,保持信号无差别工作。三、 系统软件设计1、按键检测部分程序 p0_1=1; /置P2.0为高单片机工作指示灯 while(1) /等待display(count,count1,count2); /调用显示可做延时if(key1=0) /判断按键是否按下 Delayms(1); /调用延时 while(key1=0); /判断按键是否真的按下key1=P00=1; /置按键为高(可舍去) count+; /客户取号号码自加1 z1+; /等待人数自加1 n=z1; /通过n传递给显示函数 if(count>9) /设置取号号码最大值 count=1; /从新初始化取号值 display(count,count1,count2); SBUF=z1; /按键中发送数据 while(TI=0); /等待数据发送完成 TI=0; /标志位清零ShowString(0,0,"your number is:"); /第一行第一位显示字符串ShowString(0,1,"waiting have:"); /第二行第一位显示字符2、LCD显示部分程序void Write_LCD_Command(uchar cmd) /检测LCD忙函数 while(Busy_Check()&0x80)=0x80); /0x80表示液晶繁忙RS = 0;RW = 0;EN = 0;P1 = cmd;EN = 1;Delayms(1);EN = 0; /对LCD写数据void Write_LCD_Data(uchar dat) while(Busy_Check()&0x80)=0x80); /0x80表示液晶繁忙RS = 1;RW = 0;EN = 0;P1 = dat; /从P1口发送数据到LCDEN = 1;Delayms(1);EN = 0;/液晶初始化void Initialize_LCD() Write_LCD_Command(0x38); /功能设定指令:8位,2行,5*7点阵Delayms(1);Write_LCD_Command(0x01); /清屏指令Delayms(1);Write_LCD_Command(0x06); /地址指针加1,且光标加1,整屏显示不移动Delayms(1);Write_LCD_Command(0x0c); /显示器开,显示DDRAM中内容,显示光标,光标不闪烁Delayms(1);/输出字符串(列数,行数,字符串数据)void ShowString(uchar x,uchar y,uchar *str) uchar i = 0;if(y = 0) /第一行行数判断Write_LCD_Command(0x80 | x);if(y = 1) /第二行行数判断Write_LCD_Command(0xc0 | x);while (stri!='0') /整行显示 Write_LCD_Data(stri);i+;if (i+x)>16) break;/只显示一个字母void ShowChar(uchar x,uchar y,uchar cha)if(y = 0)Write_LCD_Command(0x80 | x);if(y = 1)Write_LCD_Command(0xc0 | x); Write_LCD_Data(cha); void display(uint count,uint count1,uint count2)uchar w,q,k;count1=n%10; /整数分离,取个位count2=n/10; /整数分离,取十位 w=count%10+0x30; /整数转换,变换为十六进制 q=count1%10+0x30; k=count2%10+0x30; ShowChar(15,0,w);_nop_(); /第一行第15位显示w ShowChar(15,1,q);_nop_(); ShowChar(14,1,k);_nop_();3、单片机通信部分程序3.0、双机通信两个单片都有发送、接收。发送: EA=1; ES=1; SCON=0x50; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1;while(1)display(count,count1,count2);if(key1=0) Delayms(1); while(key1=0);key1=P00=1; display(count,count1,count2); SBUF=z1; /发送数据 while(TI=0); /等待接收完成 TI=0; /标志位置零接收: void serial() interrupt 4 int n1;RI=0; /标志位置零z=SBUF; /接收数据n1=n1-z;display(count,count1,count2);3.1、单片机对SX6228A通信通信属于模拟串口通信,程序如下:sbit newTXD=P23; /定义串口发送引脚void UartInit() /初始化串口SCON=0X05; TMOD|=0X21; PCON|=0X80; TH0=0XFE; TL0=0X7F;void WaitTF0(void) /标志位判断 while(!TF0); TF0=0; /重装数值 TH0=0XFE; TL0=0X7F;void WByte(uchar input) /发送数据函数 uchar j=8; TR0=1; newTXD=(bit)0; /发送起始位 WaitTF0(); while(j-) newTXD=(bit)(input&0x01); /先传低位 WaitTF0(); input=input>>1; newTXD=(bit)1; /发送结束位 WaitTF0(); TR0=0;void Sendata() /发送数据for(i=0;i<sizeof(info);i+) /外层循环,遍历数组 WByte(infoi);void main()UartInit(); /调用初始函数while(1) /循环if(key1=0) /按键检测 while(key1=0); Sendata(); /按键按下发送数据四、 调试过程调试过程是通过分块调试,分为单片机LCD、双机LCD、单片机SX6228A和整体调试四个步骤。1、 单片机LCD调试调试中出现LCD没有显示,只是显示的背光灯亮着,经测试单片机不工作,通过检查发现单片机的最小系统出错,错把P0.7作为EA脚焊接,经改正,LCD正常显示。加载程序后发现显示会出现乱码,后查出由于显示调用问题,在主程序