另一种自动售货机 和上一个题目要求不同内附要求和题目以及程序

本文基于西门子S7-1200PLC来设计自动售货机,并实现其功能。具体实现内容如下:
(1)自动售货机能出售1元、5元、10元、12元、15元五种商品;(2)本设计中假设商品存货
无限,找零钱币无限;
(3)顾客投入硬(纸)币的钱数有1元、5元、10元、12元、15元五种商品,投人的硬币总值
等于或超过12元时,汽水按钮指示灯亮;当投人的硬币总值码计15元时,汽水、咖啡按钮
指示灯都亮。(4)投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),
同时多余的钱应找回,找回的钱数用数码管显示出来;
(5)顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作

 

a2b6a80e091846d4be0432e59d735650.jpg


下边是程序

 

54a4ddbb64f7421699c07e6d31c3b412.jpg

 然后那个P_TRIG指令也可以删了吧I0.0. I0.1  I0.2.   改成上升沿指令

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个自动售货机需要考虑以下几个方面: 1. 自动售货机的输入和输出:自动售货机需要接收用户的输入(比如选择商品的按钮)并且输出(比如显示商品信息和价格)。 2. 存储商品信息:自动售货机需要存储商品的信息(比如名称、价格、数量等),这可以使用存储器(比如RAM)来实现。 3. 计算商品总价:自动售货机需要计算用户选择的商品的总价钱,这可以使用计算器模块来实现。 4. 支付方式:自动售货机需要支持不同的支付方式,比如现金、信用卡等。 下面是一个简单的Verilog代码实现: ``` module vending_machine(input clk, input reset, input coin, input button, output reg [3:0] display, output reg [3:0] led, output reg vend); // 定义商品信息 reg [3:0] price = 4; reg [3:0] stock = 10; // 定义状态机状态 localparam IDLE = 2'b00; localparam WAIT = 2'b01; localparam DISPENSE = 2'b10; // 定义状态机变量 reg [1:0] state; always @(posedge clk) begin if (reset) begin state <= IDLE; display <= 0; led <= 0; end else begin case (state) IDLE: begin display <= 0; led <= 0; if (button) begin state <= WAIT; display <= price; end end WAIT: begin display <= price; led <= 1; if (coin) begin state <= DISPENSE; stock <= stock - 1; end end DISPENSE: begin display <= 0; led <= 0; vend <= 1; state <= IDLE; end endcase end end endmodule ``` 这个自动售货机模块包含了输入和输出端口以及一些内部变量。它使用了一个状态机来实现自动售货机的逻辑,根据用户的行为,自动售货机会进入不同的状态并执行相应的操作。在这个例子中,当用户按下按钮时,自动售货机进入等待状态,等待用户投币;当用户投币后,自动售货机会将选择的商品出售,并且进入空闲状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值