用电器电源自动控制电路的电子自动化实现 左函未.docx

上传人:b****4 文档编号:4626942 上传时间:2022-12-07 格式:DOCX 页数:14 大小:142.06KB
下载 相关 举报
用电器电源自动控制电路的电子自动化实现 左函未.docx_第1页
第1页 / 共14页
用电器电源自动控制电路的电子自动化实现 左函未.docx_第2页
第2页 / 共14页
用电器电源自动控制电路的电子自动化实现 左函未.docx_第3页
第3页 / 共14页
用电器电源自动控制电路的电子自动化实现 左函未.docx_第4页
第4页 / 共14页
用电器电源自动控制电路的电子自动化实现 左函未.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

用电器电源自动控制电路的电子自动化实现 左函未.docx

《用电器电源自动控制电路的电子自动化实现 左函未.docx》由会员分享,可在线阅读,更多相关《用电器电源自动控制电路的电子自动化实现 左函未.docx(14页珍藏版)》请在冰豆网上搜索。

用电器电源自动控制电路的电子自动化实现 左函未.docx

用电器电源自动控制电路的电子自动化实现左函未

目录

1实验要求1

2设计内容.................................................................................1

3设计思想.2

4设计方案.....2

模块一:

计数的设计2

模块二:

定时的设计4

模块三:

扫描电路的设计6

5底层元器件的生成程序9

5.1BCD-7段数码管显示译码器电路9

5.2MUX89

5.360进制计数器10

5.4十进制计数器12

5.5JK14

6硬件实验结果15

7心得体会15

8参考文献16

用电器电源自动控制电路

1实验要求

1.控制电路能使用电器的电源自动开启X秒,然后自动关闭X秒,如此周而复始的工作

2.X可以设置,范围为1~30s;

3.定时范围Y可以调节,范围为1~60分;

4.单独设置置数输入控制端实现范围调节;

5.要有工作状态指示;并有分秒的倒计时显示。

2设计内容

随着计算机技术的发展,计算机的应用领域也以惊人的速度拓展。

计算机的高效性、灵活性使得它在CAD(ComputerAidedDesign计算机辅助设计)方面得到广泛的应用,这使得产品的开发和研制的周期大大缩小了,而这一点是非常重要的。

这些因素就决定了在市场对于掌握CAD知识的人才的青睐。

事实也是如此,在人才市场上,大量需求具有CAD知识的人才。

EDA(ElectronicDesignAutomation电子设计自动化)就包含在CAD范畴之中,利用计算机的优势,快速高效的开发和研制电子产品,来缩短产品开发时间。

EDA技术是电子技术的发展趋势,利用EDA工具可以代替设计者完成电子系统设计中的大部分工作,EDA工具从数字系统设计的单一领域发展到今天,应用范围以射击模拟、微波等多个领域,可以实现各个领域电子系统设计的测试、设计仿真和布局布线等。

我们作为设计者只要完成对电子系统的功能描述,就可以利用计算机和EDA工具,进行设计处理,最终得到设计结果。

现代的大学教育是面向市场的,开设EDA课程设计,可以帮助我们熟悉电子EDA的一些基本知识,培养独立思考和动手的能力,也可以增强我们的创新意识。

此次课程设计是一次很好的锻炼机会,通过自己认真思考,动手动脑,设计出属于自己的作品,那是一件多么令人愉悦的事情!

另外一点就是,经过这次课程设计还可以对以前学过的知识进行巩固练习,继而对以后的工作和学习有所帮助。

3设计思想

首先分析题目要求,我从中得到下面几点内容:

1.用电器可以自动开启30s,然后就会自动关闭30s,如此周而复始,同时要有状态的显示—〉所以这里需要用到一个30进制的计数器,且有一个输出端表示用电器的工作状态。

2.题目要求随时都可以采用自动控制方式对用电器进行控制,即:

通过手动使用器由运行转换到停止或由停止转换到运行—〉因此必须有一个输入端用作开关来对用电器进行工作状态的控制。

3.定时信号的设计,且要有分秒的倒计时显示—〉首先必须得用到减法计数器,用减法计数器来做成”分”和”秒”;另外很重要的是要用到扫描电路,用以显示倒计时。

此定时信号是用来控制整个电路的工作时间。

4.当然,在这其中不免会用到一些触发器、与非门、或非门、与门、或门、非门等。

