自动售货机系统设计.docx
- 文档编号:25518340
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:18
- 大小:185.24KB
自动售货机系统设计.docx
《自动售货机系统设计.docx》由会员分享,可在线阅读,更多相关《自动售货机系统设计.docx(18页珍藏版)》请在冰豆网上搜索。
自动售货机系统设计
华东交通大学理工学院
课程设计报告书
所属课程名称《电子(通信)系统设计》
题目 自动售货机系统设计
分院 电信分院
专业班级09级电信综合班
学 号 206
学生姓名
指导教师
2012年12月28日
华东交通大学理工学院
课程设计(论文)任务书
专业电子信息工程班级09级四班姓名李康有
一、课程设计(论文)题目自动售货机系统设计
二、课程设计(论文)工作:
自2012年12月17日起至2012年12月28日止。
三、课程设计(论文)的内容要求:
1)设计一个自动售货机,此机能出售1元、2元、5元、10元的四种商品。
出售哪种商品可有顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格。
2)顾客投入硬币的钱数也是有1元、2元、5元、10元四种,但每次只能投入其中的一种硬币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来。
3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒(可用点阵模拟报警)。
如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来。
4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作。
5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。
此累加器只有商家可以控制清零。
学生签名:
李康有
2012年12月28日
课程设计(论文)评阅意见
序号
项目
等 级
优秀
良好
中等
及格
不及格
1
课程设计态度评价
2
出勤情况评价
3
任务难度评价
4
工作量饱满评价
5
设计中创新性评价
6
论文书写规范化评价
7
综合应用能力评价
综合评定等级
评阅人赵巍 职称讲师
2012年12月28日
目 录
第1章课程设计内容及要求...................................5
第2章程序设计目的..........................................6
第3章程序实现思路..........................................7
3.1系统设计分析.........................7
3.2系统所需要的模块..................8
3.3各模块的连接.........................9
第4章程序清单..................................10
4.1自动售货机设计代码...............................10
4.2仿真结果..................................15
第5章课程设计心得................................17
第6章参考文献(资料).........................18
第一章课程设计内容及要求
(1)设计一个自动售货机,此机能出售1元、2元、5元、10元的四种商品。
出售哪种商品可有顾客按动相应的一个按键即可,并同时用数码管显示出此商品的价格。
(2)顾客投入硬币的钱数也是有1元、2元、5元、10元四种,但每次只能投入其中的一种硬币,此操作通过按动相应的一个按键来模拟,并同时用数码管将投币额显示出来。
(3)顾客投币后,按一次确认键,如果投币额不足时则报警,报警时间3秒(可用点阵模拟报警)。
如果投币额足够时自动送出货物(送出的货物用相应不同的指示灯显示来模拟),同时多余的钱应找回,找回的钱数用数码管显示出来。
(4)顾客一旦按动确认键3秒后,自动售货机即可自动恢复到初始状态,此时才允许顾客进行下一次购货操作。
(5)售货机还应具有供商家使用的累加卖货额的功能,累加的钱数要用数码管显示,显示2位即可。
此累加器只有商家可以控制清零。
第二章程序设计目的
自动售货机在人们日常生活中越来越普遍,自动售货机继百货商店、超市之后掀起第三次零售业革命,其前景非常广阔.透过这种智能售货系统不仅可以存货、销售,还可将物流信息准确、及时地反馈给客户和管理人员,此外,还支持多种交易支付模式,同时方便实现较大金额的支付和交易结算.VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模.被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间.数字系统能够按层次描述,并可在相同描述中显式地进行时序建模.它是在C语言基础上发展起来的一种硬件描述语言,它是由GDA(GatewayDesignAutomation)(后被Cadence收购)公司的PhilMoorby于1983年创建的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具.1990年,Cadence公司成立OVI(OpenVerilogInternationa1)组织来负责推广Verilog;1995年,IEE定了VerilogHDL标准,即IEEEStd1364—1995.
VHDL是由用户编程来实现所需逻辑功能的数字集成电路,它不仅具有设计灵活、性能高、速度快等优势,而且上市周期短、成本低廉。
FPGA设计与ASIC前端设计十分类似,在半导体领域中VHDL应用日益普及,已成为集成电路中最具活力和前途的产业。
同时,随着设计技术和制造工艺的完善,器件性能、集成度、工作频率等指标不断提升,VHDL已越来越多地成为系统级芯片设计的首选。
VHDL作为可编程逻辑器件的典型代表,它的出现及日益完善适应了当今时代的数字化发展浪潮,它正广泛应用在现代数字系统设计中。
随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。
利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。
利用VHDL语言设计自动售货机,使其实现自动售货,找零钱等功能,突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。
此程序通过下载到特定芯片后,可应用于实际的自动售货机系统中。
第3章程序实现思路
3.1系统设计分析
3.1.1售货机的工作原理:
利用VerilogHDL描述语言实现自动售货机系统的工作原理本文是在FPGA或ASIC等基础上,采用VerilogHDL描述语言实现自动售货机系统的销售动作,并完成整个系统的其他相关功能,其设计思想为:
用有限状态机进行系统状态描述,自动售货机通电复位时,自动进入系统初始状态,通过人性化的界面随外界(消费者)输入信号的触发转换到不同状态.在不同状态下,自动售货机对外界的反应是不同的,可以进入接受信号(投币)状态,也可以进入销售状态,或者是找零状态,便于操作.自动售货机控制系统的主要功能:
自动售货机控制要求对机内商品信息进行识别,对投入的货币进行运算,并根据所投入的货币数值判断是否能够购买某种商品,并做出相应的反应.本文设计的自动售货机控制系统主要可以实现投币处理、计算投币总额、输出商品,输出找零、余额计算并显示等功能。
其系统工作流程如图1所示
图1自动售货机系统设计流程
3.2系统所需要的模块
自动售货机的功能模块逻辑上划分为商品选择模块、编码模块、投币处理模块、投币、找零显示模块和主控模块。
[5]
。
(1)商品选择模块。
该模块对输入信号进行传递,入口参数包括CP时钟信号(由系统时钟产生),由5个发光二极管分别显示商品是否被选。
(2)编码模块。
该模块功能是将货物选择按钮给的选择信息转换成总线五位二进制D0、D1、D2、D3和D4来表示,然后送入控制器。
并设有使能端EN1,使电路进入初始状态有效,退出时无效
(3)投币处理模块。
该模块入口参数coin1(投入1元硬币),coin5(投入5元硬币),EN2(投入硬币有效的使能端)。
功能类似于计钱器,在清零的前提下,可准确计算投入的硬币数,记录并保存投入的总币值。
(4)投币、找零显示模块。
该模块是用来显示投入和找零的钱数。
用于投币显示时,将计钱器加接5个输出端,先转换成BCD码,然后经译码器译码并显示。
用于找零显示时,将主控模块的找零信号的五位总线输出端转换成BCD模块,再译码显示。
(5)主控模块。
主控模块程序通过对输入信号进行处理,完成状态的切换,其入口参数包括start复位信号(取消键)、ok_buy(购买确认)、b(所投的币值,以十进制显示)、出口参数包out1(灯亮显示商品出货)、reject1(灯亮表示拒绝商品输入)、reject2(灯亮表示拒绝接收硬币)、c(找零及退币,以十进制显示)
图2模块示意图
3.3各模块的连接
各模块的连接如图3和图4所示:
图3售货机主控系统和译码器模块图
图4售货机顶层模块
第4章程序清单
4.1自动售货机设计代码与实现
VerilogHDL语言编程
libraryieee;--库声明
useieee.std_logic_1164.all;
entityguois
port(sel1,sel5,sel10,put1,put5,put10,sure,clk,rst:
instd_logic;
jing,out1,out5,out10:
outstd_logic;
digit:
outintegerrange0to15);
endguo;--实体
architecturebhvofguois
typestateis(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,
s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21);--结构体,定义21个状态
signalps,ns:
state;
signala,b:
std_logic;--声明a,b两个信号,用于延时
begin
process(clk,rst)
variabletemp:
integerrange0to3;
begin
ifrst='1'then
ps<=s0;--当复位信号有效时,s0赋给现态
elsifclk'eventandclk='1'then
ps<=ns;--当上升沿到来时,次态赋值给现态
if(a='1')then
temp:
=temp+1;
if(temp=3)then
b<='1';
else
b<='0';
endif;
else
temp:
=0;
endif;
endif;--延时程序
endprocess;
process(sel1,sel5,sel10,put1,put5,put10,sure,b,ps)
begin
if((ps=s0)or(ps=s1)or(ps=s2)or(ps=s3)or(ps=s4)or(ps=s5)or(ps=s6)or(ps=s7)or(ps=s8)or(ps=s9)or(ps=s10)or(ps=s11)or(ps=s12))then
a<='0';
else
a<='1';
endif;--对控制延时信号a赋值
casepsis
whens0=>jing<='0';out1<='0';out5<='0';out10<='0';digit<=0;--状态及状态转换情况
ifsel1='1'andsel5='0'andsel10='0'then
ns<=s1;
elsifsel1='0'andsel5='1'andsel10='0'then
ns<=s2;
elsifsel1='0'andsel5='0'andsel10='1'then
ns<=s3;
else
ns<=s0;
endif;
whens1=>digit<=1;
ifput1='1'andput5='0'andput10='0'then
ns<=s4;
elsifput1='0'andput5='1'andput10='0'then
ns<=s5;
elsifput1='0'andput5='0'andput10='1'then
ns<=s6;
else
ns<=s1;
endif;
whens4=>digit<=1;
ifsure='1'then
ns<=s13;
else
ns<=s4;
endif;
whens5=>digit<=5;
ifsure='1'then
ns<=s14;
else
ns<=s5;
endif;
whens6=>digit<=10;
ifsure='1'then
ns<=s15;
else
ns<=s6;
endif;
whens2=>digit<=5;
ifput1='1'andput5='0'andput10='0'then
ns<=s7;
elsifput1='0'andput5='1'andput10='0'then
ns<=s8;
elsifput1='0'andput5='0'andput10='1'then
ns<=s9;
else
ns<=s2;
endif;
whens7=>digit<=1;
ifsure='1'then
ns<=s16;
else
ns<=s7;
endif;
whens8=>digit<=5;
ifsure='1'then
ns<=s17;
else
ns<=s8;
endif;
whens9=>digit<=10;
ifsure='1'then
ns<=s18;
else
ns<=s9;
endif;
whens3=>digit<=10;
ifput1='1'andput5='0'andput10='0'then
ns<=s10;
elsifput1='0'andput5='1'andput10='0'then
ns<=s11;
elsifput1='0'andput5='0'andput10='1'then
ns<=s12;
else
ns<=s3;
endif;
whens10=>digit<=1;
ifsure='1'then
ns<=s19;
else
ns<=s10;
endif;
whens11=>digit<=5;
ifsure='1'then
ns<=s20;
else
ns<=s11;
endif;
whens12=>digit<=10;
ifsure='1'then
ns<=s21;
else
ns<=s12;
endif;
whens13=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=0;
ifb='1'then
ns<=s0;--延时控制
else
ns<=s13;
endif;
whens14=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=4;
ifb='1'then
ns<=s0;
else
ns<=s14;
endif;
whens15=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=9;
ifb='1'then
ns<=s0;
else
ns<=s15;
endif;
whens16=>out1<='0';out5<='0';out10<='0';jing<='1';digit<=1;
ifb='1'then
ns<=s0;
else
ns<=s16;
endif;
whens17=>out1<='0';out5<='1';out10<='0';jing<='0';digit<=0;
ifb='1'then
ns<=s0;
else
ns<=s17;
endif;
whens18=>out1<='0';out5<='1';out10<='0';jing<='0';digit<=5;
ifb='1'then
ns<=s0;
else
ns<=s18;
endif;
whens19=>out1<='0';out5<='0';out10<='0';jing<='1';digit<=1;
ifb='1'then
ns<=s0;
else
ns<=s19;
endif;
whens20=>out1<='0';out5<='0';out10<='0';jing<='1';digit<=5;
ifb='1'then
ns<=s0;
else
ns<=s20;
endif;
whens21=>out1<='0';out5<='0';out10<='1';jing<='0';digit<=0;
ifb='1'then
ns<=s0;
else
ns<=s21;
endif;
endcase;
endprocess;
endbhv;
4.2仿真结果
第5章 课程设计心得
本设计实现了设计要求中规定的基本功能,具备了在规定时限内完成接受顾客选择、接受投币、记数、找零、显示找零、出货、显示出货、清零的功能,再加上拓展功能:
显示选择结果、仓储有限功能,使本系统成为一个接近实际应用、较为人性化的操作系统。
本次设计对我来说是一次良好的、难得的利用所学知识,理论联系实际的一次体验。
我再一次的重温了EDA和VHDL的重要技术概念,培养了运用QuartusII软件完成系统程序设计和电路原理图的能力,开拓了设计思路,提升了思考问题的能力。
通过在设计过程中一次次遇到问题,解决问题,对所学知识加深了理解,提高了认识,融会贯通。
在设计过程中我也发现了自己的许多不足之处,如对所学知识有许多遗忘,吃得不太透,运用能力有待提高等等。
本次设计的自动售货机系统实现了许多基本功能,但还有许多可提升的地方,希望通过今后的进一步学习和实践能更好的充实和武装自己,以完成更加困难的任务和工作。
最后,非常感谢赵老师对我认真细心的教导和耐心的指导,谢谢赵老师的关心。
第6章 参考文献(资料)
[1]阎 石.数字电子技术基础[M].4版.北京:
高等教育出版社,1998.
[2]王雯隽.基于Verilog-HDL自动售货机的设计与实现[J].微型电脑应用,2005,21(5):
19-20.
[3]王金明.VerilogHDL程序设计教程[M].人民邮电出版社..
[4]潘松,黄继业编著.EDA技术实用教程[M]2005,科学出版社
[5]赖一汉.自动售货机控制系统VHDL有限状态机实现[J].自动化技术与应用,2009(9).
[6]徐世明,等.自动售货机研究现状及展卑[J].中国科学工程,2008,10(7):
5l一55.
[7]宋潇,李佩佩,韩莹莹.自动售货机控制设计[J].科技信息,2009(33).
致谢
我所做的自动售货机设计是一个综合性很强的工作,它涉及到电路的设计思路、VHDL硬件描述语言编程、MAX+PLUSII软件的使用,由于本人能力有限,在设计的制作过程中,遇到了相当多的问题和困难。
但在我的指导老师赵巍老师的指导和帮助下,我顺利完成了本次设计工作,为我增添了许多信心,同时也为以后参加工作打下了一个良好的基础。
最后,再次对赵老师致以衷心的感谢!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动 售货 系统 设计