基于单片机的排队管理系统毕业论文(编辑修改稿)内容摘要:

AT89C51 芯片的各引脚功能 [11]为: P0 口:这组引脚共有 8 条, 为最低位。 这 8 个引脚有两种不同的功 能,分别适用于不同的情况,第一种情况是 89C51 不带外存储器, P0 口可以为通用I/O 口使用, 用于传送 CPU 的输入 /输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是 89C51 带片外存储器, 在 CPU 访问片外存储器时先传送片外存储器的低 8 位地址,然后传送 CPU 对片外存储器的读 /写数据。 P0 口为开漏输出,在作为通用 I/O 使用时,需要在外部用电阻上拉。 P1 口:这 8 个引脚和 P0 口的 8 个引脚类似, 为最高位, 为最低位,当 P1 口作为通用 I/O 口使用时, 的功能和 P0 口的第一功能相同,也用于传送用户的输入和输出数据。 P2 口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用 I/O 口使用,它的第一功能和 P0 口引脚的第二功能相配合,用于输出片外存储器的高 8 位地址,共同选中片外存储器单元,但并不是像 P0 口那样传送存储器的读 /写数据。 P3 口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表 21 所示: 表 21 P3口各位的第二功能 P3 口各位 第二功能 RXT(串行口输入) TXD(串行口输出) /INT0(外部中断 0 输入) /INT1(外部中断 1 输入 ) 基于单片机的排队管理系统 8 T0(定时器 /计数器 0 的外部输入) T1(定时器 /计数器 1 的外部输入) /WR(片外数据存储器写允许) /RD(片外数据存储器读允许 ) Vcc 为 +5V 电源线, Vss 接地。 ALE:地址锁存允许线,配合 P0 口的第二功能使用,在访问外部存储器时,89C51 的 CPU 在 引脚线去传送 随后而来的片外存储器读 /写数据。 在不访问片外存储器时, 89C51 自动在 ALE 线上输出频率为 1/6 震荡器频率的脉冲序列。 该脉冲序列可以作为外部时钟源或定时脉冲使用。 /EA: 片外存储器访问选择线,可以控制 89C51 使用片内 ROM 或使用片外ROM, 当 /EA=1 的时候 ,允许使用片内 ROM, 当 /EA=0 的时候 ,只使用片外ROM。 /PSEN:片外 ROM 的选通线,在访问片外 ROM 时, 89C51 自动在 /PSEN 线上产生一个负脉冲,作为片外 ROM 芯片的读选通信号。 RST:复位线,可以使 89C51 处于复位 (即初始化 )工 作状态。 通常 89C51 复位有自动上电复位和人工按键复位两种。 XTAL1 和 XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接 89C51 片内 OSC(震荡器 )的定时反馈回路。 AT89C51 提供以下标准功能: 4KB 的 Flash 闪速存储器, 128B 内部 RAM, 32个 I/O 口线,两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时, AT89C51 可降至 0Hz 静态逻辑操作,并支持两种软件可选的节电工作模式。 空闲方式停止 CPU 的工作,但允许 RAM,定时 /计数器,串行通信口及中断系统继续工作,掉电方式保存 RAM 中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。 单片机系统的相关电路 复位 电路 单片机在启动运行时都需要复位,使 CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。 MCS51 单片机有一个复位引脚 RST[11],采用施密特触发输入。 当震荡器起振后,只要该引脚上出现 2 个机器周期以上的高电平即可确保时器件复位。 复位完成后,如果 RST 端继续保持高电平, MCS51就一直处于 复位状态,只要 RST 恢复低电平后,单片机才能进入其他工作状态。 单片机的复位方式有上电自动复位和手动复位两种,图 6 是 51 系列单片机统常用的上电复位和手动复位组合电路,只要 Vcc 上升时间不超过 1ms,它们都能很好基于单片机的排队管理系统 9 的工作。 复位电路如图 24 所示。 图 24 单片机复位电路 时钟发生电路 单片机中 CPU 每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。 CPU 执行一条指令的各个微操作所对应时间顺序称为单片机的时序。 MCS51 单片机芯 片内部有一个高增益反相放大器,用于构成震荡器, XTAL1 为该放大器的输入端, XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2 个电容即可,如图 25 所示。 图 25 单片机时钟发生电路 电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路 [12]的参数,电路中,电容器 C1 和 C2 对震荡频率有微调作用,通常的取值范围是 30177。 10pF,在这个系统中选择了 33pF;石英晶振选择范围最高可选 24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是 12MHz,因而时钟信号的震荡频率为 12MHz。 显示模块 显示模块采用的是 四个 二 位 一体的数码管 ,如图 26 所示。 基于单片机的排队管理系统 10 图 26 显示模块图 LED 是发光二极管显示器的缩写。 LED 由于结构简单、价格便宜、与单片机接口方便等优点而得到广泛应用。 LED 显示器 即数码管 是由若干个发光二极管组成显示字段的显示器件。 在单片机中使用最多的是七段数码显示器。 七段数码 管 由8 个发光二极管组成显示字段,其中 7 个长条形的发光二极管排列成“日”字形,另一个圆点形的发 光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。 数码管概述 数码管 是一种半导体发光器件,其基本单元是 发光二极管。 能显示 2 个数码 管叫 四位 数码管。 数码管按段数分为 七段数码管 和八段数码管,八段数码管比七段数码管多一个发光 二极管 单元(多一个小数点显示);按发光二极管单元连接方式分为共阳极数码管和 共阴极数码管。 共阳极数码管 是指将所有发光二极管的阳极接到一起形成公共阳极 (COM)的数码管。 其 在应用时应将公共极 COM 接到 +5V,当某一字段发光二极管的阴极为低电平时,相应字段就点 亮。 当某一字段的阴极为高电平时,相应字段就不亮。 共阴极数码管 是指将所有发光二极管的阴极接到一起形成公共阴极 (COM)的数码管。 共阴极数码管 在应用时应将公共极 COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。 当某一字段的阳极为低电平时,相应字段就不亮。 原理图及引脚图 对于一位数码管对应的端名称及排列如下图所示 基于单片机的排队管理系统 11 图 27 一位数码管引脚端名 称 内部的工作原理即如下面两图所示。 每个段其实就是一个发光二极管,导通即亮。 下面的示例图都以共阳极数码管为例,共阴极数码管原理相同,只是二极管方向相反。 图 28 共阳极数码管内部电路 而 四位 数码管即相当于 4 个一位的数码管段选并联而阴极(共阴数码管)或阳极(共阳数码管),则分别作为位选端。 LED 数码管是单片机控制系统中最常见的显示器件之一,一般用来显示处理结果或输入输出信号的状态。 数码管显示是一个系统工程中必不可少的人机交互环节,因此关于数码管的驱动也就是系统工程中的一个重要的环节。 数码管的驱动分为动态驱动和静态驱动两种。 所谓静态 驱动,就是指无论多少位 LED 数码管,同时处于显示状态。 动态显示驱动是指无论在任何时刻只有一个 LED 数码管处于显示状态,及单片机采用“扫描”方式控制各个数码管轮流显示。 将数码管每个 LED 灯对应单片机的一个 I/O 口。 通过单片机的 P 口来控制LED 灯的亮和灭。 I/O 口之间互相独立,需要用 I/O 口直接控制 LED。 动态显示将数码管的每个引脚一对一连接在一起接单片机的数据,而将各个数码管的公共端单独送至单片机的 I/O 口进行片选。 此外,在此基础上,用单片机与三极管来驱动数码管,从而实现数码管的动态显示。 数 码管的译码方式 译码方式是指由显示字符转换得到对应的字段码的方式,对于 LED 数码管显示器,通常的译码方式有硬件译码和软件译码方式两种 [8]。 硬件译码是指利用专门的硬件电路来实现显示字符码的转换。 基于单片机的排队管理系统 12 软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序。 表 22 共阴极字段码表 显示字符 共阴极字段码 0 3FH 1 06H 2 5BH 3 4FH 4 66H 5 6DH 6 7DH 7 07H 8 7FH 9 6FH 本设计系统中为了简化硬件线路 设计,数码管译码采用软件编程来实现。 由于本设计采用的是共阴极数码管,其对应的字符和字段码如表 23 所示(本系统采用的是共阴极的数码管)。 数码管与单片机接口设计 由于单片机的并行口不能直接驱动 数码管 ,所以,在一般情况下,必须采用专用的驱动电路芯片 [8],使之产生足够大的电流, 数码管 才能正常工作。 如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此, 数码管 的驱动电路设计是一个非常重要的问题。 数码管的驱动通常分为两种:静态驱动和动态显示。 静态驱动也称直流驱动。 静态驱动是指每个数码管的每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二 十进制译码器译码进行驱动。 静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 58=40 根 I/O 端口来驱动,一个 89S51 单片机可用的 I/O 端口才 32 个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划 “ a,b,c,d,e,f,g,dp” [7]的同名端连在一起,另外为每个数码管的公共极 COM 增加 位选通控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个基于单片机的排队管理系统 13 数码管会显示出字形,取决于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 通过分时轮流控制各个数码管的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。 在轮流显示过程中,每位数码管的点亮时间为 1~ 2ms[7],由于人的视觉暂留现象及发光二极管的余辉效应,尽 管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 端口,而且功耗更低。 所以为了简化电路,本系统在数码管驱动电路的设计上,利用单片机 P0 口上外接的上拉电阻来实现,即将数码管的 AG 段显示引脚和 DP 小数点显示引脚并联到 P0 口与上拉电阻之间,这样,就可以加大 P0 口作为输出口的驱动能力,使得数码管能按照正常的亮度显示出数字。 整体的电路原理图设计 整体原理图如图 29 所示 [8]: 图 29 系统 总电路图 基于单片机的排队管理系统 14 第 3 章 系统软件 部分 设计 对于 单片机 控制的系统 ,软件和硬件 同样重要 ,硬件 仅 解决了信号输入输出问题,软件 完成对数据 的处理、传送、存储、显示等, 是系统的控制和处理核心。 单片机在推广应用的初期,主要使用汇编语言,这是因为当时的开发工具只能支持汇编语言。 随着硬件技术的发展,单片机的程序设计语言从汇编语言过渡到高级语言 C 已经成为时代的潮流。 C 语言是一种通用的程序设计语言,其代码效率高、数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用程序设计。 支持 51 单片机 用的 C 语言编程的编译器主要有两种: Franklin C51 编译器和Keil C51 编译器,我们简称 C51。 C51 是专为 51 单片机 开发的一种高性能的 C 编译器。 由 C51 产生的目的代码的运行速度极高,所需存储空间极小,完全可以和汇编语言媲美。 本论文中 所有程序的编译均 采用德国 Keil Software[9]公司开发的Keil C51 编译器 [7]。 排队管理系统 的主程序 本 论文 排队管理系统 测试流程 如下图 所示,主要包含了系统初始化 部分 、 A/D转换部分、显示部分。 主程序框图如图 31 所示 图 31 主程序框图 基于单片机的排队管理系统 15 初始化程序 初始化,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。