1、精品自动售货饮料机控制电路的设计与实现毕业论文课程设计任务书学生姓名: 王耀辉 专业班级: 通信1304班 指导教师: 撒继铭 工作单位: 信息工程学院 题 目: 自动售货饮料机控制电路的设计与实现 初始条件:本设计既可以使用计数器、比较器、脉冲发生器等和必要的门电路等,也可以使用单片机系统构建。用数码管、LED灯显示结果。要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周。2、技术要求:1)售货机只接受5角和1元的硬币,可以用按钮代替硬币的投入。投入硬币的总金额用两位数码管显示,最大投入金额为9.5元。2)售货机可以自动出售3种饮料,售价
2、分别是0.5元,1元和1.5元。当顾客完成投币后,根据投入金额,各饮料对应的LED将亮起(如投入1元硬币,0.5元和1元饮料的LED亮起,表示可以购买0.5元或1元饮料)。3)顾客根据自身需要按下各饮料对应的按钮,每按一次掉出一瓶饮料,两位数码管显示剩余金额,LED继续指示可购饮料的种类;4)顾客按下“找零”按钮将使机器发出找零信号,两位数码管清零。5)确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。3、查阅至少5篇参考文献。按武汉理工大学课程设计工作规范要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。时间安排:1、2015
3、年 7 月 1 日,布置课设具体实施计划与课程设计报告格式的要求说明。2、2015年 7 月 3 日至 2015年 7月 5 日,方案选择和电路设计。3、2015年 7 月 5 日至 2015年 7 月 9 日,电路调试和设计说明书撰写。4、2015年 7 月 10 日,上交课程设计成果及报告,同时进行答辩。指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日ABSTRACT 2 摘要本文设计了一种以INTEL 公司的AT89C52单片机为核心的自动饮料售货机装置的控制系统,详细介绍了自动饮料售货机控制系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动饮料售货机控制系统的
4、工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C52芯片为核心,采用集中控制方式实现了对自动饮料售货机全过程的自动控制。本系统选择6个独立键盘按键作为货币投入端,饮料选择端和清零端,实现了投币,饮料选择功能,用两个7段共阳极数码管显示货币数以及找零数,用三个LED灯显示可供选择的饮料。此外,系统程序采用Keil uVision 4软件进行程序的编写和编译,采用C语言编写程序,用Proteus7软件进行仿真,stcisp-v4.79软件和USB转串口线驱动软件下载程序。总体来说,通过实物的安装调试,本次课程设计基本达到了设计指标要求,实现了投币,选择饮料,购买饮料,找零等功能。
5、关键词:自动售货机,AT89C52单片机,C语言程序,数码管显示ABSTRACTIn this paper, 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, , software planning and preparation, and
6、emphatically describes the principle 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 t
7、his system , six independent keyboard 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 al
8、ternative beverage . In addition, 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 ,
9、the design requirements are met in 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 Display1绪论1.1设计背景 随着劳动密集型的产业构造向技术密集型社会转变,自动售货机日趋盛行,主要用于公共场合,且种类繁多。一般的自动售货机由钱币装
10、置、指示装置、贮藏售货装置等组成。钱币装置是售货机的核心,其主要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。贮藏售货装置保存商品,接收出售指示信号,把顾客选择的商品送至付货口。一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱装置组成。70年代以来,出现了采用微型计算机控制的各种新型自动售货机和利用信用卡代替钱币并与计算机连接的更大规模的无人售货系统,如无人自选商场、车站的自动售票和检票系统、银行的现金自动支付机等。1.2 应用前景现在,自动售货机产业正
11、在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充和商品选定的顺利进行。进入21世纪时,自动售货机将进一步向节省资源和能源以及高功能化的方向发展。从自动售货机的发展趋势来看,大量生产,大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道,而相对的超市,百货购物中心等新的流通渠道的产生,人工费用也不断上升,在加上场地的局限性和购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器也就有了其相当可观的前景。1.3设计目的和意义本次课程设计是自动饮料售货机控制系统,可用于简单的自动饮料售货机。本次
12、设计采用手动按键控制,数码管显示,简单清晰,操作简洁,以AT89C52为核心,C语言编程,提高了系统的稳定性,保证了自动售货机能够长期稳定的运行,提高我们的编程能力以及实际动手能力,对数电,对0和1的世界有一个更新的认识。2 总体方案设计 根据设计要求,自动售货饮料机主要由四个模块构成,即投币模块、选择购买模块、找零模块和显示模块(余额显示和可购买类型指示灯显示)。按照此思路,可以用数字芯片设计,也可以用单片机系统设计,两种设计方案如下。2.1 自动售货系统结构 自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如图1。 图1 自动售货机
13、工作程序售货机的工作流程是:(1)用户投币口送入货币-按按键,程序自动计数。(2根据金额LED显示显示可供选选择的商品。(3)顾客选择商品,程序计算余额。(4)数码管显示余额。(5)系统复零,完成售货。2.2方案比较选择 方案1:电路从两部分输入,第一部分通过开关闭合模拟投币,投币后进入计数器74LS161和二进制全加器74LS283进行累加,通过数码管显示投币总值。再通过数值比较器74LS85比较可以购买不同价格的饮料类型。另一部分通过开关闭合模拟选择饮料,选择货物后用编码器和数码管显示饮料价格,最后将投币总值和饮料价格一起通过减法器,做差值后显示。原理框图如图2所示。 图2 方案一原理框图
14、方案2:用单片机实现自动售饮料功能,通过编写程序来控制数码管上金额的显示和各种价格的饮料对应的LED灯显示,通过按键的操作来实现投币,买饮料和找零。原理框图如图3所示,系统搭建图如图4所示。 图3 方案二原理框图 图4 单片机系统搭建图分析得出,方案一和方案二都可行。但是,方案一需要使用74LS161,74LS283,74LS85等芯片,电路组成比较复杂,焊接电路花费的时间较长,不容易做出实物。而方案二使用单片机思路清晰,电路简单易焊接。综合考虑,我选择方案二, 因此,硬件需要按键控制,LED显示,数码管显示和AT89C52核心芯片3 单元电路设计 3.1 硬件单元设计 3.1.1 中央控制元
15、件AT89C52 本次设计中,中央控制元件采用MCS-51系列单片机中的AT89C52芯片,其引脚图如下图5所示. 图5 AT89C52引脚图3.1.2 AT89C52简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8KB的可反复擦写的Flash只读程序存储器和256B的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入输出(IO)端口,同时内含2个外
16、中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFPTQFP及PLCC等三种封装形式,以适应不同产品的需求。3.1.3 主要特性(1)兼容MCS51指令系统 (2)8k可反复擦写(1000次)Flash ROM (3)32个双向IO口 (4) 256x8bit内部RAM (5)3个16位可编程定时计数器中断 (6) 时钟频率0-24MHz (7) 2个串行中断 (8) 可编程U
17、ART串行通道 (9) 2个外部中断源 (10) 共6个中断源 (11) 2个读写中断口线 (12)3级加密位 (13)低功耗空闲和掉电模式 (14) 软件设置睡眠和唤醒功能 3.1.4管脚说明(1)VCC:供电电压,一般接+5V电压 (2)GND:接地。 (3)P0口:P0口为一个8位漏级开路双向IO口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器或程序存储器。它可以在总线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在FIASH编程时,P0 口作为原码输入口,在Flash 编程时,P0 口接收指令字节,而在程序
18、校验时,输出指令字节,校验时,要求外接上拉电阻(4)P1口:P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 (5)P2口:P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器
19、进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 (6)P3口:P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 (7)P3口也可作为AT89C51的一些特殊功能口,如下所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外部中断0) P3
20、.3 INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 (8)ALEPROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16。因此它可用作对外部输出的脉冲或用于定时目的。(9)PSEN:外部程序存储器的选通
21、信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。 (10)EAVPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 (11)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 (12)XTAL2:来自反向振荡器的输出。3.1.5实验用模块 内部时钟电路及复位端连接如下图: 图6 内部时钟电路及复位端连接时钟电
22、路:XTAL1:芯片内部振荡电路输入端。XTAL2:芯片内部振荡电路输出端。XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2.1.3 中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的11.0592M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。
23、当采用石英晶振时,电容可以在20 40pF 之间选择(本实验套件使用30pF)。复位电路:在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST 持续为高电平,单片机就处于循环复位状态。复位操作通常有两种基本形式:上电自动复位和开关复位。图6中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后
24、约等于0,芯片正常工作。和电阻仪器并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替。3.1.6 投币购买以及清零模块投币系统是自动售货设计当中比较重要的一块,涉及到货币识别系统,对于识别货币器是如何设计、如何工作的,在这里将不做进一步的研究,这里只用单片机研究输入是如何实现的。 在本次设计中用P1.0和P1.1上的两个按键来代替投币0.5元与投币
25、1元,投币时,按键按下,给P1.0P1.1一个低电平,通过程序控制,实现加法计数。P1.2、P1.3、P1.4口分别表示购买饮料A、B、C,购买时,按键按下,给P1.2P1.3P1.4一个低电平,通过程序控制,实现减法计数。P1.5表示清零,案件按下是,通过程序控制,实现清零。具体代码将在后面介绍,投币模块和购买模块电路图连接如下:图7 投币购买以及清零模块3.1.7 可供购买显示模块显示模块:用端口P0.0、P0.1和P0.2作为可购买指示输出端,分别表示可购买0.5元、1.0元和1.5元的饮料。由于二极管具有具有约0.7v的压降和约20mA的限制电流,故选择220V的限流电阻,电路图连接如
26、图8.图 8可供购买显示模块3.1.8数码管显示模块用端口P2.0-P2.7 ,P3.0-P3.7作为显示输出端,连接数码管显示余额。由于数码管存在一定的最大限制电压,故需要外接限流电阻。 图9数码管显示模块3.2 软件单元电路 3.2.1 编程语言与软件C语言是编译型程序设计语言的一种,它兼顾了各种高级语言和汇编语言的特点。使用C语言进行程序设计已经成为单片机软件开发的主流。其有以下优点:1、不懂得单片机的指令集,也能编写完美的单片机程序;2、程序具有坚固性:数据被破坏是导致程序运行异常的重要因素;3、提供常用的标准函数库,以供用户直接使用;4、有严格的语法检查,错误很少,可容易地在高级语言
27、的水平上迅速地被排除。因此,本设计使用被广泛应用的Keil uVision 4语言编译器为开发环境,进行了单片机的C语言程序设计。3.2.3 protues简介 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了
28、从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。使用 Proteus 开发环境进行培训,在不需要硬件投入的条件下,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真成功之后再进行实际制作,能极大提高单片机系统设计效率。3.2.4 总体设计方案 当系统启动后先进行初始化,然后开始进行按键扫描,等待按钮被按下,从而进入相应的子程序处理部分,其中子程序主
29、要包括键盘扫描程序,显示子程序等。其流程图如图10所示。 图10程序设计流程图3.2.5 子程序设计方案1、运算子程序2、运算子程序包括输入五角和输入一元,减去5角,减去一元,减去一元五角五种,以输入五角为例。由于两个数码管是分开控制的,即分十位与个位分别控制,因此,在计算加法的时候需要考虑进位问题。当个位初始值为5的时候,对其进行加5操作则需对十位进行进位并同时将各位清零。此外,由于最大不能超过9.5元,还需在程序中对十位个位的最大数值进行判断,减法程序与加法程序类似,也需注意借位问题,在此不再赘述。2、显示子程序 显示子程序包括数码管显示和led显示两种。由于数码管相当于8个led并联连接
30、,一段接电源VCC一端接单片机IO口。当IO口输出低电平时,数码管对应的位置将亮起。在编写程序的时候可利用数组实现对数码管的控制,将09对应的二进制代码存入数组中,显示时输入对应数字即可完成数码管的显示,其流程图如图11所示。 图11 子程序流程图4 整体电路设计4.1 整体电路图 图12 整体电路图4.2整体工作原理说明根据设计要求,自动售货饮料机主要由四个模块构成,即投币模块、选择购买模块、找零模块和显示模块(余额显示和可购买类型指示灯显示)。综合考虑自动售货机的功能需求和硬件设计,软件程序的编写应该包括以下几个内容:独立键盘扫描函数KeyScan,数码管显示函数Display、非精确延时
31、Delay函数和主程序main。电源供电后,手动控制按键投币,饮料选择等,按下按键等于给相应的IO口一个低电平,在通过程序控制,AT89C52芯片给相应的IO口高低电平,实现LED灯的亮灭表示是否可选择饮料和数码管金额显示,具体代码见附录2。5 Protues仿真结果与分析1、开始图13开始界面2 投0.5元 图14投币0.5元,未购买状态仿真图仿真结果分析:此时LED_A灯亮,表示0.5元的饮料可以购买;LED_B、LED_C处于熄灭状态,表示1元和1.5元的饮料不能购买。数码管上显示0.5,表示投入金额为0.5元。符合设计要求。3、投1元图15 投币1元,未购买状态仿真图仿真结果分析:此时LED_A和LED_B灯亮,表示0.5元和1.0元的饮料可以购买;LED_C处于熄灭状态,表示1.5元的饮料不能购买。数码管上显示1.0,表示投入金额为1.0元。符合设计要求。4、最多只能投9.5元图16投币9.5元,未购买状态仿真图仿真结果分析:此时LED_A、LED_B和LED_C都亮,表示0.5元、1.0元和1.5元的饮料均可购买;多次投入1.0元和0.5元硬币,但最多只能投入9.5元,此时数码管上显示9.5。符合设计要求。5、买0.5元的饮料 图17 购买一瓶0.5元饮料仿真结果分析:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1