题目:

1.设计制作一个自动售货机控制系统。
2.该系统能完成货物信息存储,进程控制,硬币处理,余额计算,显示等功能。
3 该系统可以管理四种货物,每种的数量和单价在初始化时输入,在存储器中存储。用户可以用硬币进行购物,按键进行选择。
4 系统根据用户输入的货币,判断钱币是否够,钱币足够则根据顾客的要求自动售货,钱币不够则给出提示并退出。
5 系统自动的计算出应找钱币余额、库存数量并显示。

题目分析:

首先确认的是我们在操作售货机时选择怎么的操作顺序,我这里选择的是先按一次key_START表示我准备进行购物;再进行商品选择key_CH,默认的商品是商品1,按一次商品编号进行加1,进行循环;再按一次key_START表示我选择好了商品;然后进行钱币按键key_5或key_10,钱币按键可以自由设置里面的面额,根据具体情况自己设置;当钱币提交完成再按一次key_START表示完成。

我们用户对售货机的操作过程就是这样,当然可以有其它更多的操作过程,根据自己喜好进行设计。

用户完成商品选择钱币提交,系统对用户选择的商品进行判断,然后判断钱币是否大于等于商品单价,若大于等于则找零,这个商品库存减一;若小于则商品库存不变,原额返回钱币,并且提醒用户钱币不够,用LED显示表示。不管钱币是否满足购买商品的能力,在处理完成后都延时一段时间后返回初始界面,这段时间保持显示用户选择的商品编号、单价、库存、找零,方便用户观察。

数码管显示:

数码管显示分为两种状态,一种为默认状态,左边四位数码管分别显示商品1、商品2、商品3、商品4的库存,右边两位数码管显示00;另一种为购买状态,左边第一位数码管显示商品编号、第二三位数码管显示商品的单价、第四位数码管显示商品的剩余库存、第五六位数码管显示找零的钱币,每个部分用数码管的dp点分隔开。

顶层程序设计

有按键控制,先是按键消抖,得到按键消抖信号;商品系统控制模块;数码管动态扫描模块;提醒模块。

module TOP(input         clk      ,input         rstn     ,input         key_START,//开始/确认按键,input         key_CH   ,//商品选择按键,input         key_5    ,//5元按键,input         key_10   ,//10元按键,output  [7:0] seg      ,//数码管段码output  [5:0] sel      ,//数码管位码output        led       //提醒灯
);
//        操作过程
//    开始key_START---->选择商品key_CH----->确认商品key_START---->
//    提交钱币key_5|key_10----->确认完成key_STARTwire       shape_START;//开始信号wire       shape_CH   ;//选择信号wire       shape_5    ;//5元信号wire       shape_10   ;//10元信号wire [3:0] data1;wire [3:0] data2;wire [3:0] data3;wire [3:0] data4;wire [3:0] data5;wire [3:0] data6;wire [5:0] DP   ;//数码管的dp,分隔商品号,单价,库存,找零wire flag_led;//提醒开始信号//按键消抖总模块
top_shake top_shake_u(.clk        (clk        ),.rstn       (rstn       ),.key_START  (key_START  ),.key_CH     (key_CH     ),.key_5      (key_5      ),.key_10     (key_10     ),.shape_START(shape_START),.shape_CH   (shape_CH   ),.shape_5    (shape_5    ),.shape_10   (shape_10   )
);
//商品出售控制模块
sell sell_u(.clk        (clk        ),.rstn       (rstn       ),.shape_START(shape_START),.shape_CH   (shape_CH   ),.shape_5    (shape_5    ),.shape_10   (shape_10   ),.data1      (data1      ),.data2      (data2      ),.data3      (data3      ),.data4      (data4      ),.data5      (data5      ),.data6      (data6      ),.flag_led   (flag_led   ),//提示信号.DP         (DP         )
);
//数码管动态扫描模块
digital digital_u(.clk  (clk     ),.rstn (rstn    ),.data1(data1   ),.data2(data2   ),.data3(data3   ),.data4(data4   ),.data5(data5   ),.data6(data6   ), .DP   (DP      ),.seg  (seg     ),.sel  (sel     )
);
//led提醒模块
prompt prompt_u(.clk     (clk     ),.rstn    (rstn    ),.flag_led(flag_led),.led     (led     )
);endmodule

商品出售用户控制部分代码

//前面是输入输出
parameter GOODS_A = 6'd12;//商品单价parameter GOODS_B = 6'd8 ;//parameter GOODS_C = 6'd26;//parameter GOODS_D = 6'd17;//reg  [5:0] GOODS;//商品单价reg  [3:0] goods_A   ;//商品A剩余数量reg  [3:0] goods_B   ;//商品B剩余数量 reg  [3:0] goods_C   ;//商品C剩余数量reg  [3:0] goods_D   ;//商品D剩余数量reg  [3:0] goods_num;//商品剩余数量wire [3:0] change_H  ;//找零高位wire [3:0] change_L  ;//找零低位reg [1:0] state_goods;//操作过程状态机reg [1:0] goods      ;//商品选择reg [5:0] cnt_YUAN   ;//钱币提交计数reg       flag       ;//操作过程完成信号
//        操作过程
//    开始key_START---->选择商品key_CH----->确认商品key_START---->
//    提交钱币key_5|key_10----->确认完成key_STARTalways@(posedge clk or negedge rstn)beginif(!rstn)beginstate_goods <= 0;goods       <= 0;cnt_YUAN    <= 0;flag        <= 0;end else begincase(state_goods)0:beginif(shape_START)begin//开始购物state_goods <= 1;goods       <= 0;cnt_YUAN    <= 0;flag        <= 0;end else beginstate_goods <= 0;goods       <= 0;cnt_YUAN    <= 0;flag        <= 0;endend1:beginif(shape_START)begin//商品确认state_goods <= 2;goods       <= goods;end else beginif(shape_CH)begin//商品选择goods <= goods+1;end else begingoods <= goods;endstate_goods <= 1;cnt_YUAN    <= 0;endend2:beginif(shape_START)begin//完成state_goods <= 3;goods       <= goods;cnt_YUAN    <= cnt_YUAN;flag        <= 1; end else begin//钱币提交if(shape_5)begincnt_YUAN <= cnt_YUAN+5;end else if(shape_10)begincnt_YUAN <= cnt_YUAN+10;end else begincnt_YUAN <= cnt_YUAN;endgoods       <= goods;flag        <= 0; endend3:beginif(cnt == 124_999_999)begin//延时一段时间返回默认界面state_goods <= 0;end else beginstate_goods <= 3;goods       <= goods;cnt_YUAN    <= cnt_YUAN;flag        <= 0; endenddefault:beginstate_goods <= 0;goods       <= 0;cnt_YUAN    <= 0;flag        <= 0; endendcaseendend
//下面是系统对上面信息的处理
//如果想要全部代码可以买资源
//也可以加我QQ代做2943115420

