资源描述:
《数字电路课程设计-自动售货机设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、大连理工大学本科实验报告自动售货机课程名称:数字电路课程设计学院(系):电子信息与电气工程学部专业:电气工程及其自动化班级:电气1404学生姓名:学号:完成日期:2016.07.15成绩:2016年07月15日自动售货机1设计要求(1)设计一个自动售货机,能够提供4种不同价格的货物。(2)可以进行投币,投币的钱数为3种,钱数在售货机中能够进行累加并用数码管显示。(3)进行交易的时候,如投入钱数高于所购买商品价格,则交易成功,出货物,并可以选择是找零或是继续购买;若钱数不够,则提示钱数不够。要求通过数码管显示余额。2设计分析及系统方案设计2.1设计分析
2、(1)四个开关用于选择价值分别为1.0、2.0、5.0、10.0元的商品,购买者可以选择任意一种或几种商品,总价用数码管显示。(2)三个按键分别模拟0.5、1.0、5.0元钱币投入,数码管用于显示投入总额。(3)当总额大于选中商品总价时,被选中的商品对应的指示灯亮,可进行购买;当总额小于选中商品总价格时,商品指示灯灭,余额指示灯亮,提示余额不足。(4)按确定键购买,成功后显示余额,此时可继续购买或通过退款开关退款,余额显示清零。2.2系统框图图1自动售货机系统框图2.3显示界面图2自动售货机显示界面3系统以及模块硬件电路设计(1)Sw开关及key电路
3、:图3Sw开关及key电路(2)LED电路:图4LED电路(3)数码显示电路:图5数码显示电路(4)各元件管脚编号:图6各元件引脚编号4系统的Verilog设计4.1流程图图7自动售货机系统流程图4.2源代码modulesalemachine(a,b,c,hex7,hex6,hex5,hex4,hex3,hex2,hex1,hex0,w,x,y,z,LEDR1,LEDG,buy,reset);inputa,b,c,w,x,y,z,buy,reset;//a,b,c投币,w,x,y,z选择商品output[6:0]hex7,hex6,hex5,hex3
4、,hex2,hex1;//数码管output[3:0]LEDG;//商品指示灯outputhex4,hex0;outputLEDR1;//余额指示灯,提示余额不足reg[9:0]total,h,i,j,k,price;reg[6:0]hex7,hex6,hex5,hex3,hex2,hex1;reg[3:0]d,e,f,l,m,n,products,LEDG;regLEDR1;always@(posedgeaorposedgereset)//投币模块:a:0.5,b:1.0,c:5.0beginif(reset==1)h<=0;elseh<=h+5;
5、endalways@(posedgeborposedgereset)beginif(reset==1)i<=0;elsei<=i+10;endalways@(posedgecorposedgereset)beginif(reset==1)j<=0;elsej<=j+50;endalways@(posedgeaorposedgeborposedgecorposedgebuy)//计算投币总额begintotal=h+i+j-k;f=total-(total/10)*10;e=(total-f)/10-(total-f)/100*10;d=total/1
6、00;endassignhex4=1,hex0=1;//优化显示always@(d)//显示余额begincase(d)4'd0:hex7=7'b;4'd1:hex7=7'b;4'd2:hex7=7'b;4'd3:hex7=7'b;4'd4:hex7=7'b;4'd5:hex7=7'b;4'd6:hex7=7'b;4'd7:hex7=7'b;4'd8:hex7=7'b;4'd9:hex7=7'b;default:hex7=7'b;endcaseendalways@(e)begincase(e)4'd0:hex6=7'b;4'd1:hex6=7'b;4
7、'd2:hex6=7'b;4'd3:hex6=7'b;4'd4:hex6=7'b;4'd5:hex6=7'b;4'd6:hex6=7'b;4'd7:hex6=7'b;4'd8:hex6=7'b;4'd9:hex6=7'b;default:hex6=7'b;endcaseendalways@(f)begincase(f)4'd0:hex5=7'b;4'd5:hex5=7'b;default:hex5=7'b;endcaseendalways@(products)//计算商品总额beginproducts={w,x,y,z};case(products)
8、4'b0000:price=0;4'b0001:price=10;4'b0010:price=20;4'b0