东南大学信息科学与工程学院 基于FPGA的自动售货机控制系统
- 格式:docx
- 大小:498.73 KB
- 文档页数:23
基于FPGA的自动售货机控制系统的设计摘要本文旨在设计一种基于FPGA(现场可编程门阵列)的自动售货机控制系统。
该系统利用FPGA芯片的可编程特性和高性能,能够实现灵活、可靠的自动售货机操作。
本文将详细介绍系统的设计原理、硬件架构和关键功能,并提供实施建议和性能评估。
引言自动售货机已经成为现代社会的常见设备,用于快速、方便地购买商品。
然而,传统的自动售货机控制系统常常受限于固定的硬件结构和有限的功能。
为了提升自动售货机的灵活性和性能,本文提出基于FPGA的控制系统设计。
设计原理基于FPGA的自动售货机控制系统利用FPGA芯片的可编程特性,通过组合逻辑和时序逻辑实现自动售货机的各项功能。
系统将通过外部接口与售货机的硬件部分进行通信,并处理用户输入、商品库存、货币交易等关键操作。
通过FPGA的灵活配置和高速性能,该控制系统能够实现实时响应、精确计算和可靠交互。
硬件架构系统的硬件架构主要包括FPGA芯片、外部接口电路、按钮和显示屏。
FPGA芯片作为核心处理单元,负责运行控制程序和管理系统资源。
外部接口电路用于与售货机硬件部分进行数据传输和控制信号的交互。
按钮和显示屏提供用户与自动售货机进行交互的接口。
关键功能基于FPGA的自动售货机控制系统具备以下关键功能:1. 商品选择和购买:用户可以通过按钮选择所需商品,并进行购买操作。
系统将根据用户选择,实时更新商品库存和计算金额。
2. 货币交易:系统支持不同货币单位的识别和计算。
用户可以通过投币或刷卡等方式完成支付,系统将验证货币的合法性并进行交易处理。
3. 商品库存管理:系统能够实时监测商品库存,并在库存不足时提醒用户或停止销售。
管理员可以通过特定操作进行库存的添加和更新。
4. 故障监测和报警:系统能够监测售货机硬件部分的运行状态,并在故障发生时及时报警或进行相应处理。
实施建议实施基于FPGA的自动售货机控制系统时,可以考虑以下建议:1. 确定系统需求,并合理规划FPGA芯片和外部接口电路的选型和布局。
基于微控制器控制的自动售货机毕业设计论文摘要本文介绍了一种基于微控制器控制的自动售货机的设计和实现。
该自动售货机利用微控制器作为控制器,实现了自动售货、库存管理和支付功能。
本文详细阐述了微控制器的选择和系统架构设计,并对系统的各个模块进行了详细描述。
通过实验验证,该自动售货机能够稳定可靠地完成售货、库存管理和支付功能,具有一定的实用性和扩展性。
引言自动售货机作为现代零售业的重要组成部分,已经在各种场景中得到广泛应用。
微控制器作为控制自动售货机的核心部件,具有体积小、功耗低、高可靠性等优势,成为自动售货机的首选控制器。
本文的目标是设计和实现一种基于微控制器控制的自动售货机,并验证其功能和性能。
设计和实现微控制器选择选择合适的微控制器是设计自动售货机的重要步骤。
考虑到自动售货机需要处理多个输入输出信号和具备较高的计算能力,本文选择了性能稳定、成本较低的X系列微控制器作为控制器。
系统架构设计本文设计了一个基于微控制器的自动售货机系统架构。
该架构包括输入输出模块、控制模块和显示模块。
输入输出模块用于检测用户的选择和执行售货等操作,控制模块负责处理输入输出信号并控制货物的售出和库存管理,显示模块用于显示商品信息和支付结果。
系统实现本文通过详细描述每个模块的功能和实现过程,实现了基于微控制器的自动售货机系统。
其中,输入输出模块使用传感器和执行器与用户进行交互,控制模块利用微控制器的计算能力实现售货和库存管理功能,显示模块采用液晶显示屏来展示商品信息和支付结果。
实验验证为了验证基于微控制器的自动售货机的功能和性能,本文进行了一系列实验。
实验结果表明,该自动售货机能够稳定可靠地完成售货、库存管理和支付功能。
在不同的测试场景下,系统均能够准确地识别用户的选择并完成相应的操作,具有较好的实用性和稳定性。
结论本文设计和实现了一种基于微控制器控制的自动售货机。
通过实验验证,该系统能够稳定可靠地完成售货、库存管理和支付功能。
基于FPGA的自动售货机设计
自动售货机最基本的功能就是为顾客提供可供选择的物品并接受付款,然后交付所选物品。
自动售货机还需要具备一些其他的功能,例如在货品数量低于设定值时警报,更新商家的库存信息等。
基于FPGA的自动售货机设计包括以下步骤:
1. 确定自动售货机的物品种类和数量,并选择相应的电机、传感器和显示器等组件。
2. 设计自动售货机的控制电路,包括接口电路、逻辑电路和中央处理器(CPU)等。
其中,FPGA可以作为逻辑电路的核心部件,负责控制整个自动售货机的操作流程。
3. 利用Verilog HDL编写FPGA的逻辑设计,并通过仿真和测试确保正确性和可靠性。
FPGA的逻辑设计应该能够控制电机的旋转、传感器的检测和显示器的显示等操作。
4. 将FPGA的逻辑设计下载到实验板上并测试它的功能和性能。
在测试过程中需要注意电机的工作效率、传感器的准确性和显示器的清晰度等方面的问题。
5. 将整个自动售货机装在一个外壳中,并测试整个系统的可靠性和用户友好性。
在测试过程中需要关注售货机的操作流程、货品存储和取出的方便程度以及付款方式的安全性等方面的问题。
综上所述,基于FPGA的自动售货机设计需要充分考虑到售货机的各个方面,包括物品种类、控制电路、逻辑设计和用户体验等,以提供高质量和可靠性的售货机。
基于 FPGA 的智能控制系统开发与应用随着科技的发展和进步,智能控制系统已经成为现代工业生产的重要组成部分。
其中,基于 FPGA 的智能控制系统备受关注,因为 FPGA 具有高度可编程性、高速处理能力、低功耗等优点,在工业自动化、智能电力、智能交通等领域得到广泛应用。
本文将介绍 FPGA 的基本原理、智能控制系统的开发流程和应用实例,旨在为读者深入了解 FPGA 智能控制系统提供参考和借鉴。
一、 FPGA 的基本原理FPGA(Field Programmable Gate Array,场可编程门阵列)是一种基于硬件描述语言(HDL)设计的数字集成电路(IC)芯片。
FPGA 的实现原理是通过单元块的重新编程,实现不同逻辑功能模块的组合和优化,从而达到高效、低成本、灵活性强的设计要求。
FPGA 的主要构成分为三个部分:输入输出模块、运算逻辑模块和时钟控制模块。
输入输出模块主要负责 FPGA 与外界的通信,包括数据传输、控制信号和电源供应等。
运算逻辑模块则是 FPGA 的核心部分,它包含了可编程的逻辑门电路和存储器单元,负责处理和运算各种数字信号和二进制信息。
时钟控制模块则是管理和同步 FPGA 内部时钟信号的部件,确保各部分协同工作。
二、智能控制系统的开发流程智能控制系统的开发流程主要包括需求分析、方案设计、硬件编程、软件开发、系统测试和产品交付等阶段。
在这些阶段中,硬件编程是 FPGS 的核心环节,对硬件工程师的编程能力和设计思路有较高的要求。
1. 需求分析阶段需求分析阶段是整个智能控制系统开发的重要起点,它包括用户需求、系统规划、数据采集和数据处理等内容。
在这个阶段中,开发团队需要与客户充分沟通,了解用户的需求和期望,明确智能控制系统所要达到的目的和效果。
同时,设计人员需要梳理系统的功能特点和主要技术原理,选取合适的硬件平台和软件工具,对总体方案进行初步思考和设计。
2. 方案设计阶段在需求分析的基础上,团队开始进入方案设计阶段。
FPGA实验报告系统设计综合实践自动售货机引言本实验报告旨在介绍FPGA实验中关于系统设计综合实践的内容,以及针对自动售货机的设计和实现过程。
本项目的目标是通过FPGA实现一个基本的自动售货机,能够接受货币投入并显示余额,实现商品选择和出货的功能。
设计概述在本项目中,我们使用FPGA作为硬件平台进行实现,采用VHDL语言进行编程。
整个设计主要分为三个模块:货币处理模块、商品选择模块和出货控制模块。
货币处理模块货币处理模块负责接收和处理投入的货币,并显示当前的余额。
具体实现过程如下:1.接收货币输入:使用FPGA板载的GPIO接口连接硬币接收器,将接收到的信息传递给FPGA。
2.处理货币信息:通过计算接收到的货币数量和面额,计算出当前的余额。
3.显示余额:使用FPGA板载的数码管显示当前的余额。
根据计算得到的余额,将其显示在数码管上。
商品选择模块商品选择模块负责接收用户的商品选择,并计算选中商品的价格。
具体实现过程如下:1.接收商品选择:使用FPGA板载的按键输入接口,接收用户按下的相应按键,确定用户选择的商品。
2.计算商品价格:根据用户选择的商品,从预先配置的商品价格表中查找相应的价格。
3.显示选中商品价格:使用FPGA板载的数码管显示选中商品的价格。
根据查找到的价格,将其显示在数码管上。
出货控制模块出货控制模块负责控制商品的出货和相关信息的提示。
具体实现过程如下:1.判断余额是否足够:根据当前余额和选中商品的价格,判断余额是否足够购买商品。
2.控制商品出货:如果余额足够购买商品,则触发相应的出货机构,实现商品的出货。
3.提示用户相关信息:根据出货情况,通过数码管显示相关信息,如余额不足、出货成功等提示。
实验结果经过对上述三个模块的设计和实现,我们成功地完成了自动售货机的基本功能。
在实验过程中,我们选取了几种常见的商品,并配置了相应的价格表。
通过按下相应的按键,用户可以选择购买的商品,并通过投币的方式支付。
自动售货机控制系统设计概述本文档旨在介绍自动售货机控制系统的设计。
该控制系统负责管理和监控自动售货机的运行,确保正常的售货和货物补充。
在设计过程中,我们将主要关注系统的功能和架构。
功能自动售货机控制系统的主要功能如下:1. 货物库存管理:系统可以监测和追踪自动售货机中各种货物的库存情况。
当货物库存低于预设阈值时,系统将发出警报并触发货物补充流程。
2. 售货管理:系统负责记录每个售货交易的细节,包括购买的货物信息、购买时间和交易金额。
这些数据将用于后续分析和报告。
3. 支付管理:系统可以处理各种支付方式,如硬币、纸币和电子支付。
它能够验证支付的有效性并完成交易过程。
同时,系统还能提供找零功能。
4. 用户接口:系统配备了一个用户友好的界面,方便用户选择和购买商品。
界面应该简洁、直观,并提供货物搜索功能。
5. 运维管理:系统具备远程监控和故障诊断功能,可以实时监测自动售货机的运行状态。
它能够检测故障并自动通知相关人员进行修复。
架构自动售货机控制系统的架构应该具备以下组件:1. 控制单元:负责与自动售货机硬件设备进行通信和控制。
它接收传感器和执行器的数据,并根据系统逻辑做出相应的决策。
2. 数据存储:用于存储货物库存、交易记录、故障日志等数据。
可以选择数据库服务器或云存储平台作为数据存储的解决方案。
3. 用户界面:提供给用户使用的操作界面,可以是物理按钮、触摸屏或手机应用程序。
用户界面与控制单元进行通信以完成交互操作。
4. 通信模块:用于与远程服务器或监控中心进行通信。
可以通过网络连接或无线通信实现,以便实时监测运行状态和发送警报信息。
安全考虑在设计自动售货机控制系统时,需要考虑以下安全问题:1. 数据安全:保护存储在系统中的敏感数据,如交易记录和用户信息,防止被未经授权的人员访问或篡改。
2. 身份验证:确保只有授权人员才能访问系统的管理功能,如货物补充和故障修复。
3. 安全通信:使用安全的通信协议来保护系统与远程服务器之间的数据传输,防止被恶意攻击者窃取信息。
基于PLC的自动售货机控制系统的设计摘要此次设计是基于PLC的自动售货机控制系统,首先分析了无人自动售货机的发展历程及发展前景,然后根据其的功能特点详细设计了在此次设计中所需要实现的功能,根据设计功能进行自动售货机的硬件及软件的设计和选型。
在进行硬件设计时选用型号为XINX的步进驱动电机,硬币和纸币识别两种货币处理装置,弹簧推送式的送出机构,需要用到的按钮及指示灯种类,以三菱FX-2N-48MR型PLC为主控制器,软件设计时,基于GX Developer编程软件,采用梯形图进行系统控制程序的设计,包括投币累加、比较选择购买和退币复位程序,并采用GX—Simulator 来进行程序的调试,最后使用组态王软件进行自动售货机的仿真。
该设计是基于市场需要进行的相关功能的设计及仿真,提高了可靠性,符合市场的需求。
关键词:自动售货机,可编程序控制器,梯形图The design of the control system for vending machine based onPLCABSTRACTThe design is a vending machine based on PLC control system, the first analysis of the development and development prospects of vending machine, then according to the features of the detailed design in the design of the need to implement the function. According to the functional design of the design and selection of hardware and software of the automatic vending machine. In hardware design selects the type XINX into driving motor, coins and paper currency recognition two currency handling apparatus, spring push the sending mechanism, need to use the buttons and indicator species, with Mitsubishi FX-2N-48MR type PLC based controller, software design, base on the GX developer programming software by ladder diagram of system control program design, including coin accumulation, comparison and selection of purchase and the coin reduction program, and the GX simulator to carry out the program debugging. Finally, Kingview software vending machine simulation.The design is based on the market need for the relevant functional design and simulation, improve the reliability, in line with the market demand.KEY WORDS: Vending machine,Programmable controller,Ladder diagram目录前言 0第1章自动售货机介绍 (2)1.1 自动售货机功能分析 (2)1.2 本次设计的主要内容 (3)第2章自动售货机硬件设计 (4)2.1 自动售货机控制子系统设计 (4)2.2 自动售货机硬件组成 (5)2.3 PLC介绍及选择 (5)2.3.1 PLC产生及发展 (5)2.3.2 PLC硬件组成 (6)2.3.3 PLC的工作原理 (6)2.3.4 PLC的功能 (7)2.3.5 PLC的选择 (8)2.4货币识别器选型 (10)2.4.1硬币识别 (10)2.4.2纸币识别 (11)2.5送出机构 (11)2.6电机选择 (12)2.7按钮与指示灯选择 (12)2.8显示装置 (12)第3章自动售货机软件设计 (13)3.1 自动售货机控制流程图 (13)3.2 自动售货机程序设计 (14)3.2.1 程序中所需要用到的部分主要指令 (14)3.2.2自动售货机的控制程序 (17)第4章程序的调试及仿真 (24)4.1 梯形图调试 (24)4.1.1调试前期准备 (24)4.1.2 梯形图调试过程 (25)4.2 基于组态王的自动售货机仿真 (30)4.2.1 建立组态画面 (30)4.2.2参数设置 (32)结论 (36)谢辞 (37)参考文献 (38)附录 (39)外文资料翻译 (46)前言公元前3世纪埃及神殿中的投币式圣水出售机是世界上出现最早的自动售货机。
基于FPGA的自动售货机控制器设计毕业论文目录第1章绪论 (1)1.1自动售货机的起源 (1)1.2自动售货机的现状与发展 (1)1.3自动售货机的研究方向 (2)1.4课题研究任务 (2)1.5 本章小结 (2)第2章开发设计基础 (3)2.1 EDA技术简介 (3)2.2 FPGA简介 (3)2.3 VHDL语言概述 (4)2.3.1 VHDL语言特点 (4)2.3.2 VHDL的优势 (4)2.4 Quartus II软件介绍 (5)2.5 硬件介绍 (5)2.6 本章小结 (6)第3章自动售货机设计方案 (7)3.1 自动售货机整体描述 (7)3.1.1 自动售货机功能要求 (7)3.1.2 自动售货机系统总框图 (7)3.1.3 自动售货机基本流程图 (8)3.2 购物模块 (10)3.2.1 购物模块整体描述 (10)3.2.2 扫描元件 (13)3.2.3 编译元件 (13)3.2.4 数据处理元件 (14)3.2.5 购物数码管译码元件 (15)3.3 定价模块 (15)3.3.1 定价模块整体描述 (16)3.3.2 定价元件 (17)3.3.3 价格BCD译码元件 (18)3.3.4 价格数码管译码元件 (19)3.4 投币模块 (19)3.4.1 投币模块整体描述 (19)3.4.2 投币二进制译码元件 (21)3.4.3 投币BCD译码元件 (22)3.4.4 投币数码管译码元件 (23)3.5 计时模块 (24)3.5.1 计时模块基本流程图 (24)3.5.2 计时模块生成器件 (24)3.5.3 计时模块总功能描述 (24)3.5.4. 仿真结果 (25)3.6 比价模块 (25)3.6.1 比价模块整体描述 (25)3.6.2 比价元件 (27)3.7 复位模块 (30)3.7.1 复位模块生成器件 (30)3.7.2 复位模块总功能描述 (30)3.7.3 仿真结果 (31)3.8 购物显示模块 (32)3.8.1 购物显示模块生成器件 (32)3.8.2 购物显示模块总功能描述 (33)3.8.3 购物显示模块波形仿真 (33)3.9 数码管显示模块 (34)3.10 顶层原理图 (34)3.11 本章小结 (36)第4章下载调试与结果验证 (37)4.1 下载调试 (37)4.2 输出显示 (38)4.2.1所购商品金额大于投币金额 (38)4.2.2所购商品金额等于投币金额 (38)4.2.3所购商品金额小于投币金额 (39)4.2.4有投币无商品选择 (40)4.3 本章小结 (40)第5章总结 (41)参考文献 (42)致谢 (43)基于FPGA的自动售货机控制器设计第1章绪论1.1自动售货机的起源公元前3纪元时,希腊科学家希罗为教堂发放圣水,设制了一个圣水壶。
基于FPGA的自动售货机的设计与仿真许斌【摘要】对于售卖小商品的自动售货机本文采用自顶向下的设计方法,将整个系统划分为分频、主控制器、译码显示等模块.各模块均采用硬件描述语言VHDL,在Quartus Ⅱ和Modelsim平台进行设计和仿真.该系统可设定多种类型商品的交易模式,并实现商品信息存储、商品选择、货币识别和找零、钱数和单价的显示等功能.【期刊名称】《电子设计工程》【年(卷),期】2016(024)017【总页数】3页(P147-149)【关键词】自动售货机;硬件描述语言;模块设计;仿真【作者】许斌【作者单位】四川信息职业技术学院四川广元608040【正文语种】中文【中图分类】TN409自动售货机可以根据投入的货币进行自动售货,是交易中常用的一种智能的自动化设备,几乎不受时间、地点的限制,可以很好的节约人力资源、方便的进行交易[1]。
随着集成电路产业的快速发展,集成电路的规模越来越大,集成度越来越高。
对于实现这种大规模集成电路的设计,采用计算机辅助设计和电子设计的智能自动化来设计集成电路已经是一种必然[2]。
VHDL、Verilog等硬件描述由于其出色的芯片设计自动化性能,已经被广发的应用到集成电路设计领域[3-4]。
用VHDL语言进行系统设计并不涉及底层电路具体电路结构,而只需要给出各单元模块之间的链接关系,这种设计思路可以使设计者都够把注意力集中在顶层结构设计从而使系统整体设计更优化,也可以通过语言描述来自动实现电路结构的设计从而节省设计时间提高设计效率[3]。
同时由于Quartus II软件平台生成的电路是自动综合出来,电路具有很高的标准化和正确性。
本文对各模块实行独自设计、修正和调试,最终通过模拟仿真进行验证[4]。
为了说明设计原理,系统具有商品的数量和价格存储功能,并设定自动售货机可以出售4种商品,标价分别为3元、4元、5元和6元,可以识别5角和1元两种货币。
1)售货员把商品的数量和价格置入到存储器中,此时系统处于初始状态可供购买者进行商品的选择;2)购买者可以选择购买4种商品种类,商品种类的选定是按照其存储的顺序依次选择的。
自动售货机控制系统的设计与实现的开题报告一、选题背景随着科技的不断发展,自动售货机的普及度越来越高,其在生活中的应用越来越广泛。
自动售货机通过射频识别或者扫描二维码的方式识别商品,实现自动化销售。
自动售货机不仅为消费者带来了购物的便利,同时也带动了自动售货机控制系统的发展。
因此,本课题旨在研究自动售货机控制系统的设计与实现,包括系统的硬件设计和软件编程,从而提高自动售货机的智能化程度、减少维护成本,为自动售货机的稳定运行提供技术支持。
二、研究目的本课题的研究目的主要包括以下几个方面:1.设计并实现一种系统性能稳定、结构紧凑、易于维护的自动售货机控制系统。
2.优化自动售货机的硬件结构,使其更加稳定、安全和易于使用。
3.分析自动售货机的工作流程和数据传输机制,编写相应的软件程序,支持自动售货机的智能化管理。
4.测试自动售货机控制系统的稳定性和安全性,优化系统的性能,提高用户的使用体验。
三、研究内容与方法1.自动售货机硬件设计:本课题将针对自动售货机硬件结构设计进行研究,包括主板、显示屏、货道控制芯片、货道传感器、读卡器等组件的选型和布局。
在硬件设计过程中,需要充分考虑系统的稳定性、扩展性和安全性。
2.自动售货机软件编程:本课题将采用C语言和Python语言编写自动售货机控制系统的软件程序,包括货道控制程序、交易系统和监控系统等部分。
软件编程需要充分考虑系统的性能和稳定性,并且具备可扩展性和易维护性。
3.系统测试与优化:本课题将设计测试方案,对自动售货机控制系统的稳定性、用户体验等方面进行全面测试。
根据测试结果,对系统进行优化,提高自动售货机的性能和用户的使用体验。
四、预期成果本课题的预期成果主要包括:1.自动售货机控制系统的设计方案和实现方案。
2.自动售货机硬件结构图和软件程序源代码。
3.自动售货机控制系统的测试报告和优化方案。
4.自动售货机控制系统相关结果的发表和宣传。
五、研究计划1.前期准备阶段:2021年1月-2021年2月。
毕业设计(论文)原创性声明和使用授权说明原创性声明本人重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部容。
作者签名:日期:学位论文原创性声明本人重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
基于FPGA的模拟客运自助售票系统的设计
丁兰
【期刊名称】《科技创新与应用》
【年(卷),期】2015(000)035
【摘要】文章结合实际售票系统运行过程中的需求,开发模拟客运自动售票系统.设计采用模块化设计方法,基于FPGA使用Verilog HDL语言设计制作一个客运自动售票系统,该系统能完成售票、找零、显示等功能.
【总页数】1页(P87)
【作者】丁兰
【作者单位】无锡科技职业学院电子技术学院,江苏无锡 214028
【正文语种】中文
【相关文献】
1.ATM机自助售票系统的设计与实现
2.ATM民航自助售票系统的设计与实现
3.青海省道路客运联网售票系统网络系统设计
4.基于Android平台的地铁自助售票系统的设计与实现
5.青海省道路客运联网售票系统网络系统设计
因版权原因,仅展示原文概要,查看原文内容请购买。
随着科技的不断发展,PLC在工程中的应用大家有目共睹,PLC在各个领域已占得一席之地,并将有更好的发展。
我国人口数量庞大,自动售货机在人们的生活中扮演越来越重要的角色,从长远来看其具有广阔的发展空间。
本次设计的自动售货机为饮料自动售货机,贩卖的商品性质明确,适于放置在短时间人口流动比较大的地方,比如餐厅。
首先通过与单片机和液压等控制的对比,确定采用PLC来控制自动售货机,然后分析自动售货机的结构和工作原理,明白自动售货机的贩卖过程,以便为硬件的选择做准备。
通过自动售货机的功能分析作出硬件框图,根据硬件框图选择所需要的PLC、货币识别器、电动机和接触器。
根据I/O分配表对PLC选型,并画出外部接线图。
根据控制系统流程图编写符合自动售货机功能的程序。
如果购物后有剩余金额,则可按退币按钮退币。
梯形图的编写通过GX Developer来完成,完成梯形图后可以在三菱PLC仿真软件 GX Simulator 6c进行调试和仿真。
最后用MCGS作出组态效果。
组态仿真图中自动售货机包括按钮、指示灯、投币口、取物口、退币口等部分。
关键词:自动售货机; PLC;梯形图; MCGSABSTRACTWith the development of science and technology, the application of PLC in engineering everybody be obvious to people, PLC has occupied a space for one person in every field, and will have a better development. Because of the large number of population, the vending machine is playing a more and more important role in people's life, in the long run it has broad space for development. The design of the automatic vending machine for beverage vending machine, the nature of the goods sold in the clear, adapted to be placed in a short time population flow of relatively large areas, such as restaurant. First, by comparing with the single chip microcomputer and hydraulic control, and adopt PLC to control the vending machine, then analyzes the structure and working principle of automatic vending machines selling process, understand the vending machine, to prepare for the selection of hardware. Through vending machine function analysis to make the hardware block diagram, according to the hardware block diagram, select the desired PLC currency recognizer, motor and contactor. According to the I/O distribution list on the PLC selection, and draw the external wiring diagram. According to the flow chart of control system prepared with vending machine program. If the shopping after the remaining amount, then press the coin button coin. Trapezoidal chart compilation done by GX Developer, complete ladder diagram can be debugged and simulated in Mitsubishi PLC simulation software GX Simulator 6c. Finally, MCGS made the configuration effect. Configuration simulation diagram of the vending machine comprises a button, indicator light, the slot, fetching port, a coin refund part.Keywords: vending machine; PLC; ladder diagram; MCGS目录1 绪论 (5)1.1 自动售货机的研究背景及意义 (5)1.2 研究自动售货机的目的 (5)1.3 本设计研究的内容 (6)2 自动售货机的功能分析 (7)2.1 自动售货机主控单元的确定 (7)2.1.1 PLC的部分功能 (7)2.1.2 确定自动售货机的主控单元为PLC (8)2.2 自动售货机的售货方法 (9)2.3 自动售货机的空间结构 (10)2.4 自动售货机的功能 (10)2.5 自动售货机的购物使用流程 (12)3 自动售货机的硬件部分 (13)3.1 控制电路硬件组成框图 (13)3.2 确定自动售货机使用的PLC类型 (14)3.3 货币识别器选型 (15)3.3.1 硬币的识别原理 (16)3.3.2 纸币的识别原理 (16)3.4 自动售货机电机及其它选择 (17)4 自动售货机的软件设计 (20)4.1 自动售货机的控制系统流程图 (20)4.2 自动售货机的程序部分 (21)4.2.1 程序中用到的部分指令 (21)4.2.2 自动售货机的控制程序 (22)4.3 程序的调试部分 (30)4.3.1 GX Developer (30)4.3.2 程序调试 (30)4.4 基于MCGS组态的自动售货机仿真 (32)4.4.1 建立组态画面 (32)4.4.2 设置各元件的参数 (33)结论 (38)参考文献 (39)致谢 (40)附录系统硬件连接图 (41)1 绪论1.1 自动售货机的研究背景及意义自动售货机最早出现在20世纪60年代的欧美,当时在美国的地铁系统中。
基于FPGA的自动售货机控制系统摘要伴随着我国现代化进程的不断深入以及生活节奏的不断加快,如何能够快速、高效、便捷的购物也成为了商家和顾客不得不面临的一个问题。
自动售货机作为一种不同于传统的零售方式,以其不受时间地点限制、省时省力的优点,迅速的成为了人们的首选。
本课题主要是用EDA技术来实现对自动售货机控制系统的设计。
EDA技术以其特有的有开发周期短、设计成本低、运行速度快等天然优势,使开发出的产品可以迅速的投放到市场上去。
该课题主要是基于FPGA内部电路的编程设计,使用硬件描述语言(VHDL)对自动售货机控制系统进行描述,以Altera公司的EP1K30QC208-3芯片为目标器件详细阐述了自动售货机控制系统整体的设计思路以及工作原理,并且对自动收货机控制系统实现的货物信息的存储、进程控制、硬币处理、余额计算和显示功能加以仿真调试。
通过仿真调试,基于可编程器件FPGA 的自动售货机控制系统的设计基本达到了预期目标。
关键词:EDA,FPGA,自动售货机,VHDLVending machine control system based onFPGAAbstractWith the deepening of China's modernization process and the accelerating pace of life, it has become a problem for businesses and consumers to face that how to fast, efficient, convenient shopping. As a way different from the traditional retail, vending machines are not restricted by time and place, So vending machines quickly became the first choice for shopping election. The main topic is the use of EDA technology to achieve the vending machine control system design. EDA technology has a short development cycle, lower design costs, faster running speed, etc. That products can be developed rapidly to market upswing.The main topic is programming based on FPGA. Using hardware description language (VHDL) to describe the vending machine control system. Altera's EP1K30QC208-3 chip as the target device elaborated vending machine control system as well as the overall design concept works, and automatic control of receipt storing cargo information system implementation, process control, coin handling, balance calculation and display capabilities to simulation debugging. Through simulation debugging FPGA-based programmable device vending machine controller design basically achieve the desired goals.Key Words:EDA; FPGA; Vending machine; VHDL目录摘要 (1)Abstract (2)第一章引言 (1)1.1 自动售货机的发展历史 (1)1.2 自动售货机的发展现状 (1)1.3 自动售货机控制系统研究的目的和意义 (2)1.4 课题主要研究工作 (2)第二章关键技术 (3)2.1 EDA技术简介 (3)2.2 FPGA简介 (3)2.3 VHDL简介 (3)第三章系统硬件介绍 (5)3.1 KH310实验箱简单介绍 (5)3.2 时钟单元 (5)3.3 数码管显示单元 (5)第四章程序设计 (7)4.1 功能要求 (7)4.2 系统内部模块设计 (7)4.3 系统外部界面设计 (7)4.4 工作流程图 (8)4.5 系统各功能模块 (9)4.5.1 分频模块 (9)4.5.2 显示模块 (12)4.5.3 扫描模块 (14)4.5.4 主控模块 (16)第五章仿真调试 (21)5.1 顶层模块 (21)5.2 管脚分配.............................................................................................. 错误!未定义书签。
fpga课程设计自动售货机一、教学目标本课程旨在通过学习FPGA课程设计自动售货机,使学生掌握以下知识目标:1.理解自动售货机的基本工作原理和结构。
2.学习FPGA的基本设计和编程方法。
3.掌握自动售货机的控制逻辑和接口设计。
4.能够使用FPGA开发板进行基本设计和编程。
5.能够独立完成自动售货机控制逻辑的设计和实现。
6.能够对自动售货机进行调试和优化。
情感态度价值观目标:1.培养学生的创新意识和实践能力。
2.培养学生的团队合作意识和沟通能力。
3.培养学生的自主学习和解决问题的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.FPGA的基本概念和设计方法。
2.自动售货机的基本工作原理和结构。
3.自动售货机的控制逻辑和接口设计。
4.FPGA编程和调试方法。
第一周:FPGA的基本概念和设计方法。
第二周:自动售货机的基本工作原理和结构。
第三周:自动售货机的控制逻辑和接口设计。
第四周:FPGA编程和调试方法。
第五周:项目实践和总结。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:用于讲解FPGA的基本概念和设计方法,自动售货机的基本工作原理和结构,以及控制逻辑和接口设计等理论知识。
2.案例分析法:通过分析实际案例,使学生更好地理解和掌握FPGA设计和编程的方法。
3.实验法:通过动手实践,使学生能够独立完成自动售货机的控制逻辑设计和实现,并掌握FPGA编程和调试方法。
4.小组讨论法:通过分组讨论和合作,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用《FPGA设计与应用》作为主教材,辅助以相关论文和案例分析资料。
2.实验设备:准备FPGA开发板和相关实验设备,供学生进行实践操作。
3.多媒体资料:制作PPT和教学视频,用于辅助讲解和演示。
4.在线资源:提供在线编程环境和调试工具,方便学生进行自主学习和实践。
数字系统课程设计--基于FPGA的自动售货机组长:师楠(04010512)组员:徐璇(04010505)一、设计要求:功能描述:用于模拟自动售货机的工作过程,完成自动售货功能。
功能要求:(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是1 元的硬币,纸币的识别范围是5 元,10 元,20,50 元,100元。
乘客可以连续多次投入钱币。
(2)顾客可以选择的商品种类有16 种,价格分别为1-16 元,顾客可以通过输入商品的编号来实现商品的选择。
即有一个小键盘(0-9 按键)来完成,比如输入15 时要先输入1,再输入5。
(3)顾客选择完商品后,可以选择需要的数量。
然后可以继续选择商品及其数量,每次可以选择最多三个商品。
然后显示出所需金额。
顾客此时可以投币,并且显示已经投币的总币值。
当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。
在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。
二、课题分析1)进行购物时,顾客依次选择商品种类和对应的商品数量。
一共有16种商品,编号分别为1-16,顾客通过(0-9按键)小键盘输入商品编号和对应的商品数量。
若顾客继续选择商品则按下“继续购物”按钮,继续选择下一商品的种类和数量。
最多可以选择三种商品,每种商品最多可选择三个。
若在商品选择过程中顾客按下“取消”按钮,则回到初始化状态,顾客重新进行选择。
2)完成选择后,自动售货机显示所需金额,编号1-16的商品价格分别为1-16元。
顾客根据所需金额继续投币,可以连续多次投入1元的硬币和5 元,10 元,20,50 元,100元的纸币。
当投币总额大于所需金额时,自动售货机出货并找出零钱。
若在投币过程中顾客按下“取消”按钮,则自动售货机自动退出顾客已经投入的钱币。
3)根据按键的数值范围(0-9)和商品数量(1-3)的选择范围,设置三个端口,分别用于接收商品编号的个位(4位)、商品编号的十位(4位)、商品数量(2位)。
若顾客在商品选择的过程中,选择了三种以上商品或三个以上的个数,则系统不对其作出反应。
4)附加功能:管理人员按下reset 按钮后,系统重置。
默认每种商品机内存货15个,系统进入初始化状态后会自动显示商品剩余库存。
三、 系统运行流程:开始reset=1YNpre_stateinitial_state输入商品编号输入次数小于3输入商品数量cancel=1计算商品总额total_priceYNYNitem_statequantity_state计算商品剩余库存并输出continue=1输出total_pricecancel=1投币couterchange_out<=countercounter>total_pricecancel=1change_out<=countercounter>total_pricecancel=1change_out<=counter计算找零额输出货物、找零N YN YNYYNYNYNquantity_statemoney_statecompare_statechange_state finish_stat四、程序调试编译通过,如图所示:五、波形仿真:在创建的波形仿真文件中,添加所有输入输出端口进行仿真。
时钟周期设定为10ns,测试系统的所有功能是否正常。
管理员将reset置1;第一次:购买11号商品3件,投入三枚一员硬币,一张一百元纸币;第二次:购买01号商品1件,continue,购买10号商品2件,continue,购买13号商品3件;投入一张五十纸币,一张十元纸币;第三次:购买03号商品2件,cancel;第四次:购买16号商品2件;投入一张五十纸币;cancel;六、附源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;----------*************************************---------------------- entity AUTOSELLER is --实体port( --端口定义clk :in std_logic; --时钟continue,cancel,reset :in std_logic; --继续购物、取消、复位coin :in std_logic; --投入硬币cash :in std_logic_vector(4 downto 0); --投入纸币item0 :in std_logic_vector(3 downto 0); --选货个位item1 :in std_logic_vector(3 downto 0); --选货十位quantity :in std_logic_vector(1 downto 0); --货物数量one_out :out std_logic_vector(4 downto 0);--找钱five_out :out std_logic_vector(4 downto 0);ten_out :out std_logic_vector(4 downto 0);twenty_out :out std_logic_vector(4 downto 0);fifty_out :out std_logic_vector(4 downto 0);hundred_out :out std_logic_vector(4 downto 0);item0_out :out std_logic_vector(7 downto 0); --出货种类item1_out :out std_logic_vector(7 downto 0);item2_out :out std_logic_vector(7 downto 0);quantity0_out :out std_logic_vector(1 downto 0); --出货数量quantity1_out :out std_logic_vector(1 downto 0);quantity2_out :out std_logic_vector(1 downto 0);sum_out :out std_logic_vector(9 downto 0);--商品总额累计输出available1_out :out std_logic_vector(3 downto 0);--输出库存available2_out :out std_logic_vector(3 downto 0);available3_out :out std_logic_vector(3 downto 0);available4_out :out std_logic_vector(3 downto 0);available5_out :out std_logic_vector(3 downto 0);available6_out :out std_logic_vector(3 downto 0);available7_out :out std_logic_vector(3 downto 0);available8_out :out std_logic_vector(3 downto 0);available9_out :out std_logic_vector(3 downto 0);available10_out :out std_logic_vector(3 downto 0);available11_out :out std_logic_vector(3 downto 0);available12_out :out std_logic_vector(3 downto 0);available13_out :out std_logic_vector(3 downto 0);available14_out :out std_logic_vector(3 downto 0);available15_out :out std_logic_vector(3 downto 0);available16_out :out std_logic_vector(3 downto 0));end AUTOSELLER;------------*************************************----------------- architecture behave of AUTOSELLER issignal price :std_logic_vector(7 downto 0); --单个商品价格signal counter :std_logic_vector(9 downto 0); --投币总额signal total_price :std_logic_vector(9 downto 0); --商品总额累计shared variable number1 :std_logic_vector(3 downto 0); --暂存库存shared variable number2 :std_logic_vector(3 downto 0);shared variable number3 :std_logic_vector(3 downto 0);shared variable number4 :std_logic_vector(3 downto 0);shared variable number5 :std_logic_vector(3 downto 0);shared variable number6 :std_logic_vector(3 downto 0);shared variable number7 :std_logic_vector(3 downto 0);shared variable number8 :std_logic_vector(3 downto 0);shared variable number9 :std_logic_vector(3 downto 0);shared variable number10 :std_logic_vector(3 downto 0);shared variable number11 :std_logic_vector(3 downto 0);shared variable number12 :std_logic_vector(3 downto 0);shared variable number13 :std_logic_vector(3 downto 0);shared variable number14 :std_logic_vector(3 downto 0);shared variable number15 :std_logic_vector(3 downto 0);shared variable number16 :std_logic_vector(3 downto 0);type state_type is(pre_state,initial_state,item_state,quantity_state,money_state,co mpare_state,change_state,finish_state); -- 定义一个类型state_type,且值为(……)signal state :state_type;beginprocess(continue,clk,reset)variable change :std_logic; --为1允许找钱variable change_out :std_logic_vector(9 downto 0);--找钱总额暂存variable one_tmp :std_logic_vector(4 downto 0);--找钱数暂存variable five_tmp :std_logic_vector(4 downto 0);variable ten_tmp :std_logic_vector(4 downto 0);variable twenty_tmp :std_logic_vector(4 downto 0);variable fifty_tmp :std_logic_vector(4 downto 0);variable hundred_tmp :std_logic_vector(4 downto 0);variable n :integer range 0 to 2; --暂存选货次数variable itemout0,itemout1,itemout2:std_logic_vector(7 downto 0);--种类暂存variable quanout0,quanout1,quanout2:std_logic_vector(1 downto 0);--货物数量暂存variable cancel_tmp :std_logic; --取消暂存beginif(clk'event and clk='1')thenif reset='1' thenstate<=pre_state;end if;case state is------------*************pre_state***************---------------when pre_state=>number1:="1111";number2:="1111";number3:="1111";number4:="1111";number5:="1111";number6:="1111";number7:="1111";number8:="1111";number9:="1111";number10:="1111";number11:="1111";number12:="1111";number13:="1111";number14:="1111";number15:="1111";number16:="1111";state<=initial_state;-----------**************initial_state****************--------------when initial_state=>item0_out<="00000000";item1_out<="00000000";item2_out<="00000000";quantity0_out<="00";quantity1_out<="00";quantity2_out<="00";one_out<="00000";five_out<="00000";ten_out<="00000";twenty_out<="00000";fifty_out<="00000";hundred_out<="00000";sum_out<="0000000000";available1_out<=number1;available2_out<=number2;available3_out<=number3;available4_out<=number4;available5_out<=number5;available6_out<=number6;available7_out<=number7;available8_out<=number8;available9_out<=number9;available10_out<=number10;available11_out<=number11;available12_out<=number12;available13_out<=number13;available14_out<=number14;available15_out<=number15;available16_out<=number16; total_price<="0000000000"; counter<="0000000000";change:='0';n:=0;one_tmp:="00000";five_tmp:="00000";ten_tmp:="00000";twenty_tmp:="00000";fifty_tmp:="00000";hundred_tmp:="00000";itemout0:="00000000";itemout1:="00000000";itemout2:="00000000";quanout0:="00";quanout1:="00";quanout2:="00";cancel_tmp:='0';state<=item_state;----------************** item_state ****************-----------when item_state=>if n<3 thencase (item1&item0) iswhen "00000001"=>price<="00000001";when "00000010"=>price<="00000010";when "00000011"=>price<="00000011";when "00000101"=>price<="00000101";when "00000110"=>price<="00000110";when "00000111"=>price<="00000111";when "00001000"=>price<="00001000";when "00001001"=>price<="00001001";when "00010000"=>price<="00001010";when "00010001"=>price<="00001011";when "00010010"=>price<="00001100";when "00010011"=>price<="00001101";when "00010100"=>price<="00001110";when "00010101"=>price<="00001111";when "00010110"=>price<="00010000";when others=>null;end case;if (item1&item0)="00000000" thenstate<=initial_state;else case n iswhen 0 => itemout0:= item1&item0;when 1 => itemout1:= item1&item0;when 2 => itemout2:= item1&item0;when others=>null;end case;state<=quantity_state;end if;else state<=money_state;end if;-----------************ quantity_state ************------------when quantity_state=>if(cancel='1')thenstate<=initial_state;elseif quantity="00" thenchange:='0';change_out:="0000000000";state<=initial_state;elsetotal_price<=total_price+price*quantity;case n iswhen 0 => quanout0:= quantity;n:=n+1;when 1 => quanout1:= quantity;n:=n+1;when 2 => quanout2:= quantity;n:=n+1;when others=>null;end case;case price iswhen"00000001"=>number1:=number1-quantity;when"00000010"=>number2:=number2-quantity;when"00000011"=>number3:=number3-quantity;when"00000100"=>number4:=number4-quantity; when"00000101"=>number5:=number5-quantity; when"00000110"=>number6:=number6-quantity; when"00000111"=>number7:=number7-quantity; when"00001000"=>number8:=number8-quantity; when"00001001"=>number9:=number9-quantity; when"00001010"=>number10:=number10-quantity; when"00001011"=>number11:=number11-quantity; when"00001100"=>number12:=number12-quantity; when"00001101"=>number13:=number13-quantity; when"00001110"=>number14:=number14-quantity; when"00001111"=>number15:=number15-quantity; when"00010000"=>number16:=number16-quantity; when others=>NULL;end case;available1_out<=number1;available2_out<=number2;available3_out<=number3;available4_out<=number4;available5_out<=number5;available6_out<=number6;available7_out<=number7;available8_out<=number8;available9_out<=number9;available10_out<=number10;available11_out<=number11;available12_out<=number12;available13_out<=number13;available14_out<=number14;available15_out<=number15;available16_out<=number16;if(continue='1')then state<=item_state;else state<=money_state;end if;end if;end if;----------************ money_state ************-----------when money_state=>sum_out<=total_price;if(cancel='1')thencancel_tmp:='1';change:='1';change_out:=counter;state<=change_state;elsecase cash&coin iswhen "000001"=>counter<=counter+1;when "000010"=>counter<=counter+5;when "000100"=>counter<=counter+10;when "001000"=>counter<=counter+20;when "010000"=>counter<=counter+50;when "100000"=>counter<=counter+100;when others=>null;end case;state<=compare_state;end if;-----------************ compare_state ************------------when compare_state=>if(cancel='1')thencancel_tmp:='1';change:='1';change_out:=counter;state<=change_state;elseif counter>=total_price thenchange:='1';change_out:=counter-total_price;state<=change_state;else state<=money_state;end if;end if;----------************ change_state ************----------when change_state=>if(cancel='1')thenchange:='1';cancel_tmp:='1';change_out:=counter;end if;if(change_out>=100) thenhundred_tmp:=hundred_tmp+1;change_out:=change_out-100;end if;if(change_out>=50)thenfifty_tmp:=fifty_tmp+1;change_out:=change_out-50; end if;if(change_out>=40)thentwenty_tmp:=twenty_tmp+2;change_out:=change_out-40; end if;if(change_out>=20)thentwenty_tmp:=twenty_tmp+1;change_out:=change_out-20; end if;if(change_out>=10)thenten_tmp:=ten_tmp+1;change_out:=change_out-10; end if;if(change_out>=5)thenfive_tmp:=five_tmp+1;change_out:=change_out-5; end if;if(change_out>=4)thenone_tmp:=one_tmp+4;change_out:=change_out-4; end if;if(change_out>=3)thenone_tmp:=one_tmp+3;change_out:=change_out-3; end if;if(change_out>=2)thenone_tmp:=one_tmp+2;change_out:=change_out-2;end if;if(change_out>=1)thenone_tmp:=one_tmp+1;change_out:=change_out-1;end if;if(cancel_tmp='1')thenitemout0:="00000000";itemout1:="00000000";itemout2:="00000000";quanout0:="00";quanout1:="00";quanout2:="00";end if;state<=finish_state;--------************ finish_state ************-----------when finish_state=>one_out<=one_tmp;five_out<=five_tmp;ten_out<=ten_tmp;twenty_out<=twenty_tmp;fifty_out<=fifty_tmp;hundred_out<=hundred_tmp;item0_out<=itemout0;item1_out<=itemout1;item2_out<=itemout2;quantity0_out<=quanout0;quantity1_out<=quanout1;quantity2_out<=quanout2;state<=initial_state; end case;end if;end process;end behave;。