欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

自动存包柜系统设计

  • 资源ID:442413       资源大小:696.50KB        全文页数:62页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

自动存包柜系统设计

自动存包柜系统设计 学院名称: 专 业: 班 级: 姓 名: 指导教师姓名: 指导教师职称: 2011 年 06 月JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY本 科 毕 业 设 计 ( 论 文 )江苏技术师范学院毕业设计说明书(论文)自动存包柜系统设计摘要:随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的自动化系统开始进入了人们的生活。本文介绍了利用单片机 STC89C52 最小系统产生一组 6 位随机密码来控制柜门开关的自动存包柜系统。此系统设计有 14 个按键和 6 个数码管显示密码,可以对 20 个柜子进行控制,每组密码使用一次有效,客户通过键盘输入随机密码进行存取包。此论文重点描述了自动存包柜的设计思想及软硬件电路的工作原理、设计过程,并叙述了调试过程以及调试中所出现的问题,并做了相应分析。关键词:自动存包柜;单片机;随机密码The design of automatic storing a bag of cupboardsAbstract:With the social and scientific development and improvement of peoples living standard, various remote automatic systems for the convenience of our life come into being. This paper introduces storing a bag of cupboards that STC89C52 microcontroller minimum system produces a set of six random password to control the opening and closing of cupboards. This system has 14 buttons and 6 digital tube that can show the password to control 20 cabinet, each group password once using effective. Customers need to access the keyboard to operate the bag of storing and getting out of the bag.This paper focuses on the description of the design and priciple of storing a bag of cupboards remote control of single chip, and accounts for the system debugging and its problems related and the analysis are provided. Keywords: Store a bag of cupboards, Single Chip Micro Computer, Password江苏技术师范学院毕业设计说明书(论文)目录前 言 1第一章 设计任务 21.1 设计的内容 21.2 技术指标与功能 2第二章 总体设计方案 .32.1 设计方案的论证.32.1.1 单片机的选择 32.1.2 键盘/显示部分的选择 .32.1.3 显示器件选择 42.2 自动存包柜电路的原理框图以及各部分作用 4第三章 系统硬件电路的设计63.1 自动存包柜的硬件电路 63.1.1 单片机 STC89C52 的最小系统的连接电路 73.1.2 键盘控制电路 83.1.3 数码显示电路 .103.1.4 执行部分电路 .10第四章 自动存包柜的软件设计 .134.1 自动存包柜软件设计 .134.1.1 自动存包柜主程序 .134.1.2 键扫描程序 .174.1.3 74LS165 数据检测程序 19江苏技术师范学院毕业设计说明书(论文)4.1.4 执行部分程序 .214.1.5 显示程序 .23第五章 系统调试 .255.1 硬件调试255.1.1 最小系统板得调试 .255.1.2 键盘显示电路的调试 .255.1.3 8255A 电路的调试 255.2 软件调试255.2.1 查键显程序的调试 .255.2.2 随机密码产生及核对程序的调试 .265.2.3 三次容错的调试 .265.3 整机调试26第六章 测试结果 .286.1 测试结果 .28第七章 系统的改进 297.1 硬件存在的问题与改进 .297.2 软件存在的问题与改进 .297.3 系统功能扩展分析30参考文献 31致 谢 .32附 录 .33附录一 发送接收电路原理图 33附录二 程序清单 34附录三 元器件清单 45江苏技术师范学院毕业设计说明书(论文)附录四 英文资料 46江苏技术师范学院毕业设计说明书(论文)第 1 页 共 56 页前 言单片机是 20 世纪 70 年代中期发展起来的一种大规模集成电路器件。单片机有体积小、功能强、价格低、使用灵活等特点。20 世纪 80 年代以来,国际上单片机的发展迅速,其产品之多令人目不暇接,单片机应用不断深入,新技术层出不穷。在国内,尽管开发和应用单片机的时间不长,但也得到了迅猛的发展。目前单片机已成功地运用到智能仪表、机电设备、过程控制、数据处理、自动检测与控制和家用电器等各个方面,为我国的国民经济建设作出了重要贡献 1。我们在各大超市可以看到的自动存包柜就是应用单片机技术控制的方便顾客存取包的设备。由于它的方便性和安全性,目前,自动存包柜在超市和其它场合得到了广泛的应用,并且根据用途和场合,其种类不断增多,功能也不断完善,大大的方便了人们的日常生活 2。就其使用方式而言,自动存包柜主要有两种:其一为投币式,即需要付费的,是通过从投币口投入硬币或纸币来控制存取包;其二是密码式,即通过一组系统产生的随机密码或顾客自己设定的密码来控制柜门的开关,从而达到存取包的目的 3。这次我们设计的就是利用系统产生一组 6 位随机密码来控制柜门开关的自动存包柜系统。它是利用单片机 STC89C52 实现的,具有 14 个按键和 6 个数码管显示 6 位随机密码。客户通过键盘输入随机密码可以进行存取包操作。此系统可以对 20 个柜子进行控制,每组密码使用一次有效。整个系统稳定可靠,且有容错功能,使用和安装都十分方便。江苏技术师范学院毕业设计说明书(论文)第 2 页 共 56 页第一章 设计任务1.1 设计的内容设计一个可以同时管理 20 个存包柜的管理系统。当顾客需要存包的时候,可以自行到存包柜前按“开门”键,单片机接收到一脉冲信号,并通过系统 I/O 口发出相应的信号,将一空箱打开,顾客即可存包,并将柜门关上。当顾客需要取包时,通过键盘输入随机码传给单片机,系统比较密码一致后,发出开箱信号将柜门打开,顾客即可将包取出。要求本系统以 STC89C52 单片机为核心,自动控制柜门的打开,并且产生此时的随机码。取包时,通过随机码的输入开门取包;当顾客发生密码丢失的情况,管理员输入最高密码 101010 可将全部柜门打开,即可取包;具有三次容错功能。20 个存包柜可以用 20 个发光二极管替代。1.2 技术指标与功能(1) 工作电压:5V(2) 总共可存包 20 个,顾客只需按“存包”即可打开柜门,并且产生随机密码。 (3) 取包时,通过产生的随机密码输入之后按“确定”按钮即可取包,当输入错误之后,按“取消”按钮重新输入密码。(4) 当顾客发现密码丢失或忘记时,管理员输入最高密码“101010”即可将全部柜门打开。(5) 具有三次容错功能,当顾客输入三次密码都错误,第四次输入密码,无法将柜门打开,必须由管理员输入最高密码“101010”才可将柜门打开。江苏技术师范学院毕业设计说明书(论文)第 3 页 共 56 页第二章 总体设计方案2.1 设计方案的论证2.1.1 单片机的选择本设计所用的单片机可以用 C31, STC89C52 单片机等多种单片机来实现。考虑本设计的要求,需要编写程序,但是 C31 没有内部存储器,那么就要用外部扩展,比较麻烦。本设计所编写的程序比较简单,功能也比较少,如果用羚羊单片机就过于麻烦,大材小用,本设计所用到的输入输出端口也不是很多,所以我们决定用 STC89C52 单片机来完成本设计,既方便也很实用。2.1.2 键盘/显示部分的选择方案一:利用 8155 并行扩展口控制芯片(8122 芯片可以用作单片机片外 256B 数据存储器,也可以用作扩展 I / O 口使用以及用作定时器扩展使用,此处用作扩展 I / O 口使用,分别为 PA、PB、PC 口)来管理键盘和显示部分。硬件框图如图 2-1 所示:图 2-1 8155 接口电路框图89C52 外扩一片 8155H,8155H 的 RAM 地址为 7E00H-7EFFH,I/O 口地址为 7F00H-7F05H,8155H 的 PA 口为输出口,控制键盘的列线 Y0-Y7 的电位,PA 口作为键盘扫描口,同时又是 8 位 LED 的扫描口,PB 口作为显示器的段数据口,8155H 的 PC 口作为输入口,PC0-3 接行线 Y0-Y3,称为键输入口。用反相驱动器 75452 驱动键盘,用同相驱动器 7407 驱动数码管。此方案原理较简单,但外围芯片数较多(四片 75452、两片 7407) ,成本高,而且89C52 81558 个数码管14 个键盘740775452江苏技术师范学院毕业设计说明书(论文)第 4 页 共 56 页当我们对其硬件调试时,如果出现问题,会对检查线路造成困扰。方案二:利用两片 8 位并入串出的移位寄存器芯片 74LS165 来检测键盘信号,利用三极管做数码驱动,驱动 6 个数码管显示 6 位随机密码。硬件框图如图 2-2 所示。图 2-2 键盘和显示框图此套方案中,我觉得所用到的器件都是我们学过的,比较好理解,虽然感觉所用到的元器件很多,但相比方法一来,芯片数量减少,价格相对也便宜,所以我选择第二种方法。2.1.3 显示器件选择在单片机应用系统中,使用的显示器主要有 LED(发光二极管)以及 LCD(液晶显示器),两种显示器配置灵活,与单片机接口方便。但是它们也是各有特点的:LED 接口非常简单,不需要专用的驱动程序,在设计程序时也非常的简单,而且价格相对便宜;LCD 显示的字比较丰富,也比较清楚,给人的感觉很好,但是它接口复杂,且要自己造字库,难度不小。故没必要采用 LCD,用 LED 发光二极管就够了。2.2 自动存包柜电路的原理框图以及各部分作用图 2-3 自动存包柜电路的原理框图江苏技术师范学院毕业设计说明书(论文)第 5 页 共 56 页各部分作用: (1)单片机控制部分:它是系统的核心部分。由 89C52 单片机、时钟、复位电路等组成。(2)键盘控制部分:这是用户对自动存包柜进行操作的控制面板。由两片 8 位并入串出的移位寄存器芯片 74LS165 和 4*4 键盘组成。通过它可以实现所有的控制功能。键盘功能定义如下表 2-1 所示: 表 2-1 键盘功能定义表键符 功 能0-9 用来对随机密码的输入存包 客户需要存包所按的键取包 客户需要取包所按的键确认 对输入的数据进行确认清除 对输入的数据进行清除以便重新输入(3)数码显示部分:这是用户对自动存包柜进行操作后,能够显示 6 位随机密码,由三极管驱动电路驱动数码管显示。由数码显示驱动电路和 6 个数码管组成。(4)执行部分:这一部分是通过可编程并行接口 8255A 芯片给每一位发送高低电平控制发光二极管的亮灭(柜门的开关)来模拟的。由可编程并行接口 8255A 和 20 个发光二极管构成。江苏技术师范学院毕业设计说明书(论文)第 6 页 共 56 页第三章 系统硬件电路的设计3.1 自动存包柜的硬件电路图 3-1 自动存包柜的硬件电路自动存包柜硬件电路可以分成四部分组成,它们分别为单片机部分、键盘控制部分(核心芯片为两片 8 位并入串出的移位寄存器芯片 74LS165) 、执行部分(核心芯片为可编程并行接口 8255 芯片)和三极管驱动显示部分。元件接线说明:(1)单片机部分:1 脚 P1.0 接 8255 芯片 36 脚为 WR 端;2 脚 P1.1 接74LS165(U3)的 9 脚 QH 为 OUT1 端;3 脚 P1.2 接 8255 芯片的 6 脚为 CS 端;4 脚 P1.3接 8255 芯片的 5 脚为 RD 端;5、6 脚 P1.4、P1.5 分别接 8255 芯片的 9 脚和 8 脚为A1、A0 端;7 脚 P1.6 接 U3、U4 的 2 脚为 CLK 端;8 脚 P1.7 接 U3、U4 的 1 脚为 SH 端;9 脚接 8255 的 35 脚为 RST 端;1017 脚作为 P3 口分别接 8255 的 2734 脚为 D0D7端;2128 脚 P2.0P2.7 分别接驱动三极管 Q1、Q2、Q3、Q4、Q5、Q6 的基极;3239 脚 P0.0P0.7 分别接限流电阻 R1R7 的一端,限流电阻 R1R7 另一端依次接江苏技术师范学院毕业设计说明书(论文)第 7 页 共 56 页接数码管的 18 脚为 a、b、c、d、 、e、f、g、dp 端;(2)移位寄存器芯片 74LS165 部分:U4 的 36 脚和 1114 脚分别接按键的一端为 A1A8;9 脚输出端 QH 接 U3 的 10 脚串行输出端 SER;U3 的 36 脚和 1114 脚分别接按键的一端为 B1B8;(3)可编程并行接口 8255 芯片部分:PA 口只用高四位,PB 口和 PC 口为八位。3740 脚分别接发光二极管的限流电阻 R 的一端为 PA4PA7;1825 脚分别接发光二极管的限流电阻 R 的一端为 PB0PB7 端,1017 脚分别接发光二极管的限流电阻 R 的一端为 PC0PC7 端;(4)三极管驱动显示部分:驱动三极管 Q1、Q2、Q3、Q4、Q5、Q6 的集电极1H、2H、3H、4H、5H、6H 分别接数码管的 9 脚;发射机都接 5V 电源。3.1.1 单片机 STC89C52 的最小系统的连接电路最小系统包括单片机的基本供电、时钟电路和复位电路。单片机由 5V 电源供电。(1)时钟和时钟电路:时钟电路是计算机的心脏,它控制着计算机的工作节奏。STC89C52 单片机允许的时钟频率的典型值 12MHz,也可以是 6MHz。本设计采用 12MHz。单片机时钟电路图如图3-2 所示。图 3-2 单片机时钟电路图 3-2 中晶振频率选择 12MHz。接到晶振两端的瓷片电容作用是使振荡器起振和对 f 微调补偿,典型值为 30pF。当单片机加电以后延迟约 10ms 的时间振荡器起振产生时钟,不受软件控制(XTAL2 输出幅度为 3V 左右的正弦波) 。(2)复位和复位电路:计算机在启动运行时都需要复位,使中央处理器 CPU 和系统中的其它部件都处于江苏技术师范学院毕业设计说明书(论文)第 8 页 共 56 页一个确定的初始状态,并从这个状态开始工作。单片机的复位引脚是 RST,当振荡器起振后,该引脚上出现 2 个周期的高电平,是器件复位,只要 RST 保持高电平,单片机保持复位状态。单片机复位方式有二种:上电复位(如图 3-3) 、人工复位(如图 3-4) 。本设计采用的是图 3-3 上电复位,具体电路如图 3-5 所示。 图 3-3 上电复位电路 图 3-4 人工复位注:RST 与 Vss 之间的那个电阻在 NMOS 型单片机种需要接,但是在 CMOS 型单片机中不接。其中电容选择 22uF 的电解电容。图 3-5 复位和复位电路3.1.2 键盘控制电路由两片 74LS165、14 个键盘按钮组成。74LS165 是 8 位并入串出的移位寄存器芯片,是把检测到的按键信号传输给单片机。74LS165 为 8 位移位寄存器(并行输入,互补串行输出)。当移位/置入控制端(SH/LD)为低电平时,并行数据(A-H)被置入寄存器,而时钟(CLK/CLK INH)及串行数据(SER)均无关。当 SH/LD 为高电平时,并行置数功能被禁止。CLK 和 CLK INH 在功能上是等价的,可以交换使用。当 CLK 和 CLK INH 有一个为低电平并且 SH/LD 为高电平时,另一个时钟可以输入。当 CLK 和 CLK INH 有有一个为高江苏技术师范学院毕业设计说明书(论文)第 9 页 共 56 页电平时,另一个时钟被禁止。只有在 CLK 为高电平时 CLK INH 才可变为高电平。165有 18 个引脚,一般为双列直插 DIP 封装。引脚图如图 3-6 所示。图 3-6 74LS165 管脚图165 芯片的移位/置入控制端 SH 接单片机的 P1.7 脚,时钟 CLK 接 P1.6 脚,单片机P1.1 脚接 165 芯片 U3 的输出脚 QH,U4 的输出端 QH 接 U3 的串行数据输入端 SER,A1-A8,B1-B8 分别接按键一端。当键有按下时,74LS165 芯片检测到按键信号,经 U3 的输出端 QH 传输给单片机的 P1.1 脚,单片机根据键盘扫描程序进行处理。键盘控制电路如图 3-7 所示。图 3-7 键盘控制电路江苏技术师范学院毕业设计说明书(论文)第 10 页 共 56 页3.1.3 数码显示部分利用 7 段共阳极数码管进行显示,数码管与 P0 口的 P0.0P0.7 相连,并接一个10K*8 的排阻,P2 口的 P2.0P2.5 与 6 个 PNP 型三极管的基极相连,6 个 PNP 型三极管作为驱动数码管的驱动部分,当单片机选通某一个片选端时,给对应三极管一个高低电平,三极管通过饱和、截止来控制数码管的显示。三极管发射极接 5V 电源,集电极分别接数码管的 1H、2H、3H、4H、5H、6H。采用动态扫描方式。电路如图 3-6 所示。假设当单片机的 P2 口全为高电平输出,三极管 Q1Q6 中的基极也全为高电平,发射极为 5V 也为高电平,三极管 Q1Q6 都截止,集电极为低电平输出,则传到数码管的 1H、2H、3H、4H、5H、6H 端都为低电平,因为数码管是 7 段共阳极数码管,所以6 个数码管都有显示。图 3-6 数码显示电路3.1.4 执行部分这一部分是由 8255A 芯片后接 20 个发光二极管来进行模拟实现。发光二极管灯亮,江苏技术师范学院毕业设计说明书(论文)第 11 页 共 56 页表示柜中有物,反之则柜中无物。8255A 共有 40 个引脚,一般为双列直插 DIP 封装,40 个引脚可分为与 CPU 连接的数据线、地址和控制信号以及与外围设备连接的三个端口线。8255A 的内部结构有以下几部分组成:(1)并行 I/O 端口 A、B、C 8255A 的内部有 3 个 8 位并行 I/O 口:A 口、B 口、C口。3 个 I/O 口都可以通过编程选择为输入口或输出口,但在结构和功能上有所不同。A 口:含有一个 8 位数据输出锁存/缓冲器和一个 8 位输入锁存器。B 口:含有一个 8 位数据输出锁存/缓冲器和一个 8 位输入锁存器(不锁存) 。C 口:含有一个 8 位数据输出锁存/缓冲器和一个 8 位输入锁存器(不锁存) 。当数据传送不需要联络信号时,这 3 个端口都可以用作输入口或输出口。当 A 口 B 口需要有联络信号时,C 口可以作为 A 口和 B 口的联络信号线。管脚图如图 3-7 所示。图 3-7 8255A 管脚图(2)工作方式控制电路:8255A 的三个端口在使用时可分为 A、B 两组。A 组包括A 口 8 位和 C 口高 4 位:B 组包括 B 口 8 位和 C 口低 4 位。两组的控制电路中分别有控制寄存器,根据写入的控制字决定两组的工作方式,也可对 C 口每一位置“1” 或清“0”。本设计中,A 口高四位接 4 个发光二极管,B 口、C 口分别接 8 个发光二极管,每个发光二极管对应一个柜子,单片机的 WR、RD、CS 分别与 8255A 相应端口相接,8255A 的 A1A0 为输入端口控制信号,2 位可构成四种状态,分别寻址 A 口、B 口、C 口江苏技术师范学院毕业设计说明书(论文)第 12 页 共 56 页和控制寄存器,它与单片机的相应端口相接,来控制 A 口 B 口 C 口的寻址,单片机的D0-D7 端口与 8255A 的 D0-D7 口相接。单片机 89C52 通过 8255A 给每一位发送高低电平来控制其亮灭(柜门的开关) ,从而实现存取包。其电路如图 3-8 所示。图 3-8 执行部分电路图江苏技术师范学院毕业设计说明书(论文)第 13 页 共 56 页第四章 自动存包柜的软件设计4.1 自动存包柜软件设计4.1.1 自动存包柜主程序图 4-1 自动存包柜主程序流程图图 4-1 是自动存包柜主程序流程图:首先初始化程序,然后调用按键扫描程序进行扫描。存包,中断显示密码;取包,输入密码,判断密码是否正确,然后根据发光二极管的亮暗来判断柜中有无物品。(1)自动存包柜部分初始化程序如下: unsigned char key_s, key_v; /定义数码管显示段码unsigned char code dis_code12=0x03,0x9f,0x25,0x0d,0x99, / 定义键盘号码 0, 1, 2, 3,40x49,0x41,0x1f,0x01,0x09,0xff,0xfd;/定义键盘号码 4, 5, 6, 7, 8, 9, off 江苏技术师范学院毕业设计说明书(论文)第 14 页 共 56 页uchar LED_flag1=0x01; /定义 20 个发光二极管uchar LED_flag20=0x01;sbit K1 = P36; /定 义 P36 为 P3 口 的 第 7 位sbit K2 = P37; /定 义 P37 为 P3 口 的 第 8 位sbit K3 = P35; /定 义 P35 为 P3 口 的 第 7 位(2)中断初始化程序:void main(void)P0 = 0xff;P2 = 0xff;TMOD = 0x11; / 定时器 0, 1 工作模式 1, 16 位定时方式TH0 = 0xFC;TL0 = 0x17;TCON = 0x01;IE = 0x8a; / 使能 timer0,1 中断TR0 = 1;(3)存包过程自动存包柜的作用决定了它必须具有较好的安全性和可靠性,解决这个问题通用的方法是利用密码核对。即用户存包后,系统能产生一组密码,用户取包时,必须输入这组密码,系统核对正确后,取包才能成功,否则,系统不于响应。首先密码位数需要清零,存包取密码(flagy1=0)时,根据柜号密码存入数组中,使相对应的发光二极管亮,即存包。程序如下:KSLEE0=KSLEE1=KSLEE2=KSLEE3=KSLEE4=KSLEE5=10;/.密码位数清零KKSM=5;flagy1=0;/显示等待存包状态KKKSJJ=0;/显示密码变量清零while(1)if(MMJSASJ3)flag_guanli=0; /连续按键三次以上,无法取出包,需要请管理员江苏技术师范学院毕业设计说明书(论文)第 15 页 共 56 页输入最高密码Key_scan();/调用键盘检测程序if(KKS2=2)flagy1=2; /有取包按键显示取包的状态if(KKS2=1)/显示存包密码显示状态flagy1=1; MIMA1=KSLEE1*10+KSLEE0;MIMA2=KSLEE3*10+KSLEE2;MIMA3=KSLEE5*10+KSLEE4;if(flagy1=0)/存包取密码 if(KKSJD=1)PPOP0=SUIJI1,PPOP1=SUIJI2,PPOP2=SUIJI3,LED_flag1=0,KKSJD=0,SUIJI1=SUIJI2=SUIJI3=0;/存 1 号柜,密码到数组 1if(KKSJD=20)PPOP57=SUIJI1,PPOP58=SUIJI2,PPOP59=SUIJI3,LED_flag20=0,KKSJD=0,SUIJI1=SUIJI2=SUIJI3=0;/存 20 号柜,密码到数组 20 KT_LED2=LED_flag1|(LED_flag23)flag_guanli=0; /连续按键三次以上,无法取出包,需要请管理员输入最高密码Key_scan();/调用键盘检测程序if(KKS2=2)flagy1=2; /有取包按键显示取包的状态if(KKS2=1)/显示存包密码显示状态flagy1=1; MIMA1=KSLEE1*10+KSLEE0;MIMA2=KSLEE3*10+KSLEE2;MIMA3=KSLEE5*10+KSLEE4;4.1.2 键扫描程序图 4-2 键扫描程序流程图记录行号延时 1 0 m s按键是否按下按键是否按下开始记录列号获得按键位置按键程序处理是是否否江苏技术师范学院毕业设计说明书(论文)第 18 页 共 56 页扫键原理: 每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和 CPU 通信。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。我们必须在侦测到有按键被按下,就 delay 一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。键扫描程序:void Key_scan() / 键盘扫描函数 Key_scan() unsigned char X,Y,Z;P3 = 0xff;P3 = 0x0f; /先对 P3 置数 行扫描if(P3!=0x0f) /判断是否有键按下 delay(1); /延时 10ms,软件去干扰if(P3!=0x0f) /确认按键按下; X=P3; /保存行扫描时有键按下时状态P3=0xf0; /列扫描Y=P3; /保存列扫描时有键按下时状态Z=X|Y; /取出键值while(P3!=0xf0); / 按键防止抖动 switch ( Z ) /判断键值(那一个键按下) case 0x77: KKS2=4; break; /取消case 0x7b: KKS2=3; break; /确定case 0x7d: KKS2=2; break; /取包case 0x7e: KKS2=1; break; /存包case 0xbd: KKS1=9,KKS_flag=0; break; /数字 【5】case 0xbe: KKS1=8,KKS_flag=0;break; /数字 【8】case 0xd7: KKS1=7,KKS_flag=0;break; /字符 【F =】case 0xdb: KKS1=6,KKS_flag=0;break; /数字 【3】江苏技术师范学院毕业设计说明书(论文)第 19 页 共 56 页case 0xdd: KKS1=5,KKS_flag=0;break; /数字 【3】case 0xde: KKS1=4,KKS_flag=0; break; /数字 【9】case 0xe7: KKS1=3,KKS_flag=0;break; /字符 【B +】case 0xeb: KKS1=2,KKS_flag=0; break; /字符 【C -】case 0xed: KKS1=1,KKS_flag=0; break; /字符 【D *】case 0xee: KKS1=0,KKS_flag=0; break; /字符 【E / 】 4.1.3 74LS165 数据检测程序 图 4-3 74LS165 数据检测流程图74LS165 数据检测过程: 两片 165 芯片均为时钟上升沿有效,SH-LD 为移位/置入控制,当 SH-LD 为低电平时,并行数据 A-H 被移入寄存器;当 SH-LD 为高电平时,并行置数被禁止,数据传输从低位开始传送,Count_1651和 Count_1651读取 165 端口数据传输给单片机相应端口。74LS165 数据检测程序如下:#include / SFR declarations#include #include #define uchar unsigned char#define uint unsigned intsfr WDT_CONTR = 0xE1;江苏技术师范学院毕业设计说明书(论文)第 20 页 共 56 页sbit CLK = P13; /时钟,上升沿有效sbit SO = P15; /数据输出sbit SH_LD = P14; /移位/置入控制,为低电平时,并行数据 A-H 被移入寄存器;为高时,并行置数被禁止 sbit CLK = P23; /时钟,上升沿有效sbit SO = P32; /数据输出sbit SH_LD = P22; /移位/置入控制,为低电平时,并行数据 A-H 被移入寄存器;为高时,并行置数被禁止 uint KeyPort(void); /申明进行数据传送void Key_Data(void); /声明读取 165 端数据extern void dog(); /定义uint LedData = 0xFFFF;uchar Count_1652; /定义输出uint KeyPort(void) /进行数据传送程序 uchar i;uint key;WDT_CONTR = 0x3d;SH_LD = 0;_nop_();_nop_();SH_LD = 1;for(i=0;i= 1;if(SO)key |= 0x8000;elsekey CLK = 1;return key;江苏技术师范学院毕业设计说明书(论文)第 21 页 共 56 页void Key_Data(void) /读取 165 端数据程序 uint buff_data;buff_data = KeyPort();Count_1650 = buff_dataCount_1651 = (buff_data8)4.1.4 执行部分程序执行部分程序主要由 8255A 的驱动程序组成,首先对 8255A 的 PA 口 PB 口 PC 口进行初始化,把状态标志字读到 ACC 便于进行位操作,若置 PA 状态标志位为高电平输入,然后调用配置子程序,完成对 8255 的设置,判断状态标志位是否为高,为高则控制字设置完成,把 PA 口的数据读到 PA_data;若置 PA 状态标志位为低电平输出,调用配置子程序,完成对 8255 的设置,判断状态标志位是否为高,为高则控制字设置未完成,需重新设置,将 PA_data 的内容送到 PA 口。PB 口、PC 口也一样。程序如下所示:#include unsigned char const cfg_table8= 0x80, /*10000000b, ;c=out b=out a=out*/ 0x90, /*10010000b, ;c=out b=out a=in */ 0x82, /*10000010b, ;c=out b=in a=out*/ 0x92, /*10010010b, ;c=out b=in a=in */ 0x89, /*10001001b, ;c=in b=out a=out*/ 0x99, /*10011001b, ;c=in b=out a=in */ 0x8B, /*10001011b, ;c=in b=in a=out*/ 0x9B, /*10011011b, ;c=in b=in a=in */ ; unsigned char rd_mem(unsigned char mem_ad) void PABC_config(void ) a8255_CON=cfg_tableIO_flags; char rd_PA(void) /*读 PA 口*/ unsigned char PA_data; ACC=IO_flags; /*把状态标志字读到 ACC 便于进行位操作*/ 江苏技术师范学院毕业设计说明书(论文)第 22 页 共 56 页do IO_flagsA=1; /*置 PA 状态标志位为高-输入*/ IO_flags=ACC; PABC_config(); /*调用配置子程序,完成对 8255 的设置*/ ACC=IO_flags; while(IO_flagsA=0); /*判断状态标志位是否为高*/ /*控制字设置完成 */ PA_data=a8255_PA; /*把 PA 口的数据读到 PA_data*/ return(PA_data); /*返回 PA_data*/ void wd_PA(unsigned char PA_data) /*写 PA 口*/ ACC=IO_flags; /*把状态标志字读到 ACC 便于进行位操作*/ IO_flagsA=0; /*置 PA 状态标志位为低-输出*/ IO_flags=ACC; /*位操作完成,把 ACC 的内容写回状态标志字*/ PABC_config(); /*调用配置子程序,完成对 8255 的设置*/ ACC=IO_flags; while(IO_flagsA=1) /*判断状态标志位是否为高 ;为高,设置未完成,需从新设置*/ a8255_PA=PA_data; /*将 PA_data 的内容送到 PA 口*/ void set_PC(unsigned char PC_num) ACC=IO_flags; IO_flagsC=0; ACC=IO_flags; PC_num=PC_num#include #define a8255_PA XBYTE0x7F7C /*PA 口地址*/#define a8255_PB XBYTE0x7F7D /*PB 口地址*/#define a8255_PC XBYTE0x7F7E /*PC 口地址*/#define a8255_CON XBYTE0x7F7F /*控制字地址*/unsigned char IO_flags; /* 用于表示 PA、PB、PC 的当前输入输出状态内容不能被其它程序改写,操作时ACC=IO_flags*/ sbit IO_flagsA=ACC0; /*PA 的当前输入输出状态置位表示输入,复位表示输出*/sbit IO_flagsB=ACC1; /*PB 的当前输入输出状态*/sbit IO_flagsC=ACC2; /*PC 的当前输入输出状态*/char rd_PA(void); /*读 PA 口*/ char rd_PB(void); /*读 PB 口*/char rd_PC(void); /*读 PC 口*/void wd_PA(unsigned char PA_data); /*写 PA 口*/void wd_PB(unsigned char PB_data); /*写 PB 口*/void wd_PC(unsigned char PC_data); /*写 PC 口*/void PABC_config(void ); /*写 8255 控制字*/江苏技术师范学院毕业设计说明书(论文)第 24 页 共 56 页4.1.5 显示程序定时器 0 中断服务程序, 用于数码管的动态扫描。当 flagy1 为 0,等待存包,显示“-”;当 flagy1 为 1,存包显示密码的状态;当 flagy1 为 2 时,显示输入密码的状态。if(flagy1=0)SUIJI1+;if(SUIJI199)SUIJI1=0,SUIJI2+; /低if(SUIJI299)SUIJI2=0,SUIJI3+; /中if(SUIJI399)SUIJI3=0;/高if(flagy1=0) /显示的是- 等待存包 if(MMMSW=5)LLL5=0,LLL1=LLL2=LLL3=LLL4=LLL9=LLL6=LLL7=LLL8=1,P0=dis_code11; /显示-if(MMMSW=6)LLL6=0,LLL2=LLL3=LLL4=LLL5=LLL9=LLL7=LLL1=LLL8=1,P0=dis_code11; /显示-if(MMMSW=7)LLL7=0,LLL2=LLL3=LLL4=LLL9=LLL5=LLL6=LLL1=LLL8=1,P0=dis_code11;/显示 -if(MMMSW=8)LLL8=0,LLL2=LLL3=LLL4=LLL9=LLL5=LLL6=LLL7=LLL1=1,P0=dis_code11;/显示 -if(MMMSW=1)LLL1=0,LLL2=LLL3=LLL4=LLL9=LLL5=LLL6=LLL7=LLL8=1,P0=dis_code11;/显示 -if(MMMSW=2)LLL2=0,LLL1=LLL3=LLL4=LLL9=LLL5=LLL6=LLL7=LLL8=1,P0=dis_code11;/显示 -if(MMMSW=3)LLL3=0,LLL1=LLL2=LLL4=LLL9=LLL5=LLL6=LLL7=LLL8=1,P0=KT_LED1; /第 1 行if(MMMSW=9)MMMSW=0,LLL9=0,LLL1=LLL2=LLL3=LLL4=LLL5=LLL6=LLL7=LLL8=1,P0=KT_LED2; /第 2 行if(MMMSW=4)LLL4=0,LLL1=LLL2=LLL3=LLL9=LLL5=LLL6=LLL7=LLL8=1,P0=KT_LED3; /第 3 行KKSM=5;江苏技术师范学院毕业设计说明书(论文)第 25 页 共 56 页if(flagy1=1)/显示存包显示密码的状态,程序与 flagy1=0 类似,只需改动几个数字即可。if(flagy1=2)/显示输入密码的状态,程序与 flagy1=1 类似,只需改动几个数字即可。第五章 系统调试5.1 硬件调试5.1.1 最小系统板的调试调试最小系统板是为保证 CPU 能正常工作,主要测试 P0、 P1、 P2口是否正常工作,其测试方法是:对三个口,编写程序在相应的口输出高低电平,然后用万用表对口进行测试,看是否符合程序设计情况。5.1.2 键盘显示电路的调试主要测试按钮接到 74LS165 的 8 位输入引脚上,通过编程之后,应该有信号传输给单片机,单片机根据相应指令进行处理,通过逐个按按钮,观察是否能使相对应的数码管显示。为检测键盘是否正常工作,采用的方法是:系统上电后,若键盘没有按下,则相当于断路,此时测得 OUT1 口输出的是高电平.当按下某一个键时,相当于短路,此时测得 OUT1口的输出应该是低电平,如果有某个键当按下时 OUT1 口输出保持高电平不变的话,则说明该按键工作不正常。在显示测试程序中,可以根据三极管基极的高低电平来判断数码管是否接对。5.1.3 8255A 电路的调试测试 8255A 是否正常工作的方法是:往 8255 某一口发全置 1(或 0)指令,因为20 个小灯是共阳的接法,所以如果 8255A 正常工作,正确执行了指令的话,对应的小

注意事项

本文(自动存包柜系统设计)为本站会员(QQ40****828)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!