第二章 系统结构设计
2.1 设计方案论证
2.1.1 控制模块的选择与论证
方案一:选用INTEL公司生产的MCS-51系列的80C51芯片。该芯片时一款具有高稳定的8位单片机,包括CPU、RAM(128字节)、I/O(32个输入/输出)、16位定时/计数器(16位)、串行通信口、两级中断和片内时钟振荡电路。它将HMOS技术的高速、高密度特性与CHMOS低功率特性相结合,具有较强的实用性[7]。
方案二:选用STM32芯片。它是由意法半导体公司开发的。这是一个以Cortex-M3为核心的ARM芯片。STM32微处理器包含了工业控制系统中的各种功能,包括USB、网络、SD卡、A/D转换、D/A转换等。最高工作频率为72MHz:芯片上集成32-512KB闪存,6-64KB的SRAM存储器[8]。
通过上述两种单片机对比,STM32系列芯片是一款32位的内核芯片,而MCS-51系列的80C51只是8位CPU,运算速度STM32要更快;80C51只含有128字节的RAM,而STM32上集成了6-64KB的SRAM存储器,储存空间更大;STM32上的功能模块也比80C51更多,所以本文选用STM32系列芯片。
2.1.2 硬币器的选择与论证
方案一:采用GD-106K型投币器。GD-106K型投币器是一元、五角专用投币器,106K属于单投型,不可退币,用户无需多加学习,出厂时已自行学习了各版本的一元和五角,可直接安装到自动售货机上使用。
方案二:采用TW-2020型硬币器,TW-2020型硬币器是一元专用投币器,支持退币,内部含有记忆晶片组合,一次记忆永不丢失,支持DC5-12V液晶及机械码表,端口采用4针防反国内通用端口。
通过两种投币器的比较,虽然GD-106K型投币器可识别一元及五角的硬币,但是它是单投型的,买多个商品的时候,需要多次投币购买,不能进行连续投币操作,而且它不支持退币功能,不适于本系统的设计,所以本文选用TW-2020型硬币器。
2.1.3 出货电机的选择与论证
方案一:采用大可马品牌的推出式电机。该推出式电机运用的是模块化设计,体积小,可以承载更多的商品,空间利率高,减少了运维成本,每个货道可实现机械出货检测,机械缺货检测,出货红外检测,三重检测确保设备工作稳定。
方案二:采用CY-VGMS-277弹簧电机。该弹簧式电机将电机嵌入装置内部,体积减小一大半,重量轻,安装方便,直接通过卡扣卡在自动售货机中,出货时可保证货物的稳定性,不会像别的传统电机,产生摇晃,完全保证了商品的完好性哦那个。
再对两种电机对比后,推出式电机虽然有众多优势,但是本系统设计的自动售货机以售卖瓶装饮料为主,需要最大程度上保证出货的稳定性,防止商品摇晃,导致顾客购买后,带气饮料不方便打开,影响顾客消费体验。故本文选用CY-VGMS-277弹簧电机。
2.2 系统的总体设计方案
本次设计的自动售货机以STM32F103C8T6芯片为核心,其自动控制系统以模块化方式进行设计,主要由电源电路模块、商品选择模块、投币模块、OLED显示模块、出货模块、报警模块及LED灯模块组成。其中,商品选择模块采用按键输入,方便顾客选择自己想要的商品种类及其数量;投币模块采用TW-2020型硬币器,进行顾客投币及找零;OLED显示模块采用1.3寸OLED显示屏,显示商品的种类、数量,投币数量及电机处于出货状态还是投币不足状态;出货模块采用CY-VGMS-277弹簧电机,将顾客购买的商品移出;报警模块包含声音报警和灯光报警,并以蜂鸣器的声音方式发出,同时LED灯提醒消费者投币不足;LED灯模块就采用LED灯,提示顾客从哪一个通道出货。整个系统的总体设计框图,如图2.1所示。

图2.1系统总体设计框图
2.3 系统工作流程设计
本文设计的自动售货机具体的工作流程如下:
(1)通过按键选择购买商品的种类及数量,并在OLED显示屏中显示总金额;
(2)投入硬币,硬币数也直接显示在OLED屏中;
(3)若投入金额足够,点击出货按钮,开始出货并找零;
(4)如投入的硬币不够,蜂鸣器报警提示,可选择继续支付或退币;
(5)完成交易后,系统将恢复初始界面。系统工作流程图,如图2.2所示。

图2.2系统工作流程图
第三章 自动售货机系统的硬件设计
本文所研究的自动售货机系统,系统硬件由STM32单片机、电源模块、投币模块、电机模块、按键输入模块、OLED显示模块、报警电路模块及LED灯模块等部分组成。该系统采用AC220v电源供电,通过S-50-24直流开关电源,将AC220V转换成DC24V[16],DC24V可以给售货机货物电机模块供电。电源模块中还有内部电池供电的单输出升压转换器,可输出DC12V电压,为售货机的硬币器供电,DC12V再由AMS1117-5V降压芯片转化为DC5V,再由AMS1117-3.3V降压芯片将DC5V的电压转化为DC3.3V。模块化设计能简化系统的设计,减少系统的功耗,简化运行,通过OLED显示屏顾客可直观地选择自己想要的商品。自动售货机原理图如图3.1所示。

