基于单片机的自动售货机系统设计

这篇具有很好参考价值的文章主要介绍了基于单片机的自动售货机系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式

概要

  本文设计基于单片机的自动售货机系统,分为硬件电路设计与软件设计。硬件电路设计,本系统由ST(意法半导体)公司设计和生产的STM32F103C8T6单片机为核心,根据设计功能要求,将硬件电路模块化,分为:电源模块、投币模块、电机模块、按键输入模块、OLED显示模块、报警电路模块及LED灯模块,通过按键输入模块对商品种类和数量的选择以及出货、退币的功能,用OLED显示屏模块实时显示购买的情况以及投币数量,通过LED灯模块提醒顾客哪个通道出货,用蜂鸣器和LED灯提示顾客投币不足。软件部分,根据系统需要实现的功能,运用KeilμVision5编写主程序代码,并调用各个子程序来实现自动售货机的基本功能。最后运用Proteus软件对实验电路和编写好的程序进行仿真,模拟售货过程。本文研究的自动售货机系统具有实时显示商品种类和数量以及投币数量,退币及找零,报警等功能,使得系统更加智能快捷更具有实时性,直观性。

关键词:自动售货机STM32F103C8T6

一、总体方案设计

2.1系统总体方案设计

  本次设计的自动售货机以STM32F103C8T6芯片为核心,其自动控制系统以模块化方式进行设计,主要由电源电路模块、商品选择模块、投币模块、OLED显示模块、出货模块、报警模块及LED灯模块组成。其中,商品选择模块采用按键输入,方便顾客选择自己想要的商品种类及其数量;投币模块采用TW-2020型硬币器,进行顾客投币及找零;OLED显示模块采用1.3寸OLED显示屏,显示商品的种类、数量,投币数量及电机处于出货状态还是投币不足状态;出货模块采用CY-VGMS-277弹簧电机,将顾客购买的商品移出;报警模块包含声音报警和灯光报警,并以蜂鸣器的声音方式发出,同时LED灯提醒消费者投币不足;LED灯模块就采用LED灯,提示顾客从哪一个通道出货。整个系统的总体设计框图,如图2.1所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图2.1系统总体设计框图

2.2 系统工作流程设计

  本文设计的自动售货机具体的工作流程如下:
