数字电路课程设计-自动售货机设计

上传人:aa****6 文档编号:29254831 上传时间:2018-01-23 格式:DOC 页数:12 大小:1.57MB
返回 下载 相关 举报
数字电路课程设计-自动售货机设计_第1页
第1页 / 共12页
数字电路课程设计-自动售货机设计_第2页
第2页 / 共12页
数字电路课程设计-自动售货机设计_第3页
第3页 / 共12页
数字电路课程设计-自动售货机设计_第4页
第4页 / 共12页
数字电路课程设计-自动售货机设计_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数字电路课程设计-自动售货机设计》由会员分享,可在线阅读,更多相关《数字电路课程设计-自动售货机设计(12页珍藏版)》请在金锄头文库上搜索。

1、大连理工大学本科实验报告自动售货机课程名称: 数字电路课程设计 学院(系):电子信息与电气工程学部专 业: 电气工程及其自动化 班 级: 电气 1404 学生姓名: 学 号: 完成日期: 2016.07.15 成 绩: 2016 年 07 月 15 日自动售货机1 设计要求(1)设计一个自动售货机,能够提供 4 种不同价格的货物。(2)可以进行投币,投币的钱数为 3 种,钱数在售货机中能够进行累加并用数码管显示。(3)进行交易的时候,如投入钱数高于所购买商品价格,则交易成功,出货物,并可以选择是找零或是继续购买;若钱数不够,则提示钱数不够。要求通过数码管显示余额。2 设计分析及系统方案设计2.

