当前位置:文档之家› -自动售货机的设计

-自动售货机的设计

安康学院FPGA/SOPC课程设计报告书课题名称:自动售货机的设计姓名:学号:院系:电子与信息工程系专业:指导教师:时间:课程设计项目成绩评定表设计项目成绩评定表课程设计报告书目录设计报告书目录一、设计目的 (1)二、设计思路 (1)三、设计过程 (1)3.1、系统方案论证 (1)3.2、模块程序设计 (2)3.3、各单元模块功能介绍及电路设计 (4)四、仿真结果 (6)4.1、设计电路图 (6)4.2、程序生成的原理图 (7)4.3、仿真图 (8)五、对应变量的管脚配置表 (8)六、课程设计体会与建议 (9)6.1、设计体会 (9)6.2、设计建议 (10)七、参考文献 (10)一、设计目的1)熟悉学习QuartusII的编程与调试方式,学会在QuartusII中使用波形图进行软件仿真,并使用EDA6000进行硬件仿真与调试。

2)设计一个自动售货机,具有投币和选择商品等功能二、设计思路1、售货机模块:该模块能完成货物信息的存储,硬币处理,余额计算。

2、动态扫描模块:功能主要是硬件实验板上让两路信号同时在两个7段数码管上显示出来。

3、输出控制模块:该模块主要是控制OUT和OUT1输出信号来控制阀门打开与找钱,并且控制阀门的打开时间。

设计思路:控制信号输入到售货机模块,售货机进行各项功能操作输出信号在7段数码管三、设计过程3.1、系统方案论证3.1.1、自动售货机系统组成框图图1 系统组成框图3.1.2工作原理1)设计一个自动售货机,此机能出售1元、2.5元、3元、3.5元的四种商品。

出售哪种商品可有顾客按动相应的按键即可,并同时用数码管显示售出的是第几种商品;2)顾客可通过选择投入的钱数来购买商品,并且有一个确认键;3)如果选择投入的钱小于选择的商品价格,则显示出价格和选择的钱数,;4) 如果选择投入的钱大于选择的商品价格,则显示出价格和找回的钱;5)此售货机有一个整体复位控制。

3.2、模块程序设计程序如下:module shoumaiji(clk,a,b,duanxuan,weixuan,out,out1);input clk;input a,b; //a为投入0.5元信号,b为投入1元信号output [8:1]duanxuan; //输出8位段选信号output weixuan; //输出1位位选信号output out; //out为高电平时售卖机闸门打开,汽水掉出来output out1; //out1为高电平时候找0.5元reg weixuan;reg [8:1]duanxuan;reg [31:0]count; //数码管动态扫描计数reg [31:0]count1; //用于计算售卖机闸门打开时间reg [4:1]a1,b1; //用a1,b1寄存投入的0.5元和1元硬币数目reg out,out1;always @(posedge a or posedge out)beginif(out==1) a1<=0; //汽水出来后计数值清零else a1<=a1+4'b1;endalways @(posedge b or posedge out)beginif(out==1) b1<=0; //汽水出来后计数值清零else b1<=b1+4'b1;endalways@(posedge clk)beginif(a1==5) out<=1; //因为汽水为2.5,可以给5个0.5元else if(a1==3&&b1==1) out<=1; //可以给3个0.5元和1个1元else if(a1==1&&b1==2) out<=1; //,可以给1个0.5元和2个1元else if(b1==3)begin out<=1;out1<=1;end //可以给3个一块的else if(a1==0&&b1==0)begincount<=count+1;if(count==50) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b0;duanxuan<=8'b00111111; //0endif(count==100) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b1;duanxuan<=8'b00111111;count<=0;endendelse if(a==1) //投币0.5元,显示0.5,假设数码管为共阴极的begincount<=count+1;if(count==50) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b0;duanxuan<=8'b01101101; //5endif(count==100) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b1;duanxuan<=8'b10111111; //0.count<=0;endendelse if(b==1) //投币1元,显示01begincount<=count+1;if(count==50) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b0;duanxuan<=8'b00000110; //1endif(count==100) //如果实际运行中发现数码管有闪烁,可以将此数值调小beginweixuan<=1'b1;duanxuan<=8'b00111111; //0count<=0;endendif(out==1)beginif(count1==3000)//让闸门打开3秒,由于为1KHz时钟,故要数3000下beginout<=0;out1<=0;count1<=0;endelse count1<=count1+1;endendendmodule3.3、各单元模块功能介绍及电路设计自动饮料售货机主要是由以下几个部分构成,电源电路、数码显示、时钟脉冲、投币脉冲、闸门时间控制等,各部件形成一个简单的自动售货机系统。

