自动存包柜的设计与仿真

自动存包柜的设计与仿真

摘 要

本课题是基于单片机的自动存包柜设计。自动存包柜是新一代的存包柜,具有功能实用、操作简单、管理方便、安全可靠等特点,能够更好的服务于不同市场的广大群众,使用者可以根据简明清晰的操作说明自行完成存包取包工作。本系统由MCS-51单片机构成核心控制系统,整个系统由主控部分、键盘显示控制部分、执行部分三部分组成,通过随机密码的产生和核对完成自动存包取包过程。本设计中各元器件便于安装且操作简单,能基本实现存包取包功能。

关键词:自动存包柜;单片机;随机密码

Design and Simulation of Automatic Lockers

ABSTRACT

This topic is microcontroller-based automatic lockers.Automatic lockers is a new generation of lockers, with a practical, simple operation, easy management, safe and reliable, able to better serve the broad masses of the different markets, users are based on a clear and concise

instructions to complete the deposit bags to take the package. The system consists of MCS-51 microcontroller core control system, the entire system from the main section, the keyboard display control part of the implementation of some of the three-part composition, random password generation and check completed automatically save the package to take the package process. Various components of this design is easy to install and easy to operate, can basically save the package to take package function.

Key words :Automatic lockers; microcontroller; random password

目 录

1 绪 论 . ........................................................ 1

1.1 自动存包柜的种类 .................................................... 1

1.2 自动存包柜控制系统的基本原理及技术要求 .............................. 2

1.3 系统总体设计目标功能 ................................................ 3 2 系统方案概述及硬件设计 ......................................... 3

2.1自动存包柜系统框图 . .................................................. 3

2.2主机电路核心器件的选择 . .............................................. 3

2.3 8031的系统扩展 . ..................................................... 8 3 输入输出电路 . ................................................. 12

3.1键盘设计 . ........................................................... 12

3.2显示系统设计 . ....................................................... 13

3.3 输出系统功能扩展 ................................................... 14 4 系统程序设计及仿真 ............................................ 15

4.1 主程序模块设计 ..................................................... 15

4.2 键输入子程序模块 ................................................... 16

4.3 系统仿真 ........................................................... 18

结 束 语 . .................................................................. 21

参 考 文 献 . ............................................................... 22

附 录 . .................................................................... 23

致 谢 . .................................................................... 32

自动存包柜的设计与仿真

1 绪 论

近年来,随着生活水平的提高,人们对于社会消费品的质量要求在不断增加,对技术服务也提出了更高的要求。在超市、综合商店、个人商店等人流量大的地方,常常需要对顾客随带物品进行存储。为了更好的为广大顾客服务,在一些商场、影院尤其是超市等公共场合通常有电脑控制的自动存包柜,顾客进入商场购物时可寄存一些随身携带的较重物件或多余的现金,十分便利。顾客可以根据简明清晰的操作说明自行的完成存取物品的工作,自助式存取可以避免开放式存取带来的不必要的纠纷,又可以节约人员开支,达到减员增效的目的。

自动存包系统的设计要求有高的可靠性,包括系统结构、硬件电路和运行软件的可靠性。安全性是设计自动存包柜时必须考虑的另一个重要因素。安全性是指系统能够保证人和财物的安全,电子存包柜要有紧急情况保护等措施。友好的人机界面对于系统来说也是相当重要的。可视化的人机接口操作起来比较方便,用户可以直观的了解到存包柜的各种信息,通过图形进行各种操作并清楚地显示电子存包柜的各种信息。电脑控制的存包柜无需专职的管理人员且安全可靠, 颇受顾客的信任[1]。

1.1 自动存包柜的种类

自动存包柜又名电子存包柜,电子寄存柜。主要由以下几种类型:

(1)机设条码式电子存包柜:存物时,先按“存”键,寄存柜自动打印一张密码条,使用者抽出密码纸,对应的箱门自动打开,存好后关上箱门;取物时,直接将条码纸在扫描口扫描,对应的箱门会自动打开,取物完成后关上箱门。

