精华内容
下载资源
问答
  • 电气控制电路图——(2)分析

    千次阅读 2020-05-24 11:18:58
    本文主要总结了在学会识电气控制电路图后怎么对电气控制电路图进行分析。详细写了电气原理图阅读分析的方法和步骤,电力拖动特点及控制要求、主电路以及控制电路的分析,具体以C650车床为例来进行介绍。

    电气控制电路图——(2)分析

    一、电气原理图阅读分析的方法和步骤

    (1)分析主电路分析和设计电气控制电路都要从主电路入手, 主电路的作用是保证整机拖动要求的实现。从主电路的构成可 分析出电动机或执行器的类型、工作方式及基本控制电路。根据每台电动机和电磁阀等执行电器的控制要求去分析控制内容 ,要求明确对执行电器有哪些动作,比如起动、制动、换向及 调速等。
    (2)分析控制电路 主电路的控制要求是由控制电路来实现的 。分析控制电路通常采用查线读图法,其基本依据是电流的流 动途径,即先找到一个电路入口,通常是一个按钮或者是开关 ,按下按钮或者是开关后,沿着通电导线寻找哪些电器得电并 引起其它电器及机械设备发生动作的次序,通过对电器动作的 全面了解推断整个控制系统的功能。
    (3)分析辅助电路 辅助电路包含执行元件的工作状态显示、 电源显示、参数测定、照明和故障报警等部分。辅助电路中很 多部分是由控制电路中的元件控制的,在分析辅助电路时,还 要对照控制电路进行分析。
    (4)分析联锁和保护环节 为了提高生产机械的可靠性和安全性,除了合理地选择拖动控制方案以外,在控制电路中还应该设置电气保护装置和电气联锁。在电气控制电路的分析过程中 ,电气联锁和电气保护环节的分析是很重要的一部分内容。
    (5)分析特殊控制环节在某些控制电路中,还设置了一些与主电路、控制电路关系不密切且相对独立的某些特殊环节。如产品技术装置、自动检测系统等。这些部分往往自成一个小系统 ,其读图和分析法可参照上述分析过程,灵活运用所学过的电子技术、变流技术、自控系统、检测与转换等知识逐一分析。
    (6)总体检查 逐步分析了每一局部电路的工作原理以及各部 分之间的控制关系之后,还要用“集零为整”的方法了解整个 线路,查看是否有遗漏。特别要从整体角度去进一步检查和理 解各控制环节之间的联系,以达到清楚地了解原理图中每一个 电器元件的作用、工作过程以及主要参数。

    二、C650卧式车床的主要结构和运动形式

    C650卧式车床是机床中应用最广泛的一种,属于中型车床 。机床的结构形式如图所示。 该车床有两种主要运动:一种是安装在床身主轴箱中的主 轴转动,称为主运动;另一种是溜板箱中的溜板带动刀架的直 线运动,称为进给运动。
    在这里插入图片描述

    刀具安装在刀架上,与滑板一起随溜板箱沿主轴轴线方向实现进给移动,主轴的转动和溜板箱的移动均由主电动机驱动。 由于加工的工件比较大,加工时其转动惯量也较大,需停车 时不容易立即停止转动,因此必须有停车制动的功能,较好的停车制动是采用电气的制动方法。 为了加工螺纹等工件,主轴需要正、反转,主轴的转速应随工件的材料、尺寸、工艺要求及道具的种类不同而变化,所以要求在相当宽的范围内可进行速度调节,这个由机械传动实现。此外,为减轻工人的劳动强度和节省辅助工作时间,还要求带动刀架移动的溜板能够快速移动。

    三、电力拖动特点及控制要求

    从以上车床的加工工艺出发,对拖动控制有以下要求:
    (1)主电动机M1完成主轴主运动和溜板箱进给运动的驱动, 主电动机采用全压直接起动方式。电动机可正、反两个方向旋 转,并可进行正、反两个旋转方向的电气停车制动。另外,为 加工调整方便,还应该具有点动控制功能。
    (2)为了防止刀具和工件温度过高,延长刀具寿命,电动机 M2拖动冷却泵,在加工时提供切削液,采用直接起动及停止方式,并且为连续工作方式。
    (3)主电动机和冷却泵电动机应该具有必要的短路和过载保护。
    (4)为了提高生产效率、减轻工人劳动强度,拖板的快速移动 由电动机M3单独拖动,还可根据需要随时进行手动控制起停。
    (5)应具有必要的联锁控制、安全的局部照明装置。

    C650卧式车床电气原理图如图所示,使用的电器元件符号与功能说明见表。

    四、电气控制电路分析
    在这里插入图片描述
    C650车床电气元件符号及功能说明
    在这里插入图片描述
    五、主电路分析

    主电路中有三台电动机,隔离开关QS将380V的三相电源引 入。电动机M1的电路接线分为三部分。
    第一部分由正转控制交流接触器KM1和反转控制交流接触器 KM2的两组主触点构成电动机的正、反转接线;
    第二部分为电流表PA经电流互感器TA接在主电动机M1的主回路上,以监视电动机绕组工作时的电流变化。
    第三部分为串联电阻控制部分,R为限流电阻,在主轴点动控制时,为防止连续的起动电流造成电动机过载;在停车反接制动时,又起到限制过大的反接制动电流的作用。

    速度继电器KS的速度检测部分与电动机的主轴同轴相连, 在停车制动过程中,当主电动机转速低于KS的动作值时,其常开触点可将控制电路中的反接制动的相应电路切断,完成制动停车。FR1是主电动机过载保护用的热继电器。

    冷却泵电动机M2由交流接触器KM4控制其主电路的接通和断 开,FR2为M2过载保护用热继电器;快速移动电动机M3由交流接 触器KM5控制,由于M3电动机短时运转,所以不需要设置热继电器。

    五、控制电路分析

    ①主电动机正、反转起动与点动 当正转起动按钮SB3按下时, 其两常开触点同时闭合,常开触点的闭合使得交流接触器KM3的 线圈和时间继电器KT的线圈得电,经延时断开后,电流表接入 电路正常工作;

    KM3的主触点将主电路中的限流电阻短接,其辅助动合触点同时将中间继电器KA的线圈电路接通,KA的常闭触点断开将停车制动的基本电路切除,其动合触点与SB3的动合触点均在闭合状态,控制主电动机的交流接触器KM1的线圈得电并自锁,其主 触点闭合,电动机正向直接起动。KM1的自锁回路由它的常开辅 助触点和KA的常开触点组成,来维持KM1的通电状态。反向直接 控制过程与其相同,只是起动按钮为SB4。

    SB2为主电动机点动按钮。按下SB2点动按钮,直接接通KM1的线圈电路,电动机M1正向直接起动,注意这时KM3线圈并没有接通,因此其主触点不闭合,限流电阻接入主电路限流,防止连续的起动电流造成电动机过载,保证电路设备正常工作;其辅助动合触点不闭合,KA线圈不能得电,从而使KM1线圈电路不能形成自锁,松开按钮SB2,M1停转,实现了主电动机串联电阻限流的点动控制。

    ②主电动机反接制动控制电路C650卧式车床采用反接制动进行停车制动。停车按钮按下 后开始制动过程。当电动机转速接近零时,速度继电器的触点打开,结束制动。 主电动机是双向可逆运行,下面以电动机正转时进行停车制动的过程为例,说明制动的工作原理。

    KS1和KS2分别为速度继电器KS的正转和反转常开触点。当 电动机正常正向运转时,速度继电器KS的动合触点KS1闭合,制 动电路处于准备状态,按下停车按钮SB1,切断控制电源,KM1 、KM3、KA线圈均失电,此时KA动断触点恢复原状闭合,与KS1 触点共同将反转交流接触器KM2的线圈电路接通,电动机M1接入 反相序电流,反向起动转矩将平衡正向惯性转动转矩,强迫电 动机迅速停车。当电动机速度降低到速度继电器的动作值时, 速度继电器触点KS1复位打开,切断KM2的线圈电路,完成反接 制动。进行反接制动。

    ③刀架的快速移动和冷却泵电动机的控制 刀架快速移动是由转动刀架手柄压动位置开关SQ,使电动 机M3的接触器KM5的线圈得电,KM5的主触点闭合,M3电动机起 动运行,经传动系统驱动溜板带动刀架快速移动。 起动按钮SB6和停止按钮SB5控制接触器KM4线圈的通断,来 完成对冷却泵电动机M2的控制。

    ④电流表PA保护电路 虽然电流表PA接在电流互感器TA回路 里,但主电动机M1起动时对它的冲击仍然很大。为此,在线路中设置了时间继电器KT进行保护。当主电动机正向或反向起动 后,KT通电,PA就被KT延时常闭触点短路,延时时间到后,才有电流指示。

    ⑤辅助电路(即照明电路和控制电源) 控制变压器TC二次侧输 出36V和110V电压,分别作为车床低压照明和控制电路电源。EL 为车床的低压照明灯,由开关SA控制。

    六、C650卧式车床电气控制电路的特点
    (1)主轴与进给电动机M1主电路具有正、反转控制和点动控制的功能,并设有监控电动机绕组工作电流变化的电流表和电流 互感器。
    (2)主电动机的制动采用电气反接制动,利用速度继电器按速 度原则进行电动机正、反转的反接制动。
    (3)控制电路中由于电器元件很多,通过控制变压器TC将电器 元件与三相电网进行隔离,提高了操作和维护的安全性。
    (4)中间继电器KA起着扩展接触器KM3触点的作用。在电气线 路设计时要考虑电器元件的触点数量。

    展开全文
  • 电磁阀工作原理及控制电路设计

    千次阅读 2018-11-14 21:36:18
    电磁阀是用电磁控制的工业设备,是用来控制流体的自动化基础元件,属于执行器;并不限于液压,气动。在我们日常生活中应用十分广泛,首先我们先对电磁阀有个初步的认识,电磁阀是由电磁线圈和磁芯组成,是包含一个或...

    电磁阀是用电磁控制的工业设备,是用来控制流体的自动化基础元件,属于执行器;并不限于液压,气动。在我们日常生活中应用十分广泛,首先我们先对电磁阀有个初步的认识,电磁阀是由电磁线圈和磁芯组成,是包含一个或几个孔的阀体。当线圈通电或断电时,磁芯的运转将导致流体通过阀体或被切断,以达到改变流体方向的目的。

    电磁阀工作原理:电磁阀里有密闭的腔,在的不同位置开有通孔,每个孔都通向不同的油管,腔中间是阀,两面是两块电磁铁,哪面的磁铁线圈通电阀体就会被吸引到哪边,通过控制阀体的移动来档住或漏出不同的排油的孔,而进油孔是常开的,液压油就会进入不同的排油管,然后通过油的压力来推动油缸的活塞,活塞又带动活塞杆,活塞竿带动机械装置动。这样通过控制电磁铁的电流就控制了机械运动。

    电磁阀按原理分为:直动式、分布直动式、先导式三大类;按结构分为膜片式电磁阀和活塞式电磁阀两类。

    直动式电磁阀工作原理: 
    通电时,电磁线圈产生电磁力把关闭件从阀座上提起,阀门打开;断电时,电磁力消失,弹簧把关闭件压在阀座上,阀门关闭。


    分布直动式电磁阀工作原理: 
    它是一种直动式和先导式相结合的原理。常闭式---当入口与出口没有压差时,通电后电磁力直接打开先导孔连接主阀活塞依次向上提起,阀门打开;当入口与出口达到启动压差时,通电后,电磁力先打开先导孔,主阀活塞上腔压力下降,从而利用压差和电磁力拉动主活塞,阀口打开;断电时,靠弹簧复位关闭先导孔,主活塞上腔增压,推动主活塞向下移动,阀关闭。常开式与常闭式相反。

     


    先导式电磁阀工作原理: 

    常闭式---通电时,电磁力吸合先导孔阀芯,先导孔打开,主阀活塞上腔压力下降,在主活塞上腔和下腔形成上低下高的压力,这样下腔压力推动主活塞打开阀门;断电时,弹簧力复位关闭先导孔,主活塞上腔增压,在主活塞上腔和下腔形成上高下低的压力,介质压力和弹簧力推动主活塞,阀关闭。常开式与常闭式相反。


    膜片式电磁阀工作原理:

    通电时,电磁力把先导孔打开,上腔室压力迅速下降,在关闭件周围形成上低下高的压差,流体压力推动关闭件向上移动,阀门打开;断电时,弹簧力把先导孔关闭,入口压力通过旁通孔迅速腔室在关阀件周围形成下低上高的压差,流体压力推动关闭件向下移动,关闭阀门。

    活塞式电磁阀工作原理:

    线圈通电后由于吸力作用,动铁芯下移,把副阀阀塞压下,副阀关闭,主阀阀杯内压力上升,当压力升到一定值时,主阀阀杯的上下压差一样,由于电磁力作用,动铁芯失去主阀阀杯下,压紧主阀阀座,阀门关闭。线圈断电时,电磁吸力为零,副阀阀塞和支铁芯由于弹簧作用向上提起,副阀打开,主阀阀杯上的流体经副阀流走,减少了作用在主阀阀杯上的压力,当主阀阀杯上的压力减少到一定值时,利用压差把主阀阀杯推起,主阀打开,介质流通。


    控制电路设计

    电磁阀控制电路:为了智能化地实现随时随地控制电磁阀的开关,主控芯片通过P0_1输出所需波形,通过下面的电路控制电磁阀的开合。电磁阀控制电路如图所示。

      
      当P0_1输出为高电平时,三极管处于饱和状态,场效应管IRF9530作为电子开关,IRF9530加了驱动电压,漏极获得放大电流,电磁阀闭合;当P0_1输出为低电平时,三极管的基极电压为0,使三极管处于截止状态,场效应管也不符合导通条件,也处于截止状态,电磁阀断开。

    二极管,作为三极管,或者MOSFET关断后,电磁阀,感性负载能量的泄放途径。

     

     

    展开全文
  • 单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个...

    文末下载完整资料

                      1 引言
      在日新月异的21世纪里,电子产品得到了迅速发展。许多电器设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型电器产品具有便携实用,操作简单的特点。
      本文设计的汽车尾灯控制电路属于小型智能电子产品。利用单片机进行控制,实时时钟芯片进行记时,外加掉电存储电路和显示电路。此设计具有相当重要的现实意义和实用价值。
                      2 系统概述
      本设计以AT89S52单片机为核心,构成单片机控制电路,完成对它们的自动调整和掉电保护。人机接口由四个按键来实现,用这四个按键对汽车左转,右转,停车和检测进行控制。。软件控制程序实现所有的功能。整机电路使用+5V稳压电源,可稳定工作。系统框图如图2-1所示,其软硬件设计简单,可广泛应用于长时间工作的系统中。
    在这里插入图片描述
                      3 方案选择
      由于汽车尾灯控制电路的种类比较多,因此方案选择在设计中是至关重要的。正确地选择方案可以减小开发难度,缩短开发周期,降低成本,更快地将产品推向市场。
    3.1 方案1——基于AT89S52单片机的汽车尾灯控制电路设计
      直接用AT89S52单片机来实现汽车尾灯控制电路设计。AT89S52是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦写1000余次。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
    用单片机来实现汽车尾灯控制电路设计,无须外接其他芯片,充分利用了单片机的资源。
    3.2 方案2——基于电子元件的汽车尾灯控制电路设计
      用电子元件接的汽车尾灯控制电路,电路复杂,接点较多,电路稳定性差。
    在这里插入图片描述
                      4 系统硬件电路的设计
      按照系统设计功能的要求,初步确定设计系统由主控模块、键盘接口模块、显示模块共3个模块组成,电路系统构成框图如图4-1所示。主控芯片使用52系列AT89S52单片机,
    在这里插入图片描述


    全套资料免费下载:
    关注v-x-公-众-号:【嵌入式基地
    后-台-回-复:【毕业设计】 即可获资料
    回复【编程】即可获取
    包括有:C、C++、C#、JAVA、Python、JavaScript、PHP、数据库、微信小程序、人工智能、嵌入式、Linux、Unix、QT、物联网、算法导论、大数据等资料
    在这里插入图片描述

    展开全文
  • 今天我将介绍的是Verilog的使用用法,然后如何用Verilog编写一个简单的小项目,项目的内容如标题所示——“数显LED的亮度控制电路”,本文章大致结构如下。 介绍Verilog的基本语法 介绍Verilog的基本底层电路 总结...

    前言:

    今天我将介绍的是Verilog的使用用法,然后如何用Verilog编写一个简单的小项目,项目的内容如标题所示——“数显LED的亮度控制电路”,本文章大致结构如下。

    • 介绍Verilog的基本语法
    • 介绍Verilog的基本底层电路
    • 总结归纳初学者可能犯得错误,并进行纠正

    当我们对Verilog有了一定的了解后,就开始编写今天的项目了,思路如下:

    • 项目任务的解析
    • 设计思路
    • 编写代码
    • 成果展示

    希望大家可以从易到难,慢慢的去理解、并熟练的运用这种语言。
    那么任务开始了。

    第一部分:Verilog硬件描述语言语法总结

    一、摘录10条基本语法

    1、module:模块的建立

    module addr (a, b, cin, count, sum);  
    endmodule 
    

    每个模块以module开始,必须以endmodule结尾

    2、input:数据的输入

    input [2:0] a; 
    

    使用input函数输入一个值,且位长为2-0+1=3

    3、output:数据的输出

    output [2:1] sum;
    

    使用output函数输出一个值,且位长为2-1+1=2

    4、assign:数据赋值

    assign {count,sum} = a +b + cin;
    

    注意:对于assign必须为wire型,并且{ }具有连接作用

    5、assign:数据选择赋值

    assign equare = (a == b) ? 1:0 ;
    

    当满足(a==b)时,equare=1,反之为0

    6、always:条件触发

    always@(posedge clk or negedge key)begin 
    end
    

    如图为条件触发,当clk为高电平,且key为低电平时,满足条件进入always程序

    7、wire ,reg:定义数据类型

      wire [3:0]q; 
      reg  [4:0]q2;
    

    定义一个数据类型为wire且长度为4的q,和数据类型为reg长度为5的q2

    8、if else:条件选择语句

      if (a>b)a=0;
      else a=1;
    

    当满足括号内的条件时,则运行后面的程序,否则则运行else的程序。

    9、case:多重条件选择语句

     case (key) begin 
     1:a=1;break;
     2:b=1;break;
     default :c=1;break;
     endcase
    

    当key满足1,2,3的条件时,分别执行相应的语句,结尾记得用endcase结尾

    10、task:与函数类似,用task进行包装

    task q_sub();
    begin 
    q=1;
    end
    endtask
    

    task的作用是,可以不必把所有的代码写到一个always中去,这样的代码看起来更加美观

    二、摘录10条基本底层电路

    1、数据选择器

    module mux2(out,a,b,sel);
    input a,b,sel;    
    output out;    
    reg out;
    always @(sel or a or b) begin
        if (sel)  out = a;  else out = b;
    end
    endmodule;	
    

    2、数据比较器

    module compare(a,b,y);
    input [2:0] a,b;  
    output y;  
    reg y; 
    always @ (a or b)  begin
        if (a < b) y = 1;  
    	else y = 0;
    end  
    endmodule
    

    3、二进制计数器

    module Bin_count(clr,clk,q);
    input  clk,clr;
    output [3:0]q;
    reg    [3:0]q;
    always @(negedge clk or posedge clr) begin
        if(clr) q=0;
        else q=q+1;
    end
    endmodule
    

    4、100分频电路

    module div100_clk(clk,q);
    input  clk;    
    output q;    
    reg [5:0]cunt;    
    reg q;
    always @(posedge clk)  begin
        if(cunt<49) begin cunt=cunt+1; q=q; end
        else begin cunt=0;q=!q;end
    end
    endmodule
    

    5、10进制计数器

    module counter9(clr,clk,q);
    input  clk,clr;
    output [3:0]q;
    reg    [3:0]q;
    always @(posedge clk or negedge clr) begin
    	if(!clr) q=0;
    	else if(q==9) q=0;
    	else q=q+1;
    end
    endmodule
    

    6、加法器

    module _2b_adder(IA,IB,SUM,C);
    input [1:0]IA,IB;
    output [1:0]SUM;
    output C;
    assign {C,SUM}=IA+IB;
    endmodule
    

    7、可使能3-8译码器

    module _38_decode(EN,A,Y);
    input EN;
    input [2:0]A;
    output [7:0]Y;
    assign Y=(!EN)?8'B1111_1111 :
    (
    	(A==0)?8'B1111_1110 :
    	(A==1)?8'B1111_1101 :
    	(A==2)?8'B1111_1011 :
    	(A==3)?8'B1111_0111 :
    	(A==4)?8'B1110_1111 :
    	(A==5)?8'B1101_1111 :
    	(A==6)?8'B1011_1111 :  8'B0111_1111
    );
    endmodule
    

    8、触发器设计

    module dff(q,data,clk);
    output q;
    input data,clk;
    reg q;
    always@(posedge clk)
    	begin 
    		q<=data;
    	end
    endmodule
    

    9、电平敏感型锁存器

    module latch(q,data,clk);
    output q;
    input data,clk;
    	assign q=clk?data:q;
    endmodule 
    

    10、三态输出驱动器

    module trist(out,in,enable);
    output out;
    input in,enable;
    	assign out=enable?in:’bz;
    endmodule
    

    三、错误总结

    1、module后面缺少一个“;”,记得在每个module后面添加“;”。

    2、对output的类型应该明确,reg或是wire。
    在这里插入图片描述
    在后面加一句reg cko; 给output一个明确的类型。

    3、always后面缺少必要的end
    在这里插入图片描述
    找到相应的语句,添加一个end。

    4、类型错误,always里面应该为reg型
    在这里插入图片描述
    将tag的类型改为reg型,因为是在always里面使用的。

    5、模块的调用错误,调用是用“.”调用的,不能漏掉
    在这里插入图片描述
    改div_clk U0(.clk(clk), .fs(1), .cko(clk_up));

    6、一个变量不能在多个always里面赋值
    在这里插入图片描述
    改:把两个always的变量赋值放到一个always里面去。

    7、中文和英文符号的切换,圆角和半角
    在这里插入图片描述
    注意区别“;”和“;”

    8、在module里面申明,在模块中却没有用input输入。
    在这里插入图片描述
    module dir(clk,rst);里面的都必须在模块中申明是input或是output,而不能直接使用。
    9、top文件中的U3重复
    在这里插入图片描述
    改:按照顺序重新排列。

    10、定义变量的范围
    很多时候我们会忽略变量的定义范围,这样导致的问题是,举例数字钟只会显示010101,这就是我们忘记定义变量范围的后果

    第二部分:自选题设计报告

    选题名称:数显LED亮度控制电路

    一、任务解析

    数显LED亮度控制电路,实验功能:首先能够通过我们的按键控制灯的亮度,然后灯的亮度用数码管显示出来。
    本次实验的要求:首先按键需要消抖,然后能够明显的观察到灯亮度的变化,最后亮度的变化可以通过数字直接的显示出来。

    二、设计思路

    在这里插入图片描述
    首先通过原理图可知,我们需要按键及消抖、数码管显示、分频器、循环计数器、计数器、比较器这些功能函数。
    经过进一步细化,流程图如下。
    在这里插入图片描述
    设计思路:通过比较99循环计数器每次通过99计数器的时间来控制LED的亮度变化,例如我们设置99计数器为80,且通过比较器设置小于80灯亮,那么99循环计数器小于80的值为0-79,同时灯亮的时间也为80个,这样灯就会很亮。
    反之当我们设置99计数器很小,假设为20那么每次99循环计数器通过小于20的时间为0-19共20个时间单位,这样的话LED大多数时间属于不亮的状态,LED就会很暗。

    三、实施步骤

    1、按键消抖

    module key_clean(clk,key_in,key_out);
    input clk;      //1000Hz时钟
    input key_in;   //物理按键输入
    output key_out;//去抖之后输出
    reg     [3:0]c; //计数变量
    reg key_out;
    always @(posedge clk) begin
        if(key_in) begin 
            if(c<10) c=c+1; //计数延迟消抖        
        end 
        else begin
            if(c>0) c=c-1;  
        end
        
        if(c>9) key_out=1;
        else if(c<1) key_out=0;
        else key_out=key_out;
    end
    endmodule 
    

    2、分频电路

    module div_clk(clk,fs,cko);
    input clk; //输入时钟频率clk=50M
    input [31:0]fs;
    output cko; //输出时钟cko 
    reg cko;
    parameter N=50_000_000; //定义累加器上限,需要与基准频率f0相等
    reg [31:0]ACC; //定义32位累加器ACC
    always @(posedge clk) begin //累加器在clk上升沿触发完成累加
        if(ACC<N/2-1) ACC = ACC + fs; //累加器按参数步进值累加,注意不是+1
        else begin //满足累加器溢出条件
            ACC=0;
            cko=!cko; //这里cko自身二分频,所以上一句N需要除以2
        end
    end
    endmodule
    

    3、数码管显示

    module seg_drive (clk,DA,DB,DC,DD,DE,DF,DG,DH,a,b,c,d,e,f,g,p,sel); 
    input clk;//数码管扫描时钟
    input [3:0]DA,DB,DC,DD,DE,DF,DG,DH;
    output a,b,c,d,e,f,g,p;
    output [7:0]sel;
    
    reg [2:0]scan;
    reg[7:0]sel;
    reg [3:0]num;
    
    always @(posedge clk) begin
        scan=scan+1;
        case(scan) //3-8译码器 和 数据选择器
            0: begin sel=8'b1111_1110; num=DA; end
            1: begin sel=8'b1111_1101; num=DB; end
            2: begin sel=8'b1111_1011; num=DC; end
            3: begin sel=8'b1111_0111; num=DD; end
            4: begin sel=8'b1110_1111; num=DE; end
            5: begin sel=8'b1101_1111; num=DF; end
            6: begin sel=8'b1011_1111; num=DG; end
            7: begin sel=8'b0111_1111; num=DH; end
        endcase
    end
    
    assign {a,b,c,d,e,f,g,p} = //字符译码器
        (num==0)? 8'B0000_0011:        //"0"
        (num ==1)? 8'B1001_1111:       //"1"
        (num ==2)? 8'B0010_0101:       //"2"
        (num ==3)? 8'B0000_1101:       //"3"
        (num ==4)? 8'B1001_1001:       //"4"
        (num ==5)? 8'B0100_1001:       //"5"
        (num ==6)? 8'B0100_0001:       //"6"
        (num ==7)? 8'B0001_1111:       //"7"
        (num ==8)? 8'B0000_0001:       //"8"
        (num ==9)? 8'B0000_1001:       //"9"
        (num==10)? 8'B1111_1101:   //"-"
    8'B1111_1111;   //熄灭
    
    endmodule
    

    4、99循环计数器

    module cnt_9999(clk,out);
        input clk;
        output out;
        reg [6:0]out;
        always@(posedge clk)begin 
            if(out<100)out=out+1;
            else out=0; 
        end 
    endmodule 
    

    5、99计数器

    module c9999(clk, rst, clk_1, kup, kdn, q);
    input clk, rst;
    input clk_1, kup, kdn;
    output [23:0]q; //16bits计数器q,每4bits对应一位数码管
    
    reg [23:0]q;
    reg once, ku_f, kd_f; //合理利用标志位,实现单次加减1操作
    always @(posedge clk or negedge rst) begin //此处的时钟不是计数时钟
        if(!rst) begin q=0; once=1; ku_f=1; kd_f=1; end
        else begin
            if(kup) begin 
                if(ku_f) begin 
                    q_add(); //加1任务
                    ku_f=0; //此标志位清零,可以实现按键1次就加1次
                    once=0; //此标志位清零,可以实现按键不受计数时钟影响
                end 
            end
            else if(kdn) begin 
                if(kd_f) begin 
                    q_sub(); //减1任务
                    kd_f=0; //此标志位清零,可以实现按键1次就减1次
                    once=0; //此标志位清零,可以实现按键不受计数时钟影响
                end 
            end
            else begin
                ku_f=1; //此标志位置1,允许快速响应“加”按键
                kd_f=1; //此标志位置1,允许快速响应“减”按键
            end
        end
    end
    
    //加1任务
    task q_add();
    begin
        if(q[15:0]==16'H9999)       q=0; //计数到了9999之后清零
    else if(q[11:0]==12'H999)   q=q+16'H0667; //计数到了999之后进位清零
    else if(q[07:0]== 8'H99)        q=q+16'H0067; //计数到了99之后进位清零
    else if(q[03:0]== 4'H9)         q=q+16'H0007; //计数到了9之后进位清零
    else                    q=q+16'H1; //加1
    end
    endtask
    
    //对于16进制(二进制)数整体看,H9+H7=D16=H10,分高低4bit来看,就是H09变成H10
    //对于16进制(二进制)数整体看,H99+H67=H100,道理同上
    //对于16进制(二进制)数整体看,H999+H667=H1000
    
    //减1任务
    task q_sub();
    begin
        if(q[3:0]>0)        q=q-16'H1;
        else if(q[7:4]>0)   q=q-16'H7;
        else if(q[11:8]>0)  q=q-16'H67;
        else if(q[15:12]>0)     q=q-16'H667;
        else            q=16'H9999; 
    end
    endtask
    endmodule
    

    6、数据比较器

    module compare(a,b,y);
    input [10:0] a,b; 
    output y; 
    reg y; 
    always @ (a or b) begin
    if (a < b) y = 1; 
        else y = 0;
    end 
    endmodule
    

    7、top顶层函数

    module top(clk,rst,a,b,c,d,e,f,g,p,sel,kup,kdn,led);
    input clk,rst,kup,kdn; 
    output a,b,c,d,e,f,g,p;
    output [7:0]sel;
    output led;
    
    wire clk_up;       //计数时钟1hz
    wire clk_scan; //扫描时钟500hz
    wire clk_key;  //按键去抖时钟1000hz
    wire    clk_xz;
    wire     [3:0]A,B,C,D,E,F;     //数据节点
    wire kup_reg, kdn_reg;     //消抖之后的按键w
    wire [7:0]out;
    
    div_clk        U0(.clk(clk), .fs(1), .cko(clk_up));
    div_clk        U1(.clk(clk), .fs(500), .cko(clk_scan));
    div_clk        U2(.clk(clk), .fs(1000), .cko(clk_key));
    key_clean   U3(.clk(clk_key), .key_in(kup), .key_out(kup_reg));
    key_clean   U4(.clk(clk_key), .key_in(kdn), .key_out(kdn_reg));
    c9999      U5(.clk(clk), .rst(!rst), .clk_1(clk_up), .kup(kup_reg), .kdn(kdn_reg), .q({D,C,B,A,E,F}) );
    cnt_9999        U7(.clk(clk_xz),.out(out));
    seg_drive   U6
    (
        .clk(clk_scan), //调用数码管驱动电路
        .DA(F), .DB(E), .DC(10), .DD(10), .DE(10), .DF(10), .DG(10), .DH(10), 
        .a(a), .b(b), .c(c), .d(d), .e(e), .f(f), .g(g), .p(p), .sel(sel)
    );
    compare     U8(.a(out),.b({E,F}),.y(led));
    div_clk    U9(.clk(clk), .fs(50_000_000), .cko(clk_xz));
    endmodule
    

    四、结果展示

    实验结果由暗到亮依次显示的结果如下,为了对比起来更加明显,我选择了02-20-99三种亮度便于比较。
    在这里插入图片描述
    图1:亮度为2,比较暗,无光圈
    在这里插入图片描述
    图2:亮度为20,较为明亮,外围蓝色光圈较小
    在这里插入图片描述
    图3:亮度为99,亮度很高,外围蓝色光圈很大很亮

    五、经验总结

    本次实验达到了预期的效果,可以通过消抖后的按键较好的控制灯的亮度,但是由于我们人眼本身观察不敏锐的原因,所以当灯在50亮度以后,我们人眼是无法察觉它的微小变化,主要靠我们的数码管进行显示。
    解决办法:虽然实验存在上述问题,但是也不是不能解决的,我们可以让99计数器的值以指数的方式进行改变,因为指数的变化是非常大的,这样我们人眼的观察就能非常的清楚,能比较直观的感觉到灯亮度的变化。

    六、学习体会

    通过本次EDA的学习,我对硬件模块有了更深刻的理解,相比于我们正在学习的单片机、嵌入式,EDA的使用更加严谨周密,而且更加底层,例如时钟的快慢都是我们自己进行设置。记得在初学的时候它的规则一个变量不能在两个always赋值,让我觉得非常的奇怪、蹩脚甚至难以理解,但是在学习深入后我发现,这样确实能极大的增加硬件的稳定性,让电路更加的可靠,我也慢慢开始接受这种规则。
    从语法上:它的语法属于C但是又不完全是C,拥有C语言基础基本可以驾驭这种语法,但是我发现在后面的小型项目的设计中,很多时候我们都要用到C语言的算法,当拥有C语言的算法思想后,我们的代码看起来不仅简洁而且有条理,这让我再次体会到了结构与算法的重要性。
    今天的介绍就到这里啦,谢谢大家~~~

    会水的芝麻
    2019.8.4

    展开全文
  • 电路

    千次阅读 2010-02-03 12:12:00
    一款应急灯电路_实用电路㈦2005-10-19 硬道理电子技术工作室 这里介绍一个简单、实用的应急灯的制作。它可以在停电时自动实现切换供电。正常供电时,自动对后备蓄电池充电,并有充电保护功能。其电路见图1。下面...
  • 数字电路

    千次阅读 2019-06-23 09:34:43
    数字电路 :用数字信号进行算数运算和逻辑运输的电路 称为数字电路或者数字系统 数字电路具有逻辑运算和逻辑处理功能 又称数字逻辑电路 数字信号 时间和幅值的变化是离散的信号 即时间上离散 幅值上整数化 第一章 ...
  • 什么是硬件电路设计

    千次阅读 2015-03-02 16:53:39
    8. 噪音(Noise):风扇是散热最好的办法,但是带来的问题就是噪声,ITU对于通信设备的噪声也有明确的规范,这就需要平衡风扇数量,转速,风向,控制等因素。 9. 器件采购(Component Sourcing):HW选用的器件必须...
  • 数字电路-门电路

    千次阅读 2019-12-14 12:58:20
    摘要:本章系统地讲述了数字集成电路中的基本逻辑单元电路--门电路。由于门电路中的二极管和三极管经常工作在开关状态,所以首先介绍它们在开关状态下的工作特性。然后,重点讨论了目前广泛使用的CMOS门电路和TTL门...
  • 因项目需要设计一个HDMI转eDP的显示驱动接口电路板。 查找资料后选择了新港海岸的NCS8803显示接口芯片,考虑到其电路设计简单,有参考电路,提供专门调试软件进行电路板音视频调试。由于网上资料少,一些设计调试...
  • 今天给大家带来的是我小练习项目--- 个人支付宝小程序控制智能硬件esp8266**,我敢肯定是全网首篇的,因为我目前在百度找不到哈哈! 前面章节我已经详细记录了我在支付宝小程序上集成mqtt协议的睬坑过程,现在回想...
  • 逻辑电路

    千次阅读 2018-08-08 19:52:05
    我们知道电路中电子的流动是通过开关来控制的,为了电子流动,电路中的各个单元需要形成回路,而通过开关的开闭来影响电路的闭合和断开,MOS晶体管就是这个开关。  分为n型和p型MOS。 n型MOS示意...
  • 什么是反馈电路?反馈有什么作用?

    千次阅读 2019-02-12 16:19:18
    反馈电路是一种最基本的放大器电路,这个电路看上去很简单,但其实其中包含了直流电流负反馈电路和交流电压负反馈电路。图中的R1和R2为BG的直流偏置电阻,R3是放大器的负载电阻,R5是直流电流负反馈电阻,C2和R4组成...
  • 模拟电路和数字电路

    千次阅读 2019-06-05 17:34:59
    5. 大学中的模拟电路、数字电路、微机原理这几门课的关系 6. 微电子和计算机对 电子的影响 第二部分:计算机硬件组成结构 第一块:CPU ---------- 7. 计算机基本结构组成 8. CPU各部件是如何通过电子元器件...
  • 什么是同步逻辑和异步逻辑,同步电路和异步电路的区别是什么
  • uln2003驱动电路

    万次阅读 多人点赞 2018-08-26 20:59:50
     ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。  输入5VTTL电平,输出可达500mA/50V。  ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿...
  • 基本放大电路

    千次阅读 2018-04-24 09:20:32
    ②能够控制能量的元件称为有源元件,放大电路中必须存在有源元件。③放大的前提是不失真,只有不失真的情况下放大才有意义。2.性能指标①放大倍数②输入内阻 信号源内阻的压降越小,信号电压损失越小。③输出电阻 ...
  • 三态门,三态电路是一种重要的总线接口电路。这里的三态,是指它的输出既可以是一般二值逻辑电路的正常的“0”状态和“1”状态,又可以保持特有 的高阻抗状态,第三种状态——高阻状态的门电路 (高阻态相当于隔断...
  • 音频电路原理

    千次阅读 2018-10-25 20:06:12
    音频电路原理 典型音频电路: 双运放  TDA1308 NXP 甲乙类CD专用耳机功放集成电路 低电压、低失真、高速率、强输出等优异的性能芯片内采用MOS管输出, 可以直接推动32Ω...74HC4052带有公共使能输入控制的2路 4...
  • 20大经典电路——桥式整流电路

    千次阅读 多人点赞 2018-09-15 14:00:56
    20大经典电路——桥式整流电路 目录 用 [TOC]来生成目录: 20大经典电路——桥式整流电路 目录 半波整流电路 快捷键 Markdown及扩展 表格 定义列表 代码块 脚注 数学公式 UML 图: 离线写博客 浏览器兼容 ...
  • 放大电路2

    千次阅读 2013-10-23 16:34:38
    放大电路的三种基本组态 2.6.1 共集电极放大电路 上图(a)是一个共集组态的单管放大电路,由上图(b)的等效电路可以看出,输入信号与输出信号的公共端是三极管的集电极,所以属于共集组态。又由于输出信号从...
  • 数字电路 第六章 时序逻辑电路

    千次阅读 2019-10-26 17:18:25
    时序逻辑电路 特点: 任意时刻的输出不仅与该时刻输入变量的取值有关,而且与...组合电路的输出除了包含外部输出Z,还包含连接到存储电路激励端的内部输出Y,它将控制存储电路的状态变化。 时序逻辑电路结构框图:...
  • 电平转换电路的分析-MOS管、三极管

    万次阅读 2019-01-02 12:00:34
    电平转换电路在电路设计中会经常用到,市面上也有专用的电平转换芯片,专用的电平转换芯片主要是其转换速度较快,多使用在速度较高的通讯接口,一般对速度要求不高的控制电路,则可使用此文介绍的分立器件搭建的电平...
  • 三天研读《中兴电路设计规范》精华总结

    万次阅读 多人点赞 2020-05-16 18:25:52
    目录 1、原理图制图规范 2、电路设计 2.1、通用要求 2.2、逻辑器件应用 2.3、时钟设计 2.4、保护器件应用 2.5、可编程逻辑器件 2.6、电源设计 2.7、其他应用经验 3、可靠性设计 4、信号完整性/电源完整性设计 5、...
  • 2.1.5 数据报与虚电路

    千次阅读 2016-08-19 23:15:19
    分组交换根据其通信子网向端点系统提供的服务,还可以进一步分为面向连接的虚电路方式和无连接的数据报方式。这两种服务方式都由网络层提供。 1.数据报  当作为通信子网用户的端系统要发送一个报文时,在端系统中...
  • 比较TTL集成电路与CMOS集成电路

    千次阅读 2020-03-28 14:11:20
    比较TTL集成电路与CMOS集成电路元件构成高低电平范围集成度比较:逻辑门电路比较 元件构成 TTL集成电路使用(transistor)晶体管,也就是PN结。...TTL属于双极型数字集成电路,其输入端与输出端均为...
  • 电子电路知识点

    千次阅读 2014-04-02 15:37:27
    1、 纯净的单晶半导体又称本征半导体,其内部载流子自由电子空穴的数量相等的。 ...电路的对称性决定了被放大后的信号残存共模干扰的幅度,电路对称性越差,其共模抑制比就越小,抑制共模信号
  • ADC外围电路的设计

    千次阅读 2017-10-30 10:50:40
    外围电路的设计       模拟电路的设计     数字外围电路的设计     电源和接地的设计     信号隔离的设计     在使用 ADC 芯片时,由于 ADC 的型号多样化,其性能各有局限性,...
  • 不厌其烦的四大集成电路

    千次阅读 2018-06-09 15:17:54
    ASIC--专用集成电路ASIC原本就是...后来ASIC发展了一些,称为半定制专用集成电路,相对来说更接近FPGA,甚至在某些地方,ASIC就是个大概念,FPGA属于ASIC之下的一部分。FPGA--现场可编程门阵列FPGA基本就是高端的...
  • 电路内部原理

    千次阅读 多人点赞 2019-10-10 21:50:56
    目录 前言 1、继电器 2、电子管 知识点 3、二极管 ...总结:构造门电路 ...门电路-->组合逻辑电路-->...话说在设计数字逻辑电路时所用到的最基本是门电路,门电路本身就是一种逻辑存在,这也算是一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,996
精华内容 17,998
关键字:

属于控制电路的是