1、自动售货机控制系统设计doc综合课程设计报告书题 目:自动售货机控制系统设计学 院:机械与电气工程学院专 业:电气工程及其自动化班 级:13级2班姓 名:付少官学 号:1314216222指导教师:崔茂齐教师职称:讲师2016年6月29日机械与电气工程学院综合课程设计任务书专业:电气工程及其自动化 班级:2013-2 姓名:付少官 学号:1314216222综合课程设计题目自动售货机控制系统设计综合课程设计的任务、要求一、设计任务 售货共有3种饮料供选择,分别为汽水(4元)、花茶(6元)和咖啡(10元),自动售货机有3个投币孔,分别为1元、5元和10元。投币总额或当前值显示在7段数码管上。投币
2、值等于或大于货物金额时,货物可选。按下对应按钮,则相对应的指示灯开始闪烁,3s后自动停止,表示饮料已经掉出。如投币总额超过销售价格,将可由退币钮找回余额,退回金额如果大于10元,则先退10元再退1。 二、设计要求1查找资料,根据要求的格式,以设计报告书的形式写出设计方案的全过程,操作的 步骤、数据以及结论;2学习使用Protel软件,利用Protel完成原理图绘制;3. 学习使用Proteus软件,利用Proteus画出原理图并进行仿真;4. 进行实物制作。参考文献1 王浩全。单片机原理及应用C语言版M.北京:人民邮电出版社,2013.2 童诗白,华成英.模拟电子技术基础(第四版)M.北京:高
3、等教育出版社,2006.。3 阎石.数字电子技术基础(第五版)M.北京:高等教育出版社,2006.4 陈永强 模拟电子技术 M.人民邮电出版社 2013综合课程设计工作进度计划起讫日期主要工作内容2016.06.6-2016.06.6选题、调研、收集资料2016.06.7-2016.06.15软、硬件设计、仿真与调试2016.06.16-2016.06.17撰写设计报告书2016.06.25综合课程设计答辩指导教师签名 指导教师: 年 月 日教研室意见 负责人: 年 月 日自动售货机控制系统设计付少官摘 要 本文详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货
4、机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择独立式键盘按键作为货物选择端,实现了投币总数的显示功能。此外,系统程序采用keil软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。关键词:自动售货机,AT89C51,LCD显示AbstrctThis paper describes a vending machine system design, hardware selection, software pla
5、nning and preparation, and describes the focus of the work vending machine system theory, system design, software programming principles and techniques. AT89C51in the system as the core chip, the realization of a centralized control of the vending machines automatic control the entire process. Choic
6、e of the system as a stand-alone keyboard keys to choose the 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 software programming is simple, convenient error checking, easy to read
7、and so on. Assembly language is the basic language program with easy to understand, easy to remember and use and so on.Key words:Vending Machines,AT89C51,LED Display1、绪 论自动售货机是一种全新的商业零售形式,从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上
8、升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。随着科技的发展及人们生活水平的提高,自动售货机市场越来越呈现出多元化及个性化的需求。人们通过自动售货机自助购物,这种简单、快捷的方式正逐渐成为市民的一种新的消费时尚,并且满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化城市环境,方便群众生活,它已经成为城市各角落的一道亮丽风景线。自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。 本文详细介绍了如何控制、要求进行自动售货机系统的方
9、案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。2、自动售货控制系统设计总体方案 2.1元器件选择在控制系统设计中可以用PLC和单片机作为主要器件,但是出于设计的经济性和可操作性以及编程的的便捷性。本设计选用单片机作为主要控制器件。一下器件选择均基于此基础。1)单片机:选用AT89C51作为控制核心,该单片机是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器。2)晶振:本设计选用的晶振是CRYSTAL,作用在于产生原始的时钟频率,这个频率经过频率发生器的倍频或分频后就成了单片机中各种不同的总线频率。3)排阻:排阻RP1
10、是用来并行口的上拉或者下拉电阻用。4)数码管:2位7段共阴数码管,用来显示投币和找零金额。5)一般电阻:设计中需要用到的电阻均是起下拉作用,用来稳定系统。6)电容:本设计中所用到的电容有3个,其中2个是去耦电容,其起作用一方面是本集成电路的蓄能电容,另一方面旁路掉该器件的高频噪声, 起到抗干扰的作用。1个接复位输入端口,与外接电阻构成复位电路。7)按键:选用8个独立按键,3个按键用来代表货物的不同价格,1个用来确认,1个用来取消,还有3个用来模拟货币投入。8)三极管9013NPN型低频放大50V 0.5A 0.625W9) 绿色发光二极管3个 压降为3.03.2 正常工作电流20mA2.2 开
11、发工具Keil uVision2是美国Keil Software公司出品的51系列兼容单片机C语言软件。KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操 作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具
12、(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在编译方面,它也支持IAR、Keil和MPLAB等多种编译。3、自动售货控制系统硬件设计3.1 硬件总体框图经过分析自动售货控制系统的设计得出自动售货控制系统的总体框图如2。系统由AT89C51单片机为控制核心,外围电路有AT89C51单片机驱动电路,货物选择按键电路,数码管显示电路,取货显示,退币显示以及投币电路。各部分相互协调工作,共同完成自动售货控制系统的运行。图2总体框图3.2 AT89C51单片机模块(介绍本次设计所到的功能)3.2.1特点4K字节可编程闪烁存储器;
13、寿命:1000写/擦循环;宽工作电压范围VCC可为2.7V到6V ;全静态工作可从0Hz至16MHz 本次设计选择12MHZ;三级程序存储器锁定;128*8位内部RAM ;32可编程I/O线;两个16位定时器/计数器 ;5个中断源 ;可编程串行通道;低功耗的闲置和掉电模式片内振荡器和时钟电路 3.2.2管脚说明 VCC:接电压;GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P
14、0输出原码,此时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:反向振荡放大器的输入及内部时
15、钟工作电路的输入。 XTAL2:来自反向振荡器的输出。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。单片机在上电后检查到复位端为复位电平(有的时候高电平复位,有的则是低电平复位),则会启动一段内部代码,这段代码会初始化系统重要的寄存器,重要寄存器被初始化才能保证用户程序的正常执行;这个初始化过程需要一定时间。3.3.3 本次所应用的管脚说明用P10-P12口作为商品选择口;用P13-P15口作为投币口;用P16-P17口作为确认取消端;用P30口作为出货口;用P31-P32口作为退币口;P0口为数码管选段接口;P2口位数码管选位接口。3.3 单片机驱动模块单片机
16、驱动模块是用来驱动单片机工作的电路,由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构成时钟电路,为单片机提供时钟信号。此单片机片内存储器有效,可使用片内存储器,
17、不用外部拓展,R1起下拉作用,稳定系统。3.4 选择按键模块键盘为8个独立按键,按键1-3是购物键,分别代表了4元、6元、10元货物价格,按键4-5是投币键,分别代表投币1元、5元、10元。7按键是确认键,用户在选定所欲购买的货物后必须按确认键,8是取消键,当某个操作错误是可以按取消键返回上一级菜单。该模块中8个键并联,一端接公共地,一端接单片机的P1.0-P1.7口。按键选择电路如图4所示图4 系统按键模块 3.4.1商品选择我们采用独立键盘,键盘识别的编程比较简单,通过按下BUTTON改变电位,C语言中相应按键的定义来实现键盘的定义与识别。识别独立按键:无键按下时则为高电平,当P10-P1
18、2某个键按下时,对应的接口会出现低电平,键盘定义的数值反映在编程内部变量的累加与数码管上的变化;我们将商品的价格赋予在P10-P12对应的if语句中。3.4.2投币 用按键改变的电平来代替核验真钞电平的变化。本次设计中没有运用芯片内部的定时器来控制投币时间,这是还需要继续改进的地方。3.5系统显示模块3.5.1 数码管显示器系统显示模块采用4位8段共阳数码管显示金额。首先显示所选物品金额,然后显示投入金额,最后显示找还金额。P0口没有内置上拉电阻,要在外部接排阻上拉,数码管段选接P0口,为选经过三极管驱动与P2.0-P2.3相接。数码管显示:数码管有共阴共阳两种,而我们选择的是共阴的,因此0-
19、9显示分别是0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F 3.5.2 显示器的驱动电路下图中RP1为排阻,因为P0口没有内置上接电阻,需要在外部接排阻进行上拉,数码段选接P0口,位选与P2.0-P2.3相连接。位选的接口为低电平是该位被选中,能够显示数据,为高电平时,该位不被选中,则不亮,不能显示任何数据。图5 显示器驱动电路如3.6出货以及退币模块出货:通过逻辑判断选择符合条件的,即backmoney=0,此时借助延时函数让LED灯闪烁3秒后停止,就代表完成交易。退币:两个LED分别代表退1元、10元。4、自动售货控制系统软件设计4.1系
20、统流程图 现在我们来简单模拟一下顾客的购物流程:当顾客需要从自动售货机购买货物时。顾客首先通过一些外部控件选择自己需要的货物。此时顾客需要知道自己应该支付多少金额。所以自动售货机显示顾客所选货物的总金额。然后顾客可以向自动售货机的投币口投入钱币。自动售货机显示顾客投入的钱币总金额。当投入的金额大于所需的金额的时候,顾客购买的货物将从出货口送出,同时退币口退还顾客多余的金额。图1自动售货机原理流程框图4.2元器件计算去耦电容2个22pf复位电容1个10uf电阻1个10K 去耦电容是电路中装设在元件的电源端的电容,此电容可以提供较稳定的电源,同时也可以降低元件耦合到电源端的噪声,间接可以减少其他元
21、件受此元件噪声的影响。相当于电池,避免由于电流的突变而使电压下降,相当于滤纹波。复位电容的大小决定复位时间,不存在电压大小的问题。限流电阻的计算 公式:限流电阻=(电源电压-工作电压)/要求的工作电流(1)数码管位选相连的电阻(数码管正常工作时电流为10-20mA,3mA时即可点亮)R=(5V-1.7V)/10mA因此我们选择430欧的电阻符合条件(2)与LED相连的电阻R=(5V-2.2V)/10mA因此我们选择330欧的电阻符合条件5、系统总电路图及调试仿真5.1总电路图5.2系统调试5.3系统仿真以购买咖啡为例,展示投币累加、退币、出货的过程初始状态购买10元咖啡分别投入1元5元10元后
22、,投币额累计为16元确认,找零6元出货口亮灯,出货完成总结及致谢近两周的课程设计即将接近尾声,与其说是一次设计,倒不如说是一次新的学习机会。两周的设计中,不仅对自己所学的单片机课程以及C语言课程有了更深的了解,而且更加认识到自身的不足与所学的浅陋。以便更好地反省自己在以后的学习中更加认真,要有针对性。在课程最后,特此感谢我的指导老师崔老师、姜老师、常老师。在元器件的选择,程序语言编写,常用设备的支持等方面的帮助以及不厌其烦的指导。谢谢老师,老师们辛苦了!通过这次综合设计,确实让我们学到了很多知识。本次课程设计主要是综合C程序设计教程 、 数字电子技术 、单片机原理及应用 、模拟电子技术 、电力
23、电子技术 、 PLC等课程,对三年来所学的知识系统的整理学习,对培养系统设计能力、提高实验技术,深化理论理解起到了非常好的效果。在这次课程设计中,通过上网、去图书馆、请教老师等途径,为顺利完成我们的任务,起到了非常大的帮助作用。最后我们反复的研究、计算、修改,成功地实现了自动售货机关于控制部分的功能。感谢搭档同学一直不抛弃不放弃的,坚持在做实验;最后特别感谢崔茂齐老师在设计前对设计的指导性建议,对设计过程中出现的困难给予的积极指导。参考文献1.阎石 数字电子电路 高等教育出版社 2007 2.谭浩强 C程序设计教程 清华大学出版社 20073.陈永强 模拟电子技术 人民邮电出版社 20134.
24、张毅刚 单片机原理及应用 高等教育出版社 2004附 录附录1、元件清单元件名称型号个数(个)备注单片机AT89C511晶振CRYSTAL112MHZ去耦电容222pf复位电容110uf 电阻10K1430欧21K3两位七段数码显示管7SEG MP*2-cc1共阴LED灯(绿色)2.2V,10mA3电源1单片机插座1独立按键8排阻ResPack-811K三极管90123附录2、源程序#include/位定义sbit key1=P10; /选择4元汽水sbit key2=P11; /选择6元花茶sbit key3=P12; /选择10元咖啡sbit key4=P13; /投币1元sbit key
25、5=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=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F; /数码管显示0-9unsigned char dispbuf8=0,0,0,0,0,0,0,;int table2=0xe0,0xc0,0xa0,0x
26、80,0x20;/控制退币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=
27、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
28、*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=0x04; tot
29、almoney(); P0 = table1total_money%10; delay (80); P2 = 0x08; P0 = table1total_money/10; delay (80); else if(step=2) P2=0x04; inmoney(); P0 = table1in_money%10; delay (80); P2 = 0x08; P0 = table1in_money/10; delay (80); else if(step=3) P2=0xf0; backmoney(); if(back_money=0) P2=0x04; backmoney(); P0 = table1back_money%10; delay (80); P2 = 0x08; P0 = table1back_money/10; delay (80); reset(); elseP0=t
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1