自动售货机控制系统设计.pdf
综合课程设计报告书题题目:目:学学院:院:专专业:业:班班级:级:姓姓名:名:学学号:号:指导教师:指导教师:教师职称:教师职称:自动售货机控制系统设计机械与电气工程学院电气工程及其自动化13 级 2 班付少官22崔茂齐讲师2016 年 6 月 29 日机械与电气工程学院综合课程设计任务书机械与电气工程学院综合课程设计任务书专业:电气工程及其自动化班级:2013-2姓名:付少官学号:22综合课程设计题目自动售货机控制系统设计综合课程设计的任务、要求一、设计任务售货共有 3 种饮料供选择,分别为汽水(4 元)、花茶(6 元)和咖啡(10 元),自动售货机有 3 个投币孔,分别为 1 元、5 元和 10 元。投币总额或当前值显示在 7 段数码管上。投币值等于或大于货物金额时,货物可选。按下对应按钮,则相对应的指示灯开始闪烁,3s 后自动停止,表示饮料已经掉出。如投币总额超过销售价格,将可由退币钮找回余额,退回金额如果大于 10 元,则先退 10 元再退 1。二、设计要求1查找资料,根据要求的格式,以设计报告书的形式写出设计方案的全过程,操作的步骤、数据以及结论;2学习使用 Protel 软件,利用 Protel 完成原理图绘制;3.学习使用 Proteus 软件,利用 Proteus 画出原理图并进行仿真;4.进行实物制作。参考文献1 王浩全。单片机原理及应用C 语言版M.北京:人民邮电出版社,2013.2 童诗白,华成英.模拟电子技术基础(第四版)M.北京:高等教育出版社,2006.。3 阎石.数字电子技术基础(第五版)M.北京:高等教育出版社,2006.4 陈永强模拟电子技术 M.人民邮电出版社 2013综合课程设计工作进度计划起讫日期主要工作内容选题、调研、收集资料软、硬件设计、仿真与调试撰写设计报告书综合课程设计答辩指导教师签名指导教师:年月日教研室意见负责人:年月日目目录录自动售货机控制系统设计自动售货机控制系统设计.1摘摘要要.1AbstrctAbstrct.11 1、绪、绪论论.12 2、自动售货控制系统设计总体方案、自动售货控制系统设计总体方案.2元器件选择.2开发工具.33 3、自动售货控制系统硬件设计、自动售货控制系统硬件设计.3硬件总体框图.3 AT89C51 单片机模块(介绍本次设计所到的功能).4特点.4管脚说明.4本次所应用的管脚说明.5单片机驱动模块.5选择按键模块.5商品选择.6投币.6系统显示模块.6数码管显示器.6显示器的驱动电路.7出货以及退币模块.74 4、自动售货控制系统软件设计、自动售货控制系统软件设计.8系统流程图.8元器件计算.85 5、系统总电路图及调试仿真、系统总电路图及调试仿真.9总电路图.9系统调试.10系统仿真.10总结及致谢总结及致谢.13参考文献参考文献.14附附录录.15附录 1、元件清单.15附录 2、源程序.16附录 3、自动售货机控制系统 protel99se 原理图.25自动售货机控制系统设计自动售货机控制系统设计付少官摘摘要要本文详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机 AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择独立式键盘按键作为货物选择端,实现了投币总数的显示功能。此外,系统程序采用 keil 软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。关键词:关键词:自动售货机,AT89C51,LCD显示AbstrctAbstrctThis paper describes a vending machine system design,hardware selection,softwareplanning and preparation,and describes the focus of the work vending machine system theory,system design,software programming principles and techniques.AT89C51in the system as thecore chip,the realization of a centralized control of the vending machines automaticcontrol the entire process.Choice of the system as a stand-alone keyboard keys to choosethe goods side,the realization of the coin shows the total number of features.In addition,the system program using keil software to prepare and compile procedures,the softwareprogramming is simple,convenient error checking,easy to read and so on.Assembly languageis the basic language programwith easy to understand,easy to rememberand use andso on.Key words:Key words:Vending Machines,AT89C51,LED Display1 1、绪、绪论论自动售货机是一种全新的商业零售形式,从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。随着科技的发展及人们生活水平的提高,自动售货机市场越来越呈现出多元化及个性化的需求。人们通过自动售货机自助购物,这种简单、快捷的方式正逐渐成为市民的一种新的消费时尚,并且满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化城市环境,方便群众生活,它已经成为城市各角落的一道亮丽风景线。自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。2 2、自动售货控制系统设计总体方案、自动售货控制系统设计总体方案元器件选择元器件选择在控制系统设计中可以用 PLC 和单片机作为主要器件,但是出于设计的经济性和可操作性以及编程的的便捷性。本设计选用单片机作为主要控制器件。一下器件选择均基于此基础。1)单片机:选用AT89C51 作为控制核心,该单片机是一种带4K 字节 FLASH 存储器的低电压、高性能 CMOS 8 位微处理器。2)晶振:本设计选用的晶振是CRYSTAL,作用在于产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了单片机中各种不同的总线频率。3)排阻:排阻 RP1 是用来并行口的上拉或者下拉电阻用。4)数码管:2 位 7 段共阴数码管,用来显示投币和找零金额。5)一般电阻:设计中需要用到的电阻均是起下拉作用,用来稳定系统。6)电容:本设计中所用到的电容有 3 个,其中 2 个是去耦电容,其起作用一方面是本集成电路的蓄能电容,另一方面旁路掉该器件的高频噪声,起到抗干扰的作用。1个接复位输入端口,与外接电阻构成复位电路。7)按键:选用 8 个独立按键,3 个按键用来代表货物的不同价格,1 个用来确认,1 个用来取消,还有 3 个用来模拟货币投入。8)三极管 9013NPN 型低频放大 50V9)绿色发光二极管 3 个 压降为 正常工作电流 20mA开发工具开发工具Keil uVision2 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件。KEILC51 标准 C 编译器为 8051 微控制器的软件开发提供了 C 语言环境。C51 已被完全集成到 uVision2 的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操 作系统,项目管理器,调试器。uVision2 IDE 可为它们提供单一而灵活的开发环境。Proteus 软件是英国 Labcenter electronics 公司出版的 EDA 工具软件。它不仅具有其它 EDA 工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。在编译方面,它也支持 IAR、Keil 和 MPLAB 等多种编译。3 3、自动售货控制系统硬件设计、自动售货控制系统硬件设计硬件总体框图硬件总体框图经过分析自动售货控制系统的设计得出自动售货控制系统的总体框图如 2。系统由AT89C51 单片机为控制核心,外围电路有 AT89C51 单片机驱动电路,货物选择按键电路,数码管显示电路,取货显示,退币显示以及投币电路。各部分相互协调工作,共同完成自动售货控制系统的运行。数码 管显示 电单片机驱动模块取货显示AT89C51 单片机货物选择 按键电退币显示投币电路图 2 总体框图 AT89C51 AT89C51 单片机模块(介绍本次设计所到的功能)单片机模块(介绍本次设计所到的功能)特点特点4K 字节可编程闪烁存储器;寿命:1000 写/擦循环;宽工作电压范围VCC 可为到 6V;全静态工作可从 0Hz 至 16MHz 本次设计选择 12MHZ;三级程序存储器锁定;128*8 位内部 RAM;32 可编程 I/O 线;两个 16 位定时器/计数器;5 个中断源;可编程串行通道;低功耗的闲置和掉电模式片内振荡器和时钟电路管脚说明管脚说明VCC:接电压;GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1、P2、P3 口是一个内部提供上拉电阻的 8 位双向 I/O 口,缓冲器能接收输出 4TTL 门电流。P1 管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P3 口同时为闪烁编程和编程校验接收一些控制信号。/EA/VPP:当-EA 保持低电平时,在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1 时,/EA 将内部锁定为 RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。单片机在上电后检查到复位端为复位电平(有的时候高电平复位,有的则是低电平复位),则会启动一段内部代码,这段代码会初始化系统重要的寄存器,重要寄存器被初始化才能保证用户程序的正常执行;这个初始化过程需要一定时间。本次所应用的管脚说明本次所应用的管脚说明用P10-P12口作为商品选择口;用P13-P15口作为投币口;用 P16-P17口作为确认取消端;用 P30口作为出货口;用 P31-P32口作为退币口;P0口为数码管选段接口;P2口位数码管选位接口。单片机驱动模块单片机驱动模块单片机驱动模块是用来驱动单片机工作的电路,由 2 个去耦电容与晶振并联接入晶振接口,构成时钟电路,为单片机提供时钟信号;复位电容与一电阻接入复位接口,是为系统提供初始化信号。实际电路图如图图 3 AT89C51 单片机的驱动电路图中 C1,C2 均为 20pf 的去耦电容,C3 为 10u 的复位电容,X1 为 12M 的晶振,R1上拉电阻,晶振 X1 两端分别与 C1,C2 的一端相连并接入晶振接口 XTAL1,XTAL2。C1,C2的另一端接 R1 的一端并一起接地,R1 的另一端与 C3 一端接入复位接口,C3 的另一端接片内存储器,并接入电源接口。C1,C2,X1 构成时钟电路,为单片机提供时钟信号。此单片机片内存储器有效,可使用片内存储器,不用外部拓展,R1 起下拉作用,稳定系统。选择按键模块选择按键模块键盘为 8 个独立按键,按键 1-3 是购物键,分别代表了 4 元、6 元、10 元货物价格,按键 4-5 是投币键,分别代表投币 1 元、5 元、10 元。7 按键是确认键,用户在选定所欲购买的货物后必须按确认键,8 是取消键,当某个操作错误是可以按取消键返回上一级菜单。该模块中8 个键并联,一端接公共地,一端接单片机的口。按键选择电路如图4 所示图 4 系统按键模块商品选择商品选择我们采用独立键盘,键盘识别的编程比较简单,通过按下 BUTTON 改变电位,C语言中相应按键的定义来实现键盘的定义与识别。识别独立按键:无键按下时则为高电平,当 P10-P12 某个键按下时,对应的接口会出现低电平,键盘定义的数值反映在编程内部变量的累加与数码管上的变化;我们将商品的价格赋予在P10-P12 对应的 if 语句中。投币投币用按键改变的电平来代替核验真钞电平的变化。本次设计中没有运用芯片内部的定时器来控制投币时间,这是还需要继续改进的地方。系统显示模块系统显示模块数码管显示器数码管显示器系统显示模块采用 4 位 8 段共阳数码管显示金额。首先显示所选物品金额,然后显示投入金额,最后显示找还金额。P0 口没有内置上拉电阻,要在外部接排阻上拉,数码管段选接 P0 口,为选经过三极管驱动与相接。数码管显示:数码管有共阴共阳两种,而我们选择的是共阴的,因此 0-9 显示分别是0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x27,0 x7F,0 x6F 显示器的驱动电路显示器的驱动电路下图中 RP1 为排阻,因为 P0 口没有内置上接电阻,需要在外部接排阻进行上拉,数码段选接 P0 口,位选与相连接。位选的接口为低电平是该位被选中,能够显示数据,为高电平时,该位不被选中,则不亮,不能显示任何数据。图 5 显示器驱动电路如出货以及退币模块出货以及退币模块出货:通过逻辑判断选择符合条件的,即 backmoney=0,此时借助延时函数让LED灯闪烁 3 秒后停止,就代表完成交易。退币:两个 LED 分别代表退 1 元、10 元。4 4、自动售货控制系统软件设计、自动售货控制系统软件设计系统流程图系统流程图现在我们来简单模拟一下顾客的购物流程:当顾客需要从自动售货机购买货物时。顾客首先通过一些外部控件选择自己需要的货物。此时顾客需要知道自己应该支付多少金额。所以自动售货机显示顾客所选货物的总金额。然后顾客可以向自动售货机的投币口投入钱币。自动售货机显示顾客投入的钱币总金额。当投入的金额大于所需的金额的时候,顾客购买的货物将从出货口送出,同时退币口退还顾客多余的金额。图 1 自动售货机原理流程框图元器件计算元器件计算去耦电容复位电容电阻2 个1 个1 个22pf10uf10K去耦电容是电路中装设在元件的电源端的电容,此电容可以提供较稳定的电源,同时也可以降低元件耦合到电源端的噪声,间接可以减少其他元件受此元件噪声的影响。相当于电池,避免由于电流的突变而使电压下降,相当于滤纹波。复位电容的大小决定复位时间,不存在电压大小的问题。限流电阻的计算公式:限流电阻=(电源电压-工作电压)/要求的工作电流(1)数码管位选相连的电阻(数码管正常工作时电流为 10-20mA,3mA 时即可点亮)R=()/10mA因此我们选择 430 欧的电阻符合条件(2)与 LED 相连的电阻R=()/10mA因此我们选择 330 欧的电阻符合条件5 5、系统总电路图及调试仿真、系统总电路图及调试仿真VC C总电路图总电路图QSK1SWHCK2SWKFK3SW1YK4SW5YK5SW10YK6SWYESK7SWNOK8SW1234567891011121314151617181920U1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RETP3.0P3.1P3.2INTOP3.3INT1P3.4T0P3.5T1P3.6WRP3.7RDXTAL2XTAL1GNDAT89C51REST1 2 3 4 5 6 7 8DS?YELLOWCAafegdbcfdpeagdbcdp1 2a b c d e f g dpVC CVC CP0.0ADDP0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PEOGPES NP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.04039383736353433323130292827262524232221123456789VC CRP1R24.7KQ3PNPQ4PNPCHUHUO1LED2PTUI101LED2PTUI11LED2P2R51K2R41K2R31KR14.7KY1C3XTALVC CC1C2VC C22UF30PF30PFR61K系统调试系统调试系统仿真系统仿真以购买咖啡为例,展示投币累加、退币、出货的过程初始状态购买 10 元咖啡分别投入 1 元 5 元 10 元后,投币额累计为16 元确认,找零 6 元出货口亮灯,出货完成总结及致谢总结及致谢近两周的课程设计即将接近尾声,与其说是一次设计,倒不如说是一次新的学习机会。两周的设计中,不仅对自己所学的单片机课程以及C 语言课程有了更深的了解,而且更加认识到自身的不足与所学的浅陋。以便更好地反省自己在以后的学习中更加认真,要有针对性。在课程最后,特此感谢我的指导老师崔老师、姜老师、常老师。在元器件的选择,程序语言编写,常用设备的支持等方面的帮助以及不厌其烦的指导。谢谢老师,老师们辛苦了!通过这次综合设计,确实让我们学到了很多知识。本次课程设计主要是综合C 程序设计教程、数字电子技术、单片机原理及应用、模拟电子技术、电力电子技术、PLC等课程,对三年来所学的知识系统的整理学习,对培养系统设计能力、提高实验技术,深化理论理解起到了非常好的效果。在这次课程设计中,通过上网、去图书馆、请教老师等途径,为顺利完成我们的任务,起到了非常大的帮助作用。最后我们反复的研究、计算、修改,成功地实现了自动售货机关于控制部分的功能。感谢搭档同学一直不抛弃不放弃的,坚持在做实验;最后特别感谢崔茂齐老师在设计前对设计的指导性建议,对设计过程中出现的困难给予的积极指导。参考文献参考文献1.阎石数字电子电路2.谭浩强C 程序设计教程3.陈永强模拟电子技术4.张毅刚单片机原理及应用高等教育出版社 2007清华大学出版社 2007人民邮电出版社 2013高等教育出版社 2004附附录录附录附录 1 1、元件清单、元件清单元件名称单片机晶振去耦电容复位电容型号AT89C51CRYSTAL10K电阻430 欧1K两位七段数码显7SEG MP*2-cc示管LED 灯(绿色)电源单片机插座,10mA3111共阴个数(个)1121123备注12MHZ22pf10uf独立按键排阻三极管ResPack-890128131K附录附录 2 2、源程序、源程序#include/位定义sbit key1=P10;/选择 4 元汽水sbit key2=P11;/选择 6 元花茶sbit key3=P12;/选择 10 元咖啡sbit key4=P13;/投币 1 元sbit key5=P14;/投币 5 元sbit key6=P15;/投币 10 元sbit key7=P16;/确认sbit key8=P17;/取消sbit led1=P30;sbit led2=P31;sbit led3=P32;int step=1;/执行步骤int price=0;/商品价格int num=1;/商品数量int table1=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x27,0 x7F,0 x6F;/数码管显示 0-9unsigned char dispbuf8=0,0,0,0,0,0,0,;int table2=0 xe0,0 xc0,0 xa0,0 x80,0 x20;/控制退币int total_money=0;/所选商品总价格int back_money=0;/应退金额int in_money=0;/*延时功能*/void delay(int z)int x,y;for(x=z;x0;x-)for(y=110;y0;y-);/调用时重新初始化复位函数void reset()step=1;price=0;num=1;total_money=0;back_money=0;in_money=0;/*选择商品函数 每个按键对应不同的物品价格及数量*/void choose()if(key1=0)delay(80);if(key1=0)num=1;price=4;else if(key2=0)delay(80);if(key2=0)price=6;num=1;else if(key3=0)delay(80);if(key3=0)price=10;num=1;/*确定及取消确定则执行 step 加一 取消则执行 step 減一*/void apply()if(key7=0)delay(80);if(key7=0)step+;else if(key8=0)delay(80);if(key8=0)step-;/*计算所选商品所需金额*/void totalmoney()total_money=price*num;/*/累加投入币值*/void inmoney()if(key4=0)delay(80);if(key4=0)in_money+=1;else if(key5=0)delay(80);if(key5=0)in_money+=5;else if(key6=0)delay(80);if(key6=0)in_money+=10;/*计算所需退还币值*/void backmoney()back_money=in_money-total_money;/*显示函数 每一步显示不同的内容*/void display()if(step=1)P2=0 x04;totalmoney();P0=table1total_money%10;delay(80);P2=0 x08;P0=table1total_money/10;delay(80);else if(step=2)P2=0 x04;inmoney();P0=table1in_money%10;delay(80);P2=0 x08;P0=table1in_money/10;delay(80);else if(step=3)P2=0 xf0;backmoney();if(back_money=0)P2=0 x04;backmoney();P0=table1back_money%10;delay(80);P2=0 x08;P0=table1back_money/10;delay(80);reset();elseP0=table11;/*/主函数*/void main()while(1)choose();apply();display();/*if(back_money=10)int s=back_money/10;for(s;s0;s-)led2=0;delay(1000);led2=1;back_money-=10;if(back_money0)led3=0;delay(1000);led3=1;delay(1000);led1=0;delay(1000);led1=1;delay(1000);led1=0;delay(1000);led1=1;delay(1000);led1=0;delay(1000);led1=1;delay(1000);*/附录附录 3 3、自动售货机控制系统、自动售货机控制系统 protel99seprotel99se 原理图原理图SQ1KWSCH2KWSFK3KWS?SDACWOLLEYaafbgdecfpdebgdpdgfedcba87654321Y14KWSY55KWSY016KWSSEY7KWSON8K1U0493837363534333231303928272625242322212CCVDDA0.0P1.0P2.0P3.0P4.0P5.0P6.0P7.0PPPV/AEGOEP/ELANSEP7.2P6.2P5.2P4.2P3.2P2.2P1.2P0.2P0.1P1.1P2.1P3.1P4.1P5.1P6.1P7.1PTER0.3P1.3POTNI2.3P1TNI3.3P0T4.3P1T5.3PRW6.3PDR7.3P2LATX1LATXDNG1234567890111213141516171819102WSpdc21CCV1234567891PR4QPNP3QPNP2RK7.4CCVOUHUHC3RK12P2DEL4RK1101IUT21P2DEL5R1RK7.4REST1IUT215C98TAK11P2DEL1Y6RK13CCCVFU22FP03FP03LATX2C1CCCV