基于AT89C51单片机的排队叫号系统设计.doc_第1页
基于AT89C51单片机的排队叫号系统设计.doc_第2页
基于AT89C51单片机的排队叫号系统设计.doc_第3页
基于AT89C51单片机的排队叫号系统设计.doc_第4页
基于AT89C51单片机的排队叫号系统设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

B 排队叫号机的实现 目目 录录 1 引言 1 2 系统功能分析及设计要求 2 3 系统框图 2 4 主要应用器件及技术原理 2 4 1 微处理器介绍 2 4 1 1 MCS 51 单片机的特点 2 4 1 2 MCS 51 单片机的结构 3 4 2 液晶 LCD1602 的介绍 3 4 2 1 字符型液晶显示器的显示原理 3 4 2 2 液晶 LCD1602 的简介 4 5 系统硬件电路设计 8 5 1 晶振电路 8 5 2 液晶显示电路 9 5 3 声音提示电路 10 6 系统测试 11 7 系统软件设计 13 7 1 系统软件流程图 13 7 2 系统程序设计 13 7 2 1 主程序 13 7 2 2 液晶 LCD1602 显示处理程序 20 7 2 3 按键检测程序 21 8 结束语 23 9 致谢辞 24 10 参考文献 25 1 24 排队叫号系统设计排队叫号系统设计 1 1 引言引言 近年来 随着科学技术的迅猛发展和人们生活水平的日益提高 各行各业 特别是服务行业的竞争也逐渐激烈 服务质量作为体现企业的公众形象 服务 理念 管理水平的标准已越来越受到服务和被服务双方所关注 而营业窗口正 是代表银行 医院 电信 税务 工商等企业服务质量的重要场所 随着服务行业业务量的增长及业务种类的增加 排队等候已成为人们面临 的实际问题 长期以来 人们在银行 医院 电信 税务 工商等营业大厅里 前拥后挤 杂乱无章地排队等候 有时一站就是一个多小时 这已是司空见惯 的现象 极大地影响了服务质量 员工坐着服务 客户站着等待的服务方式与 用户就是上帝 的服务宗旨完全背道而驰 改善服务质量 树立良好形象 解决劳累的排队现象 创造人性化服务环境已成为急需解决的问题 设计一套 排队抽号的服务系统 可以很好的解决因排队引起的种种问题 排队系统应运 而生 此系统完全模拟人群排队过程 通过取票进队 排队等待 叫号服务等功 能 诠释了人性化的服务理念 舒缓顾客等待的急噪情绪 使人们在等候服务 的过程中拥有一个相对自由的空间 是科技以人为本的真正体现 本文基于单片机的排队叫号系统 由客户端和主机终端组成 有LCD大屏幕 显示信息 让客户知道自己的队号 并有叫号提示音提醒客户 方便快捷 可 以满足日常的服务行业排队叫号 所以非常有意义 2 24 2 系统功能分析及设计要求 一个很好的叫号系统 它的功能设计首先要符合用户的习惯 同时操作方 便 易学 易用 本系统由键盘输入系统 单片机系统 屏幕显示系统及叫号 提示音系统组成 系统分为两个部分 抽号部分和叫号部分 其控制核心为 AT89C51 单片机 选用此单片机编程简单 开发工具便于使用 能满足很好的满足排队抽号的控制数据处理 抽号部分和叫号部分采用一块 LCD 液晶显示器 这样显示数据直观 便于 客户理解 抽号部分输入只需使用一个抽号按键即可 便于客户操作 叫号部 分包括叫两个号键 系统采用自动清零 无需人工操作 3 24 3 系统框图 设备上电后 显示器屏幕亮 无信息显示 当客户按键后 每按一下 队 伍加 1 显示器显示客户队伍号 排满 20 位后 再按取号键 屏幕显示 队伍 满 当客服叫号时 队伍减 1 程序进行信息处理 在显示器上显示 几号客 户到几号窗口 同时进行声音提示 当队伍空时 显示 队伍空 显示器屏 幕清空 储存的队伍号码归零处理 1602 液晶显示液晶显示 AT89C51 单片机单片机 叫号提示音叫号提示音 终端窗口叫终端窗口叫 号号 客户端客户端 取号取号 4 24 4 主要应用器件及技术原理 4 1 微处理器介绍 4 1 1 MCS 51 单片机的特点 1 小巧灵活 成本低 易于产品化 能组装成各种智慧式测控设备 及智能仪器仪表 2 可靠性好 应用范围广 单片机芯片本身是按工业 测控环境要求设计的 抗干扰性强 能适应各种恶劣的环境 这是其它机 种无法比拟的 3 易扩展 很容易构成各种规模的应用系统 控制功能强 单片机 的逻辑控制功能很强 指令系统有各种控制功能指令 可以对逻辑功能比 较复杂的系统进行控制 4 具有通讯功能 可以很方便地实现多机和分布式控制 形成控制 网络和远程控制 正是由于 51 系列单片机具有以上优点 所以成为本次毕业设计所选用 的处理器 4 1 2 MCS 51 单片机的结构 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器 FPEROM Falsh Programmable and Erasable Read Only Memory 的低电压 高性 能 CMOS8 位微处理器 俗称单片机 单片机的可擦除只读存储器可以反复 擦除 100 次 从工作原理上讲 单片机就是一种微型计算机 是一种 程 序存储式 计算机 它是在一块硅片上集成了中央处理器 CPU 随机内 存 RAM 程序内存 ROM 或 EPROM 定时 计数器以及各种 I O 接口 也就是集成在一块芯片上的计算机 图 4 1 MCS 51 单片机的结构 5 24 4 2 液晶 LCD1602 的介绍 4 2 1 字符型液晶显示器的显示原理 用 LCD 显示一个字符时比较复杂 因为一个字符由 6x8 或 8x8 点阵组成 既要找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 个字节 还要使每 字节的不同位为 1 其它的为 0 为 1 的点亮 为 0 的不亮 这样 一来就组成某个字符 但对于内带字符发生器的控制器来说 显示字符就比较 简单了 可以让控制器工作在文本方式 根据在 LCD 上开始显示的行列号及每 行的列数找出显示 RAM 对应的地址 设立游标 在此送上该字符对应的代码 即可 4 2 2 液晶 LCD1602 的简介 6 24 7 24 8 24 5 5 系统硬件电路设计系统硬件电路设计 系统 Proteus 仿真图 图中主要以 AT89C51 为控制核心 包括显示电路 音乐提 示电路 晶振电路 图 5 1 电路仿真 5 1 晶振电路 AT89C51 中有一个用于构成内部振荡器的高增益反相放大器 引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端 这个放大器与作为回馈组件的片 9 24 外石英晶体或陶瓷谐振器一起构成自激振荡器 外接石英晶体 或陶瓷谐振器 及电容 C1 C2 接在放大器的反馈回路中构 成并联振荡电路 对外接电容 C1 C2 虽然没有十分严格的要求 但是电容容量 的大小会轻微影响振荡频率的高低 振荡器工作的稳定性 起振的难易程序及 温度稳定性 如果使用石英晶体 我们推荐电容使用 30pF 10pF 而如果使用 陶瓷谐振器建议选用 40pF 10pF 使用外部振荡器时 外部振荡信号应直接加到 XTAL1 而 XTAL2 悬空 内 部方式时 时钟发生器对振荡脉冲二分频 如晶振为 12MHz 时钟频率就为 6MHz 晶振的频率可以在 1MHz 24MHz 内选择 电容取 30PF 左右 本系统采用 内部方式 晶振选用 12MHz 图 5 2 晶体内部方式 5 2 液晶显示电路 如下图 5 3 P1 口接 LCD1602 的 8 个双向数据线接口 P3 4 接 1602 的数 据 命令选择端 P3 5 接 1602 的读 写选择端 P3 6 接 1602 的使能信号 BLA BLK 分别是 1602 的背光源的正负极 VL 是 1602 对比度调整端 本文 是通过对 RS RW 以及 E 的高低电平进行写指令和写数据操作来控制 1602 的 显示的 10 24 图 5 3 液晶显示电路 5 3 声音提示电路 使用最简单的蜂鸣器来作为提示音部 分 通过改变端口高低电平来进行发声 并对 延时进行修改来调试发声频率 从而修改发 出的声音的好坏 图 5 4 声音提示电路图 11 24 6 系统仿真 仿真是在软件 Proteus 7 4 上进行的 用 C 语言编写的程序 通过 keil 生成了 hex 文件 经过调试 仿真实现了排队叫号系统的功能 客户取号图 按下客户端取号按键 屏幕显示 Your No is 03 图 6 1 客户端显示 12 24 窗口叫号图 按下窗口服务叫号按键一 屏幕显示 No 03 Come to No 1 window please 图 6 2 窗口服务叫号显示 13 24 7 7 系统软件设计 系统软件设计 7 1 系统软件流程图 开始开始 初始化初始化 客户取号客户取号 队伍号码累加队伍号码累加 1602 显示信息显示信息 窗口消号窗口消号 队伍号码递减队伍号码递减 信息处理信息处理 队伍空显示器 初始化 清零 结束结束 声音提示声音提示 7 2 系统程序设计 7 2 1 主程序 设备上电后 显示器屏幕亮 无信息显示 当客户按键后 每按一下 队 伍加 1 显示器显示客户队伍号 排满 20 位后 再按取号键 屏幕显示 队伍 满 当客服叫号时 队伍减 1 程序进行信息处理 在显示器上显示 几号客 户到几号窗口 同时进行声音提示 当队伍空时 显示 队伍空 显示器屏 幕清空 储存的队伍号码归零处理 include define uchar unsigned char define uint unsigned int sbit rs P2 0 sbit rw P2 1 sbit e P2 2 sbit key1 P1 0 14 24 sbit key2 P1 1 sbit key3 P1 2 sbit sounder P3 7 uchar prompt1 Your No is 00 uchar prompt2 No 00 Go To Win 0 uchar prompt3 Queue is full uchar prompt4 Queue is empty uint num count 0 排队叫的号码 uint rank number 20 0 排队叫号存储的数组 uint num 0 窗口消的号码 int RankFlag 0 叫号的标志 int ClearNumFlag 0 消号的标志 uint LengthFlag 0 队列长度 叫一次号时 1 消一次号时 1 延时函数 void delay uint n while n LCD1602 显示屏命令写入函数 void LCD write com uchar com e 0 rs 0 rw 0 P0 com delay 1000 e 1 delay 1000 e 0 15 24 LCD1602 显示屏数据写入函数 void LCD write data uchar dat e 0 rs 1 rw 0 P0 dat delay 1000 e 1 delay 1000 e 0 LCD1602 显示屏清空显示 void LCD clear void LCD write com 0 x01 delay 1000 LCD1602 显示屏初始化函数 void LCD init void LCD write com 0 x38 显示模式设置 delay 100 LCD write com 0 x38 delay 100 LCD write com 0 x38 delay 100 LCD write com 0 x38 LCD write com 0 x08 显示关闭 LCD write com 0 x01 显示清屏 16 24 LCD write com 0 x06 显示光标移动设置 delay 100 LCD write com 0 x0C 显示开及光标设置 简单的蜂鸣器提示音 void sound uint a for a 0 a 500 a sounder 0 delay 61 sounder 1 获取键值函数 uint sweep key uint jianzhi if key1 0 delay 1000 if key1 0 jianzhi 1 RankFlag 1 if key2 0 key3 0 delay 1000 if key2 0 jianzhi 2 if key3 0 jianzhi 3 ClearNumFlag 1 return jianzhi 17 24 叫号机 按一次一号键变量 1 最大为 20 void QueueNumProcess if RankFlag 1 判断叫号标志是否有效 if LengthFlag 20 num count rank number LengthFlag num count LengthFlag 窗口消号处理函数 void ClearNumProcess uint i if ClearNumFlag 1 判断消号标志是否有效 num rank number 0 把消的号赋给全局变量 num for i 0 i 20 LCD clear LCD write com 0 x80 0 x02 delay 100 for i 0 i 16 i LCD write data prompt3 i delay 100 else QueueNumProcess prompt1 11 num count 10 0 prompt1 12 num count 10 0 LCD clear LCD write com 0 x80 02 delay 100 for i 0 i 15 i LCD write data prompt1 i Your No is 00 delay 100 RankFlag 0 19 24 if jz 2 jz 3 LCD write com 0 x80 0 delay 1000 for i 0 i 16 i LCD write data prompt4 i Queue is empty delay 100 delay 65535 无人排队时屏幕自动清屏 计数归零 LCD clear num count 0 else ClearNumProcess 消号处理 营业员操作 sound prompt2 3 num 10 0 prompt2 4 num 10 0 prompt2 15 jz 1 0 LCD clear LCD write com 0 x80 0 delay 100 for i 0 i 16 i LCD write data prompt2 i No 00 come to No 0 delay 100 ClearNumFlag 0 20 24 main 函数 void main uint Kvalue LCD init while 1 Kvalue sweep key 获取键值 if RankFlag 1 ClearNumFlag 1 判断叫号标志和消号标志是否有效 CheckButtonProcess Kvalue delay 200 RankFlag 0 使叫号标志无效 ClearNumFlag 0 使消号标志无效 Kvalue 0 键值清 0 7 2 2 液晶 LCD1602 显示处理程序 LCD1602 显示屏命令写入函数 void LCD write com uchar com e 0 rs 0 rw 0 P0 com delay 1000 e 1 delay 1000 e 0 LCD1602 显示屏数据写入函数 void LCD write data uchar dat 21 24 e 0 rs 1 rw 0 P0 dat d

温馨提示

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

评论

0/150

提交评论