此设计主要用到MAXⅡEPM570T144C5N 芯片,其实现主要的功能是对投币信号的计数与计算,判断是否达到所买物品的价格,如果不足的显示所投的钱数,钱足则控制闸门三秒后放出饮料。

3.3.1 投币信号产生电路:自动售货机的所有信号均由同步时钟信号CLK的正边沿触发,由于售货机的硬币接收器一般是一个机械装置,投币时产生的信号要比同步信号慢得多,一般可以持续好几个周期。

必须对投币输入信号进行处理,使每一次投币时在CLK脉冲周期内只能产生一个脉冲作为功能控制模块的投币驱动信号。

基于一面的功能要求,设计了下面所示的投币输入信号的处理电路投币信号产生3.3.2电源模块的构成如图所示:此电路是5V转3.3V的电源电路图,芯片的工作电压是在3.3V达到最佳状态,二极管的额定电流值应大于最大负载电流的1.2倍,但考虑到负载短路的情况,二极管的额定电流值应大于LM2575的最大电流限制;另外二极管的反向电压应大于最大输入电压的1.25倍。

输入电容应大于47μF,并要求尽量靠近电路。

而输出电容推荐使用的电容量为100μF~470μF,其耐压值应大于额定输出的1.5~2倍。

对于5V电压输出,推荐使用耐压值为16V的电容。

3.3.3时钟电路在功能实现模块中,售货机在放出饮料的时候需要延时三秒钟,程序中count1数通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

3000下,因此需要1KHZ的时钟脉冲,设计中为同步时钟,所以此时钟脉冲电路为芯片提供“脉搏”。

图中是一种1KHz脉冲发生电路。

它由集成电路CD4060和晶振、电阻和电容等元件组成。

CD4060是14位二进制串行计数、分频器和振荡器。

CD4060内部分为两部分,其中一部分是14级计数/分频器,其分频系数为16~16348;另一部分既可与外接电阻和电容构成RC振荡器,又可与外接晶体构成高精度的晶体振荡器。

在采用一定频率的晶振组成晶振振荡器,其震荡信号经过CD4060内部分频后,在Q输出相应频率的脉冲信号。

设计中需要1000hz的时钟脉冲,所以外接30720Hz的晶振,在Q5端输出大约是1000HZ的时钟脉冲。

3.3.4数码显示根据程序中,在不满足交易金额的时候,需要把所投的币数额显示在数码管上,利用一个控制信号weixuan来控制数码管的显示位置,当weixuan为0时着在低位显示,当weixuan为1时选择高位。

硬件中选用两个数码管来显示,芯片输出的电流不能驱动数码管来显示,因此需要74HC245来驱动数码管的显示,E 端必须接地,这样芯片才能正常工作,DIR端的功能是:当为高的时候数据A到B,为低的时候B到A。

设计中使用两片芯片,一片来让数码管显示数值,一片来控制weixuan让数码选择显示的位置。

在74HC245与数码管之间需要用一个电阻。

当投入五角的硬币的时候,由于不满足交易金额则数码管上显示0.5,为一元的时候则为01。

数码管寄存器四、仿真结果4.1、设计电路图4.2、程序生成的原理图4.3、仿真图五、对应变量的管脚配置表六、课程设计体会与建议6.1、设计体会经过这次对自动饮料售货机系统的设计,让我对EDA设计有了更一步的认识,同时也对EDA这门课程有了更深入的了解。

这次设计让我了解了关于自动饮料售货机的原理与设计理念,要设计一个电路先进行软件模拟仿真再进行实际的电路制作。

通过这次设计让我收获不小,比如在设计完成仿真的时候没有考虑到电路图中的一些元件值的大小,但是也能仿真成功,而实际上在硬件实现中却行不通,所以在设计的时候要充分的考虑到实际情况,从而更加完善设计。

这次EDA课程设计终于顺利完成了,也解决了设计中遇见的一些问题。

在这次设计中我受益匪浅.对Quartus Ⅱ软件的运用更加熟练。

在摸索该如何设计程序使之实现所需功能的过程中,培养了我的设计思维,增加了实际操作能力,总的来说这次收获不小,基本能够做到学以致用。

最后应感谢王庆春老师的辛勤指导下,能让我在困境中找到解决难题的办法,并且对EDA有了更深刻的认识,同时在王老师身上学到了很多设计中适用的方法,当然还要感谢和我“共同战斗”的同学,没有他们的帮助我也很难把这个设计做出。

相关主题