(2)指纹式电子存包柜:以使用者指纹作为寄存的凭证;存物时, 先按一下“存”键,然后在指纹采集窗里采集指纹,机器会把该指纹与分配给使用者使用的寄存箱的箱号结合起来,并将信息自动记录下来,同时自动打开该箱,供使用者存物,存完后使用者自己关好箱门;取物时,先按一下“取”键,然后在指纹采集窗里采集指纹,寄存柜将指纹数据与先前记录下的进行比对,正确后才会打开该箱供使用者取物。

(3)非接触IC 卡电子存包柜:以使用者所持IC 卡(即射频卡)作为寄存的凭证;存物时,先按一下“存”键再刷卡(即让存包柜读取卡号),存包柜应先识别是否为该场所的IC 卡,若不是则拒绝存物;若是,机器会把该卡号与分配给使用者使用的寄存箱的箱号结合起来,并将信息自动记录下来,同时自动打开该箱,供使用者存物,存完后自己关好箱门;取物时,先按一下“取”键再刷卡,寄存柜将读取的卡号与先前记录下的进行比对,正确后打开该箱供使用者取物(同时机器会自动记录当时的时间、卡号以备查询)。

(4)联网型非接触IC 卡电子存包柜:联网型非接触IC 卡电子存包柜基本功能与非接触IC 卡电子存包柜一致,另外增加了网络通讯模块,上位管理软件等,以实现寄存状态联网监控,分段收费,报表打印等功能[2]。

1.2 自动存包柜控制系统的基本原理及技术要求

本系统采用MCS-51单片机做控制器,具有较高的自动化程度,当顾客需要存包的时候, 可以自行到存包柜前按“ON/C”键, 单片机接收到一个脉冲信号, 并通过系统I/O口发出相应的信号, 数码管显示8位随机密码,然后一发光二极管亮,顾客即可存包。当顾客需要取包时,先按“=”键,系统进入取包状态,然后输入密码,输入完毕后按“+”键表示确定,系统比较密码一致后,对应二极管灭,顾客即可将包取出。

根据“自动存包”这一目的要求,做如下设计安排:

第一部分:CPU 核心控制部分,由单片机8031、复位电路、时钟电路等构成,是整个系统的核心。

第二部分:键盘显示控制部分。对8个数码管和2个按键进行管理,8个数码管用于显示2位柜号儿和8位密码,14个按键分别为10个数字键和4个功能键。通过这些键盘,用户就可以完成所有的操作。

第三部分:执行机构部分。它是通过8031的并行口扩展一片8255A 芯片,并通过8255A 控制8个灯的状态(亮灭)来模拟柜子的存包取包的过程。

软件部分主要采用我们自己设定的一种与柜号儿相关联的算法来产生一组8位的随机密码,而密码的产生、核对过程就对应存包、取包的过程。

本系统具有如下特色:(1)经济实用、操作简单且便于安装。

(2)能产生一组8位随机密码,密码使用一次有效;有三次容错功能和解

锁功能,因此系统安全可靠。

(3)利用软件产生随机密码而不是硬件,使得硬件更为简洁、可靠、稳定。

1.3 系统总体设计目标功能

(1)完成矩阵键盘输入命令进行取包的任务;(2)存包时系统能产生随机密码;(3)随机数在单片机中的保存及删除;(4)液晶数码管的选择及与单片机的接口电路设计;(5)发光二极管模拟柜子的实现。

2 系统方案概述及硬件设计

2.1自动存包柜系统框图

自动存包柜由电子电路和机械两部分组成,本设计的存包柜主要实现电子电路方面的功能,它可以通过单片机完成密码的随机产生、密码的确认和显示以及用发光二极管模拟柜子的开闭状态等功能。系统框图如图2-1所示:

图2-1 自动存包柜的系统框图

从硬件上看,它的部分组成分别是:发光二极管,通过亮灭来模拟柜子的开闭状态;电源,为电路提供一个5V 的工作电压;单片机,整个电路的核心部分;LED 数码管,用于显示柜号和密码;还有键盘部分,键盘有14个按键,其中的十个分别 为 0-9的数字键,其他四个分别为存包键(随机产生密码)、取包键(确认密码)、确定键、取消键。

2.2主机电路核心器件的选择

