单片机控制自动售货机毕业设计_第1页
单片机控制自动售货机毕业设计_第2页
单片机控制自动售货机毕业设计_第3页
单片机控制自动售货机毕业设计_第4页
单片机控制自动售货机毕业设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE第41页PAGE科技学院2010届本科毕业论文——自动售货机控制器设计学科专业:指导教师:学生姓名:学生学号:2010年5月目录摘要 VIIIAbstract IX绪论 1第一章,自动售货机的系统结构 31.1自动售货机的系统概述 31.1.1自动售货过程的控制子系统简述 41.1.2自动售货过程的通讯子系统简述 51.2自动售货机的功能简介 61.2.1此次设计的自动售货机的功能简介 61.2.2实现自动售货机的功能的设计思路 61.2.3论文的内容及拟解决的问题 7第二章.自动售货机的系统硬件电路设计 82.1自动售货机中央控制元件8751的介绍 82.2货币识别系统 92.3货物选择系统 112.4出货及显示花钱数系统 112.5找钱及显示找钱数系统 142.6出错报警系统简述 14第三章.自动售货机的系统软件程序设计 153.1自动售货机货币识别系统程序流程图 153.2自动售货机货物选择系统的程序流程图 163.3自动售货机出货,显示花钱数系统流程图 193.4自动售货机找钱,显示找钱数系统流程图 203.5出错报警系统流程图 21第四章.系统软、硬件设计实现 234.1驱动程序 234.1.1实现有效投币定时30秒以及累加计数程序: 234.1.2货物选择系统的驱动程序 234.1.3报警系统的驱动程序 29第五章结束语 30参考文献 31 32附录33自动售货机控制器设计摘要自动售货机是劳动密集型的产业构造向技术密集型社会转变的产物。本文设计了一种以INTEL公司的8751单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机8751芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择4×4矩阵式键盘按键作为货物选择端,采用了2个可编程并行接口8255A实现并行接口的扩展,解决了单片机8751芯片输入/输出口引脚紧张的问题,实现了货物的掉出以及货币数的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。关键词:自动售货机;控制系统,8751单片机;系统程序ThenewbusinesstaxundertheOrdinanceAnalysisofTaxPlanningAbstractThesystemthatIdesignisanautomatbasingonmicrocontroller8751tocontrolthesellgoodssystem.Inthefollowingpaperintroducethesystemdesignandhandwaresellectionsoftwaredesignandwrite.andemphasesdescribetheautomatsystemworkeprinciplesystemdesignandsofewareprogramingtechniqueThemastermcu8751isINTELCompany.Thesystemhassomeprominentexcellencesbyconcentratecontrol.Itisverysteadyandcredible,mysystemuse4*4keyboardtosellectinggoodsuseingtwoprogramingparallelinterface8255toresolvei/otensionalproblemmakegoodsdorpandcoindisplayfunction.Iprogramthesystembysoftwarenamedkeilc51,Thewholeofprogrammeriswritedbyasembelinglanguage.keilc51softwaremakesmyprogrammereasierandcheckworkmoreconvenient.Keywords:vendingmachine;MCU8751;8255Akeyboard/display绪论从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。自动售货机是以单片机为核心的自动化控制装置,它集按键选择技术、单片机技术和显示技术于一体,具有功能强大、可靠性高、使用方便、维护简单等特点。因此,在商业、生活中得到了广泛的应用。有些自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内大面积普及成为可能。随着科技的发展及人们生活水平的提高,自动售货机市场的发展越来越呈现出多元化及个性化的需求。通过自动售货机进行自助购物正逐渐成为市民的一种新的消费时尚,快捷方便的购物方式满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化亮化城市环境,方便群众生活,已经成为城市各角落的一道亮丽风景线。自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。本文共分为五章。系统介绍了自动售货机系统从控制方案,操作逻辑到系统软件等各个环节的设计及系统调试的方法和原则。第一章简单介绍了自动售货机的系统结构,第二章介绍了自动售货机的系统硬件电路设计,第三章介绍了自动售货机的系统软件程序设计及分析,第四章主要介绍了自动售货机的系统软件驱动程序实现第一章,自动售货机的系统结构1.1自动售货机的系统概述自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图1.1顾客投入货币顾客投入货币机器自动计数机器自动计数顾客按动按钮顾客按动按钮机器送出选定商品机器送出选定商品顾客取出商品顾客取出商品机器将余币送出机器将余币送出顾客取出余币顾客取出余币图1.1自动售货机工作时序图售货机的工作原理是:从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。(2)识别器把信息数据传给通信模块。(3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已经售完,并等待顾客按键选择商品。(4)顾客选择商品后,售货机自动把商品送出,等待顾客取走。(5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款额不够,售 货机经过延时予以退币。退币分为两种情况:一种是由货币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。(6)系统复零,完成售货。自动售货机的硬件原理构成如下图2.2所示购货状态显示金额显示继电器&电磁铁串行输出接口扩展并行输出接口扩展CPU&ROM&RAM自动复位线路并行输入接口扩展无货检测识币器按钮购货状态显示金额显示继电器&电磁铁串行输出接口扩展并行输出接口扩展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个,可存放读写的数据,运算的中间结果或用户定义的字型表。87518751内部结构87518751内部结构图2.18751内部结构MCS-51的引脚说明:图2.28751引脚图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~D7A0RDWRB组控制CSPA0~7A组控制A1RESETA组A口(8位)A组PC上(4位)B组B口(8位)PB0~7PC4~7PC0~3B组PC下(4位)图2.38255A内部结构图中A1、A0和RD、WR及CS组合所实现的端口寻址及各种结构功能表2.1引脚功能CSRDWRA1A0操作01000向A口写数据01001向B口写数据01010向C口写数据01011写控制字00100从A口读数据00101从B口读数据00110从C口读数据1XXXX呈高阻态011XX呈高阻态000XX非法操作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端输出信号,再通过光电耦合,这样来驱动一个扬声器工作,实现报警功能。第三章.自动售货机的系统软件程序设计41663.1自动售货机货币识别系统程序流程图IEIE、TMOD置初值,使T0为计数工作方式0,T1为定时工作方式0TH0TH0、TL0、TH1、TL1置初值,启动T0计数器、T1定时器,循环计数R0置初值601是否完成?是否完成?YN检测检测T0是否有脉冲?NYT0T0、T1开始计数T1T1计数是否溢出?NYTH1TH1、TL0重新设置计数初值将TL0将TL0计的数值存入R1、MONEY单元,然后TL0清零识别货币识别货币、累加计数结束图3.1识别货币系统驱动程序流程图3.2自动售货机货物选择系统的程序流程图本设计中,分别设置了价格分别为1元、2元、3元不等的货物,这里只列出一元货物处理子程序的流程图如下:图3.2按键选择程序流程图图3.31元钱货物处理子程序流程图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。第四章.系统软、硬件设计实现44204.1驱动程序由于时间关系,本次毕业设计的仿真结果就不再这里做详细的介绍了,现列出各软件的驱动程序如下:4.1.1实现有效投币定时30秒以及累加计数程序: ORG 1000HMONEY DATA 2000HMOV IE, #8AHMOV TMOD,#04H ;设置T1为定时工作方式0,T0为计数工作方式0MOV TH0,#00H ;置计数初值MOV TL0,#00HMOV TH1,#9EH ;置计数初值MOV TL1,#58HSETB TR0 ;启动计数器SETB TR1 ;启动定时器MOV R0,#601LOOP1: DJNZ R0,T1_END ;循环600次,实现30秒计时MOV A,P3JBC ACC.5,LP1LP1: JBC TF1,NEXT ;查询计数溢出SJMP LP1NEXT: MOV TH1,#9EH ;重新设置计数初值MOV TL1,#58HJMP LOOP1T1_END: MOV R1,TL0MOV MONEY,R1 ;将投入的货币累加数存入MONEYCLR AMOV TL0,AMOV TH0,ARET4.1.2货物选择系统的驱动程序VULE EQU 40HMOV A,MONEYMOV B,ASJMP KEYKEY: 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: MOVA,P1 ;键处理 ORL A,#0FH ;扫描码与状态值拼装成特征字节 ANL A,R2 CPL A ;取反,特征字节变换成键位码 MOVVULE,A ;保存键位码 LCALL KEYPCS;用查表法查找键码WAIT:ANL P1,#0F0H;判断键释放否?MOV A,P1ANL A,#0F0HCPL AJNZ WAITRETKET3:MOVVULE,#0FFH ;无键闭合,置无效码RET查找键码子程序如下:KEYPCS:MOVR4,#10H ;查找键码程序,社子按键码(16个按键)MOV R4,#00H ;清除键码计数器MOV DPTR,#KEYTAB ;设置键码表首址KEYP1:CLR AMOVCA,@A+DPTR ;查表CJNE A,VULE,KEYP2 ;未找到,转到下一个MOV VULE,R5 ;找到键位码,键码装入键码寄存器VULEMOVRETKEYP2:INCR5 ;键码计数器加1INCDPTR ;键码表地址加1DJNZR4,KEYP1 ;未查完16个按键,继续MOVVULE,#0FFH ;无键闭合,置无效码RETKEYTAB :DB11H ;键码=00H对应键‘0’DB21H;键码=00H对应键‘1’DB41H;键码=00H对应键‘2’DB81H;键码=00H对应键‘3’DB12H;键码=00H对应键‘4’DB22H;键码=00H对应键‘5’DB42H;键码=00H对应键‘6’DB82H;键码=00H对应键‘7’DB14H;键码=00H对应键‘8’DB24H;键码=00H对应键‘9’DB44H;键码=00H对应键‘A’DB84H;键码=00H对应键‘B’DB18H;键码=00H对应键‘C’DB28H;键码=00H对应键‘D’DB48H;键码=00H对应键‘E’DB88H;键码=00H对应键‘F’MOVA,R5MOV R6,A ;将选物按键码存入R6中ANL R0,#00H ;R0清零ANL R1,#00H ;R1清零 ***********************************选择1元钱的货物A***********************************CJNE A,#00H,NEXTB ;判断是否按下键‘0’JMP 1YUAN***********************************选择1元钱的货物B***********************************NEXTB: CJNE A,#01H,NEXTC ;判断是否按下键‘1’JMP 1YUAN***********************************选择1元钱的货物C***********************************NEXTC: CJNE A,#02H,NEXTD ;判断是否按下键‘2’JMP 1YUAN***********************************选择1元钱的货物D***********************************NEXTD: CJNE A,#03H,NEXTE ;判断是否按下键‘3’1YUAN: MOV A,B ;将投入的货币累加数存入寄存器BCJNE A,#01H,NEXTA1 ;判断投入的货币数是否为1元钱MOV R0,#01H ;选择的货物数为1个LOOPA1:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA2 ;按下确定键,所选货物掉出LJMP OUTGOODSNEXTA2:CJNE A,#0EH,VOICEA1 ;按下取消键MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA1:LCALL VOICE ;选择按下其他键,报警JMP LOOPA1 ;返回,等到有键按下NEXTA1:JNC NEXTA3 ;投入的货币数小于所选择商品的预设价格JMP OUTMONEY ;钱全部退还NEXTA3:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0CH,NEXTA4 ;选择一次性购买2个货物MOV A,BCJNZ A,#02H,NEXTA5 ;判断投入的货币数是否为2元MOV R0,#02H ;将选择的货物数量值存入R0LOOPA2:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA6 ;按下确定键,所选货物掉出LJMP OUTGOODSNEXTA6:CJNE A,#0EH,VOICEA2MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA2:LCALL VOICE ;选择按下其他键,报警JMP LOOPA2 ;返回,等到有键按下NEXTA5:JNC NEXTA7 ;投入的货币数小于所选货物的预设价格JMP OUTMONEY ;钱全部退还NEXTA7:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA8 ;按下确定键,所选货物掉出MOV A,BSUBB A,#02HMOV R0,#02H ;将选择的货物数量值存入R0MOV R1,A ;将找钱数存入R1LCALL OUTMONEY ;找钱JMP OUTGOODS ;所选货物掉出NEXTA8:CJNE A,#0EH,VOICEA3MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA3:LCALL VOICE ;选择按下其他键,报警JMP NEXTA7 ;返回,等到有键按NEXTA4:CJNE A,#0DH,NEXTA9 ;选择一次性购买3个货物MOV A,BCJNE A,#03H,NEXTA10 ;判断投入的货币数是否为3元MOV R0,#03H ;将选择的货物数量值存入R0LOOPA3:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA11 ;按下确定键,所选货物掉出LJMP OUTGOODSNEXTA11:CJNE A,#0EH,VOICEA4MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA4:LCALL VOICE ;选择按下其他键,报警JMP LOOPA3 ;返回,等到有键按下NEXTA10:JNC NEXTA12 ;投入的货币数小于所选货物的预设价格JMP OUTMONEY ;钱全部退还NEXTA12:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA13 ;按下确定键,所选货物掉出MOV A,BSUBB A,#03HMOV R0,#03H ;将选择的货物数量值存入R0MOV R1,A ;将找钱数存入R1LCALL OUTMONEY ;找钱JMP OUTGOODS ;所选货物掉出NEXTA13:CJNE A,#0EH,VOICEA5MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA5:LCALL VOICE ;选择按下其他键,报警JMP NEXTA12 ;返回,等到有键按NEXTA9:LCALL KEY ;等待是否有键按下MOV A,R5CJNE A,#0FH,NEXTA14 ;按下确定键,所选货物掉出MOV A,BSUBB A,#01HMOV R0,#01H ;将选择的货物数量值存入R0MOV R1,A ;将找钱数存入R1LCALL OUTMONEY ;找钱JMP OUTGOODS ;所选货物掉出NEXTA14:CJNE A,#0EH,VOICEA6 MOV A,B ;退还全部的钱JMP OUTMONEYVOICEA6:LCALL VOICE ;选择按下其他键,报警JMP NEXTA9 ;返回,等到有键按下***************************************出错报警***************************************NEXYM:LCALL VOICE ;报警JMP KEY 4.1.3报警系统的驱动程序VOICE: MOV DPTR,#BFFFH ;控制口地址送数据指针MOV A,#80H ;PC输出MOVX @DPTR,A ;将方式控制字写入8255A控制口,PC输出MOVX @DPTR,#BFFBH ;PC口地址送数据指针MOV A,#01HMOVX @DPTR,A ;PC0引脚输出一个高电平‘1’,实现报警功能LCALL D10MS ;延时10msANL A,#00H MOVX @DPTR,A ;报警取消RETD10MS: MOV R7,#0AH ;延时10ms的驱动程序DL: MOV R6,#0FFHDL6: DJNZ R6,DL6 DJNZ R7,DL RET第五章结束语通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础经过这几个月的学习、研究以及*老师的细心指导.终于按时完成了毕业设计.本文中,自动售货机控制器系统就是利用了8751和8255A芯片的I/O引角。系统统采用MSC-51系列单片机Intel8751和可编程并行I/O接口芯片8255A为中心器件来设计自动售货机的控制器,实现了能根据计量投入货币的累加大小、选择12种不同的货物、可以同时购买2个或3个、显示花钱数以及找钱数的功能;显示数值直接通过8255A的PB输出。本文系统设计简便、实用性强、操作简单、程序设计简便。由于时间等多方面的原因,本次毕业设计的仿真结果没有在论文中做详细具体的介绍,此后我将会继续研究力求更加圆满地完成此次设计。这次的毕业设计是我学生生涯最后一次也是非常难得的一次理论与实际相结合的机会,我摆脱了单纯的理论知识学习状态,理论知识和实际设计的结合锻炼了我的综合运用所学专业基础知识的能力,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,丰富了实践经验,并且意志力,抗压能力及耐力也都得到了不同程度的提升。这将会是我踏入社会进入工作岗位后的一笔宝贵的财富!参考文献[1]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版,1996.[2]付家才.单片机控制工程实践技术[M].北京:化学工业出版社,2004.5.[3]潘新民.微型计算机控制技术[M].北京:人民邮电出版社,1999.9.[4]余锡存曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7.[5]雷丽文等.微机原理与接口技术[M].北京:电子工业出版社,1997.2.[6]谢自美.电子线路设计、实验、测试[M].北京:人民邮电出版社,1999.9.[7]阎石.数子电子技术第四版[M].北京:化学工业出版社,2004.5.[8]丁嘉种.可编程逻辑器件[M].北京:电子工业出版社,1997.2.[9]黄正瑾.在线编程技术[M].北京:清华大学出版,1996.[10]自动售货机主控制器及执行机构的设计与实现.《东南大学学报(自然科学版)》2007年S1期.经过几个月的奋战,今天终于顺利地完成了毕业设计。论文得以完成,首先要感谢**老师,因为毕业设计与论文都是在*老师的悉心指导下完成的。*老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。本论文从选题到完成,每一步都是倾注了他大量的心血。虽然在此次毕业设计中我遇到了很多困难,但是这些困难都在*老师的耐心讲解和共同探讨下迎刃而解。他那种不言放弃的精神一直在鼓励着我。同时,论文的顺利完成,离不开其它各位同学和朋友的关心和帮助。在整个的毕业设计和论文写作过程中,各位同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,毕业设计得以不断的完善,最终帮助我完整的完成了整篇论文。我衷心的感谢**老师及诸位老师的审查,指导以及支持。在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师。附录货币识别系统电路图货物选择系统按键设计电路图出货系统电路图1出货系统电路图2找钱系统1找钱系统电路图2报警系统电路图修改意见:论文字体、格式应严格按照学院对毕业论文的相关要求进行修改;第三、四、五、六、七、八章的内容应归结到“系统硬件电路设计”和“系统软件程序设计”两章中。第三章的内容在“系统硬件电路设计”一章的开头用一节加以介绍。“系统硬件电路设计”一章首先分别介绍各子系统的设计,最后给出系统总体电路图。“系统软件程序设计”一章中,对应前面叙述的各硬件子系统给出其实现程序流程图,并对程序的实现加以介绍,具体程序可放到附录部分;在系统硬件电路设计”一章中“设计方案论证”部分应列表给出系统主要性能参数的预期指标;应加写“系统软、硬件仿真”一章,仿真完后列表给出系统各项性能参数的仿真结果;“结束语”部分应说明你已完成的工作、完成的情况,未完成的后续工作等;附录里应加上自动售货机的整体电路图;参考文献数量太少,至少应在10篇以上,并且在文中要注明对所有参考文献的引用。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统HYPERLINK"/detail.htm?342

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论