自动售货机控制系统设计报告
一、课题介绍
自动售货机在当今社会已十分普遍,在各大商场和街头均能找到它的身影,它为人们购买一些常见小商品提供了极大的方便。本数字系统模仿一个小型自动售货机的功能,旨在初步学会数字系统设计的一般方法,提高使用Quartus Ⅱ软件和运用VHDL语言编写程序的能力。
该系统设定自动售货机出售可乐(2元)和汉堡包(4元)2种商品,可以选择所要购买的商品数量(1个或2个),按“确认”后进行投币。本机接受1元和5元的纸币,按投币键若干次。若投入的钱款总额达到应付金额,商品给出并找零;若投入的钱款总额未达到应付金额,商品不给出,此时按“取消”可退出已投入的钱款。该系统的规模较小。
二、具体实施方案
用8个开关作为控制输入(由0变为1再变为0算一次输入),7个LED灯作为指示输出,4个数码管分别显示找零金额和退币金额。利用Quartus Ⅱ软件编写VHDL程序,并下载到Cyclone EP1C6Q240C8芯片中,以实现其功能。
三、面板图:
退币
欢迎使用自动售货机!
可乐(2元)
汉堡包(4元)
1个
2个
找零
确认
商品给出
取消
1元
5元
复位
确认
取消
图例:开关标签 LED指示灯
四、系统结构图:
开关模块
消抖模块
LED
指示灯
数码管
控制模块
译码模块
开始
选择商品
YES
NO
选择数量
YES
NO
确认
投币
钱款已够
YES
NO
YES
NO
“商品给出”指示灯亮
“确认”
指示灯亮
数量
指示灯亮
商品
指示灯亮
取消购买
YES
退币数码管显示退款数
NO
找零数码管显示找零数
复位
五、状态流程图:
六、程序清单
1、
--库定义
library ieee;
use ;
use ;
use ;
--实体定义
entity vendor is
port(cola: in std_logic; --选择可乐开关
hamburger: in std_logic; --选择汉堡开关
sum1: in std_logic; --选择购买1个开关
sum2: in std_logic; --选择购买2个开关
note1: in std_logic; --1元纸币投掷开关
note5: in std_logic; --5元纸币投掷开关
rst: in std_logic; --复位开关
ok: in std_logic; --确认开关
cancel: in std_logic; --取消开关
clk : in std_logic; --时钟信号
led_cola: out std_logic; --选择可乐指示灯
led_hamburger: out std_logic; --选择汉堡指示灯
led_sum1: out std_logic; --选择购买1个指示灯
led_sum2: out std_logic; --选择购买2个指示灯
led_ok: out std_logic; --确认指示灯
led_cancel: out std_logic; --取消指示灯
led_out: buffer std_logic; --商品给出指示灯
change_money: buffer integer range 0 to 14; --商品给出后的找零
return_money: buffer integer range 0 to 10 --商品未给出的退币
);
end vendor;
--结构体定义
architecture vendor_arc of vendor is
signal hold_ok: std_logic; --保持ok信号
signal hold_cancel: std_logic;--保持cancel信号
signal money_ok: std_logic; --钱款已够信号
signal cola_choice: std_logic; --保持选择商品信号
signal hamburger_choice: std_logic;
signal sum1_choice: std_logic; --保持选择数目信号
signal sum2_choice: std_logic;
signal totalsum_note1: integer range
自动售货机控制系统设计报告 来自淘豆网m.daumloan.com转载请标明出处.