数电实验自动售邮票

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设计一个自动售邮票的控制电路

1.设计任务

用两个发光二极管分别模拟售出面值为6角和8角的邮票,购买者可以通过开关选择一种面值的邮票,灯亮时表示邮票售出。用开关分别模拟1角,5角和1元硬币投入,用发光二极管分别代表找回剩余的硬币。

要求:每次只能售出一枚邮票,当所投硬币达到或超过购买者所选面值时,售出一枚邮票,并找回剩余的硬币,回到初始状态;当所投硬币面值不足面值时,可以通过一个复位键退回所投硬币,回到初始状态。

总体框图如图9-7所示。

2.模块及模块功能

模块SOLDA如图9-8所示。

该模块实现出售邮票的逻辑功能。M1,M5,M10分别表示投入1角,5角,1元钱,T6,T8分别表示要购买6角,8角的邮票,S6,S8分别表示售出6角,8角的邮票,CH表示找回的钱。

图9-7 总体框图

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity solda is

port(m1,m5,m10:in std_logic;

t6,t8:in std_logic;

reset:in std_logic;

clk:in std_logic;

s6,s8:out std_logic;

ch:out std_logic_vector(4 downto 0));

end solda; 图9-8

architecture sold_arc of solda is

begin

process(clk,m1,m5,m10,t6,t8,reset)

variable money:std_logic_vector(4 downto 0);

variable a:std_logic;

variable cnt:integer range 0 to 60;

begin

if clk'event and clk='1'then

if a='1'then

if m1='0'then

money:=money+1;

elsif m5='0'then

money:=money+5;

elsif m10='0'then

money:=money+10;

elsif reset='0'then

ch<=money;

a:='0';

elsif t6='0' and money>5 then

ch<=money-6;

s6<='1';

a:='0';

elsif t8='0' and money>7 then

ch<=money-8;

s8<='1';

a:='0';

end if;

else

if cnt<60 then

cnt:=cnt+1;

else

cnt:=0;

money:="00000";

s6<='0';

s8<='0';

ch<="00000";

a:='1';

end if;

end if;

end if;

end process;

end sold_arc;

模块ciao如图9-9所示。

此模块为同步消抖动模块,它的输入输出均为负脉冲。功能扩展:

1.投币可以累积到10元,超过10元时发出报警;

2. 可以累计投币、累计买票;

3. 按结束按钮,自动进行结算找零。

相关文档
最新文档