单片机是在一块硅片上集成了微处理器,存储器和各种输入、输出接口,这样的一块芯片具有一台计算机的属性,因而被称为单片微型计算机,简称单片机。

单片机的优点是体积小,重量轻,抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发也较为容易[3]。

MCS-51单片机是美国Intel 公司于1980年推出的产品, 与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令, 指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,我们也以这一代表性的机型进行系统的设计。MCS-51系列单片机主要包括8031、8051和8751等通用产品。

8031内部包括一个8位CPU 、128个字节RAM ,21个特殊功能寄存器、4个8位并行I/O口,1个全双工串行口,2个16位定时器/计数器,需要外部EPROM 芯片。

8051是在8031的基础上,片内又集成有4K ROM,作为程序存储器,是一个程序不超过4K 字节的小系统。

8751是在8031的基础上,增加4K 字节的EPROM ,它构成了一个程序小于4KB 的系统。用户可以将程序固化在EPROM 内,可以反复修改程序。但是它的价格比较昂贵。8031外扩一片4KB EPROM就相当于8751,它的最大优点是价格便宜。

经过计算和考虑,我们这里所设计的自动存包柜是一个比较简单的控制系统,用8031就完全可以达到我们设计的要求,实现存包柜的各项功能,所以我们选用8031作为我们的主机电路核心器件。

8031单片机是Intel 公司生产的MCS-51系列单片机中的一种,除无片内ROM 外,其余特性与MCS-51单片机基本一样。

8031的主要性能包括:(1)与MCS-51位控制器产品系列兼容。(2)宽工作电压范围,VCC 可为2.7V ~6V 。(3)全静态工作,可从0Hz 至16Hz 。(4)128×8位内部RAM 。(5)32条可编程I/O线。(6)两个16位定时器/计数器。(7)中断结构具有5个中断源和2个优先级[4]。

2.2.1 8031内部结构

8031内部有8个部件组成,即CPU 、时钟电路、数据存储器、串行口、并行口(P0~P3)、定时计数器和中断系统,它们均由单一总线连接并被集成在一块半导体芯片上,即组成了单片微型计算机[5]。内部结构如图2-2所示:

图2-2 8031的内部结构

(1)CPU 中央处理器

中央处理器是8031的核心,它决定了单片机的主要功能特性。中央处理器主要由运算部件和控制部件组成。它的功能是产生控制信号,把数据从存储器或输入口送到CPU ,或将CPU 数据写入存储器或送到输出端口。还可以对数据进行逻辑和算术的运算。

(2)时钟电路

8031内部有一个频率最大为12MHz 的时钟电路,它为单片机产生时钟序列,但需要外接石英晶体做振荡器和微调电容调整频率。

(3)内存

内部存储器可分做程序存储器和数据存储器,但在8031中无片内程序存储器。

(4)定时/计数器

8031有两个16位的定时计数器,每个定时器和计数器都可以设置成定时的方式和计数的方式,但只能用其中的一个功能,以定时或计数结果对计算机进行控制。

(5)并行I/O口

MCS-51有四个8位的并行I/O口,P0,P1,P2,P3,以实现数据的并行输入输出。

(6)串行口

它有一个全双工的串行口,它可以实现计算机间或单片机同其它外设之间的通信,该串行口功能较强,可以作为全双工异步通讯的收发器,也可以作为同步

移位器用。

(7)中断控制系统

8031有五个中断源,既外部中断两个,定时计数器中断两个,串行中断一个,全部的中断分为高和低的两个输出级[6]。

2.2.2 8031引脚介绍

采用40管脚双列直插式DIP 封装, 引脚如图2-3所示:

图2-3 8031引脚图

引脚功能说明:

Vcc 40引脚 主电源引脚接+5V电压;

Vss 20引脚 接地;

XTAL1 19脚 接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS 单片机,此引脚应接地;对CHMOS 单片机,此引脚作为驱动端。

XTAL2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS 单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS ,此引脚应悬浮。

RST/VPD 9脚 当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与V SS 引脚之间连接一个约8.2k 的下拉电阻,与V CC 引脚之间连接一个约10μF 的电容,以保证可靠地复位。V CC 掉电期间,此引脚可接上备用电源,以保证内部RAM 的数据不丢失。当V CC 主电源下掉到低