自动售货机2资源

基于FPGA的自动售货机设计2相关推荐

  1. 源码系列:基于FPGA的自动售货机设计(附源工程)

    今天给大侠带来基于FPGA的自动售货机设计,附源码,获取源码,请在"FPGA技术江湖"公众号内回复" 自动售货机设计源码",可获取源码文件.话不多说,上货. 设 ...

  2. 基于FPGA的自动售货机设计1

    题目: 1.设计制作一个自动售货机控制系统. 2.该系统能完成货物信息存储,进程控制,硬币处理,余额计算,显示等功能. 3 该系统可以管理四种货物,每种的数量和单价在初始化时输入,在存储器中存储.用户 ...

  3. 基于51单片机自动售货机设计全套资料

    基于51单片机自动售货机设计(原理图+PCB+文档+程序) 项目编号:0001 硬件构成: 本设计由STC系列单片机+12864显示+电源模块+按键模块+蜂鸣器报警模块等元件组功能介绍: 设有8个按键 ...

  4. 基于PLC的自动售货机设计

    1.1 自动售货机设计软元件 1.1.1 定时器 定时器是PLC中重要的编程元件,是累计时间增量的内部器件.定时器的工作过程与继电器控制系统的时间继电器基本相同,但它没有瞬动触点,失电时,常闭触点闭合 ...

  5. 基于FPGA的自动售货机

    一.自动售货机的功能 自动售货机中有价值为1元,3.5元,5元的三种饮料,能识别的金额为0.5元,1元,5元,10元.在购买饮料时,当输入金额小于饮料价值时,LED灯100ms闪烁:输入金额与饮料价值 ...

  6. 基于FPGA的自动售货机Verilog开发Modelsim仿真

    部分参考代码 (末尾附文件) module Sell(input clk,input reset_n,input yiyuan_set,input wuyuan_set,input shiyuan_s ...

  7. 基于51单片机自动售货机实物设计

    基于51单片机自动售货机设计 ( 原理图+PCB+论文+程序+视频讲解) 采用实物设计: 程序编译器:keil 5 编程语言:C语言 资料编号:001 硬件构成:        本设计由STC系列单片 ...

  8. 基于verlog的简单自动售货机设计

    课程设计:基于verlog的简单自动售货机设计 1.设计目的: (1)了解DE2-70开发板的硬件构成: (2)熟悉开发板可用资源的硬件电路: (3)掌握EDA开发流程: (4)熟悉Quartus I ...

  9. 奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计

    奋斗的小孩系列 FPGA学习altera系列: 第十七篇 自动售货机设计 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注FPGA技术 ...

最新文章

  1. 6个步骤,告诉你如何用树莓派和机器学习DIY一个车牌识别器!(附详细分析)...
  2. 【精致Java教程】02:Java的跨平台原理
  3. Android事件处理机制
  4. file协议访问linux,Mozilla Firefox for Android 'file'协议未授权访问漏洞(CVE-2014-1501)
  5. ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇)
  6. 2021年1月DB-Engines流行度排行:Snowflake五倍跃迁 Azure SQL云数据库倍增
  7. Docker基础操作命令
  8. SAP License:SAP顾问你算哪根葱?
  9. Java新手学习路线
  10. linux清理缓存和垃圾,CentOS等Linux系统如何清理系统垃圾和日志?
  11. word文件和扩展名不匹配的解决办法,亲测有效
  12. easyui的简单实例
  13. Node-Sass报错,安装失败等问题
  14. 软件设计师考试(中级)考点
  15. 深圳宝安周边公司出行团建户外一日游
  16. 使用excel打开文件,修正长度过长的数字后几位变为0的问题
  17. Adapter适配器
  18. 众安在线2019年净亏损4.5亿,消金保费收入降12%,赔付率升至97%
  19. 宝山区一居民家中天然气爆炸 气浪发飙破窗而出
  20. 笔记_Maya绑定基础_断开骨骼 And 骨骼的镜像

热门文章

  1. C++写个三维模型展UV
  2. 省市县三级连动数据下载from ecshop
  3. 高等数学——转动惯量
  4. android NFC读写卡Demo
  5. 客户机 服务器系统的特点是客户机和服务器,客户机 服务器数据库系统的特点...
  6. (转载)物联网常见通信协议RFID、NFC、Bluetooth、ZigBee等梳理
  7. robcad和catia是什么关系_[科普] | 不认识CATIA?没关系,至少和它兄弟熟吧!
  8. Problem D: 求余弦值
  9. docker部署SolrCloud集群
  10. MyBatis学习从练气到化虚