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

下载本文档

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

文档简介

1、 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

2、系统软件设计.- 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.引言引言近年来,随着科学技术的迅猛发展和人们生活水平的日益提高,各行各业特别是服务行业的竞争也逐渐激烈。服务质量作为体现企业的公众形象、服务理念、管理水平的标准已越来越受到服务和被服务双方所关注,而营业窗口正是代表银行、医院、电信、税务、工商

3、等企业服务质量的重要场所。随着服务行业业务量的增长及业务种类的增加,排队等候已成为人们面临的实际问题。长期以来,人们在银行、医院、电信、税务、工商等营业大厅里前拥后挤、杂乱无章地排队等候, 有时一站就是一个多小时,这已是司空见惯的现象,极大地影响了服务质量。员工坐着服务、客户站着等待的服务方式与“用户就是上帝” 的服务宗旨完全背道而驰!改善服务质量、树立良好形象,解决劳累的排队现象、创造人性化服务环境已成为急需解决的问题。设计一套排队抽号的服务系统,可以很好的解决因排队引起的种种问题,排队系统应运而生。此系统完全模拟人群排队过程,通过取票进队、排队等待、叫号服务等功能,诠释了人性化的服务理念,

4、舒缓顾客等待的急噪情绪,使人们在等候服务的过程中拥有一个相对自由的空间,是科技以人为本的真正体现。本文基于单片机的排队叫号系统,由客户端和主机终端组成,有LCD大屏幕显示信息,让客户知道自己的队号,并有叫号提示音提醒客户,方便快捷,可以满足日常的服务行业排队叫号,所以非常有意义。 2 / 242.系统功能分析及设计要求一个很好的叫号系统,它的功能设计首先要符合用户的习惯,同时操作方便,易学,易用。本系统由键盘输入系统、单片机系统、屏幕显示系统及叫号提示音系统组成,系统分为两个部分:抽号部分和叫号部分,其控制核心为AT89C51 单片机,选用此单片机编程简单,开发工具便于使用,能满足很好的满足排

5、队抽号的控制数据处理。抽号部分和叫号部分采用一块 LCD 液晶显示器,这样显示数据直观,便于客户理解,抽号部分输入只需使用一个抽号按键即可,便于客户操作,叫号部分包括叫两个号键,系统采用自动清零,无需人工操作 3 / 243.系统框图设备上电后,显示器屏幕亮,无信息显示。当客户按键后,每按一下,队伍加 1,显示器显示客户队伍号;排满 20 位后,再按取号键,屏幕显示“队伍满” 。当客服叫号时,队伍减 1,程序进行信息处理,在显示器上显示“几号客户到几号窗口” ,同时进行声音提示;当队伍空时,显示“队伍空” ,显示器屏幕清空,储存的队伍号码归零处理1602 液晶显示液晶显示 AT89C51单片机

6、单片机叫号提示音叫号提示音终端窗口叫终端窗口叫号号客户端客户端取号取号 4 / 244.主要应用器件及技术原理4.1 微处理器介绍4.1.1、MCS-51 单片机的特点:(1)小巧灵活、成本低、易于产品化。能组装成各种智慧式测控设备及智能仪器仪表。(2)可靠性好,应用范围广。单片机芯片本身是按工业测控环境要求设计的,抗干扰性强,能适应各种恶劣的环境,这是其它机种无法比拟的。(3)易扩展,很容易构成各种规模的应用系统,控制功能强。单片机的逻辑控制功能很强,指令系统有各种控制功能指令,可以对逻辑功能比较复杂的系统进行控制。(4)具有通讯功能,可以很方便地实现多机和分布式控制,形成控制网络和远程控制

7、。正是由于 51 系列单片机具有以上优点,所以成为本次毕业设计所选用的处理器。4.1 2、MCS-51 单片机的结构AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能 CMOS8 位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除 100 次。从工作原理上讲,单片机就是一种微型计算机,是一种“程序存储式”计算机。它是在一块硅片上集成了中央处理器(CPU)、随机内存(RAM)、程序内存(ROM 或 EPROM)、定时/计数器以及各种 I/O 接口,

8、也就是集成在一块芯片上的计算机。图 4.1 MCS-51 单片机的结构 5 / 244.2 液晶 LCD1602 的介绍4.2.1 字符型液晶显示器的显示原理用 LCD 显示一个字符时比较复杂,因为一个字符由 6x8 或 8x8 点阵组成,既要找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 个字节,还要使每字节的不同位为“1” ,其它的为“0” ,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但对于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立游标,在此送上该字符对