5.在设计的时候可以首先把整个电路分成若干个小模块,如果先把小模块设计出来,那么整个电路就不成问题了。

4设计方案

将整个器件设计变为三个模块,即30计数器,计时器和显示模块

模块一:

计数的设计

(一)30计数器

因为现成的计数器只有十进制计数器74160和十六进制计数器74161,要想做一个30进制的计数器,需要用两片计数器。

这里,我利用两片十进制计数器74160来构成一个30进制计数器。

依据如下:

把第一片74160的四位输出端接成1001(即十进制中的9),另一片接成0010(即十进制中的2),然后把第一片的进位输出端C接到第二片的使能控制端EP和ET上,每当第一片计成9(1001)时C变为1,下一个CP信号到达时第二片为计数工作状态,计入1,而当第一片计成0(0000),它的C端回到低电平;第一片的EP

和ET接高电平恒为1,始终处于计数工作状态。

这样就构成了30进制计数器。

另外,还要有一个输出端是用来表示用电器工作状态的,我用到了一个JKFF、非门、与门。

具体的逻辑电路如下图所示:

 

图1

图形说明:

(1)此图是采用整体置数法接成的30进制计数器。

首先需将两片74160接成百进制计数器,然后将电路的29状态译码产生0信号,把此0信号和一个表示开关的输入端相“与”的结果(以下均称为”A”)同时加到两片74160的LD端(即LD非端),当下一个计数脉冲(第30个计数脉冲)到达时,将0000同时置入两片74160中,从而得到30进制计数器。

(2)JKFF在J=K=1时,输出波形不断翻转。

将“A”作为JKFF的CP信号,则输出端会0、1、0、1……这样循环,将此输出连接到某一指示灯上,若出现“灭”与“亮”每隔30秒交替的现象,就说明该用电器的工作状态为:

自动开启30s,然后自动进入关闭状态。

(3)该逻辑图中的CP信号设为CP

该模块的仿真波形图如下所示

图2

 

图形说明:

(1)KaiGuan一栏表示开关的状态:

0表示关闭,1表示打开。

7表示用电器的状态:

0表示停止,1表示运行。

20表示计数的高位(即十位),一直按照0、1、2……循环。

10表示计数的低位(即个位),一直按照0、1、2、3、4、5、6、

7、8、9、0……循环。

(2)当开关保持状态1不变,20由2变为0时,7会自动改变状态进行翻转。

这说明用电器运行30s和停止30s是自动循环的。

(3)在任意时刻,若手动开关改变其状态,则用电器的状态也会翻转,并且重新开始计时30s。

结论:

通过对逻辑电路进行仿真,从波形图上可以看出,此逻辑电路的设计是正确的,符合题目要求。

模块二:

定时的设计

题目要求有分秒的定时,且为倒计时,所以必然会用到减法计数器。

74168为十进制同步加减计数器,当U/DN=0时,它可以做减法计数。

不妨把时间定时为5分钟,即数码管上倒计时的时间显示为从5分59秒开始,到0分00秒结束。

这里要用到3片74168。

另外,还须有T触发器、或门、或非门、与门、非门等。

图3

图形说明:

(1)首先,74168做减法计数,U/DN=0,要把它接地。

(2)秒的定时为0~59s需要用到两片74168,因为是倒计时,和一般的情况稍有差别,所以应该把八个输出端用一个或门译成0后加到LD非端,且第一片和第二片的输入端D0~D3应分别译成1001、0101(即十进制中的9、5)。

还要把秒的借位输出作为分的脉冲信号,这样,当秒减够60后,分会自动减1。

依据同样的道理,分的定时只需一片74168即可,同时把四个输出端用或门译成0加到LD非端,输入端D0~D3译成0101(即十进制中的5)。

这样,就把时间的的初始值置为0分00秒,而后马上回到5分59秒,这就开始了倒计时。

(3)为了使倒计时计到0分00秒的时候自动停止而不至于循环,所以这里需要对控制秒的脉冲信号加上一些限制。

用到了或非门、与门、非门,还有T触发器,具体连线见图中所示。

(4)该逻辑图中的CP信号设为CP2。

该模块的仿真波形图如下所示:

图4

图形说明:

(1)b(4~1)表示“分”由5自减到0;

(2)a[8~5]表示“秒”的高位有5自减到0;

