自动售卖邮票机设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《EDA技术实用教程》

自动售邮票机

设计报告

题目:自动售邮票机课程设计

学院:

专业:

班级:

姓名:

学号:

指导教师:

题目要求

设计一个自动售邮票机,用开关电平信号模拟投币过程,每次投一枚硬币,机器能自动识别硬币金额只有1元和5角两种。设定票价为2.5元,每次售一张票。

购票时先投入硬币,当投入的硬币总金额达到或超过票的面值时,

机器发出指示,这时可以按取票键取出票。如果所投硬币超过票的面值则会提示找零钱,取完票以后按找零键则可以取出零钱。

其他要求:

1)通过LCD2004显示;

2)能够选择不同面值的邮票。

1.题目分析

本次实验所要完成的任务是实现邮票的自动销售。机器有2.5元和3元的两种面值邮票,首先进入选票阶段,需要选择所购邮票的面值,用拨码开关L8选择需要购买的邮票面值。选定后进入投币阶段,有四个拨码开关,组成7种状态。接着进入确认阶段,查看输入金额

是否足够,若不够点亮LED1灯提示“金额不足”。当输入金额达到所需票价时,点亮LED2提示邮票输出。当输入金额超过所需票价时,点亮LED2、LED3提示邮票输出,找零。

四个拨码开关状态代表:

S0:0000 输入0.0元

S1:0001 输入0.5元

S2:0010 输入1.0元

S3:0011 输入1.5元

S4:0100 输入2.0元

S5:0101 输入2.5元

S6:0110 输入3.0元

2、原理框架

3、程序

程序简介:

1、变量含义:clk时钟

choose 选择邮票面值

k1 k2 k3 k4 四个拨码开关输入金额键

en 使能

dat八位数据

ok 可以取票

warning 警告金额不足

change 找零

2、主程序如下:

//利用verilog驱动LCD2004

//本实验是用LCD2004显示英文。(LCD带字库)

modulelcd2004(choose,clk,k1,k2,k3,k4,rs,rw,en,dat,ok, waring,change);

input choose,clk,k1,k2,k3,k4;//系统时钟输入20MHz

output [7:0] dat; //LCD的8位数据口

output rs,rw,en; //LCD的控制脚

output ok,waring,change;

reg e;

reg [7:0] dat;

regrs;

reg [15:0] counter;

reg [5:0] current,next;

regclkr;

reg [1:0] cnt;

regx,y,z;

always @(posedgeclk)

begin

counter=counter+1'b1;

if(counter==16'h000f)

clkr=~clkr;

end

always @(posedgeclkr)

begin

current=next;

case(current)

set0: begin rs<=0; dat<=8'h38; next<=set1; end //* 设置8位格式,4行,5*8

set1: begin rs<=0; dat<=8'h0C; next<=set2; end

//*整体显示,关光标,不闪烁*/

set2: begin rs<=0; dat<=8'h06; next<=set3; end //*设定输入方式,增量不移位*/

set3: begin rs<=0; dat<=8'h01; next<=set41; end //*清除显示*/

set41: begin rs<=0; dat<=8'h80; next<=dat0; end

//显示第一行

dat13: if((k1==0)&&(k2==0)&&(k3==0)&&(k4==0))

begin if(choose==0)

Begin rs<=1; dat<="2"; next<=dat14;end

else if(choose==1)

beginrs<=1; dat<="3"; next<=dat14; end

end

else if((k1==0)&&(k2==0)&&(k3==0)&&(k4==1))

begin if(choose==0)

beginrs<=1; dat<="2"; next<=dat14;end

else if(choose==1)

beginrs<=1; dat<="3"; next<=dat14; end

end

else if((k1==0)&&(k2==0)&&(k3==1)&&(k4==0))

begin if(choose==0)

beginrs<=1; dat<="2";

next<=dat14;end

else if(choose==1)

beginrs<=1; dat<="3"; next<=dat14; end

end

else if((k1==0)&&(k2==0)&&(k3==1)&&(k4==1))

begin if(choose==0)

beginrs<=1; dat<="2"; next<=dat14;end

else if(choose==1)

beginrs<=1; dat<="3"; next<=dat14; end

end

else if((k1==0)&&(k2==1)&&(k3==0)&&(k4==0))

begin if(choose==0)

beginrs<=1; dat<="2"; next<=dat14;end

else if(choose==1)

beginrs<=1; dat<="3"; next<=dat14; end

end

else if((k1==0)&&(k2==1)&&(k3==0)&&(k4==1))

相关文档
最新文档