图3.1自动售货机原理图
3.6 按键模块设计
本系统采用5个SW0-SW4微型开关组成的按键输入模块。液晶显示屏的显示内容可以由键盘输入来进行控制。同时可以切换商品选择及其数量加减,对应的微动开关SW0-SW4接口电路如下图3.19所示。

图3.19按键输入接口电路
第四章 自动售货机系统的软件设计
本章是对自动售货机的软件部分进行设计,首先是对编程软件进行介绍,其次,采用模块化的设计思路,详细地实现了系统的各个主要功能模块的设计。
4.1 Keil软件介绍
本系统软件编译调试采用二零一三年美国Keil Software公司在10月正式发布的KeilμVision5。C语言是本次设计程序的主要语言,在功能、结构、可读性、可维护性等方面,C语言比汇编语言更容易掌握和应用。Keil提供了一个包括C编译器、宏集、连结、库管理的一整套开发方案,并包括一个由一个统一的开发环境(μ Vision)构成的功能强大的仿真除错程序。U Vision是一个类似于Eclipse的集成开发环境,由KEIL公司开发。主要包含了项目管理、源码编辑、编译、下载、调试、模拟模拟等[22],Keil μ Vision5的优势在于:
(1)keil5只是安装了一个简单的软件,没有任何关于设备的详细资料,只需要安装相应的文件。STM32系列微处理器常用Keil5进行编译和调试;
(2)Keil5生成了高效的代码,并且大多数语句生成了简单、易于理解的汇编代码。高级语言的优势在大规模的软件开发中更为明显。就拿stm32的驱动来说,Keil4必须从网站上下载相应的驱动,然后将其拷贝到相应的文件夹中。而keil5只要打开packinstall,按install键就可以找到相应的面板。
(3)更具大众化、操作简便、界面更优化。
Keil μ Vision5的软件界面如下图4.1所示。

图4.1KeilμVision5的软件界面
4.2 系统主程序设计
系统设计的软件流程图如图4.2所示。系统一共设计了三种商品,分别为coke、juice、sprite,对应三个不同的价格,分别为3元、4元、5元。当顾客根据显示屏现实的内容,按下对应的按键,选择想要的商品种类及其数量,系统会根据顾客选择的商品数量计算出应付的金额。接着顾客开始投币付款,投币器会计算投币的数量,单片机接受信号,显示在OLED显示屏,如果顾客投币的数量小于选择商品的总价,顾客依然点击了出货键,则报警电路工作,蜂鸣器想起,报警指示灯里亮红,显示屏显示"Tou Bi Bu Zu!!!",显示完后返回主界面,顾客可选择按下退币按键,系统退币,顾客也可以选择继续投币,如果顾客投币的数量和选择的商品总价相等,顾客按下出货键,商品开始出货,对应货物的LED灯亮起,显示屏显示"Kai Shi Chu Huo...",一段时间后,显示"Chu Huo Wan Cheng!!!",随即出货指示灯灭。

图4.2自动售货机主系统设计的软件流程
第五章 自动售货机系统仿真
在第三章对自动售货机的硬件设计完毕和第四章对自动售货机的软件设计完毕后,本章将对系统各部分的功能进行仿真。
5.1 仿真软件介绍
本项目所使用的模拟软件为Proteus,由英国实验室开发。该软件是当今世界上最成熟、最完善的嵌入式系统开发和模拟平台。
该系统支持各种类型的MCU(51)、PIC(AVR)、STM32(STM32),它还支持当今最受欢迎的MCU开发环境(Keil,MPLAB,IAR),是一种集成和扩充的电子电路模拟软件[23]。该软件的特点:
(1)这些都达到了我们所设计的MCU软件模拟系统的要求,与其他同类产品相比,有着显著的优越性。(2)仿真系统包括:模拟电路,数字电路,MCU及其周边电路,RS---232动态仿真,1C调试,SPI调试,键盘和LCD系统仿真;有各种虚拟仪表,例如:示波器、逻辑分析仪、信号发生器等。
Proteus与其他的MCU模拟软件相比,该软件不仅能仿真MCU的CPU工作状况,而且能对没有MCU的外部电路以及其它没有MCU的情况进行仿真。因此,在进行仿真和程序调试时,需要考虑的不再是执行某一指令时的问题,而是微处理器的暂存器和存储器的改变,从工程的观点,直接观察程式的操作与电路的运作。在一定程度上,这种模拟试验可以弥补试验与工程应用之间的矛盾与现象[24]。Proteus软件的界面如图5.1所示。

图5.1Proteus软件的界面
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。