2、1 设计分析(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、图 3 Sw 开关及 key 电路(2)LED 电路:图 4 LED 电路(3)数码显示电路:图 5 数码显示电路(4)各元件管脚编号:图 6 各元件引脚编号4 系统的 Verilog 设计4.1 流程图图 7 自动售货机系统流程图4.2 源代码module salemachine (a,b,c,hex7,hex6,hex5,hex4,hex3,hex2,hex1,hex0,w,x,y,z,LEDR1,LEDG,buy,reset);input a,b,c,w,x,y,z,buy,reset; /a,b,c 投币,w,x,y,z 选择商品output6:0 hex7,hex6,hex5,hex

4、3,hex2,hex1; /数码管output3:0LEDG; /商品指示灯output hex4,hex0;output LEDR1; /余额指示灯,提示余额不足reg 9:0total,h,i,j,k,price;reg6:0 hex7,hex6,hex5,hex3,hex2,hex1;reg3:0d,e,f,l,m,n,products,LEDG;reg LEDR1;always(posedge a or posedge reset) /投币模块:a:0.5,b:1.0,c:5.0beginif(reset=1)h=0;elseh=h+5;endalways(posedge b or p

5、osedge reset)beginif(reset=1)i=0;elsei=i+10;endalways(posedge c or posedge reset)beginif(reset=1)j=0;elsej=j+50;endalways(posedge a or posedge b or posedge c or posedge buy )/计算投币总额begintotal=h+i+j-k;f=total-(total/10)*10;e=(total-f)/10-(total-f)/100*10;d=total/100;endassign hex4=1,hex0=1; /优化显示alwa

6、ys (d) /显示余额begincase(d)4d0:hex7=7b;4d1:hex7=7b;4d2:hex7=7b;4d3:hex7=7b;4d4:hex7=7b;4d5:hex7=7b;4d6:hex7=7b;4d7:hex7=7b;4d8:hex7=7b;4d9:hex7=7b;default:hex7=7b;endcaseendalways (e)begincase(e)4d0:hex6=7b;4d1:hex6=7b;4d2:hex6=7b;4d3:hex6=7b;4d4:hex6=7b;4d5:hex6=7b;4d6:hex6=7b;4d7:hex6=7b;4d8:hex6=7b;

7、4d9:hex6=7b;default:hex6=7b;endcaseendalways (f)begincase(f)4d0:hex5=7b;4d5:hex5=7b;default:hex5=7b;endcaseendalways(products) /计算商品总额beginproducts=w,x,y,z; case(products)4b0000:price=0;4b0001:price=10;4b0010:price=20;4b0011:price=30;4b0100:price=50;4b0101:price=60;4b0110:price=70;4b0111:price=80;4b

8、1000:price=100;4b1001:price=110;4b1010:price=120;4b1011:price=130;4b1100:price=150;4b1101:price=160;4b1110:price=170;4b1111:price=180;default:price=0;endcasen=price-(price/10)*10;m=(price-n)/10-(price-n)/100*10;l=price/100;if(totalprice)beginLEDR1=1;price=0;endelseLEDR1=0;case(price) /显示选择的商品00:LEDG

9、=4b0000;10:LEDG=4b0001;20:LEDG=4b0010;30:LEDG=4b0011;50:LEDG=4b0100;60:LEDG=4b0101;70:LEDG=4b0110;80:LEDG=4b0111;100:LEDG=4b1000;110:LEDG=4b1001;120:LEDG=4b1010;130:LEDG=4b1011;150:LEDG=4b1100;160:LEDG=4b1101;170:LEDG=4b1110;180:LEDG=4b1111;default:LEDG=4b1111;endcaseendalways (l) /显示商品总额begincase(l

10、)4d0:hex3=7b;4d1:hex3=7b;4d2:hex3=7b;4d3:hex3=7b;4d4:hex3=7b;4d5:hex3=7b;4d6:hex3=7b;4d7:hex3=7b;4d8:hex3=7b;4d9:hex3=7b;default:hex3=7b;endcaseendalways (m)begincase(m)4d0:hex2=7b;4d1:hex2=7b;4d2:hex2=7b;4d3:hex2=7b;4d4:hex2=7b;4d5:hex2=7b;4d6:hex2=7b;4d7:hex2=7b;4d8:hex2=7b;4d9:hex2=7b;default:hex

11、2=7b;endcaseendalways (n)begincase(n)4d0:hex1=7b;4d5:hex1=7b;default:hex1=7b;endcaseendalways(posedge buy or posedge reset) /交易 or 退款beginif(reset=1)k=0;elsek=k+price;endendmodule5 结论以及结果说明(1)软件环境:Quartus II(2)计算机平台:DELL 电脑(3)硬件环境:DE2-115 开发板(4)仿真结果:选择商品 z(1.0) ,商品 y(2.0),商品 x(5.0),商品总额显示0800(hex3、h

12、ex2、hex1、hex0)此时余额指示灯(LEDR1)亮,表示余额不足,不能购买,按确认键(buy)无反应,投入四个 0.5(a) ,两个 1.0(b) ,一个 5.0(c),投币总额显示0900(hex7、hex6、hex5、hex4),此时余额指示灯灭,对应商品指示灯亮(LEDG) ,表示可以购买,按确认键购买,余额显示 0100,余额指示灯亮,商品指示灯灭,推动退款开关(reset),找零,余额显示清零。图 8 仿真时序图6 心得体会出于对下学期的学业规划,我和室友选择了在小学期提前修读数电课设,凭借之前 C语言的编程经验,我以为 Verilog HDL 不是什么问题。在开始之初,我能

13、很好的编出一些小程序,例如计数器,译码器等,随着编程的深入,我发现 Verilog HDL 并不简单,作为硬件编程语言,他和 C 语言之间还是有很大不同的,一切程序结构的实现都是基于硬件电路的,你要遵守硬件连接的规则,而不能像 C 语言一样灵活的嵌套、跳转,想到哪里编到哪里。同时 Verilog HDL 的并行结构也让熟悉了 C 语言串行的我遇到不少问题,一个变量不能在多个模块中赋值,阻塞式赋值和非阻塞式赋值会有不同结果等等,但最终,通过与室友交流讨论,查阅各种资料,以及求助于老师,我们解决了以上问题。看到程序编译通过、仿真得到波形、最后下载到板子上实现了功能,真的很激动!非常感谢老师以及同学的帮助!由于我们是第一届使用 Verilog HDL 的学生,理论课上介绍也不是很深入,因此在语法方面遇到较多困难,希望加强基本知识的介绍。同时希望教学中能加入对设计方法、设计思想的讲解,以不至于学生拿到题目不知如何下手。参考文献1戚金清,王兢等.数字电路与系统.3 版.北京:电子工业出版社,20162潘松,黄继业,潘明.EDA 实用教程:Verilog HDL 版M.5 版.北京:科学出版社,2013

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号