用VHDL语言编写自动售货机程序

用VHDL语言编写自动售货机程序,第1张

自动售货机VHDL程序

(1)自动售货机VHDL程序如下:

--文件名:pl_auto1vhd。

--功能:货物信息存储,进程控制,硬币处理,余额计算,显示等功能。

--说明:显示的钱数coin的以5角为单位。

library ieee;

use ieeestd_logic_arithall;

use ieeestd_logic_1164all;

use ieeestd_logic_unsignedall;

entity PL_auto1 is

port ( clk:in std_logic; --系统时钟

set,get,sel,finish: in std_logic; --设定、买、选择、完成信号

coin0,coin1: in std_logic; --5角硬币、1元硬币

price,quantity :in std_logic_vector(3 downto 0); --价格、数量数据

item0 , act:out std_logic_vector(3 downto 0); --显示、开关信号

y0,y1 :out std_logic_vector(6 downto 0); --钱数、商品数量显示数据

act10,act5 :out std_logic); --1元硬币、5角硬币

end PL_auto1;

architecture behav of PL_auto1 is

type ram_type is array(3 downto 0)of std_logic_vector(7 downto 0);

signal ram :ram_type; --定义RAM

signal item: std_logic_vector(1 downto 0); --商品种类

signal coin: std_logic_vector(3 downto 0); --币数计数器

signal pri,qua:std_logic_vector(3 downto 0); --商品单价、数量

signal clk1: std_logic; --控制系统的时钟信号

begin

com:process(set,clk1)

variable quan:std_logic_vector(3 downto 0);

begin

if set='1' then ram(conv_integer(item))<=price & quantity;act<="0000";

--把商品的单价、数量置入到RAM

elsif clk1'event and clk1='1' then act5<='0'; act10<='0';

if coin0='1' then

if coin<"1001"then coin<=coin+1; --投入5角硬币,coin自加1

else coin<="0000";

end if;

elsif coin1='1' then

if coin<"1001"then coin<=coin+2; --投入1元硬币,coin自加2

else coin<="0000";

end if;

elsif sel='1' then item<=item+1; --对商品进行循环选择

elsif get='1' then --对商品进行购买

if qua>"0000" and coin>=pri then coin<=coin-pri;quan:=quan-1;

ram(conv_integer(item))<=pri & quan;

if item="00" then act<="1000"; --购买时,自动售货机对4种商品的 *** 作

elsif item="01" then act<="0100";

elsif item="10" then act<="0010";

elsif item="11" then act<="0001";

end if;

end if;

elsif finish='1' then --结束交易,退币(找币)

if coin>"0001" then act10<='1';coin<=coin-2; --此IF语句完成找币 *** 作

elsif coin>"0000" then act5<='1'; coin<=coin-1;

else act5<='0'; act10<='0';

end if;

elsif get='0' then act<="0000";

for i in 4 to 7 loop

pri(i-4)<=ram (conv_integer(item))(i); --商品单价的读取

end loop;

for i in 0 to 3 loop

quan(i):=ram(conv_integer(item))(i); --商品数量的读取

end loop;

end if;

end if;

qua<=quan;

end process com;

m32:process(clk) --此进程完成对32Mhz的脉冲分频

variable q: std_logic_vector( 24 downto 0);

begin

if clk'event and clk='1' then q:=q+1;

end if;

if q="111111111111111111111111" then clk1<='1';

else clk1<='0';

end if;

end process m32;

code0:process(item) --商品指示灯译码

begin

case item is

when "00"=>item0<="0111";

when "01"=>item0<="1011";

when "10"=>item0<="1101";

when others=>item0<="1110";

end case;

end process;

code1: process (coin) --钱数的BCD到七段码的译码

begin

case coin is

when "0000"=>y0<="0000001";

when "0001"=>y0<="1001111";

when "0010"=>y0<="0010010";

when "0011"=>y0<="0000110";

when "0100"=>y0<="1001100";

when "0101"=>y0<="0100100";

when "0110"=>y0<="0100000";

when "0111"=>y0<="0001111";

when "1000"=>y0<="0000000";

when "1001"=>y0<="0000100";

when others=>y0<="1111111";

end case;

end process;

code2: process (qua) --单价的BCD到七段码的译码

begin

case qua is

when "0000"=>y1<="0000001";

when "0001"=>y1<="1001111";

when "0010"=>y1<="0010010";

when "0011"=>y1<="0000110";

when "0100"=>y1<="1001100";

when "0101"=>y1<="0100100";

when "0110"=>y1<="0100000";

when "0111"=>y1<="0001111";

when "1000"=>y1<="0000000";

when "1001"=>y1<="0000100";

when others=>y1<="1111111";

end case;

end process;

end behav;