(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.1 主控电路的设计

  主控电路是系统硬件的核心。在上一章中确定了以单片机STM32为控制器的控制方案,因此本课题设计的主控电路是单片机STM32F103C8T6最小系统组成。
 &emspSTM32F103C8T6是意法半导体(ST)自主研发的一款基于Cortex-M3芯片的嵌入式微控制器芯片,其核心采用ARMV7-M结构设计[9],在医疗、航空、农业、环保、智能电子等领域,具有低功耗、低成本、处理速度和可靠性等优点。该芯片能够同时处理32比特的资料,最高可达72MHz的时钟频率,与8位51单片机相比,具有更大的容量和更快的运算速度[10]。该芯片内置256K的FLASH内存,用于存储;此外,还有48K位元组的SRAM内存,用于储存程式执行时所需的数据及变数。同时,该系统还能运行Free RTOS、μC/OS-II等小型嵌入式系统,使系统执行更加高效、稳定。
  该芯片具有三个12位的模数转换器,其最大速度可达1us/次。该ADC具有18个不同的信道,能够对16个外部和2个内部的信号进行检测,每个信道的转换可以分为一次、连续、扫描和间断四种方式进行,可以在不同的情况下进行快速的切换,而不会互相影响,同时还可以触发中断事件。2个12位D/A转换器,可以将数字信号转化为模拟信号后输出。芯片内部拥有7个通道的DMA1和5个通道的DMA2,可以方便实现外设与存储器或存储器与存储器之间数据传输,不需要经过MCU处理,节省了MCU资源开销,支持的外部设备有定时器、SDIO、I2C、SPI、I2S、DAC、ADC和USART等。
  单片机最小系统是一种最小的系统单元,它使单片机可以正常工作,并且发挥出最完全的功能。单片机最小系统包括STM32单片机,时钟电路,电源管理电路,JTAG电路,重置电路等[17]。如图3.2所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图3.2STM32F103C8T6引脚图
  自动售货机系统IO表见下表3.1。
表3.1自动售货机系统IO表
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

四、系统实现

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软件的界面

5.2 系统仿真结果

  由于本系统设计中设有硬币器,所以在仿真时,采用一个按键来模拟顾客在付款时投币的操作,按键按下一次,代表顾客投入一枚硬币,系统的仿真图如下:
(1)当系统启动时,系统进入初始状态,等待顾客进行商品种类及数量的选择,如图5.2所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.2系统初始界面
(2)当顾客通过按键0、按键1、按键2,进行商品种类选择,和选择购买商品的数量。如图5.3所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.3商品选择界面
(3)当顾客选择好商品及其数量后,开始投币。如图5.4所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.4投币界面
(4)当顾客投入的硬币数值和商品总价相等后,点击按键3,出货按键,则对应的货物指示灯亮,显示屏显示“Kai Shi Chu Huo…”,一段时间后,显示“Chu Huo Wan Cheng!!!”,随即指示灯熄灭。如图5.5所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.5出货界面
(5)当顾客投入的硬币小于商品总价,然后点击按键3,出货按键,报警灯亮起,显示屏显示“Tou Bi Bu Zu!!!”。如图5.6所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.6投币不足界面
(6)当顾客投币不足,系统报警,显示屏再显示完“Tou Bi Bu Zu!!!”后,显示屏返回投币界面,顾客可以选择继续投币,也可选择退币,按下按键4,退币按键,投币数量清零。如图5.7所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.7退币界面
(7)当顾客完成这一系列操作后,系统会自动复位到初始界面。如图5.8所示。
基于单片机的自动售货机,单片机,单片机,嵌入式硬件

图5.8系统自动复位到初始界面

五、 文章目录

目 录
第一章 绪论 1
1.1 课题的研究背景及意义 1
1.2 国内外研究现状 1
1.2.1 国外研究现状 1
1.2.2 国内研究现状 2
1.3 主要研究内容及章节安排 3
第二章 系统结构设计 5
2.1 设计方案论证 5
2.1.1 控制模块的选择与论证 5
2.1.2 硬币器的选择与论证 5
2.1.3 出货电机的选择与论证 6
2.2 系统的总体设计方案 6
2.3 系统工作流程设计 7
2.4 本章小结 8
第三章 自动售货机系统的硬件设计 9
3.1 主控电路的设计 9
3.2 电源模块设计 11
3.2.1 三插插头、母头、插座和直流开关电源的选择 12
3.2.2 DC12V、DC5V、DC3.3V转化模块选择 16
3.3 电机模块设计 17
3.4 硬币器的选择 18
3.5 OLED显示模块设计 20
3.6 按键模块设计 21
3.7 报警电路及LED灯模块设计 22
3.8 本章小结 24
第四章 自动售货机系统的软件设计 26
4.1 Keil软件介绍 26
4.2 系统主程序设计 27
4.3 按键模块程序设计 28
4.4 出货模块及报警电路模块程序设计 29
4.5 本章小结 30
第五章 自动售货机系统仿真 31
5.1 仿真软件介绍 31
5.2 系统仿真结果 32
5.3 本章小结 36
第六章 总结与展望 37
6.1 总结 37
6.2 展望 38
参考文献 39文章来源地址https://www.toymoban.com/news/detail-775572.html

到了这里,关于基于单片机的自动售货机系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python自动售货机

    分享python实现自动售货一个小作业 输入2进行购买商品,输入商品id和数量,可以选择不同商品,最后进行结账操作。 可以有两种查询方式,全部查询和按时间条件查询 具体操作如下: 全部查询: 时间条件查询: 就按4直接退出23333 其实就是参考路边的自动售货机贩卖饮料啥的,

    2024年02月11日
    浏览(25)
  • 【Python实训】饮品自动售货机

    这段代码定义了三个函数:show_goods()、total()和main()。show_goods()函数用于展示饮品信息,total()函数用于计算总额,main()函数用于控制整个饮品自动售货机的操作流程。 运行程序后,会首先调用show_goods()函数展示饮品信息,然后用户可以根据展示的信息选择饮品和数量,输入

    2024年02月05日
    浏览(37)
  • 【FPGA入门八】自动售货机

    功能完整描述: KEY4:开关机按键,复位时,默认是关机状态,数码管和LED灯均不亮,同时蜂鸣器响,其余按键按下无效。 KEY3:在开机状态时,投币1元 KEY2:在开机状态时,投币为0.5元 KEY1:当投币但少于货物的价格时,取消订单,数码管显示为0.0,同时LED灯实现跑马灯2s然

    2024年02月08日
    浏览(30)
  • 如何用Java设计自动售货机?

    如何用Java设计自动售货机?是大多在高级Java开发人员面试中经常被问到的好问题之一。在典型的编码面试中,你会得到一个问题描述来开发一个售货机,在有限的时间内,通常2到3小时内,你需要在Java中编写设计文档、工作代码和单元测试。这种Java面试的一个关键优势是可以一次

    2024年02月05日
    浏览(90)
  • 自动售货机销售数据分析与应用

    本书不仅适用于零基础的读者自学,还适用于教师教学,为了帮助读者更加高效地掌握本书的内容,本书提供了以下10项附加价值: (1)建模平台:提供一站式大数据挖掘建模平台,免配置,包含大量案例工程,边练边学,告别纸上谈兵 (2)视频讲解:提供不少于600分钟

    2024年02月08日
    浏览(36)
  • FPGA实现简易的自动售货机模型

    环境: 1、Quartus18.1 2、vscode 3、板子型号:EP4CE6F17C8N 要求: 自动售货机功能: 1.两个按键用于投币,1个1元,1个5角 2.一个按键用于商品选择,农夫山泉2块,干脆面1块5 3.找零 设计: 我们选择使用四个按键,分别用于投币一元、五角、商品选择、结算四个功能。用六位数码管

    2024年02月09日
    浏览(33)
  • Verilog设计实例(一):自动售货机设计实例

    本系列为FPGA设计实例,基于Verilog HDL,题目一般是我在网上看到的一些FPGA相关的实验题目,基本会是一个实际场景的系统实现,而不是简单单元的设计,这是为了能更全面的练习,这些实例一般是可以基于FPGA进行实现的,因为正好手里有一块zynq板子,所以想把这个东西用起

    2024年02月05日
    浏览(28)
  • VIVADO自动售票机售货机verilog代码ego1开发板验证

    名称:VIVADO自动售票机售货机verilog代码ego1开发板验证 软件:VIVADO 语言:Verilog 代码功能: 自动售票机  1、自动售票机只出售1角、2角、5角和1元4种车票 2、只接收1角、5角和1元硬币,每次只能出售1张车  3、自动售票机具有累加销售额的功能 实验要求  出售车票用SW0~3分别

    2024年02月05日
    浏览(38)
  • 【Python】python自动售货机销售数据分析

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化【获取源码+商业合作】 👉荣__誉👈:阿里云博客专家博主、51CTO技术博主 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 近年来,随着我国经济技术的不断提升,

    2024年02月06日
    浏览(34)
  • 自动售货机控制系统的FPGA设计与实现

            采用VHDL语言设计一个自动售货机控制系统,要求能在MaxPlus Ⅱ软件平台进行仿真模拟,技术指标如下: 1)有2元、3元、8元商品;有1元、5元、10元钱币; 2)当投入的总币值大于顾客购买的商品单价时,机器提供商品并将余币退出,回到初始状态;若投入的总币值小

    2024年02月06日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包