Q[4~1]表示“秒”的低位由9自减到0。

(3)从整个图形可以看出:

时间由5分59秒开始,一秒一秒的自减到0分0秒。

结论:

通过对逻辑电路进行仿真,从波形图上可以看出,此逻辑电路的设计是正确的,符合题目要求。

模块三:

扫描电路的设计

由于只用到3个数码管,所以地址端只需S0、S1即可,体现在试验箱上就是有4个数码管。

用到一片74161,将其接成4进制;还用到四片74151双8选一数据选择器;另需一片7449BCD--七段显示译码器。

具体的逻辑电路如下页图所示:

图5

图形说明:

(1)74161的输出端QA、QB分别作为数码管的地址端S0、S1和74151

的地址端A、B。

(2)两片74151的32个输入端分别称为1~32;74151的四个输出端

分别作为7449的输入端;7449的输出端OA~OG分别称为a~g。

(3)该逻辑电路的CP信号设为CP3,

 

图6

有图可知电路的设计是正确的。

将上述三个模块组合到一起,就构成了整个的逻辑电路,如下图所示:

图7

总逻辑电路的仿真模型为

图8

结论:

通过对逻辑电路进行仿真,从波形图上可以看出,用电器每隔30秒就会自动改变一下状态,且可以随时由KaiGuan改变状态,数码管上的数字显示是:

5分59秒~0分00秒,此逻辑电路符合题目要求,其设计是正确的。

5底层元器件的生成程序

5.1BCD-7段数码管显示译码器电路

library ieee; 

use ieee.std_logic_1164.all; 

entity bcd71 is port(d:

 in std_logic_vector(3 downto 0); 

led:

 out std_logic_vector(6 downto 0)); 

end entity bcd71; 

architecture arch of bcd71 is 

begin led<= "1111110" 

when d="0000" else "0110000" 

when d="0001" else "1101101" 

when d="0010" else "1111001" 

when d="0011" else "0110010" 

when d="0100" else "1011011" 

when d="0101" else "1011111" 

when d="0110" else "1110000" 

when d="0111" else "1111111" 

when d="1000" else "1111011" 

when d="1001" else "0000000"; 

end architecture arch;

5.2MUX8

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_signed.all;

use ieee.std_logic_unsigned.all;

entity mux8_12 is

port(d0,d1,d2,d3,d4,d5,d6,d7:

in std_logic; g:

in std_logic;

a2,a1,a0:

in std_logic; y:

 out std_logic);

end entity mux8_12;

architecture one of mux8_12 is

signala:

std_logic_vector(2 downto 0);

begin

a<=a2&a1&a0;

process(a,g,d0,d1,d2,d3,d4,d5,d6,d7)

begin

if g='0' then y<='0';

else

case a is

when"000"=>y<=d0;

when"001"=>y<=d1; when"010"=>y<=d2; when"011"=>y<=d3; when"100"=>y<=d4; when"101"=>y<=d5; when"110"=>y<=d6; when"111"=>y<=d7; when others=>y<='0'; end case;

end if;

end process;

end architecture one;

 

5.360进制计数器

 

libraryieee;--调用ieee库

useieee.std_logic_1164.all;--使用ieee库中的1164包

useieee.std_logic_unsigned.all;--使用ieee库中的无符号包

entitycntm60is

port(ci:

instd_logic;--来至低级的进位

nreset:

instd_logic;--清零端

load:

instd_logic;--置数端

d:

instd_logic_vector(7downto0);--与置数端对应的数据输入端

clk:

instd_logic;--时钟端

co:

outstd_logic;--进位输出端

qh:

bufferstd_logic_vector(3downto0);--计数器的高位输出端

ql:

bufferstd_logic_vector(3downto0));--计数器的低位输出端

endcntm60;

architecturebehaveofcntm60is

begin

co<='1'when(qh="0101"andql="1001"andci='1')else'0';

process(clk,nreset)

begin

if(nreset='0')then

qh<="0000";

ql<="0000";

