1、综合课程设计汇报书题 目:自动售货机控制系统设计学 院:机械和电气工程学院专 业:电气工程及其自动化班 级:13级2班姓 名:付少官学 号:指导老师:崔茂齐老师职称:讲师6月29日机械和电气工程学院综合课程设计任务书专业:电气工程及其自动化 班级:-2 姓名:付少官 学号:综合课程设计题目自动售货机控制系统设计综合课程设计任务、要求一、设计任务 售货共有3种饮料供选择,分别为汽水(4元)、花茶(6元)和咖啡(10元),自动售货机有3个投币孔,分别为1元、5元和10元。投币总额或目前值显示在7段数码管上。投币值等于或大于货物金额时,货物可选。按下对应按钮,则相对应指示灯开始闪烁,3s后自动停止,
2、表示饮料已经掉出。如投币总额超出销售价格,将可由退币钮找回余额,退回金额假如大于10元,则先退10元再退1。 二、设计要求1查找资料,依据要求格式,以设计汇报书形式写出设计方案全过程,操作 步骤、数据和结论;2学习使用Protel软件,利用Protel完成原理图绘制;3. 学习使用Proteus软件,利用Proteus画出原理图并进行仿真;4. 进行实物制作。参考文件1 王浩全。单片机原理及应用C语言版M.北京:人民邮电出版社,.2 童诗白,华成英.模拟电子技术基础(第四版)M.北京:高等教育出版社,.。3 阎石.数字电子技术基础(第五版)M.北京:高等教育出版社,.4 陈永强 模拟电子技术
3、M.人民邮电出版社 综合课程设计工作进度计划起讫日期关键工作内容.06.6-.06.6选题、调研、搜集资料.06.7-.06.15软、硬件设计、仿真和调试.06.16-.06.17撰写设计汇报书.06.25综合课程设计答辩指导老师署名 指导老师: 年 月 日教研室意见 责任人: 年 月 日目 录自动售货机控制系统设计1摘 要1Abstrct11、绪 论12、自动售货控制系统设计总体方案22.1元器件选择22.2 开发工具23、自动售货控制系统硬件设计33.1 硬件总体框图33.2 AT89C51单片机模块(介绍此次设计所到功效)33.2.1特点33.2.2管脚说明43.3.3 此次所应用管脚说
4、明43.3 单片机驱动模块53.4 选择按键模块53.4.1商品选择63.4.2投币63.5系统显示模块63.5.1 数码管显示器63.5.2 显示器驱动电路73.6出货和退币模块84、自动售货控制系统软件设计84.1系统步骤图84.2元器件计算95、系统总电路图及调试仿真105.1总电路图105.2系统调试115.3系统仿真11总结及致谢14参考文件15附 录16附录1、元件清单16附录2、源程序16附录3、自动售货机控制系统protel99se原理图23自动售货机控制系统设计付少官摘 要 本文具体介绍了自动售货机系统方案设计、硬件选择、软件计划和编写,并关键描述了自动售货机系统工作原理、系
5、统设计、软件编程标准和技巧。该系统以单片机AT89C51芯片为关键,采取集中控制方法实现了对自动售货机全过程自动控制。本系统选择独立式键盘按键作为货物选择端,实现了投币总数显示功效。另外,系统程序采取keil软件进行程序编写和编译,该软件含有编程简单、查错方便、阅读轻易等特点。汇编语言是程序基础语言,含有轻易了解,便于记忆和使用等特点。关键词:自动售货机,AT89C51,LCD显示AbstrctThis paper describes a vending machine system design, hardware selection, software planning and prepa
6、ration, 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. Choice of the system
7、 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 and so on. Asse
8、mbly 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、绪 论自动售货机是一个全新商业零售形式,从自动售货机发展趋势来看,它出现是因为劳动密集型产业结构向技术密集型社会转变产物。大量生产、大量消费和消费模式和销售环境改变,要求出现新流通渠道;而相正确超市、百货购物中心等新流通渠道产生,人工费用也不停上升;再加上场地不足和购物便利性等这些原因制约,无人
9、自动售货机作为一个必需机器便应运而生了。伴随科技发展及大家生活水平提升,自动售货机市场越来越展现出多元化及个性化需求。大家经过自动售货机自助购物,这种简单、快捷方法正逐步成为市民一个新消费时尚,而且满足了大家在当今科技高速发展现代社会追求高品质生活需要。自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁荣街道等公共场所布设能够美化城市环境,方便群众生活,它已经成为城市各角落一道亮丽风景线。自动售货机必将在中国普及,并成为城市现代文明程度一个象征性标志。 本文具体介绍了怎样控制、要求进行自动售货机系统方案设计、硬件选择、软件计划和编写,并关键描述了自动售货机系统工作原理、系统设计、软件编
10、程标准和技巧。2、自动售货控制系统设计总体方案 2.1元器件选择在控制系统设计中能够用PLC和单片机作为关键器件,不过出于设计经济性和可操作性和编程便捷性。本设计选择单片机作为关键控制器件。一下器件选择均基于此基础。1)单片机:选择AT89C51作为控制关键,该单片机是一个带4K字节FLASH存放器低电压、高性能CMOS 8位微处理器。2)晶振:本设计选择晶振是CRYSTAL,作用在于产生原始时钟频率,这个频率经过频率发生器倍频或分频后就成了单片机中多种不一样总线频率。3)排阻:排阻RP1是用来并行口上拉或下拉电阻用。4)数码管:2位7段共阴数码管,用来显示投币和找零金额。5)通常电阻:设计中
11、需要用到电阻均是起下拉作用,用来稳定系统。6)电容:本设计中所用到电容有3个,其中2个是去耦电容,其起作用首先是本集成电路蓄能电容,其次旁路掉该器件高频噪声, 起到抗干扰作用。1个接复位输入端口,和外接电阻组成复位电路。7)按键:选择8个独立按键,3个按键用来代表货物不一样价格,1个用来确定,1个用来取消,还有3个用来模拟货币投入。8)三极管9013NPN型低频放大50V 0.5A 0.625W9) 绿色发光二极管3个 压降为3.03.2 正常工作电流20mA2.2 开发工具Keil uVision2是美国Keil Software企业出品51系列兼容单片机C语言软件。KEILC51标准C编译
12、器为8051微控制器软件开发提供了C语言环境。C51已被完全集成到uVision2集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操 作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活开发环境。Proteus软件是英国Labcenter electronics企业出版EDA工具软件。它不仅含有其它EDA工具软件仿真功效,还能仿真单片机及外围器件。它是现在最好仿真单片机及外围器件工具。Proteus是世界上著名EDA工具(仿真软件),从原理图布图、代码调试到单片机和外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品完整设计。在编译方面,它也支持IAR
13、、Keil和MPLAB等多个编译。3、自动售货控制系统硬件设计3.1 硬件总体框图经过分析自动售货控制系统设计得出自动售货控制系统总体框图如2。系统由AT89C51单片机为控制关键,外围电路有AT89C51单片机驱动电路,货物选择按键电路,数码管显示电路,取货显示,退币显示和投币电路。各部分相互协调工作,共同完成自动售货控制系统运行。AT89C51单片机单片机驱动模块货物选择按键电路数码管显示电路取货显示退币显示投币电路图2总体框图3.2 AT89C51单片机模块(介绍此次设计所到功效)3.2.1特点4K字节可编程闪烁存放器;寿命:1000写/擦循环;宽工作电压范围VCC可为2.7V到6V ;
14、全静态工作可从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进行校验时,P0输出原码,此时P0外部必需被拉高。 P1、P2、P3口是一个内部提供上拉
15、电阻8位双向I/O口,缓冲器能接收输出4TTL门电流。P1管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是因为内部上拉缘故。P3口同时为闪烁编程和编程校验接收部分控制信号。 /EA/VPP:当-EA保持低电平时,在此期间外部程序存放(0000H-FFFFH),不管是否有内部程序存放器。注意加密方法1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存放器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器输入及内部时钟工作电路输入。 XTAL2:来自反向振荡器输出。RST:复位输入。当振荡器复位
16、器件时,要保持RST脚两个机器周期高电平时间。单片机在上电后检验到复位端为复位电平(有时候高电平复位,有则是低电平复位),则会开启一段内部代码,这段代码会初始化系统关键寄存器,关键寄存器被初始化才能确保用户程序正常实施;这个初始化过程需要一定时间。3.3.3 此次所应用管脚说明用P10-P12口作为商品选择口;用P13-P15口作为投币口;用P16-P17口作为确定取消端;用P30口作为出货口;用P31-P32口作为退币口;P0口为数码管选段接口;P2口位数码管选位接口。3.3 单片机驱动模块单片机驱动模块是用来驱动单片机工作电路,由2个去耦电容和晶振并联接入晶振接口,组成时钟电路,为单片机提
17、供时钟信号;复位电容和一电阻接入复位接口,是为系统提供初始化信号。实际电路图图图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起下拉作用,稳定系统。3.4 选择按键模块键盘为8个独立按键,按键1-3是购物键,分别代表了4元、6
18、元、10元货物价格,按键4-5是投币键,分别代表投币1元、5元、10元。7按键是确定键,用户在选定所欲购置货物后必需按确定键,8是取消键,当某个操作错误是能够按取消键返回上一级菜单。该模块中8个键并联,一端接公共地,一端接单片机P1.0-P1.7口。按键选择电路图4所表示图4 系统按键模块 3.4.1商品选择我们采取独立键盘,键盘识别编程比较简单,经过按下BUTTON改变电位,C语言中对应按键定义来实现键盘定义和识别。识别独立按键:无键按下时则为高电平,当P10-P12某个键按下时,对应接口会出现低电平,键盘定义数值反应在编程内部变量累加和数码管上改变;我们将商品价格给予在P10-P12对应i
19、f语句中。3.4.2投币 用按键改变电平来替换核验真钞电平改变。此次设计中没有利用芯片内部定时器来控制投币时间,这是还需要继续改善地方。3.5系统显示模块3.5.1 数码管显示器系统显示模块采取4位8段共阳数码管显示金额。首先显示所选物品金额,然后显示投入金额,最终显示找还金额。P0口没有内置上拉电阻,要在外部接排阻上拉,数码管段选接P0口,为选经过三极管驱动和P2.0-P2.3相接。数码管显示:数码管有共阴共阳两种,而我们选择是共阴,所以0-9显示分别是0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F 3.5.2 显示器驱动电路下图中RP1为
20、排阻,因为P0口没有内置上接电阻,需要在外部接排阻进行上拉,数码段选接P0口,位选和P2.0-P2.3相连接。位选接口为低电平是该位被选中,能够显示数据,为高电平时,该位不被选中,则不亮,不能显示任何数据。图5 显示器驱动电路如3.6出货和退币模块出货:经过逻辑判定选择符合条件,即backmoney=0,此时借助延时函数让LED灯闪烁3秒后停止,就代表完成交易。退币:两个LED分别代表退1元、10元。4、自动售货控制系统软件设计4.1系统步骤图 现在我们来简单模拟一下用户购物步骤:当用户需要从自动售货机购置货物时。用户首先经过部分外部控件选择自己需要货物。此时用户需要知道自己应该支付多少金额。
21、所以自动售货机显示用户所选货物总金额。然后用户能够向自动售货机投币口投入钱币。自动售货机显示用户投入钱币总金额。当投入金额大于所需金额时候,用户购置货物将从出货口送出,同时退币口退还用户多出金额。图1自动售货机原理步骤框图4.2元器件计算去耦电容2个22pf复位电容1个10uf电阻1个10K 去耦电容是电路中装设在元件电源端电容,此电容能够提供较稳定电源,同时也能够降低元件耦合到电源端噪声,间接能够降低其它元件受此元件噪声影响。相当于电池,避免因为电流突变而使电压下降,相当于滤纹波。复位电容大小决定复位时间,不存在电压大小问题。限流电阻计算 公式:限流电阻=(电源电压-工作电压)/要求工作电流
22、(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元后,投币额累计为16元确定,找零6元出货口亮灯,出货完成总结及致谢近两周课程设计立即靠近尾声,和其说是一次设计,倒不如说是一次新学习机会。两周设计中,不仅对自己所学单片机课程和C语言课程有了更深了解,而且愈
23、加认识到本身不足和所学浅陋。方便愈加好地反省自己在以后学习中愈加认真,要有针对性。在课程最终,特此感谢我指导老师崔老师、姜老师、常老师。在元器件选择,程序语言编写,常见设备支持等方面帮助和不厌其烦指导。谢谢老师,老师们辛劳了!经过这次综合设计,确实让我们学到了很多知识。此次课程设计关键是综合C程序设计教程 、 数字电子技术 、单片机原理及应用 、模拟电子技术 、电力电子技术 、 PLC等课程,对三年来所学知识系统整理学习,对培养系统设计能力、提升试验技术,深化理论了解起到了很好效果。在这次课程设计中,经过上网、去图书馆、请教老师等路径,为顺利完成我们任务,起到了很大帮助作用。最终我们反复研究、
24、计算、修改,成功地实现了自动售货机相关控制部分功效。感谢搭档同学一直不抛弃不放弃,坚持在做试验;最终尤其感谢崔茂齐老师在设计前对设计指导性提议,对设计过程中出现困难给主动指导。参考文件1.阎石 数字电子电路 高等教育出版社 2.谭浩强 C程序设计教程 清华大学出版社 3.陈永强 模拟电子技术 人民邮电出版社 4.张毅刚 单片机原理及应用 高等教育出版社 附 录附录1、元件清单元件名称型号个数(个)备注单片机AT89C511晶振CRYSTAL112MHZ去耦电容222pf复位电容110uf 电阻10K1430欧21K3两位七段数码显示管7SEG MP*2-cc1共阴LED灯(绿色)2.2V,10
25、mA3电源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 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; /商品价格
26、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,0x80,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-) ;/ 调用
27、时重新初始化 复位函数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加一 取消则
28、实施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) del
29、ay(80); if(key6=0) in_money+=10 ; /*计算所需退还币值*/void backmoney()back_money=in_money - total_money;/*显示函数 每一步显示不一样内容*/void display ()if(step=1) P2=0x04; totalmoney(); P0 = table1total_money%10; delay (80); P2 = 0x08; P0 = table1total_money/10; delay (80); else if(step=2) P2=0x04; inmoney(); P0 = table1
30、in_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=table11; /*/主函数*/void main()while(1)choose();app
31、ly();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、自动售货机控制系统protel99se原理图