北邮数电实验下 简易自动售货机 实验报告.docx

北邮数电实验下 简易自动售货机 实验报告.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮数电实验下 简易自动售货机 实验报告

2013~2014第一学期 数字电路与逻辑设计 实验报告 设计课题及任务要求 1.设计课题:简易自动售货机 2.任务要求: 设计一个简易的自动售货机,能够完成钱数处理、找零、显示、退币等功能。 基本要求:? ·用 2 个数码管(disp5,disp4)显示钱数,以元为单位。用 3 个按键(btn0,btn1,btn2)分别表示一元、五元、十元,每按一次按键,增加一次相应的钱数,上限 99元。 ·再用 3 个按键(btn3,btn4,btn5)分别对应 3 种商品,其中,商品甲售价 3 元、商品乙售价 8 元、商品丙售价 12 元; ·?买东西时,先输入钱币,再按对应的商品键。每按一次商品键,钱数要相应地减少, 同时蜂鸣器提示购买成功。剩余钱数大于 3 元可继续按商品键再次购买;当剩余钱数少于 3 元时,表示钱数的数码管 disp5,disp4 显示为零, 同时用数码管 disp0 显示退出的钱数。 ·买东西时,按下商品键,若输入的钱数少于商品的价格,表示钱数的数码管 disp5, disp4 显示为零,同时用数码管(disp1、disp0)显示退出的钱数,并用蜂鸣器表示购买失败。? 按下商品键时,用数码管 disp2 表示当前购买的商品,1 代表商品甲,2 代表商品乙,3 代表商品丙。? 用 btn7 做为退出功能键,退出键可以随时按下,按下后,数码管(disp5,disp4)显示为零,同时数码管(disp1、disp0)显示退出的钱数,表示结束购买,钱款全部退出。 提高要求:? ·用点阵设计显示投币动画、出货动画,购买成功/失败动画;? · 允许随时输入钱币,购买时,钱款不足有声光报警并等待追加钱币或选择别的商品; 系统设计 设计思路 根据程序实现的功能,可将其分为分频、防抖、逻辑运算、数码管显示、点阵图形显示五大模块。将其串联起来即可完成整体功能。 其中,分频模块将芯片50M的时钟信号分为各模块所需的不同频率的时钟。防抖模块用增加按键延时以避免长按按键执行多次指令的情况,逻辑运算模块对余额进行加减计算实现要求中加钱、买东西等功能。数码管显示模块把运算模块的结果通过数码管进行显示。在购买失败时,使能点阵图形显示模块及蜂鸣器,令点阵显示“X”来提示错误,同时蜂鸣器响。 程序框图 开始 结束 余额清零 余额增加相应钱数 多余钱退出 余额显示99 显示退出钱数 余额减少 相应钱数 是 是 否 否 BTN7 BTN(3~5) BTN(0~2) 判断按键 点阵显示X 蜂鸣器响 判断余额 是否足够 判断余额是否99 分块设计 以下五个模块通过敏感信号串联,实现完整功能。 ·分频模块: 分频器的原理是对输入的时钟信号脉冲进行计数,(占空比为50%时),在计数达到模值一半时,输出信号翻转,从而完成输出频率比输入信号低的脉冲,即分频。在本实验中,防抖模块需要用到200Hz时钟,数码管需要50KHz时钟,点阵需要2.5MHz时钟。通过设置时钟翻转时temp的值来改变分频比N。[N=2*(temp+1)] ·防抖模块: 在程序执行过程中会持续扫描按键输入,当按键持续按下时则会进行多次信号输入,但实际情况只按下按键一次。为避免此问题,需要使按键信号输入到之后程序前通过防抖模块,即用一个模20计数器计数时钟周期,在一个周期内只输出一个有效电平。 ·逻辑运算模块: 此模块是算法的核心模块。以200Hz时钟和七个按键作为输入,设置变量sum和money0、money1(余额的各位和十位)。当检测到btn0~btn2之一按下时,根据对应按键判断sum,若大于等于99、95、90,则余额显示99,若小于该数,sum加上1、5、10元(99元封顶)。同理,btn3~btn5之一按下时,判断sum,若大于等于3,扣除相应钱数,若小于3,退出钱数sum赋值给disp0。同时,购买商品种类1、2、3赋值给disp2。当btn7按下时,disp1和disp0显示sum,同时disp2、disp4和disp5清零。其中,数码管的赋值用sum做除法及取余后得到的money1和money0实现。 ·数码管显示模块: 首先使用分频系数为1000的分频器产生50KHz的时钟。用模5计数器产生5个计数状态,决定数码管接通的电路和二极管点亮的数字,在时钟频率很高时可以同时显示5个数字。将逻辑运算模块中赋值过的disp0、disp1、disp2、disp4和disp5赋值给DOUT7,数码管选通信号赋值给CatL。 ·点阵图形显示模块: 首先使用分频系数为20的分频器产生2.5MHz的时钟。r为模8计数器,产生8个计数状态,决定点阵选通的行和该行中点亮的点(行低电平选通,列高电平选通)。当扫描频率达到一定大小时,8x8点阵会同时点亮。 仿真波形及波形分析

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档