elsif(clk'eventandclk='1')then

if(load='1')then

qh<=d(7downto4);

ql<=d(3downto0);

elsif(ci='1')then

if(ql=9)then

ql<="0000";

if(qh=5)then

qh<="0000";

else

qh<=qh+1;

endif;

else

ql<=ql+1;

endif;

endif;

endif;

endprocess;

endbehave;

5.4十进制计数器

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcnt10IS

PORT(

CLK:

INSTD_LOGIC;

LOAD,CLR:

INSTD_LOGIC;--CLR:

清除数据

EN:

INSTD_LOGIC;--信号使能

DATAIN:

INSTD_LOGIC_VECTOR(3DOWNTO0);--输入的4位数据

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);--输出的4位数据

CARRY_OUT:

OUTSTD_LOGIC--数据装载

);

ENDcnt10;

ARCHITECTURErtlOFcnt10IS

SIGNALTMP:

STD_LOGIC_VECTOR(3DOWNTO0);--链接输入输出

BEGIN--数据的信号

PROCESS(CLK,LOAD,CLR,EN)

BEGIN

IFCLR='1'THEN--当CLR高电平,数据变为0000

TMP<="0000";

ELSIFLOAD='1'THEN--否则装载输入的数据

TMP<=DATAIN;

ELSIFCLK'EVENTANDCLK='0'THEN--上升沿时,执行10进制减法

IFEN='1'THEN

IFTMP="0000"THEN--0跳转到9

TMP<="1001";

ELSE--自动减1

TMP<=TMP-'1';

ENDIF;

ENDIF;

ENDIF;

IFTMP="0000"THEN

CARRY_OUT<='1';--COOK<=CARRY_OUT

ELSE

CARRY_OUT<='0';

ENDIF;

ENDPROCESS;

Q<=TMP;

ENDrtl;

 

5.5JK

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt16 is

port(clk,clr,enb,control:

in std_logic;

cout:

out std_logic;

coh:

out std_logic_vector(3 downto 0));

end entity cnt16;

architecture one of cnt16 is

begin 

process (clk,clr,enb,control)

variable co :

std_logic_vector(3 downto 0);

begin

if clr='1' then co:

="0000";

elsif rising_edge(clk) then 

if enb='1' then 

case control is

when '0' => 

if co<15 then co:

=co+1;

else co:

="0000";

end if;

when '1'=>

if co>0 then co:

=co-1;

else co:

="1111";

end if;

end case;

end if;

end if;

if co=15 then cout<='1';

else cout<='0';

end if;

coh<=co;

end process;

end architecture;

6硬件实验结果

对总的逻辑电路进行编译下载后,在试验箱上连线,观察到如下现象:

表示用电器工作状态的指示灯每隔30s就会自动“亮”或“灭”,用高低电平当作开关来控制电路,也可以实现用电器状态的自动转换;数码管上的时间显示为000、559、558……000。

硬件实验的结果完全符合题目要求,说明此逻辑电路的设计是完全正确的。

7心得体会

当我刚刚拿到题目的时候,感觉特别难,一点思路都没有,对此软件

的掌握也不是太熟练,后来,经过自己进一步的仔细琢磨、认真思考以及刻苦练习,慢慢地有了点眉目。

然后我就一点一点的设计电路,最后再进行模块组合,把整个设计思路连接起来成为了一个整体的数字电路。

当然在这其中也有过不少的错误,我仔细查看电路找错误,通过一次又一次的不断修改与仿真,我的电路一步步趋于完善,我也正一步步走向成功,当我波形仿真后,完全符合题目的各个要求,经过老师的验收,我顺利通过了这次为期两周的EDA课程设计。

经过这次课程设计,我发现自己还有很多不足,对数字电路某些内容的掌握不是太熟练,在逻辑电路设计方面欠佳;同时,在课程设计的过程中,我也学会不少新的知识,扩展了自己的知识面,培养了亲自动手实践的能力,并且也对以前已经学过的知识进行了巩固练习。

我又一次深深体会到了知识的力量,感受到在知识海洋里遨游是一件多么愉快的事情。

从中我也悟出了一些道理:

人是不可以满足的!

我深信,经过刻苦学习,我一定可以掌握更多的科学知识。

在此,我深深地感谢每一位老师!

8参考文献

[1]赵全利.《EDA技术及应用教程》

[2]韩力群.《人工神经网络理论、设计及应用》第二版.化学工业出版社,1990.1   

[3]闻新,周露,李翔,张宝伟.《MATLAB神经网络仿真与应用》.科学出版社,2003.7

[4]邹彦.《EDA技术与数字系统设计》.电子工业出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1