这有多种情况,如果是完全的公共场所不从属于商铺,只需要找到城管沟通就行了,需要取得城管部门的同意。如果你是店主,打算在自家店门口(店铺外面)投放无人售货机,也需要得到城管部门的允许。如果是外来的机器摆放到某店门口,那肯定就需要得到城管部门和店主的双重允许才行。不同城市的管理办法不一样,有些城市运营在街上摆放无人售货机,有些城市不允许,一定要提前问清楚了才行。

虽然不会写这个程序 但是英文一看人就烦,粗糙翻译方便别人解决,我也期待这个程序出炉,本人将会继续关注!

软件系统将被安装在食品厂家机器。 问题有关要求的逻辑选择和检索产品可利用在与以下限制的食品厂家机器

1 人能在$200, $100, 50¢、20¢、10¢和5¢金钱输入金钱槽孔。 在任何个阶段人能按抛出按钮检索他们的金钱; 然而,如果人从机器检索产品然后剩余的变动自动地被分与。

2 产品有一个价格和表明一个的代码在自动售货机的产品。 实际上编制程序代表产品的位置在供营商机架。 产品位置被编码如下: 例子是A1或C9或者D10或者E11。 产品也有断续装置计数,表明那个产品多少个项目被留下。 每次产品的项目被分与,断续装置计数减少。 当柜台零然后时产品不可以被分与

3 当代码被选择,在LED显示的按钮将打开以及词条将出现于显示板。 音频声音将散发表明按钮按

4 当键入正确代码和按输入按钮后,选择的项目将分与。 按清楚的按钮去除选择的代码并且清除LED显示。

有很多暗藏的内容对您将需要发现的这个问题。 大多数暗藏的内容是显示消息对所有可能的情况的LED显示。

#include<stdioh>

main()

{

int x,n,y;

float sum=00;

printf("请选择: 1日用品 2文具 3 食品\n");

scanf("%d",&x);

switch(x)

{

case 1: printf("请选择:1牙刷(35元/支) 2牙膏(62元支)\n");

printf(" 3肥皂(2元/块) 4毛巾(86元/条)\n");

scanf("%d",&y);

printf("数量?");

scanf("%d",&n);

switch(y)/匹配顾客选择的具体商品/

{

case 1: sum=35n ; break;

case 2: sum=62n ; break;

case 3: sum=2n ; break;

case 4: sum=86n ; break;

}

break;

case 2: printf("请选择:1笔( 3元/支) 2笔记本(12元/个)\n");

printf(" 3文件夹(12元/个) 4文具盒(86元/个)\n");

scanf("%c",&y);

printf("数量?");

scanf("%d",&n);

switch(y)

{

case 1: sum=3n; break;

case 2: sum=12n; break;

case 3: sum=12n; break;

case 4: sum=86n; break;

}

break;

case 3: printf("请选择:1白糖(36元/包) 2盐(1元/包)\n");

printf(" 3饼(2元/个) 4方便面(36元/条)\n");

scanf("%c",&y);

printf("数量?");

scanf("%d",&n);

switch(y)

{

case 1: sum=36n; break;

case 2: sum=1n; break;

case 3: sum=2n; break;

case 4: sum=36n; break;

}

break;

}

printf("总计:%2f 元\n",sum);

}

自动售货机工作的大概原理流程是: 一、传统非智能售货机投入纸币或硬币,货币识别器进行识别。选货,按下选货按钮,自动售货机程序根据商品的定价对现金进行加减计算。出货,如果投入的金额不足会有提示,如果金额足够的话就直接出货了。等待顾客的进一步 *** 作,如不买其他的东西选择找零的话,售货机会根据刚才计算的结果自动找零硬币,购物完成。 二、智能自动售货机选货后,售货机程序会向后台服务器发起收款申请二维码(微信、支付宝或其他的电子支付),二维码直接显示在售货机显示屏上。顾客扫码后,后台服务器会查询收款账户是不是收到款了,如果收到了,后台服务器会向售货机发出出货的指令,售货机根据指令出货。 智能售货机功能比较多,原理也很复杂,有些不需要付款根据输入的提货码也能出货,原理是顾客输入提货码或者奖券码,售货机把提货码发到后台服务器,后台服务器对提货码进行核实,并把对应的出货指令发给售货机,售货机根据指令出对应的商品。自动售货机的工作原理大概都是这个样子,现在市面上越来越多的都是这种智能的自动售货机了,支付方式也越来越多

以上就是关于用VHDL语言编写自动售货机程序全部的内容,包括:用VHDL语言编写自动售货机程序、如何才能在街头摆放自动售货机,比如需要什么程序,还是需要什么证书,还是什么的等等、用C# 编一个自动售货机的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10131342.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存