网站大量收购闲置独家精品文档,联系QQ:2885784924

EDA课程设计 自动售货机控制系统.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA课程设计自动售货机控制系统创新

电子课程设计 ——自动售货机控制系统的设计 专业、 班级: 通信姓名: 学号 指 导 老 师:李 斌 2 0 1 5 年 1 2 月 绪论 1 一、设计任务与要求 1 二、总体框图 1 框图 1 设计思路 1 三、器件选择 1 1 1、分频器模块 1 2、数码管显示模块 1 3、取货模块 1 五、总体设计电路图 1 1、总体设计电路原理图 1 2、管脚分配表 1 3、仿真图 1 1 七、参考文献 1 自动售货机控制系统的设计 能够完成对货物信息的存储、进程控制、硬币处理、余额计算和显示等功能。 1 自动售货机可以出售四种货物,每种商品的数量和单价在初始化时设定,并存储在存储器中。 2用户可以用硬币进行购物,通过按键进行选择;售货时,能够根据用户输入的钱币数来判断钱币是否够,钱币足够时,则根据顾客要求自动售货;钱币不够时,则给出提示并推出;能够自动计算出应找钱币余额,库存数量并显示。 2 采用模拟开关分别模拟5角和1元的硬币来进行购物,并通过按键来选择商品。 3 系统能够根据用户输入的硬币,判断钱币是否够,当所投硬币达到或超过购买者所选面值时,则根据顾客的要求自动退货,并找回剩余的硬币,然后回到初始状态。当所投硬币不够时,则给出提示,并通过一个复位键退回所投硬币,然后回到初始状态。 二、总体框图 框图 设计思路 本系统由对外部投入硬币的检测来产生脉冲,并对产生的脉冲进行计数,其中a 表示投入的是0.5元的硬币,b 表示投入的是1元的硬币,每次根据投入的硬币不同而分别计数,并将投入的总金额用两位数码管显示出来,当达到了交易金额时,out产生一个正脉冲,此正脉冲控制闸门打开,饮料掉出来,当超出了交易金额,高位数码管显示找零金额找零,3秒后自动复位。 三、器件选择 分频器模块verilog设计程序如下: module fp(old_clk,clk); input old_clk; output reg clk; reg[19:0]k; always @(posedge old_clk) begin begin clk=~clk; //状态转换,从高电平跳到低电平,或从低电平跳到高电平 k=0; end else k=k+1; end endmodule 2、数码管显示模块 数码管显示模块程序如下: module xianshi(seg,sl,clk,reset,a,b,number_out,number_in); input clk,reset; input a,b; input [9:0]number_in; output[7:0]seg; output[3:0]sl; output[9:0]number_out; reg[7:0]segdat_reg; reg[7:0]seg_reg; reg[3:0]sl_reg,disp_dat; reg[1:0]count; reg[9:0]number; reg clk1; reg dot,dot1; //reg[3:0]sl; integer cnt=0; always@(posedge clk) begin if(cnt==25000) begin clk1=~clk1;cnt=0;end else begin cnt=cnt+1; end end always@(posedge clk1) begin count=count+1; end always@(posedge a or posedge b or posedge reset) begin if(reset)number=0; else number=a*5+b*10; end always@(count[1:0]) begin case(count[1:0]) 2b00:disp_dat=number%10; 2b01:begin disp_dat=number/10;dot=1b1;end 2b10:disp_dat=number_in%10; 2b11:begin disp_dat=number_in/10;dot1=1b1;end endcase case(count[1:0]) 2b00:sl_reg=4b1110; 2b01:sl_reg=4b1101; 2b10:sl_reg=4b1011; 2b11:sl_reg=4b0111; endcase end always@(disp_dat) begin if(dot)begin segdat_reg=8h80;dot=0;end if(dot1)begin segdat_reg=8h80;dot1=0;end case(disp_dat) 4h0:segda

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档