9、应的代码即可。4.2.2 液晶 LCD1602 的简介 6 / 24 7 / 24 8 / 245.5.系统硬件电路设计系统硬件电路设计系统 Proteus 仿真图:图中主要以 AT89C51 为控制核心,包括显示电路,音乐提示电路,晶振电路。 图 5.1 电路仿真5.1 晶振电路AT89C51 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1和 XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为回馈组件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。 9 / 24外接石英晶体(或陶瓷谐振器)及电容 C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1、C

10、2 虽然没有十分严格的要求,但是电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用 30pF10pF,而如果使用陶瓷谐振器建议选用 40pF10pF。使用外部振荡器时,外部振荡信号应直接加到 XTAL1,而 XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为 12MHz,时钟频率就为6MHz。晶振的频率可以在 1MHz-24MHz 内选择。电容取 30PF 左右。本系统采用内部方式,晶振选用 12MHz。图 5.2 晶体内部方式5.2 液晶显示电路如下图 5.3,P1 口接 LCD1602 的 8 个双向数

11、据线接口,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 / 246系统仿真仿真是在软件 Proteus 7.4 上进行的

12、,用 C 语言编写的程序,通过 keil 生成了hex 文件,经过调试,仿真实现了排队叫号系统的功能客户取号图按下客户端取号按键,屏幕显示“Your No.is 03!” 图 6.1 客户端显示 12 / 24窗口叫号图按下窗口服务叫号按键一,屏幕显示“No.03 Come to No.1 window, please”图 6.2 窗口服务叫号显示 13 / 247 7系统软件设计系统软件设计7.1 系统软件流程图开始开始初始化初始化客户取号客户取号队伍号码累加队伍号码累加1602 显示信息显示信息窗口消号窗口消号队伍号码递减队伍号码递减信息处理信息处理队伍空显示器初始化、清零结束结束 声音提

13、示声音提示7.2 系统程序设计7.2.1 主程序设备上电后,显示器屏幕亮,无信息显示。当客户按键后,每按一下,队伍加 1,显示器显示客户队伍号;排满 20 位后,再按取号键,屏幕显示“队伍满” 。当客服叫号时,队伍减 1,程序进行信息处理,在显示器上显示“几号客户到几号窗口” ,同时进行声音提示;当队伍空时,显示“队伍空” ,显示器屏幕清空,储存的队伍号码归零处理。#include#define uchar unsigned char#define uint unsigned intsbit rs=P20;sbit rw=P21;sbit e=P22;sbit key1=P10; 14 / 2

14、4sbit key2=P11;sbit key3=P12;sbit sounder=P37;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_number20=0; /排队叫号存储的数组uint num=0; /窗口消的号码int RankFlag=0; /叫号的标志int ClearNumFlag=0; /消号的标志uint

15、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 / 24LCD1602 *显示屏数据写入函数*/void LCD_write_data(uchar dat) e=0; rs=1; rw=0; P0 = dat; delay(1000); e=1; delay(1

16、000); 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

17、_com(0 x01); /*显示清屏*/ 16 / 24 LCD_write_com(0 x06); /*显示光标移动设置*/ delay(100); LCD_write_com(0 x0C); /*显示开及光标设置*/*简单的蜂鸣器提示音*/void sound() uint a;for(a=0;a500;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)

18、 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 ( LengthFlag20) num_count+; rank_numberLengthFlag = num_count; LengthFlag+; /*窗口消号处理函数*/void ClearNumProcess() uint i; if (Clear

19、NumFlag=1) /判断消号标志是否有效 num=rank_number0; /把消的号赋给全局变量 num for(i=0;i=20 ) LCD_clear(); LCD_write_com(0 x80+0 x02); delay(100); for(i=0;i16;i+) LCD_write_data(prompt3i); delay(100); else QueueNumProcess(); prompt111=(num_count)/10+0; prompt112=(num_count)%10+0; LCD_clear(); LCD_write_com(0 x80+02); del

20、ay(100); for(i=0;i15;i+) LCD_write_data(prompt1i); /Your No.is 00!; delay(100); RankFlag=0; 19 / 24 if(jz=2|jz=3) & ClearNumFlag=1) if(LengthFlag=0) LCD_clear(); LCD_write_com(0 x80+0); delay(1000); for(i=0;i16;i+) LCD_write_data(prompt4i);/Queue is empty ; delay(100); delay(65535);/无人排队时屏幕自动清屏,计数归零

21、LCD_clear();num_count=0; else ClearNumProcess(); /消号处理,营业员操作 sound(); prompt23=num/10+0; prompt24=num%10+0; prompt215=(jz-1)+0;LCD_clear(); LCD_write_com(0 x80+0); delay(100); for(i=0;i16;i+) LCD_write_data(prompt2i); /No.00 come to No.0; delay(100); ClearNumFlag=0; 20 / 24/*main 函数*/void main() uin

22、t 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; delay(1000); e=1; delay(1000)

温馨提示

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

评论

0/150

提交评论