于规定的电平,而VPD 在其规定的电压范围(5±0.5V )内,VPD 就向内部RAM 提供备用电源。

ALE/PROG 30脚 当访问外部存贮器时,ALE (允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE 端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE 脉冲。ALE 端可以驱动(吸收或输出电流)8个LS 型的TTL 输入电路。

PSEN 29脚 此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN 有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN 信号将不出现。PSEN 同样可以驱动(吸收或输出)8个LS 型的TTL 输入。

EA/VPP 31引脚 当EA 端保持高电平时,访问内部程序存储器。当EA 保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。对于常用的8031来说,无内部程序存储器,所以EA 脚必须常接地,这样才能只选择外部程序存储器。

P0口 39脚32脚 是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS 型的TTL 负载。 P1口 脚至8脚 是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS 型的TTL 负载。

P2口 21脚至28脚 是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM 编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS 型的TTL 负载。 P3口 10脚至17脚 是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS 型的TTL 负载[7]。

作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。第二功能如表1所示:

表1 P3口各引脚的第二功能

口线

引脚101112

功能

P3.0

RD (串行输入口)

TD(串行输出口) INT0(外部中断0) INT1(外部中断1)

P3.1

P3.2

P3.3

13 14 15

P3.4

P3.5 P3.6

P3.7

T0(定时器0外部

输入)

T1(定时器1外部

输入)

WR(外部数据存

储器写入) RD (外部数据存储

器读出)

16

2.3 8031的系统扩展

17

8031具有很强的扩展功能,允许扩展各种外围电路以补充片内资源不足,适应特定应用的需要,扩展内容包括数据存储器、程序存储器、I/O接口等扩展结构。系统扩展图如图2-4所示:

8031

数据存储器程序存储器

I/O接口

图2-4 8031系统扩展结构图

在这里我们介绍外部地址锁存器74LS373扩展芯片8255A 。 2.3.1 74LS373介绍

MCS-51单片机由于受引脚数的限制,数据线和地址线是复用的,由P0口兼用。为了将它们分离出来,以便同单片机片外的扩展芯片正确的连接,需要在单片机外部增加地址锁存器。我们这本设计中使用74LS373。74LS373是一种带有三态门的8D 锁存器,其引脚如图2-5所示:

图2-5 锁存器74LS373的引脚

其引脚的功能如下:

D7~D0:8位数据输入线 Q7~Q0:8位数据输出线

LE :数据输入锁存选通信号,高电平有效。当该信号为高电平的时候,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。

OE :数据输出允许信号,低电平有效。当该信号为低电平的时候,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平的时候,输出线为高阻态[8]。

2.3.2 系统I/O接口扩展

由于我们采集的数据量较多,因此CPU 的I/O口线不够用,所以我们使用8255A 扩展I/O口,以满足系统的要求。8255A 是Intel 公司生产的通用可编程并行I/O接口芯片。 1 8255A 内部结构

8255A 内部由四部分电路组成。它们是A 口、B 口和C 口,A 组控制器和B 组控制器,数据缓总线冲器及读写控制逻辑,如图2-6所示:

I/O

图2-6 8255A的内部结构

(1) A 口、B 口和C 口。A 口、B 口和C 口均为8位I/O数据口,但结构上略有差别。A 口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。B 口由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲器组成。三个端口都可以和外设相连,分别传送外设的输入/输出数据或控制信息。

(2) A 、B 组控制电路。这是两组根据CPU 的命令字控制8255工作方式的电路。A 组控制A 口及C 口的高4位,B 组控制B 口及C 口的低4位。

(3) 数据总线缓冲器。它是一个8位的双向三态驱动器,用于与单片机的数据总线相连,传送数据或控制信息。

(4) 读/写控制逻辑。这部分电路接收MCS-51送来的读/写命令和选口地址,用于控制对8255A 的读/写[9]。 2 8255A 的引脚功能

8255A 有40条引脚,采用双列直插式封装。引脚如图2-7所示:

图2-7 8255A引脚图

(1)数据总线(8条):

D0~D7:三态双向数据总线,8255A 与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。

(2)控制总线(6条):

RESET:复位信号,输入高电平有效。一般和单片机的复位相连,复位后,8255A 所有内部寄存器清0,所有口都为输入方式。

CS:片选信号线,当这个输入引脚为低电平时有效,表示芯片被选中,允许8255A 与CPU 进行通讯。

RD:读信号线,当这个输入引脚为低电平时,允许8255A 通过数据总线向CPU 发送数据或状态字。

WR:写入信号,当这个输入引脚为低电平时,允许CPU 将数据或控制字写入8255A 。

A0、A1:地址输入线。这两位的4种组合00、01、10、11分别用于选择A 、B 、C 口和控制寄存器。

(3)并行I/O总线(24条):这些总线用于和外设相连,分别与A 、B 、C 口相对应,用于8255A 和外设之间传送数据,共分三组:

PA0~PA7:端口A 输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

PB0~PB7:端口B 输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

PC0~PC7:端口C 输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

(4)电源线(2条):VCC 为+5V 电源线,允许变化±10%;GND 为地线。

3 输入输出电路

自动存包柜的设计中输入输出部分是十分重要的一个环节,输入输出系统就是人与计算机之间建立联系,交换信息的设备,即人机交互设备。在这里我们需要输入存包取包命令,检测箱内是否有物体,在顾客需要的时候检测密码,并自动打开柜门,还需要显示是否有空箱以及空箱的位置,来为顾客提供选择。

3.1键盘设计

键盘在单片机应用系统中能实现向单片机输入数据、命令等功能,是人工干预单片机的主要手段。该系统中键盘的主要功能是用于顾客选择适当的包柜存包,用按键来控制柜门的打开,键盘是用8031单片机经74LS373扩展一片8255A 构成键盘借口电路的。

键盘的闭合与否,映在行线输出电压上就是呈现出高电平或低电平,相反如果高电平表示断开的话,那么低电平就表示键闭合,所以通过对行线电平的高低状态的检测,便可以确认按键按下与否。常用的键盘接口分为独立式按键接口和矩阵式键盘接口。我们在这里选用矩阵式键盘接口,如图3-1所示:

图3-1 矩阵式键盘

矩阵式键盘工作原理:按键设置在行、列线交点上,行列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V电源上。平时无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。列线电平如果为低电平,则行线电平为低电平;列线电平如果为高,则行线电平也为高电平。这是识别矩阵键盘按键是否被按下的关键所在。由于矩阵键盘中行、列 线为多键共用,各按键均影响该键在行和列的电平,因此各按键彼此将互相发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置[10]。

键盘实际是一组按键开关的集合,是向系统提供操作人员干预命令和数据的接口设备这里我们选用4*4矩阵键盘接口,用14个按键控制箱门的打开,其中,数字键10个,分别为0~9,功能键4个,“ON/C”表示存包键,“=”表示取包键,“+”表示确定键,“—”表示取消键。如图3-2所示:

图3-2 4*4矩阵键盘

该键盘工作方式采用的是外部中断扫描,中断式键盘扫描原理是:当有键按下将会触发一个中断源,提醒处理器进行键值扫描查询。键盘的中断方式一般有定时中断和外部中断两种,本系统采用的是外部中断INT0。单片机先让行线输出低电平,当有键按下时列线电平不全为高,将触发外部中断 INT0,单片机进入中断后先延时去抖动,再扫描查寻键盘,读出键值,然后处理相应的键值处理子程序,无键按下则不进入中断,单片机不扫描,从而节约了大量的资源[11]。

3.2显示系统设计

为了使操作人员及时掌握生产情况,在一般的微型计算机控制系统或者智能

仪器当中,都配有显示程序。常用的显示器件有:①显示和记录仪表,②CRT 显示终端,③LED 或者LCD 显示器,④大屏幕显示器。本次设计所采用的是LED 数码管。

LED 数码管是由发光二极管组成,由于材料的不同,可以发出各种单色光线。根据发光二极管内部的连接方式不同,又有共阴极或共阳极两种形式。如图3-3所示:

a

e

共阴极 共阳极

图3-3 LED显示器

LED 数码管具有结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高等优点。本次设计我们使用两个4位数码管来显示8位密码,数码管如图3-4所示:

图3-4 4位数码显示管

3.3 输出系统功能扩展

由于本人能力有限,考虑不周,此次设计的存包柜与实际应用的自动存包柜

相差甚远,功能不全,而且还存在一些问题。按实际应用中,根据各种需要,可以在此设计基础上进行扩展。如:

(1)限位开关:利用电磁铁或可控硅、电磁耦合器,再加上一些机械装置,就能实现柜门的自动开关。

(2)光电开关:对存包柜进行检测,实时显示无物的箱号。 (3)打印机:将产生的随机密码打印出来。

(4)语音服务:用户存取包时,语音致词“欢迎使用”、“请关门”、“谢谢使用”等。

(5)报警服务:用户忘记关门时,提醒顾客关门。

4 系统程序设计及仿真

为了使本系统的整个程序清晰明白,便于调试和修改,程序设计时把系统的各种功能分为若干部分,于每一部分功能编制相对独立的程序块,对各程序在运行的时候各负其责。

4.1 主程序模块设计

该模块的功能包括显示的初始化,判断是否有空箱,键盘扫描,密码扫描等功能。存储柜通上电以后,单片机上电,首先进行程序的初始化,包括定时器,外部中断等初始化,以及各参数初始值的设定。默认存储柜为初始状态,根据存包指令,扫面计数器的存储包状态,用数码管显示存储柜号和密码。主流程图如图4-1所示:

4-1 主程序流程图

4.2键输入子程序模块

键盘采用扫描工作方式, 输入程序功能有以下4个方面:

(1) 判断键盘上有无键闭合,其方法为扫描口PA0~7输出全“0”,读PC 口的状态,若PC0~3为全“1”(键盘上行线全为高电平)则键盘上没有闭合键, 若PC0~3不全为“1”,则有键处于闭合状态。

(2) 去除键的机械抖动,其方法为判断出键盘上有键闭合后,延迟一段时间再判别键盘的状态,若仍有键闭合,则认为键上有一个键处于稳定的闭合期,否则认为是键的抖动。

(3) 判别键闭合的键号,方法对键盘的列线进行扫描,扫描口PA0~7依次输出:

相应的依次读PC 口的状态,若PC0~3为全“1”则列线为“0”的这一列上没有键闭合。闭合键的键号等于为低电平的列号加上为低电平的行的首键号。

(4) 使CPU 对键的一次闭合仅做一次处理,采用的方法为等待闭合键释放后在作处理。

流程图如图4-2所示:

图4-2 键输入子程序流程图

4.3 系统仿真

本设计我们采用Proteus 仿真,软件调试先将事先编写好的各模块部分程序写入仿真软件里的单片机中,然后通过Proteus 仿真软件进行仿真。如有错误或实现不了预想的功能,则需要对程序进行修改以达到设计的最终要求。此次设计中,灯亮表示柜中存有物品,灯灭表示柜空。

(1)各元器件的连接图,如图4-3所示

图4-3 各元器件的连接

(2)按“ON/C”键(即存包键),数码管显示8位随机密码,作为取包时的核对密码,然后密码消失,对应的发光二极管亮,即可存包。仿真结果如图4-4,4-5所示:

图4-4 产生8位随机密码

图4-5 灯亮,对应柜子可存包

(3)按“=”键(即取包键),显示取包状态,输入密码后,按“+”确定,系统需要对密码与原先保存的密码进行比较,如果密码正确,对应的发光二级管熄灭,即可取包。如图4-6所示:

图4-6 密码正确,灯灭,即可取包

结 束 语

在做毕业设计这短短的几个月当中,我不仅巩固了以前学到的专业知识,更重要的是也学到了许多新知识,在本系统中,基本模拟了超市存包的功能,以8031为核心CPU 进行系统任务调度,内部的随机数模块、发光二极管模块、箱子模拟模块和键盘输入模块,通过系统主程序来调度实现系统所需要的功能。从而了解了51系列单片机的具体使用,加深了对 LED 数码管、发光二极管、矩阵键盘等常规元件的使用。也学会了设计一个系统的步骤、方法和设计思想。在毕业设计之初,首先寻找素材,确定选题,从中知道这次设计的目的、要求以及要完成的工作。开题之后进入资料 检索阶段,通过在网上及图书馆查找资料,了解了自动存包控制系统的发展状况以及现状,从中得到了许多对我们设计有用的东西,并最终确定一套方案。此方案是利用单片机来实现的,所以翻阅了大量的单片机书籍。因为以前的学习是围绕51系列的单片机,所以此次设计我选择8031为CPU 。在图书馆和和网站上查到了好多的单片机和传感器方面的知识,这对设计是很有必要的,它对后面的工作有很大的帮助。当然设计总是在不断的改进和完善中完成的,每一个器件的选择都要有很多的考虑。在本次设计中也不断的更换新的器件和设计方法,最后做成了设计,基本实现了毕业设计任务书中的要求。由于时间、资金等各个因素在这次毕业设计中还存在很多不能令人满意的地方,这些地方也暴露了我们在以前学习过程中的疏漏之处。我一定会在以后的工作中逐步的改正。

参 考 文 献

[1]刘德营, 张志霞, 李志伟. 单片机原理及接口技术[M].北京:中国水利水电出版社,2006:1~ 54,90~121.

[2]潘新民, 王燕芳. 微型计算机控制技术[M].北京:电子工业出版社,2003:71~99,360~364. [3]宋浩, 田丰. 单片机原理及应用[M].北京:清华大学出版社,2005:1~39,134~179.

[4]薛栋梁.MCS-51/151/251单片机原理与应用[M].北京:中国水利水电出版社,2001: 254~ 261. [5]王路茜. 电子设计技术[J].维普中文期刊.2006年02期.

[6]方佩敏. 新编传感器原理应用电路详解[J].北京:电子工业出版社,1994:112~117.

[7]何立民. 单片机应用系统设计[M].北京:北京航空航天大学出版社,2002:97~104,149~156. [8]姜德谭, 范茂军. 新编电子电路大全[M].北京:计量出版社,1985:90~121. [9]丁元杰. 单片微机原理及应用[M].北京:机械工业出版社,2003:40~77.

[10]何立民. 单片机应用技术选编[M].北京:北京航空航天大学出版社,1997:100~103. [11]李广第. 单片机基础[M].北京:北京航空航天大学,1999:90~148.

附 录

主程序清单

ORG 00H JMP MAIN ORG 23H JMP COM-INT 主程序开始

ORG 30H MAIN: MOV SP,#30H LCALL REST LCALL COMM JMP $ 初始化

REST: MOV P0,#00H MOV P2,#255 CLR BEEP MOV P1,#255 RET 串口初始化

设置串行口工作方式1,定时器1作为波特率发生器 波特率设置为 2400 ;

COMM: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H SETB EA SETB ES MOV PCON,#00H MOV SCON,#50H SETB TR1

RET 串口中断服务程序 COM_INT: CLR ES CLR RI MOV A,SBUF MOV P1,A MOV DPTR,#TAB CJNE A,#0FFH,IN-1 MOV SBUF,#255 JNB TI,$ CLR TI SETB ES RETI

IN-2: CJNE A,#2,IN-3 MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI SETB ES RETI

IN-3: MOV A,#03H MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI SETB ES RETI TAB: DB '2','H','E','J' END

键输入字程序清单: KEYI: ACALL KS1 JNZ LK1 NI: ACALL DIR AJMP KEYI LK1: ACALL DIR LK2: LK4: LONE: LTWO: LTHR: ACALL DIR ACALL KS1 JNZ LK2 ACALL DIR AJMP KEYI MOV R2,#0FEH MOV R4,#00H MOV DPTR,#7F01H MOV A,R2 MOVX @DPTR,A INC DPTR INC DPTR MOVX A,@DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP JB ACC.1,LTWO MOV A,#08H AJMP LKP

JB ACC.2,LTHR MOV A,#08H AJMP LKP

JB ACC.3,NEXT MOV A,#18H

LKP: ADD A,R4 PUSH A LK3: ACALL DIR ACALL KS1 JNZ LK3 POP A RET

NEXT: INC MOV JNB RL MOV AJMP

KND: AJMP KS1: MOV MOV MOVX INC INC MOVX CPL ANL RET

8255A 工作:

MOV A,#90H MOV DPTR,#0FF7H

R4 A,R2 ACC.7,KND A R2,A LK4 KEYI DPTR,#7F01H A,#00H @DPTR,A DPTR DPTR A,@DPTR A A,#0FH

MOVX @DPTR,A MOV DPTR,#0FF7CH MOVX A,@DPTR MOV DPTR,#0FF7DH MOV A,#DATA1 MOVX @DPTR,A MOV DPTR,#0FF7EH MOV A,#DATA2 MOVX @DPTR,A 显示子程序:

MOV DPTR,#8000H MOV A,#01H MOVX @DPTR,A ACALL F-BUSY MOV A,#30H MOVX @DPTR,A ACALL F-BUSY MOV A,#0EH MOV @DPTR,A ACALL F-BUSY MOV A,#4AH MOV @DPTR,A ACALL F-BUSY STORE: SETB VSDA; SETB VSCL; NOP; NOP; NOP; NOP;

CLR VSDA;

CLR VSDA;

NOP;

NOP;

NOP;

NOP;

STOP:

MACK:

CLR RET; CLR SETB NOP; NOP; NOP; NOP; SETB NOP; NOP; NOP; NOP; CLR CLR RET; CLR SETB NOP; NOP; NOP; NOP; CLR SETB VSCL; VSDA; VSCL; VSDA; VSDA; VSCL; VSDA; VSCL; VSCL; VSDA;

MNACK: SETB VSDA;

SETB VSCL;

NOP;

NOP;

NOP;

CACK:

CEND:

WRBYT:

WLP:

WLP1:

WR1:

NOP; CLR VSCL; CLR VSDA; RET; SETB VSDA; SETB VSCL; CLR F0; MOV C,VSDA; JNC CEND; SETB F0; CLR VSCL; RET; MOV R0,#08H; RLC,A; JC WR1; AJMP WR0; DJNZ R0,WLP; RET; SETB VSDA; SETB VSCL; NOP; NOP; NOP; NOP;

CLR VSCL;

CLR VSDA;

AJMP WLP1;

WR0: CLR VSDA;

SETB VSCL;

NOP;

RDBYT:

RLP:

WRNBYT:

WRDA:

NOP; NOP; NOP; CLR VSCL; AJMP WLP1; MOV R0,#08H; SETB VSDA; SETB VSCL; MOV C,VSDA; MOV A,R2; RLC A; MOV R2,A; CLR VSCL; DJNZ R0,RLP; RET; MOV R3,NUMBYT; LCALL STA; MOV A,SLA; LCALL WRBYT; LCALL CACK; JB F0,WRNBYT; MOV R1,#MTD; MOV A,@R1; LCALL WRBYT;

LCALL CACK;

JB F0,WRNBYT;

INC R1;

DJNZ R3,WRDA;

LCALL STOP;

RET;

RDNBYT:

RDN:

RDN1:

ACK:

MOV R3,NUMBYT; LCALL STA; MOV A,SLA; LCALL WRBYT; LCALL CACK; JB F0,RDNBYT; MOV R1,#MRD; LCALL RDBYT; MOV @R1,A; DJNZ R3,ACK; LCALL MNACK; LCALL STOP; RET; LCALL MACK; INC R1; SJMP RND1;

致 谢

紧张、充实而又难忘的大学学习生涯即将结束,在本次论文编写期间得到了许多人的帮助,使我终身难以忘怀。在这里我首先要感谢这四年来为我授课的各位老师,真心地说一句:你们辛苦了!感谢辅导老师在选题、定稿以及中期检查等方面都给了我精心的指导。您提出的宝贵意见使我在选题、撰写以及修改的过程中,不再像当初那样茫然无措,而是知道自己的不足和修改的方向。当然还有在此过程中,帮助过我的各位同学,给予了我很多宝贵意见。正因为有了你们的帮助,我才能顺利完成本次设计。谢谢你们!


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn