ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:417.54KB ,
资源ID:1632050      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1632050.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自动售货机设计和实现.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

自动售货机设计和实现.docx

1、自动售货机设计和实现 大 学 实 验 报 告 课程名称: 数字系统现场集成技术 实验项目名称: 实验四(自动售货机设计和实现) 学院: 专业: 指导教师: 报告人: 学号: 班级: 实验时间: 实验报告提交时间: 教务部制一、实验目的与要求:基本要求:该实验为团队协作,2人一个小组。可以对3种不同种类的货物进行自动售货,价格分别为A=4.00, B=2.50, C=1.00。售货机可以接受10元,5元,1元三种硬币(即有三种输入信号SY,WY,IY),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为 Sa, Sb ,Sc 分别表示

2、售出相应的货物,同时输出的信号yuan, jiao代表找零,并显示在7段数码管上。高级要求(可选):VGA显示3种货物图片及其价格,鼠标点击购买数量(1-9)后显示总价,安规格说明2中的button2-button4输入硬币,VGA显示已投入的总钱数,鼠标点击购买后,显示找零数目,购买物品闪烁,交易完成。规格说明: 按一下button1按钮,表示购买货物A,第一个LED灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮,同时7段数码管显示所要购买货物的价格。 LED灯亮后,开始输入硬币。button2按一下,输入10元,

3、按两下,输入二十元,以此类推;Button3按一下输入5元,按两下输入10元,以此类推;button4按一下输入1元,按两下输入2元,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。 如果投入的钱币不够就按下button1键确认购买,数码管显示“ER”。 本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)。二、实验过程与代码:1、顶层代码:module top( input clk, input rst, input4:0 btn, output3:0 an, o

4、utput7:0 seg, output2:0 led ); wire clk,rst;wire7:0 first_seg,second_seg,third_seg;wire4:0 btn_down; seg_drv v1( .clk(clk), .rst(rst), .first_seg(first_seg), .second_seg(second_seg), .third_seg(third_seg), .an(an), .seg(seg) ); main v2 ( .clk(clk), .rst(rst), .btn_down(btn_down), .first_seg(first_se

5、g), .second_seg(second_seg), .third_seg(third_seg), .led(led) ); btn_scan v3 ( .clk(clk), .rst(rst), .btn(btn), .btn_down(btn_down) );Endmodule2、数码管驱动:module seg_drv( input clk, input rst, input7:0 first_seg, input7:0 second_seg, input7:0 third_seg,/ input7:0 forth_seg, output reg3:0 an, output reg7

6、:0 seg );localparam1:0 s0=2b00, s1=2b01, s2=2b10, s3=2b11;reg1:0 state;always(posedge clk,posedge rst)begin if(rst) begin an=4b1111; seg=8b1111_1111; state=s0; end else begin case(state) s0:begin an=4b1110; seg=first_seg; if(ms_up) state=s1; else state=state; end s1:begin an=4b1101; seg=second_seg;

7、if(ms_up) state=s2; else state=state; end s2:begin an=4b1011; seg=third_seg; if(ms_up) state=s3; else state=state; end s3:begin an=4b0111; seg=8b1111_1111; if(ms_up) state=s0; else state=state; end endcase endendreg17:0 ms_cnt;reg ms_up;always(posedge clk,posedge rst)begin if(rst) begin ms_cnt=0; ms

8、_up=0; end else begin if(ms_cnt=200000) begin ms_cnt=0; ms_up=1; end else begin ms_cnt=ms_cnt+1b1; ms_up=0; end endendendmodule3、按键扫描与消抖:module btn_scan( input clk, input rst, input3:0 btn, output reg3:0 btn_down );localparam1:0 s0=2b00, s1=2b01, s2=2b10; reg1:0 state;reg3:0 btn_reg;always(posedge c

9、lk,posedge rst)begin if(rst) begin btn_down=4b0000; state=s0; end else begin case(state) s0: begin btn_down=4b0000; if(btn) state=s1; else state=s0; end s1: begin if(cnt_done) begin if(btn) begin state=s2; btn_reg=btn; end else state=s0; end else state=s1; end s2:begin if(btn=4b0000) begin btn_down=

10、btn_reg; state=s0; end else begin btn_down=btn_down; state=s2; end end endcase endendreg20:0 cnt;reg cnt_done;always(posedge clk,posedge rst)begin if(rst) begin cnt=21b0; cnt_done=1b0; end else if(state=s1) begin cnt=cnt+1b1; if(cnt=21d2000000) begin cnt=21b0; cnt_done=1b1; end end else begin cnt=21

11、b0; cnt_done=1b0; endendendmodule4、主程序code:module main( input clk, input rst, input3:0 btn_down, output reg7:0 first_seg, output reg7:0 second_seg, output reg7:0 third_seg, output reg2:0 led ); localparam2:0 s0=3b000,s1=3b001,s2=3b010,s3=3b011,s4=3b100,s5=3b101; reg2:0 state;reg3:0 money0,money1;reg

12、3:0 price;reg4:0 change;reg3:0 change1,change0;always(posedge clk,posedge rst)begin if(rst) begin led = 3b000; money0 = 0; money1 = 0; change = 0; price = 0; state = s0; end else begin case(state) s0:begin led = 3b000; if(btn_down0 = 1) state = s1; else state = s0; end s1:begin led = 3b100; price =

13、1; money0 = 0; money1 = 0; change=0; if(btn_down0 = 1) state = s2; else if(btn_down3:1) state = s4; else state = s1; end s2:begin led = 3b010; price=2.5; money0 = 0; money1 = 0; change = 0; if(btn_down0 = 1) state = s3; else if(btn_down3:1) state = s4; else state = s2; end s3:begin led = 3b001; pric

14、e = 4; money0 = 0; money1 = 0; change = 0; if(btn_down0 = 1) state = s1; else if(btn_down3:1) state = s4; else state = s3; end s4:begin case(btn_down3:1) 3b001: money1 = 10) begin money1 = money1 + 1; money0 = money0 - 10; end else money1 = money1; end 3b100: begin money0 = 9) begin money1 = money1

15、+ 1; money0 = 0; end else money1 = money1; end endcase if(btn_down0 = 1) state = s5; else state= price) begin change = 20) begin change1 = 2; change0 = 10) begin change1 = 1; change0 = change - 10; end else begin change1 = 0; change0 = change; end end else change =5b01110; if(btn_down3:0) state = s0

16、; else state=s5; end endcase endend/译码always(posedge clk,posedge rst)begin if(state = s0) begin third_seg=8b0000_0011; second_seg=8b0000_0010; first_seg=8b0000_0011; end else if(state = s1) begin third_seg=8b0000_0011; second_seg=8b1001_1110; first_seg=8b0000_0011; end else if(state =s2) begin third

17、_seg=8b0000_0011; second_seg=8b0010_0100; first_seg=8b0100_1001; end else if(state =s3) begin third_seg=8b0000_0011; second_seg=8b1001_1000; first_seg=8b0000_0011; end else if(state =s4) begin case(money0) 4b0000: second_seg=8b0000_0010; 4b0001: second_seg=8b1001_1110; 4b0010: second_seg=8b0010_0100

18、; 4b0011: second_seg=8b0000_1100; 4b0100: second_seg=8b1001_1000; 4b0101: second_seg=8b0100_1000; 4b0110: second_seg=8b0100_0000; 4b0111: second_seg=8b0001_1110; 4b1000: second_seg=8b0000_0000; 4b1001: second_seg=8b0000_1000; endcase case(money1) 4b0000: third_seg=8b0000_0011; 4b0001: third_seg=8b10

19、01_1111; 4b0010: third_seg=8b0010_0101; 4b0011: third_seg=8b0000_1101; 4b0100: third_seg=8b1001_1001; 4b0101: third_seg=8b0100_1001; 4b0110: third_seg=8b0100_0001; 4b0111: third_seg=8b0001_1111; 4b1000: third_seg=8b0000_0001; 4b1001: third_seg=8b0000_1001; endcase first_seg=8b0000_0011; end else if(

20、state =s5) begin if(change = 5b01110) begin third_seg=8b0000_0011; second_seg=8b0110_0001; first_seg=8b0110_0001; end else begin case(change0) 4b0000: second_seg=8b0000_0010; 4b0001: second_seg=8b1001_1110; 4b0010: second_seg=8b0010_0100; 4b0011: second_seg=8b0000_1100; 4b0100: second_seg=8b1001_100

21、0; 4b0101: second_seg=8b0100_1000; 4b0110: second_seg=8b0100_0000; 4b0111: second_seg=8b0001_1110; 4b1000: second_seg=8b0000_0000; 4b1001: second_seg=8b0000_1000; 4he:second_seg=8b0110_0000; endcase case(change1) 4b0000: third_seg=8b0000_0011; 4b0001: third_seg=8b1001_1111; 4b0010: third_seg=8b0010_

22、0101; 4b0011: third_seg=8b0000_1101; 4b0100: third_seg=8b1001_1001; 4b0101: third_seg=8b0100_1001; 4b0110: third_seg=8b0100_0001; 4b0111: third_seg=8b0001_1111; 4b1000: third_seg=8b0000_0001; 4b1001: third_seg=8b0000_1001; endcase if(led1 = 1) first_seg=8b0100_1001; else first_seg=8b0000_0011; end end endendmodule三、实验结果:买货物2,价格2.5,投币15,找零12.5金币不够显示为错误深圳大学学生实验报告用纸四、实验结论: 通过此次实验加深了对数码管驱动以及按键扫描与消抖工作原理的的运用,对各个模块搭建系统也有了新的认识。指导教师批阅意见:成绩评定: 指导教师签字: 年 月 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。 2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2