网站大量收购独家精品文档,联系QQ:2885784924

数电研讨:用生产线控制电路.docx

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

数字电子 技术研讨报告 医用生产线控制电路 梁桥 张梦通信1009 【研讨要求】 设计一个医用生产线控制电路 能够设定每瓶药片数目;如每瓶50片; 每24瓶为一箱,计数到18箱停止。 要求用软件设计,并仿真; 2~3人一组,明确工作分工; 写出项目研究报告—项目方案,设计过程,仿真结果,要求每个人就自己负责的部分写出分报告,同时,要完成group的总报告。 【目录】 项目方案 设计过程(分报告) 仿真结果 心得体会 【项目方案】 首先我们根据老师所给要求以及提示将电路大致分为两部分:输入部分和计数部分。本来想以此分工,但是不久便发现输入部分的功能较多,而计数部分功能较为单一,设计的工作量分配不均匀。我们一起将电路再细分为了一个个模块。以模块为单位的设计流程图如下: 按键输入 按键输入 寄存器 BCD-二进制 转换器【高位】 BCD-二进制 转换器【低位】 7447 加法器 7447 计数器1(n) 计数器2(24) 计数器3(18) 计数脉冲 总计数器 7447 7447 7447 7447 7447 输入部分的主要功能是由一个键盘输入一个设定值,用于给计数部分设定初值,即每瓶所装药片的个数,经由寄存器选择十位和个位分别有两个数码管显示出来,在经由加法器相加得到二进制计数值。 输入部分主要由一个输入按键、一个寄存器(选择输入十位或各位数据)2个7段数码管和一个加法器组成。 计数部分是这个医用生产线电路的主要功能性部分。计数部分的作用是完成生产线的自动计数功能,即根据输入的片数进行分瓶,而后每24瓶自动计为一箱,计到18箱停止。 计数部分主要由一个n模计数器、一个模24计数器、一个模18计数器构成装配计数器,由五个模十计数器构成总计数器,再输出到数码管。 这些器件都是由VDHL语言实现的,这个语言只需要设定输入输出端口,并赋予相应功能即可,不注重内部结构只关心输入输出功能,工程性很强。在数字电路设计仿真上十分常用。结合quartus ii软件可以根据情况产生一个元件,并且画出波形图,只需要把相应的管脚加入列表即可,节省了很多的时间。Quartus ii 这一软件还有许多很强大的功能,也可以用固定的元件搭造组合器件。这个软件让我们在仿真时感觉十分简洁方便。 在具体设计时,我们以模块为单位进行了分工,其中键盘、寄存器和BCD-二进制转换器主要由张梦皓设计,加法器、分计数器和总计数器主要由梁桥设计。 【设计过程】 张梦皓:键盘、寄存器和BCD-二进制转换器 梁桥: 加法器、三个分计数器和总计数器 输入键盘 首先是输入键盘元件,我们采用的是4*4的一个键盘如下图所示,根据案件的行数和列数确定输入,再输出想对应数字。 比如我按下第一行第一列的数字,则输出为1,而第一行第二列就输出2。我还设定A代表着十位,B代表着个位,输入时应先按下A再输入十位,然后按下B 再输入个位。同时我还规定D 为清零键。 程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ? ENTITY KEYBOARD IS PORT( //定义管脚 CLK: IN STD_LOGIC; ROW: IN STD_LOGIC_VECTOR(3 DOWNTO 0); //行向量 COL: IN STD_LOGIC_VECTOR(3 DOWNTO 0); //列向量 DATA: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); F :OUT STD_LOGIC; //给寄存器判断是否有输入 EN1: OUT STD_LOGIC; EN2: OUT STD_LOGIC; EN3: OUT STD_LOGIC); END ENTITY KEYBOARD; ? ARCHITECTURE RTL OF KEYBOARD IS SIGNAL MID: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL NUM: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,ROW,COL) BEGIN MID=(ROWCOL); IF (CLKEVENT AND CLK=1) THEN CASE MID IS // WHEN NUM=0001; //第一行第一列为1 WHEN NUM=0010; //第一行第二列为2 WHEN NUM=0011; WHEN NUM=0100; WHEN NUM=0101; WHEN NUM=0110; WHEN

文档评论(0)

泰山之颠 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档