收藏 分销(赏)

单片机控制自动售货机.doc

上传人:天**** 文档编号:2628667 上传时间:2024-06-03 格式:DOC 页数:48 大小:1.73MB 下载积分:12 金币
下载 相关 举报
单片机控制自动售货机.doc_第1页
第1页 / 共48页
单片机控制自动售货机.doc_第2页
第2页 / 共48页


点击查看更多>>
资源描述
第 43 页 科技学院2010届本科毕业论文 ——自动售货机控制器设计 学科专业: 指导教师: 学生姓名: 学生学号: 2010年5月 目 录 摘 要 VIII Abstract IX 绪论 1 第一章,自动售货机的系统结构 3 1.1自动售货机的系统概述 3 1.1.1自动售货过程的控制子系统简述 4 1.1.2自动售货过程的通讯子系统简述 5 1.2自动售货机的功能简介 6 1.2.1此次设计的自动售货机的功能简介 6 1.2.2实现自动售货机的功能的设计思路 6 1.2.3论文的内容及拟解决的问题 7 第二章.自动售货机的系统硬件电路设计 8 2.1自动售货机中央控制元件8751的介绍 8 2.2货币识别系统 9 2.3货物选择系统 11 2.4出货及显示花钱数系统 11 2.5找钱及显示找钱数系统 14 2.6出错报警系统简述 14 第三章.自动售货机的系统软件程序设计 15 3.1自动售货机货币识别系统程序流程图 15 3.2自动售货机货物选择系统的程序流程图 16 3.3自动售货机出货,显示花钱数系统流程图 19 3.4自动售货机找钱,显示找钱数系统流程图 20 3.5出错报警系统流程图 21 第四章.系统软、硬件设计实现 23 4.1驱动程序 23 4.1.1实现有效投币定时30秒以及累加计数程序: 23 4.1.2货物选择系统的驱动程序 23 4.1.3报警系统的驱动程序 29 第五章 结束语 30 参考文献 31 致 谢 32 附 录33 自动售货机控制器设计 摘 要 自动售货机是劳动密集型的产业构造向技术密集型社会转变的产物。本文设计了一种以INTEL 公司的8751单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机8751芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择4×4矩阵式键盘按键作为货物选择端,采用了2个可编程并行接口8255A实现并行接口的扩展,解决了单片机8751芯片输入/输出口引脚紧张的问题,实现了货物的掉出以及货币数的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。 关键词:自动售货机;控制系统,8751单片机;系统程序 The new business tax under the Ordinance Analysis of Tax Planning Abstract The system that I design is an automat basing on microcontroller 8751to control the sell goods system .In the following paper introduce the system design and handware sellection software design and write . and emphases describe the automat system worke principle system design and sofeware programing technique The master mcu 8751 is INTEL Company. The system has some prominent excellences by concentrate control. It is very steady and credible,my system use 4*4keyboard to sellecting goods useing two programing parallel interface 8255 to resolve i/o tensional problem make goods dorp and coin display function . I program the system by software named keilc51, The whole of programmer is writed by asembeling language.keilc51 software makes my programmer easier and check work more convenient. Key words: vending machine;MCU8751;8255A keyboard/display 绪 论 从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。   从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。 自动售货机是以单片机为核心的自动化控制装置,它集按键选择技术、单片机技术和显示技术于一体,具有功能强大、可靠性高、使用方便、维护简单等特点。因此,在商业、生活中得到了广泛的应用。有些自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内大面积普及成为可能。 随着科技的发展及人们生活水平的提高,自动售货机市场的发展越来越呈现出多元化及个性化的需求。通过自动售货机进行自助购物正逐渐成为市民的一种新的消费时尚,快捷方便的购物方式满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化亮化城市环境,方便群众生活,已经成为城市各角落的一道亮丽风景线。自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。 本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。 本文共分为五章。系统介绍了自动售货机系统从控制方案,操作逻辑到系统软件等各个环节的设计及系统调试的方法和原则。第一章简单介绍了自动售货机的 系统结构,第二章介绍了自动售货机的系统硬件电路设计,第三章介绍了自动售货机的系统软件程序设计及分析,第四章主要介绍了自动售货机的系统软件驱动程序实现 第一章,自动售货机的系统结构 1.1自动售货机的系统概述 自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图1.1 顾客投入货币 机器自动计数 顾客按动按钮 机器送出选定商品 顾客取出商品 机器将余币送出 顾客取出余币 图1.1 自动售货机工作时序图 售货机的工作原理是: (1) 从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。 (2)识别器把信息数据传给通信模块。 (3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已经售完,并等待顾客按键选择商品。 (4)顾客选择商品后,售货机自动把商品送出,等待顾客取走。 (5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款 额不够,售 货机经过延时予以退币。退币分为两种情况:一种是由货币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。 (6)系统复零,完成售货。 自动售货机的硬件原理构成如下图2.2所示 购货状态显示 金额显示 继电器&电磁铁 串行输出接口扩展 并行输出接口扩展 CPU&ROM&RAM 自动复位线路 并行输入接口扩展 无货检测 识币器 按钮 图1.2 自动售货机硬件结构图 综合所述,售货机系统可以分为三部分组成,即自动售货机的控制子系统、通讯子系统、硬币器子系统以及纸币器子系统。其中控制子系统是本设计研究重点。这些内容在下文中进一步介绍。 1.1.1自动售货过程的控制子系统简述 控制子系统由以下四个部分组成,分别是预设自动售货机系统、金额累计、可售指示和退币系统、售完检测系统、售出累计及自测功能系统。 1、预设自动售货机系统。自动售货机售出的同类商品可分为若干品种,其售前设定价格须预先寄存在控制系统内。售货机的价格设置由按键和存储器组成。通过按键选择被设价商品的种类及价格,并将价格写入存储器中,该存储器本身具有掉电保护功能,属于软件设置方式。此外,在简易售货机中,由于出售商品的种类少,价格变化下,使用币种单一,也可以用硬件设置价格,才用拨码开关对应方式,结构简单,操作方便。 2、金额累计、可售指示和退币系统。控制系统的核心CPU对识币、退币、无货检验及购货信号进行循环检查,当有识币信号后,将金额数值送入金额累计存储器中进行累计,并通过串行接口使可售指示灯亮,提示购货。此时可以按下购货 按钮,由于 CPU检测到有购货信号后,如金额累计器中的数值与预设价格相等,则通过并行扩展接口驱动电磁阀或者微电机驱动出商品,并将金额累计存储器清零,完成一次售货过程,如累计金额大于预设价格时,驱动商品后,相减差额由信号驱动退币,实现退币和找钱功能。 3、售完检测系统。在自动售货机商品存储存道下方按照有接触行程开关,当存储存道有商品时,压下行程开关,自动售货机正常工作;当商品出售完毕时,行程开关被释放,向CPU发出无货信号,经过检测通过串行扩展接口向相应的售完指示灯发出信号,使机身“售完”指示灯亮,此种商品自动停售,即使投币金额达到该道商品预设价格数值,可售按钮仍然无法启动信号,金额累计存储器也不清零。 4、自动售货机售出累计及自测功能系统。该机CPU在每次售出商品后,向售出累计存储器中累计售出数据,通过自动售货机内部的按键可在金额显示窗口中读到累计结果。此外,在按下自测功能键后,出现自测功能信号,由外部按键操作,可检测各商品存储道的驱动商品功能。 1.1.2自动售货过程的通讯子系统简述 自动售卖系统的外围设备较为复杂,导致对主控制器的要求越来越高。为了简化设计,采用简单、稳定的内部通讯总线协议非常必要。有些公司采用欧洲售货机制造协会(EVMMA)制定的MDB/ICP总线协议。该协议简洁明了,功能强大,可扩展性强并且对外挂设备数目没有限制,是理想的自动售卖系统内部总线协议。 MDB/ICP协议是欧洲售货机制造协会制定的一套用于协调自动售货机的主控制器(MMC)与多个设外之间通讯的协议。 MDB接口实际上是工作于波特率9600的主从型串行总线接口,所以外围设备(例如硬币器、纸币器等)均为主控制器(传统上称为售货机控制器——VMP)的从机。所有外围设备与主控制器之间的通讯方式都一致。 MDB协议的串行位格式为:1个起始位,8个数据位,1个方式位和1个停止位,共11位。其中方式位根据传递的方式的不同置0或置1。在MDB总线上,VMC通过广播方式向外发送命令。第一字节为地址字节(实际上只有高5位寻址信息,低3位为对外设的指令),该字节被所有的外设读取,但只有符号地址字节所指 定的外设才处理其后的数据字节,并做出反应。在VMC到外设的数据中,地址字节的方式位被置1,数据字节的方式位被置0,外设通过检验接受到的方式位确定是地址指令还是数据。当数据从外设发送到主机时,最后送出的字节方式位被置1,标志着数据发送完毕。[10] VMC向外设发送的指令由一个字节、一些可选的数据字节一个校验和字节构成。发送指令后,外设应答VMC的通信块可以由一个数据块和一个字节组成,或者一个应答字节,或者一个无应答字节。如果外设应答数据块的话,VMC将通过一个应答字节、无应答字节或重发字节应答外设传回的数据。 1.2自动售货机的功能简介 1.2.1此次设计的自动售货机的功能简介 基本原理:货币识别器对所投货币进行识别,根据金额将商品选择权提供用户,用户选择后,控制芯片发出指令将所选择商品从储备料道中送达取物口。其功能描述:货物种类一共设有12种,这12种物品分别对应着12个不同的按键选择,其中1元,2元,3元价格不等的物品各4种;货币识别器能够识别1元,5元的货币,自动售货机能够实现货币累加功能。在规定的30秒中内,投了几次货币后,货币能够实现累加功能,这样机器就会把投入的货币总额数目输入中央控制元器件,进行处理;超过30秒后投币,投币无效,机器自动把钱全部退出来。如果累计投入的货币数目超过物品的预设价格,机器能够实现找钱功能;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还;在投入一次累加货币后选择物品,如果投入的累加货币数目大大超过所选择物品的预设单个价格时,那么能够实现选择同一个物品购买多个,在本设计中设为可以同时购买2个或3个物品。 本设计中有一共有16个按键选择,其中12个是货物选择键,有2个是多选键(一次购买2个或3个货物),还有1个确定键和1个取消键。如果没有按照预先设计的流程顺序进行按键选择,自动售货机将启动报警系统,等待再次正确的按键选择。 在出货系统中设计了,显示购买货物的共花钱数。 在找零系统中设计了,显示找零的货币数。 1.2.2实现自动售货机的功能的设计思路 采用单片机MSC-51系列中的8751作为中央控制元件; 用P3.4和P3.5作为识别货币输入端; P1作为货物选择选择端(采用4*4行列式键盘做为选择货物端); 采用两个8255A扩展并行I/O接口,实现掉出货物功能、显示功能、找钱功能; P2.7和P2.6分别作为8255A的片选输入端。 1.2.3论文的内容及拟解决的问题 1、从投币口送入货币,然后经过传感器采集数据、识别器判别人民币的真伪并判别面值。 2、识别器把信息数据传给通讯模块。 3、通讯模块与售货机的主控系统通信,启动售货机的面板控制,并等待顾客按键选择商品。 4、顾客选择商品后,售货机自动把商品送出,等待顾客取走。 5、金额足够多,售货机将自动找回钱。 6、系统复零,完成售货。 第二章.自动售货机的系统硬件电路设计 2.1自动售货机中央控制元件8751的介绍 在本次设计中,中央控制元件采用MCS-51系列单片机中的8751。 8751单片机是Intel公司生产的MCS-51系列单片机中的一种,其特性与MCS-51单片机基本一样。 8751单片机内部结构: 8751单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。其中, 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。  8751内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 8751 8751内部结构 图2.1 8751内部结构 MCS-51的引脚说明: 图2.2 8751引脚图 MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,上图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根, 8751共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。,4组8位共32个I/O口,中断口线与P3口线复用。[4] 2.2货币识别系统 货币识别分别有对硬币和纸币的识别,由此在下文中分别介绍说明: 1,我国目前发行的1元、5角和1角硬币的金属原材料是为造币而专门使用的特殊合金,因此在它通过投币入口进入由电感和电容组成的特定高频振荡线路所产生的磁场时,金属材质和体积的体积的差别对电感量的影响大小也出现微弱差异,电感量的变化引起振荡频率的变化,与设定值进行比较,确定某种硬币后,经窄带选频电路将频率信号变为电压信号输出,完成对金属硬币的识别。金属硬币识别器种类繁多,但存币退币机构基本上分为两类:一类是平面是存币,电磁阀退币;另一类是圆筒式存币,步进机退币。当硬币投入后经过识别识别出电信号后,伪币和异物被排出真币按面值由几组分配电磁阀分配到不同存币腔体内备用。当收到退币找零电信号后,通过退币电磁阀或者退币电机拉杆,将存币腔内下部依电信号程序退出,完成自动售货机的退币找零功能。 2,硬件数据采集设备的电源为发光二极光,所发出的光的波长峰值在红外线波段,但不是单光谱,其中红外光成分达到90%以上,因此,光源辐射光中起主要作用的实际上是红外辐射。实验中对各种纸币的特征的识别也主要是根据纸币的表面特征对红外辐射的敏感。红外辐射是光辐射中的一种类型,它具有普通光辐射的共性。这主要是因为不同的纸币表面特征不同,所以在相同的光辐射下会呈现不同的反映,从而可以用来识别不同的纸币,具体地说,首先,钞票的纸张材料是特定的,所以同一种钞票具有一定程度的共性;其次,钞票表面的图案差异,对于相同面值的钞票而言,其表明的各种图案相同,不同面值的钞票之间表明图案有较大区别,所以,根据所述的光的辐射理论,也可以根据它们对相同光辐射的不同反映来判断起面值归属;再次,钞票流通过程中所造成的不同程度的污损,就会造成钞票表面特征的变化,接受光辐射的特性就是有所变化。因此,光辐射可以反映钞票的新旧程度;另外,相对于伪币的鉴别,因为伪币的纸张一般都无法满足真钞的纸张特性,而且,伪币中某些图案达不到钞票的实际标准,如水印是在造纸过程中通过特征工艺抄制上去的无色图案,而伪钞的水印则是通过一定方式轧印或描绘上去的等等,这都能在钞票对光辐射的接受信息中反映出来。但是光辐射在传输过程中,会受外界环境的影响而产生能量损失。比如经过大气传输时,就会受到大气成分的吸收,而在不同的环境条件下,大气的成分含量有某些程度的变化,因而导致能量损失的程度不同。所以光辐射到钞票介质的传输距离越短,所造成的能量损失的影响就越微小,如果硬件的性能较好,外界的这种影响可以不予考虑。本系统中光源采用发光二极管,所发出的光的波长峰值在红外波段,并且90%以上是红外线,但不是单光谱,还有其它光谱范围的光线。接受管使用NPN型的光电三极管,工作在红外波长范围内,发射管和接受管分别有6个,采用光的透射方式,采集数据时,完全对应位于钞票的两侧。 作为整个货币识别系统的核心部分,纸币控制器必须由一颗功能相对较强的嵌入式微处理器以及一系列外围器件构成。 通过对各种微处理器的研究,考虑到开发成本,我们最终选用8751作为控制器的中央处理单元。该处理器在上一章中已经做了简单介绍。 8751拥有4个I/O口即P0、P1、P2、P3,它有两个可编程的定时器/计数器,分别称为定时器/计数器0和定时器/计数器1。它们都是16位加法计数结构,分 别由TH0和TL0及TH1和TL1两个8位计数器组成。 其主要功能是:处理器通过控制发光二极管发光,当纸币进入时,入口处发光二极光投射过纸币的光强变化,被相应入口处的光电三极管接受到后转换为电信号,传给8751处理器,经过判断,处理器直接控制。 由于时间的关系,识别货币器是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是研究自动售货机的选择货物、出货以及显示功能。 2.3货物选择系统 货物选择系统主要通过键盘操作来完成。键盘是人机交互中重要的输入装置,价格低廉,结构简单,使用方便,在单片机应用系统中得到广泛地应用。按键按照接口原理可分为编码键盘与非编码键盘两类,它们的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。[2] 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加器ACC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。 键盘按键无论有无编码,以及采用什么编码,最后都要转换成为与累加器中数值相对应的键值,以实现按键功能程序的跳转。 一个完善的键盘控制程序应具备以下功能: (1) 检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响。 (2) 有可靠的逻辑处理办法。每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序。 (3) 准确输出按键值(或键号),以满足跳转指令要求。 2.4出货及显示花钱数系统 由于还要实现显示花钱数这项功能,这样导致I/O接口紧张,考虑到8751自身资源有限,并不能很好的满足系统的要求,明显需要实现并行接口的扩展,在本设计中采用了8255A实现扩展并行I/O接口功能。 8255A是一个具有两个8位(A口和B口)和两个4位(C口高/低4位)并行输出输入端口的接口芯片。 8255A可作为提供TTL电平兼容的接口,如打印机、A/D、D/A转换器、键盘以及需要同时两位以上信息工作的一切形式的并行接口,还提供按位控制的功能。 8255A能适应CPU与I/O接口之间的多种数据传送控制方式要求,如无条件传送,应答方式传送和中断方式传送。 8255A使用方式字控制字和置位/复位控制字因而执行功能很强。[1] 其内部结构如下: 读/写控制 逻辑 数据总线 缓冲器 D0~D7 A0 RD WR B组控制 CS PA0~7 A组控制 A1 RESET A组 A口 (8位) A组 PC上 (4位) B组 B口 (8位) PB0~7 PC4~7 PC0~3 B组 PC下 (4位) 图2.3 8255A内部结构 图中A1、A0和RD、WR及CS组合所实现的端口寻址及各种结构功能 表2.1 引脚功能 CS RD WR A1 A0 操作 0 1 0 0 0 向A口写数据 0 1 0 0 1 向B口写数据 0 1 0 1 0 向C口写数据 0 1 0 1 1 写控制字 0 0 1 0 0 从A口读数据 0 0 1 0 1 从B口读数据 0 0 1 1 0 从C口读数据 1 X X X X 呈高阻态 0 1 1 X X 呈高阻态 0 0 0 X X 非法操作 8255A的工作方式有3种,在本设计中只是采用了方式0 方式0——基本的输入/输出方式 8255A的PA、PB、PC7~4、P3~0可分别被定义为方式0输入或方式0输入。方式0输出具有锁存功能,输入没有锁存。方式0适用于无条件传输数据的设备,双方不需要握手信息,就可以使数据简单地写入或读出。如读一组开关的状态、控制一组指示灯的显示等。 本设计的显示用的是LED显示器,常用的LED显示器有LED状态显示器(俗称发光二极管)、LED七段显示器(俗称数码管)和LED十六段显示器。发光二极管可显示两种状态,用于系统状态显示;数码管用于数字显示;LED十六段显示器用于字符显示。其中所说的静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个字段分别与一个8位I/O口地址相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码。采用静态显示方式,较小的电流即可获得较高的亮度,且占用CPU时间少,编程简单,显示便于监测和控制,但其占用的口线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。[6]本设计的显示就是用的这种静态显示 2.5找钱及显示找钱数系统 本设计中,货币识别器能识别1元、2元、5元货币,并能实现货币累加功能。在通过投币后,将会把产生的信号输入给8751的P3.4和P3.5的引脚上,其中P3.4控制货币的累加,P3.5控制投币的有效时间30秒。再经过8751处理后,将会在找钱输出端产生与其相对应的信号输出,控制所选钱币的掉出,实现找钱功能。 要实现显示找钱数这项功能也将会导致I/O接口紧张,而8751自身资源有限,它并不能很好的满足系统的要求,所以为了实现并行接口的扩展,在本设计中也将采用了8255A实现扩展并行I/O接口功能。 在上一节中已经详细介绍了8255A及其控制的LED显示,在本节中要实现的找钱、显示找钱数与出货系统的设计原理基本一致,在这里就不加以介绍了。 2.6出错报警系统简述 在本设计中,只有在按键选错的情况下,导致系统无法正常处理,才会出现报警现象。当出现错误的时候,8751将会控制8255A的PC端输出信号,再通过光电耦合,这样来驱动一个扬声器工作,实现报警功能。 第三章.自动售货机的系统软件程序设计 3.1自动售货机货币识别系统程序流程图 IE、TMOD置初值,使T0为计数工作方式0,T1为定时工作方式0 TH0、TL0、TH1、TL1置初值,启动T0计数器、T1定时器,循环计数R0置初值601 是否完成? Y N 检测T0是否有脉冲? N Y T0、T1开始计数 T1计数是否溢出? N Y TH1、TL0重新设置计数初值 将TL0计的数值存入R1、MONEY单元,然后TL0清零 识别货币、累加计数结束 图3.1 识别货币系统驱动程序流程图 3.2自动售货机货物选择系统的程序流程图 本设计中,分别设置了价格分别为1元、2元、3元不等的货物,这里只列出一元货物处理子程序的流程图如下: 图3.2 按键选择程序流程图 图3.3 1元钱货物处理子程序流程图 3.3自动售货机出货,显示花钱数系统流程图 本设计设置了价格分别为1元、2元、3元不等的货物,一共12种。在通过按键选择物品后,将会把产生的信号输入给8255A的P1的引脚上,8255接收信号后,经过处理后,将会在货物输出端产生与其相对应的信号输出,控制所选货物的掉出。 图3.4出货及显示的功能驱动程序流程图 3.4自动售货机找钱,显示找钱数系统流程图 本设计用8255A的PA控制找钱,用PB控制LED显示找钱数,其中能够找钱货币的面值为1元、2元、5元。PA0控制1元,PA1控制2元,PA2控制2元,PA3控制5元。 图3.5找钱及显示功能驱动程序流程图 由找钱系统1图(图见附录)我们可以看到该芯片8255A的CS与8751的P2.6相连,A0、A1分别与74LS373的3Q、4Q相连。 当的3Q、4Q输出不同组合时,则控制选择了8255A的PA、PB、PC口,当取00时对应PA口输入输出,当取01时对应PB口输入输出,当取10时对应PC口输入输出;由于也受到P2.6的控制,只有当P2.6输出为0时,才能片选到该芯片8255A。 最后我们可以计算得出PA、PB、PC及控制口对应的地址分别为BFF3H、BFF7H、BFFBH、和BFFFH。 3.5出错报警系统流程图 图3.6报警功能驱动程序流程图 由找钱系统1图(图见附录)我们可以看到该芯片8255A的CS与8751的P2.6相连,A0、A1分别与74LS373的3Q、4Q相连。这个已经在上一章中已经说过了,在这里就不再画了。 当的3Q、4Q输出不同组合时,则控制选择了8255A的PA、PB、PC口,当取10时对应PC口输入输出;由于也受到P2.6的控制,只有当P2.6输出为0时,才能片选到该芯片8255A。 最后我们可以计算得出PA、PB、PC及控制口对应的地址分别为BFF3H、BFF7H、BFFBH、和BFFFH。 第四章.系统软、硬件设计实现 4.1驱动程序 由于时间关系,本次毕业设计的仿真结果就不再这里做详细的介绍了,现列出各软件的驱动程序如下: 4.1.1实现有效投币定时30秒以及累加计数程序: ORG 1000H MONEY DATA 2000H MOV IE, #8AH MOV TMOD,#04H ;设置T1为定时工作方式0,T0为计数工作方式0 MOV TH0,#00H ;置计数初值 MOV TL0,#00H MOV TH1,#9EH ;置计数初值 MOV TL1,#58H SETB TR0 ;启动计数器 SETB TR1 ;启动定时器 MOV R0,#601 LOOP1: DJNZ R0,T1_END ;循环600次,实现30秒计时 MOV A,P3 JBC ACC.5,LP1 LP1: JBC TF1,NEXT ;查询计数溢出 SJMP LP1 NEXT: MOV TH1,#9EH ;重新设置计数初值 MOV TL1,#58H JMP LOOP1 T1_END: MOV R1,TL0 MOV MONEY,R1 ;将投入的货币累加数存入MONEY CLR A MOV TL0,A MOV TH0,A RET 4.1.2货物选择系统的驱动程序 VULE EQU 40H MOV A,MONEY MOV B,A SJMP KEY KEY: MOV R2,#0FEH ;设置键码寄存器 ANL P1,#0F0H ;设置初始扫描码 MOV A, P1 ;全扫描行线 CPL A ;取反 ANL A,#0F0H ;屏蔽回扫值低4位 JZ KEY3 ;无键闭合,返回 LCALL D10MS ;延时10ms去抖动 MOV R3,#04H ;设置扫描行数 ORL P1,#0FH4 ;位描行线全置高 KEY1: MOV P1,R2 ;逐行扫描键盘 MOV A,P1 ;读入状态值 CPL A ;取反 ANL A,#0F0H ;屏蔽状态低4位 JNZ KEY2 ;有键闭合,转键处理 MOV A,R1 ;无键闭合,继续扫描下一个按键 RL A ;左移扫描码,指向下一行扫描线 MOV R2,A DJNZ R3,KEY1 ;逐行扫描未完成,继续 LJMP KEY3 ;本轮扫描无键闭合,返回 KEY2: MOV A,P1 ;键处理 ORL A,#0FH ;扫描码与状态值拼装成特征字节 ANL A,R2 CPL A ;取反,特征字节变换成键位码 MOV VULE,A ;保存键位码 LCALL KEYPCS ;用查表法查找键码 WAIT: ANL P1,#0F0H ;判断键释放否? MOV A,P1 ANL A,#0F0H CPL A JNZ WAIT RET KET3: MOV VULE,#0FFH ;无键闭合,置无效码 RET 查找键码子程序如下: KEYPCS: MOV R4,#10H ;查找键码程序,社子按键码(16个按键) MOV R4,#00H ;清除键码计数器 MOV DPTR,#KEYTAB ;设置键码表首址 KEYP1: CLR A MOVC A,@A+DPTR ;查表 CJNE A,VULE,KEYP2 ;未找到,转到下一个 MOV VULE,R5 ;找到键位码,键码装入键码寄存器VULE MOV RET KEYP2: INC R5 ;键码计数器加1 INC DPTR ;键码表地址加1 DJNZ R4,KEYP1 ;未查完16个按键,继续
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服