1、学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 自动售货饮料机控制电路的设计与实现 初始条件:本设计既可以使用计数器、比较器、脉冲发生器等和必要的门电路等,也可以使用单片机系统构建。用数码管、LED灯显示结果。规定完毕的重要任务: (涉及课程设计工作量及技术规定,以及说明书撰写等具体规定)1、课程设计工作量:1周。2、技术规定:1)售货机只接受5角和1元的硬币,可以用按钮代替硬币的投入。投入硬币的总金额用两位数码管显示,最大投入金额为9.5元。2)售货机可以自动出售3种饮料,售价分别是0.5元,1元和1.5元。当顾客完毕投币后,根据投入金额,各饮料相应的LED将亮起(如投入1元硬币,
2、0.5元和1元饮料的LED亮起,表达可以购买0.5元或1元饮料)。3)顾客根据自身需要按下各饮料相应的按钮,每按一次掉出一瓶饮料,两位数码管显示剩余金额,LED继续指示可购饮料的种类;4)顾客按下“找零”按钮将使机器发出找零信号,两位数码管清零。5)拟定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。3、查阅至少5篇参考文献。按武汉理工大学课程设计工作规范规定撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。时间安排:1、 2023 年 5 月 16日,布置课设具体实行计划与课程设计报告格式的规定说明。2、 2023 年 6 月 28
3、 日至 2023 年 6 月 30 日,方案选择和电路设计。3、 2023 年 7 月 1 日至 2023 年 7 月 3 日,电路调试和设计说明书撰写。4、 2023 年 7 月 5 日,上交课程设计成果及报告,同时进行答辩。指导教师署名: 年 月 日系主任(或责任教师)署名: 年 月 日摘 要本文设计了一种以INTEL 公司的AT89C52单片机为核心的自动饮料售货机装置的控制系统,具体介绍了自动饮料售货机控制系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动饮料售货机控制系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C52芯片为核心,采用集中控制方式实现了
4、对自动饮料售货机全过程的自动控制。本系统选择6个独立键盘按键作为货币投入端,饮料选择端和清零端,实现了投币,饮料选择功能,用两个7段共阳极数码管显示货币数以及找零数,用三个LED灯显示可供选择的饮料。此外,系统程序采用Keil uVision 4软件进行程序的编写和编译,采用C语言编写程序,用Proteus7软件进行仿真,stcisp-v4.79软件和USB转串口线驱动软件下载程序。总体来说,通过实物的安装调试,本次课程设计基本达成了设计指标规定,实现了投币,选择饮料,购买饮料,找零等功能。关键词:自动售货机,AT89C52单片机,C语言程序,数码管显示ABSTRACTIn this pape
5、r, the design of the control system of automatic beverage vending machine is based on INTEL company AT89C52 microcontroller as the core . It detailedly desctribes the beverage vending machine system design, hardware selection, software planning and preparation, and emphatically describes the princip
6、le and skill work principle, beverage vending machine system design, software programming. The system is based on AT89C52 chip as the core, adopts the centralized control method to realize the automatic control of the whole process of beverage vending machine . In this system , six independent keybo
7、ard keys are taken as monetary input end, beverage of choice and clear terminal, to realize the coin, beverage of choice function .Two of sevencommon anode LED are take to display currency and the number of change . Besides , Three LED lights are taken to display alternative beverage . In addition,
8、The software of Keil uVision 4is taken to prepare and compile procedures, using C language program , The software of Proteus is taken to simulate in the system . The software of stcisp-v4.79 and USB to serial line driverare taken to download programma .In general , the design requirements are met in
9、 the curriculum design in realizing these functions in the coin , drinks choose, drinks buy and change .Key Words : Automatic Beverage Vending Machine , AT89C52 ,C Language , Digital Tube Display目 录1绪论.11.1 设计背景.11.2 应用前景.11.3 设计的目的和意义.12控制系统总体方案的概述.22.1 自动售货机的工作时序.22.2 控制系统的硬件需求分析.22.3 控制系统的软件需求分析.
10、33控制系统的硬件设计.43.1中央控制元件AT89C52.4 3.1.1 AT89C52简介.4 3.1.2重要特性.5 3.1.3管脚说明.5 3.1.4实验用模块.73.2. 投币模块和购买模块.73.3可供购买模块.83.4显示模块.84控制系统的软件设计.104.1编程语言与软件.104.2 C语言程序.104.3程序执行流程.115整体电路设计.125.1整体电路图.125.2整体工作及原理说明.126实验仿真.137实物调试.14 7.1实物图.14 7.2实物调试结果.158设计小结.19 8.1实验结果.19 8.2实验收获.19 8.3实验体会.19参考文献.21附录1整体
11、电路图.22附录2元器件清单.23附录3实验源代码.24附录4本科生课程设计成绩评估表.321绪论1.1设计背景随着劳动密集型的产业构造向技术密集型社会转变,自动售货机日趋盛行,重要用于公共场合,且种类繁多。一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。钱币装置是售货机的核心,其重要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。假如投入的金额达成购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。贮藏售货装置保存商品,接受出售指示信号,把顾客选择的商品送至付货口。一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱
12、装置组成。70年代以来,出现了采用微型计算机控制的各种新型自动售货机和运用信用卡代替钱币并与计算机连接的更大规模的无人售货系统,如无人自选商场、车站的自动售票和检票系统、银行的钞票自动支付机等。1.2应用前景现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而保证了商品的发送、补充和商品选定的顺利进行。进入21世纪时,自动售货机将进一步向节省资源和能源以及高功能化的方向发展。从自动售货机的发展趋势来看,大量生产,大量消费以及消费模式和销售环境的变化,规定出现新的流通渠道,而相对的超市,百货购物中心等新的流通
13、渠道的产生,人工费用也不断上升,在加上场地的局限性和购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器也就有了其相称可观的前景。1.3设计的目的和意义 本次课程设计是自动饮料售货机控制系统,可用于简朴的自动饮料售货机。本次设计采用手动按键控制,数码管显示,简朴清楚,操作简洁,以AT89C52为核心,C语言编程,提高了系统的稳定性,保证了自动售货机可以长期稳定的运营。2 控制系统总体方案的概述对自动售货机控制系统进行完整的功能需求分析,拟定总体设计方案,是完毕设计的前提。这不仅有助于时间的合理规划和安排,并且可避免因盲目进行设计而达不到规定的情况。2.1自动售货机的工作时序自动售货机
14、是智能化售货设备,只需顾客进行简朴的操作选择,就可以方便快捷地购买到想要的商品,其工作时序图1所示。图1 自动售货机工作时序图图1 自动饮料售货机工作时序图售货机的工作流程是:(1)用户投币口送入货币-按按键,程序自动计数。(2根据金额LED显示显示可供选选择的商品。(3)顾客选择商品,程序计算余额。(4)数码管显示余额。(5)系统复零,完毕售货。2.2控制系统的硬件需求分析控制系统要完毕图1的各个环节,应具有货币辨认、商品选择、缺货提醒、缺币提醒、硬币找零、准确出货、金额显示和语音提醒等功能。但是本次设计规定简朴不规定货币辨认、缺货提醒、缺币提醒和语音提醒功能。 因此,硬件需要按键控制,LE
15、D显示,数码管显示和AT89C52核心芯片2.3控制系统的软件需求分析本此设计是在windows7系统下,(1)系统程序采用Keil4软件进行程序的编写和编译,采用C语言编写程序,(2)用Proteus软件进行仿真,(3)stcisp-v4.79软件和USB转串口线驱动软件下载程序。3控制系统的硬件设计 3.1中央控制元件AT89C52本次设计中,中央控制元件采用MCS-51系列单片机中的AT89C52芯片,其引脚图如下图2所示.图2 AT89C52引脚图 3.1.1 AT89C52简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和
16、256B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 解决器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定期计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微解决器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地减少开发成本。 AT89C52有PDIP、PQFP/T
17、QFP及PLCC等三种封装形式,以适应不同产品的需求。. 3.1.2重要特性(1) 兼容MCS51指令系统 (2)8k可反复擦写(1000次)Flash ROM (3)32个双向I/O口 (4) 256x8bit内部RAM (5)3个16位可编程定期/计数器中断 (6) 时钟频率0-24MHz (7) 2个串行中断 (8) 可编程UART串行通道 (9) 2个外部中断源 (10) 共6个中断源 (11) 2个读写中断口线 (12)3级加密位 (13)低功耗空闲和掉电模式 (14) 软件设立睡眠和唤醒功能 3.1.3管脚说明 1、VCC:供电电压,一般接+5V电压 2、GND:接地。 3、P0口
18、:P0口为一个8位漏级开路双向I/O口,每脚可吸取8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0可以用于外部程序数据存储器或程序存储器。它可以在总线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在FIASH编程时,P0 口作为原码输入口,在Flash 编程时,P0 口接受指令字节,而在程序校验时,输出指令字节,校验时,规定外接上拉电阻 4、P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接受输出4个TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLA
19、SH编程和校验时,P1口作为第八位地址接受。 5、P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接受,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它运用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接受高八位地址信号和控制信号。 6、P3口:P3口管脚是8个带内部上拉电阻的双向I/O口
20、,可接受输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 7、P3口也可作为AT89C51的一些特殊功能口,如下所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接受一些控制信号。 RST:复位输入。当振荡器复
21、位器件时,要保持RST脚两个机器周期的高电平时间。 8、ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定期目的。9、PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。 10、EA/VPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时
22、,EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 11、XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 12、 XTAL2:来自反向振荡器的输出。 3.1.4实验用模块 本次实验用P2、P3的I/O口作为数码管显示模块控制输出端,P1的六个I/O口P1.0、P1.1、P1.2、P1.3、P1.4和P1.6作为按键控制输入端,P0的三个I/O口P0.2、PO.3和P0.4作为可供购买饮料控制输出端。内部时钟电路及复位端连接如下图:图3 时钟电路及复位端 3.2. 投币模块和购买模块投币系统是自动
23、售货设计当中比较重要的一块,涉及到货币辨认系统,对于辨认货币器是如何设计、如何工作的,在这里将不做进一步的研究。在本次设计中用P1.0和P1.1上的两个按键来代替投币0.5元与投币1元,投币时,按键按下,给P1.0/P1.1一个低电平,通过程序控制,实现加法计数。P1.2、P1.3、P1.4口分别表达购买饮料A、B、C,购买时,按键按下,给P1.2/P1.3/P1.4一个低电平,通过程序控制,实现减法计数。P1.7口表达清零,案件按下是,通过程序控制,实现清零。具体代码将在后面介绍,投币模块和购买模块电路图连接如下: 图4 投币模块和购买模块电路图 3.3可供购买模块售货机可以自动出售3种饮料
24、A、B、C,售价分别是0.5元,1元和1.5元。当顾客完毕投币后,根据投入金额,各饮料相应的LED将亮起,比如投入1元硬币,0.5元和1元饮料的LED亮起,1.5元的饮料的LED不亮,表达可以购买A或B元饮料,不可购买C饮料。P0的三个I/O口P0.2、PO.3和P0.4作为饮料A、B、C控制输出端,对的LED灯亮,表达可购买。可供选择模块电路连接图如下:图5 可供选择模块电路图3.4显示模块显示模块用7段段共阳极数码管显示,分别接在P2和P3I/O口,A、B、C、D、E、F、G和dp分别接第7脚到第0脚。公共短接+5V,为防止数码管被烧掉,须在数码管和I/O间接上1K的限流电阻。通过程序控制
25、分别给8个管脚送相应的高低电平,使之显示相应的数字。数码管显示模块电路连接图如下:图6数码管显示模块电路4控制系统的软件设计 4.1编程语言与软件C语言是编译型程序设计语言的一种,它兼顾了各种高级语言和汇编语言的特点。使用C语言进行程序设计已经成为单片机软件开发的主流。其有以下优点: 不懂得单片机的指令集,也能编写完美的单片机程序; 程序具有坚固性:数据被破坏是导致程序运营异常的重要因素; 提供常用的标准函数库,以供用户直接使用; 有严格的语法检查,错误很少,可容易地在高级语言的水平上迅速地被排除。因此,本设计使用被广泛应用的Keil uVision 4语言编译器为开发环境,进行了单片机的C语
26、言程序设计。4.2 C语言程序综合考虑自动售货机的功能需求和硬件设计,软件程序的编写应当涉及以下几个内容:独立键盘扫描函数KeyScan,数码管显示函数Display、非精确延时Delay函数和主程序main。具体代码见附录34.3程序执行流程在程序层次结构方面,当系统上电之后,应先对其进行相关初始化。然后程序应当进入无限循环,再根据相应的触发条件进入相应的子程序,完毕相应的状态下的工作。由于系统在多个状态间跳转切换,所以在程序编写时比较适合应用循环结构实现。整个流程图如图7所示。图7 程序设计整体流程图5整体电路设计 5.1整体电路图 图85.2整体工作及原理说明电源供电后,手动控制按键投币
27、,饮料选择等,按下按键等于给相应的I/O口一个低电平,在通过程序控制,AT89C52芯片给相应的I/O口高低电平,实现LED灯的亮灭表达是否可选择饮料和数码管金额显示。6实验仿真1.点击开始,显示界面如下 图92.按一下按键1和2显示如下图103.再按下按键4,显示如下图117实物调试7.1实物图图12该实物图由两部分组成,显示、手动模块和核心控制模块,为节省资源,核心控制模块采用曾用来学习MCS51系列单片机的核心板,显示、手动模块由按键、LED灯和7段数码管组成,两图分别如下: 图13 MCS51核心板图13 显示、手动模块7.2实物调试结果1通电后如下图14未按任何按键,数码管显示0.0
28、2按下按键1和2分别一下(投币0.5和1元)图15按下按键1和2,即投币0.5和1元,数码管显示金额1.5元,饮料A、B、C(售价分别为0.5元、1元、1.5元)相应的三个红色LED灯都亮,表达这三种饮料都可购买,符合实验规定。(绿色LED为该电路的指示灯)3再按按键4(购买1元饮料)图16再按按键4(购买1元饮料),购买一次饮料显示余额0.5元,则只可购买饮料A,只有饮料A的LED亮,符合实验规定。(绿色LED为该电路的指示灯)。4,再按按键3(购买饮料A)图17此时,余额为0.0,三个LED均不亮,只有指示绿LED亮,则不可再购买饮料,符合实验求。5最大投币数图18连续投币,按按键1和2,
29、最大可达成9.5元,此后再按按键,数码管显示0.0,且不再变化,清零后才可继续投币使用。(或者按复位键)6按下按键6(清零功能)图19按下按键6实现清零功能,余额为零,三个LED均不亮,符合实验规定。8设计小结8.1实验结果有以上仿真和实物测试可知,实验仿真成功,实物制作成功,可实现功能投币计数、显示可供选择的饮料、购买、显示余额以及清零等功能,达成了实验的技术规定。因此本次课程设计基本成功。8.2实验收获本次课程设计为数电课程设计,该课程设计使我有了以下几个方面的收获:1、 本次设计采用两个7段共阳极数码管显示,实验过程中,复习了有关数码管的知识,比如引脚图,尚有编码知识。2、 本设计采用C
30、语言编程,让我回顾了大一学的C语言编程方法与原则,以及如何通过程序对单片机进行控制,进而控制显示电路。3、让我学会多个软件的联合使用。比如,用Keil4编程,其生成的hex文献可用于proteus仿真,还可下载到单片机芯片实现电路控制。4、熟悉了课程设计流程,增强了焊接技巧。8.3实验体会这一个星期的紧张的课程设计,理论与实际相相结合,锻炼了我的综合运用所学专业基础知识的能力,同时也提高我查阅文献资料、程序设计规范以及电脑制图和电路调试等其他专业能力水平,并且通过对整体的掌控,对局部的取舍,以及对细节的斟酌解决,都使我的能力得到了锻炼,丰富了实践经验,并且意志力,抗压能力及耐力也都得到了不同限
31、度的提高。特别电路板的调试,这花了将近一天的时间,调试那天,仿真结果对的,实物显示不对,这一天就在检查电路板的连接问题,焊接问题,尚有调试程序。结果是几条I/O口的线连反了。这过程很考验人的意志力,抗压能力及耐力,这让我学习到,无论干什么事都要细心和耐,不急不躁心。尚有报告的撰写,本次课程设计是我第二次课程设计,因对设计流程和规定较为熟悉,对课程设计报告的格式和内容也更了解。本课程设计与编程相结合,综合了以往所学知识,并加以应用,编程设计过程需要我们先画流程图。总体来说,本次课程设收获颇多,本次设计也较为成功。参考文献1电子技术基础课程设计,孙梅生等编著,高等教育出版社,1998年。2电子线路
32、设计实验测试第三版,谢自美主编,华中科技大学出版社, 2023年8月。3新型集成电路的应用电子技术基础课程设计,梁宗善主编,华中科技 大学出版社,1999年4月。4单片机原理及接口技术,余锡存、曹国华编,西安电子科技大学出版 社,2023年7月5MCS-51系列单片机系统及其应用蔡美琴,张为民等编,北京高等教育出版社2023年1月。6 Proteus教程M,朱清慧、张凤蕊、翟天嵩编,清华大学出版社,2023 年9月7 51单片机C语言程序设计经典实例陈忠平主编,电子工业出版社, 2023年5月851单片机C语言应用开发技术大全第2版,刘坤、赵红波、张宪栋编,人 民邮电出版社,2023年3月附录
33、1整体电路图附录2 元器件清单 元器件清单及封装形式,如下表所示。 表1 元器件清单及封装形式序号名称规格数量1电阻1K/0.25W20个2电阻10k/0.25W1个3瓷片电容 30PF2个4电解电容 10uF/10V1个5按键7个6自锁开管开关1个7LED灯3红1绿4个87段共阳极数码管2个9单片机 AT89C511片10晶振 12MHZ1个11杜邦线(加杜邦头)3根12排针 2排13对拷线1根14下载线1根 附录3实验源代码 /*名称:自动饮料售货机控制 *时间:2023-7 */#include/*宏定义*/ #define MoneyPort1 P2 / 数码管余额显示 十位#defi
34、ne MoneyPort2 P3 / 数码管余额显示 个位/*管教定义*/sbit key5=P10;/定义5角钱的输入按钮连接管脚sbit key10=P11;/定义1元钱的输入按钮连接管脚 sbit keyA=P12;/定义选择饮料A(0.5元)按钮连接管脚 sbit keyB=P13;/定义选择饮料B(1.0元)的输入按钮连接管脚sbit keyC=P14;/定义选择饮料C(1.5元)的输入按钮连接管脚 sbit keyClear=P17;/定义清零按钮连接管脚 sbit LEDA=P02;/定义饮料(0.5元) 的LED连接管脚sbit LEDB=P03;/定义饮料B (1.0元) 的
35、LED连接管脚sbit LEDC=P04;/定义饮料C (1.5元)的LED连接管脚/*变量定义*/Unsigned char code number_display_shi10 =0x02,0x9e,0x24,0x0c, 0x98,0x48,0x40,0x1e,0x00,0x08;unsigned char code number_display_ge10=0x03,0x9f,0x25,0x0d,0x99, 0x49,0x41,0x1f,0x01,0x09; /数码管码值 分别相应 0,1,2.9 /*子函数声明*/void KeyScan(void);/独立键盘扫描函数 void Disp
36、lay();/显示函数void Delay(unsigned int xms);/非精确延时函数/* * 主函数* 参数 void* 返回值 void*/void main (void) while(1) KeyScan();/键盘扫描 Display();/显示 /* 键盘扫描函数* 参数 void* 返回值 void*/void KeyScan(void) if(keyA=0)/ 判断是否购买饮品A Delay(10); /消斗延时 if(keyA=0) /判断是否购买饮料A if(money0) money-=5; /总钱数减0.5元 while(!keyA);/等待按键释放 if(keyB=0) / 判断是否购买饮料B Delay(10); /消斗延时 if(keyB=0) if(money9) money-=10;/总钱数键元 while(!keyB);/等待按键释放