排队叫号机的实现目录1.引言 (1)2.系统功能分析及设计要求 (2)3.系统框图 (4)4.主要应用器件及技术原理 (6)4.1 微处理器介绍 (6)4.1.1、MCS-51单片机的特点 (6)4.1 2、MCS-51 单片机的结构 (6)4.2液晶LCD1602的介绍 (7)4.2.1 字符型液晶显示器的显示原理 (7)4.2.2 液晶LCD1602的简介 (8)5.系统硬件电路设计 (11)5.1晶振电路 (12)5.2液晶显示电路 (13)5.3声音提示电路 (14)6.系统测试 (16)7.系统软件设计 (15)7.1系统软件流程图........................................................... 错误!未定义书签。
7.2系统程序设计............................................................... 错误!未定义书签。
7.2.1 主程序............................................................... 错误!未定义书签。
7.2.2 液晶LCD1602显示处理程序...................... 错误!未定义书签。
7.2.3 按键检测程序...........................................................................错误!未定义书签。
8.结束语 (19)9.致谢辞.................................................................................. 错误!未定义书签。
10.参考文献............................................................................ 错误!未定义书签。
排队叫号系统设计1.引言近年来,随着科学技术的迅猛发展和人们生活水平的日益提高,各行各业特别是服务行业的竞争也逐渐激烈。
服务质量作为体现企业的公众形象、服务理念、管理水平的标准已越来越受到服务和被服务双方所关注,而营业窗口正是代表银行、医院、电信、税务、工商等企业服务质量的重要场所。
随着服务行业业务量的增长及业务种类的增加,排队等候已成为人们面临的实际问题。
长期以来,人们在银行、医院、电信、税务、工商等营业大厅里前拥后挤、杂乱无章地排队等候,有时一站就是一个多小时,这已是司空见惯的现象,极大地影响了服务质量。
员工坐着服务、客户站着等待的服务方式与“用户就是上帝”的服务宗旨完全背道而驰!改善服务质量、树立良好形象,解决劳累的排队现象、创造人性化服务环境已成为急需解决的问题。
设计一套排队抽号的服务系统,可以很好的解决因排队引起的种种问题,排队系统应运而生。
此系统完全模拟人群排队过程,通过取票进队、排队等待、叫号服务等功能,诠释了人性化的服务理念,舒缓顾客等待的急噪情绪,使人们在等候服务的过程中拥有一个相对自由的空间,是科技以人为本的真正体现。
本文基于单片机的排队叫号系统,由客户端和主机终端组成,有LCD大屏幕显示信息,让客户知道自己的队号,并有叫号提示音提醒客户,方便快捷,可以满足日常的服务行业排队叫号,所以非常有意义。
2.系统功能分析及设计要求一个很好的叫号系统,它的功能设计首先要符合用户的习惯,同时操作方便,易学,易用。
本系统由键盘输入系统、单片机系统、屏幕显示系统及叫号提示音系统组成,系统分为两个部分:抽号部分和叫号部分,其控制核心为AT89C51单片机,选用此单片机编程简单,开发工具便于使用,能满足很好的满足排队抽号的控制数据处理。
抽号部分和叫号部分采用一块LCD液晶显示器,这样显示数据直观,便于客户理解,抽号部分输入只需使用一个抽号按键即可,便于客户操作,叫号部分包括叫两个号键,系统采用自动清零,无需人工操作3.系统框图设备上电后,显示器屏幕亮,无信息显示。
当客户按键后,每按一下,队伍加1,显示器显示客户队伍号;排满20位后,再按取号键,屏幕显示“队伍满”。
当客服叫号时,队伍减1,程序进行信息处理,在显示器上显示“几号客户到几号窗口”,同时进行声音提示;当队伍空时,显示“队伍空”,显示器屏幕清空,储存的队伍号码归零处理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单片机的结构4.2液晶LCD1602的介绍4.2.1 字符型液晶显示器的显示原理用LCD显示一个字符时比较复杂,因为一个字符由6x8或8x8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8个字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。
这样一来就组成某个字符。
但对于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立游标,在此送上该字符对应的代码即可。
4.2.2 液晶LCD1602的简介5.系统硬件电路设计系统Proteus仿真图:图中主要以AT89C51为控制核心,包括显示电路,音乐提示电路,晶振电路。
图5.1 电路仿真5.1晶振电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为回馈组件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容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的显示的。
图5.3液晶显示电路5.3声音提示电路使用最简单的蜂鸣器来作为提示音部分,通过改变端口高低电平来进行发声,并对延时进行修改来调试发声频率,从而修改发出的声音的好坏图5.4声音提示电路图6.系统仿真仿真是在软件Proteus 7.4上进行的,用C语言编写的程序,通过keil生成了hex文件,经过调试,仿真实现了排队叫号系统的功能客户取号图按下客户端取号按键,屏幕显示“Your No.is 03!”图6.1 客户端显示窗口叫号图按下窗口服务叫号按键一,屏幕显示“No.03 Come to No.1 window, please”图6.2 窗口服务叫号显示7.系统软件设计7.1系统软件流程图7.2系统程序设计7.2.1 主程序设备上电后,显示器屏幕亮,无信息显示。
当客户按键后,每按一下,队伍加1,显示器显示客户队伍号;排满20位后,再按取号键,屏幕显示“队伍满”。
当客服叫号时,队伍减1,程序进行信息处理,在显示器上显示“几号客户到几号窗口”,同时进行声音提示;当队伍空时,显示“队伍空”,显示器屏幕清空,储存的队伍号码归零处理。
#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit rs=P2^0;sbit rw=P2^1;sbit e=P2^2;sbit key1=P1^0;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;}/*****************************************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(0x01);delay(1000);}/*****************************************LCD1602 显示屏初始化函数*****************************************/void LCD_init(void){LCD_write_com(0x38); /*显示模式设置*/delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);delay(100);LCD_write_com(0x38);LCD_write_com(0x08); /*显示关闭*/LCD_write_com(0x01); /*显示清屏*/LCD_write_com(0x06); /*显示光标移动设置*/ delay(100);LCD_write_com(0x0C); /*显示开及光标设置*/ }/*简单的蜂鸣器提示音*/void sound(){ uint a;for(a=0;a<500;a++){。