家用电风扇控制逻辑电路设计.docx

上传人:b****5 文档编号:7892099 上传时间:2023-01-27 格式:DOCX 页数:27 大小:42.60KB
下载 相关 举报
家用电风扇控制逻辑电路设计.docx_第1页
第1页 / 共27页
家用电风扇控制逻辑电路设计.docx_第2页
第2页 / 共27页
家用电风扇控制逻辑电路设计.docx_第3页
第3页 / 共27页
家用电风扇控制逻辑电路设计.docx_第4页
第4页 / 共27页
家用电风扇控制逻辑电路设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

家用电风扇控制逻辑电路设计.docx

《家用电风扇控制逻辑电路设计.docx》由会员分享,可在线阅读,更多相关《家用电风扇控制逻辑电路设计.docx(27页珍藏版)》请在冰豆网上搜索。

家用电风扇控制逻辑电路设计.docx

家用电风扇控制逻辑电路设计

电子工程学院课外学分设计报告

 

题目:

家用电风扇控制逻辑电路设计

 

姓名:

李健聪学号:

11111010118

专业:

电子信息工程实验室:

开放实验室

班级:

A1121

设计时间:

2013年12月1日——2013年12月7日

评定成绩:

审阅教师:

 

目录

摘要1

一、专业综合设计任务2

二、方案设计与论证3

2.1电风扇单元电路的设计3

2.1.1触发脉冲的形成3

2.1.2触发脉冲电路3

2.2电风扇单元电路的工作原理4

2.2.1风速的控制原理4

2.2.2风种的控制原理4

2.2.3电机运转控制原理5

2.2.4停止电路原理分析5

三、实现与测试6

四、分析与总结6

五、硬软件设计8

 

摘要

电风扇是我国家庭中最为普及的家用电器之一,以前的台式电风扇和落地式电风扇都是采用机械控制,主要控制风速和风向。

然而随着电子技术的发展,目前的家用电风扇大多采用电子控制线路取代了原来的机械控制器,使电扇的功能更强,操作也更简便。

本文比较全面的设计出了家用电风扇的控制电路,它包括家用电风扇的风速、风种和定时几种状态的控制。

把家用电风扇控制方便、简单化,使人们在使用过程中能更好的对电风扇操作。

 

关键词:

方式控制;触发脉冲;定时电路

一、专业综合设计任务

设计任务及要求:

用中小规模数字集成电路实现电风扇控制器的控制功能。

用三个键来实现“风速(弱、中、强)”、“风种(正常、自然、睡眠)”、“停止”的不同选择。

用六个发光二极管分别表示风速、风种的三种状态。

电风扇在停转状态时,只有按“风速”键才有效,按其余两键不响应。

分工:

一人尽心程序编译,一人负责查询资料记录并完成设计报告。

二、方案设计与论证

2.1电风扇单元电路的设计

2.1.1触发脉冲的形成

“风速”和“风种”状态锁存电路的输出信号状态的变化依靠各自的触发脉冲。

在“风速”状态的锁存电路中,可以利用“风速”按键(k1)所产生的脉冲信号作为触发脉冲;在“风种”状态锁存器的触发脉冲CP由“风种”(k2)、“风速”(k1)的信号和电风扇的工作状态信号(设ST为电风扇的工作状态,ST=0停,ST=1运转)三者组合而成。

当电风扇处于停止状态(ST=0)时,按(k2)无效,CP信号将保持低电平;只有按k1后,CP信号变成高电平,电风扇进入运转状态(ST=1)。

此后,CP不再受k1的控制,而是有k2控制,可得触发脉冲逻辑表达式:

CP=K1·ST¯+K2·ST。

(当k1输出的三个信号Q2、Q1、Q0全部为零时,电扇停转,ST=0;当三个输出信号Q2、Q1、Q0不全为零时,电扇运转,ST=1,从而可得电风扇工作状态ST逻辑表达式为:

ST=Q0+Q1+Q2)

最后得到触发脉冲CP的逻辑表达式:

CP=K1·Q2¯Q1¯Q0¯+K2·(Q0+Q1+Q2)

CP信号状态表

K2

K1

ST

CP

0

0

0

0

0

0

1

0

0

1

0

1

0

1

1

0

1

0

0

0

1

0

1

1

1

1

0

1

1

1

1

1

2.1.2触发脉冲电路

键K1按动后形成的脉冲信号作为“风速”状态锁存电路的触发信号。

键K1、K2及74LS00、74LS08构成“风种”状态锁存电路的触发信号CP。

电风扇停转时,ST=0,K1=0,与非门U2输出为高电平,U3输出为高电平,所以U4输出的CP信号变为低电平。

当按下K1后,U2输出为低电平,使U4输出CP信号变为高电平,并使触发器翻转,“风种”处于“正常”状态。

由于k1输出的上升沿脉冲,也使“风速”处于“弱”状态,电风扇开始运转,ST=1。

电风扇开始运转后,U2输出始终为高电平,这样使风种状态的触发脉冲CP与K2的状态相同。

每次按下K2并释放后,CP信号就会产生上升沿使风种的状态发生变化。

CP

2.2电风扇单元电路的工作原理

2.2.1风速的控制原理

电风扇处于停转状态时,所有指示灯不亮。

此时只有按“风速”键,电扇才会启动运转,其初始状态处于“弱”档,相对应的只是灯亮。

此时,按动“风速”键会产生触发脉冲可循环选择弱、中、强三种状态中的任意种状态。

“风速”的工作状态是由触发器来锁存状态,触发器输出1表示工作状态有效,0表示无效,当三个输出全部为0则表示停止状态。

设数字×××为Q2、Q1、Q0的输出信号,其转换图如下

“风速”转换图

2.2.2风种的控制原理

在“风种”的三种选择方式中,在正常位置时,风扇为连续运行;在自然和睡眠位置时,为间断运行方式。

电路中采用74LS151作为风种方式的控制器,由74LS175的三个输出信号选中74LS151的一种方式。

间断工作时,电路中用了一个8秒周期的时钟信号作为自然方式的间断控制;二分频后再作为睡眠方式的控制输入。

设数字×××为Q2、Q1、Q0的输出信号,其转换图如下

“风种”转换图

2.2.3电机运转控制原理

电风扇的转速通常是由电压来控制的,但是这里的弱、中、强三种转速,所以需要在电路里考虑三个输出端(弱中强)和控制外部电线路(如可控硅出发电路)。

这三个输出端与指示电风扇转速状态的三个端子不同,除了要控制电机分别按弱中强三种转速外,还必须能够控制电机连续运转或间断运转,以与“风种”不同选择方式相对应。

要是用1表示某档速度的选通,用0表示某档速度的关断,那么“风种”信号的输入就使得某档电机速度被连续或间断地选中。

例如风种选择“睡眠”,风速选择“弱”时,电机将运行在开8秒停8秒,表现在电机运转控制“弱”上就是出现间断的1和0的状态。

2.2.4停止电路原理分析

电路中选用上升沿触发器74LS151带有直接清零端,使清零端与“停止”键相连可实现停止的功能。

在电扇任意工作状态下,按“停止”键,会产生低电平输入到清零端,使触发器输出全部为低电平,电扇处于停止状态,所有指示灯熄灭。

三、实现与测试

我们用四个按键分别控制“风速”、“风种”、“定时”、“停止”,然后用步进电机当做风扇叶片,用数码管显示时间,用二极管显示风速的“强”、“中”、“弱”以及风种的“正常”、“自然”、“睡眠”。

我们用到的软件是Quartys,在对程序进行编译后可通过试验箱完成我们的设计。

四、分析与总结

这一段时间对家用电风扇逻辑电路的设计过程中,自己在查找参考资料的时候遇到了许多疑难问题,面对问题自己通过查找先前课堂笔记、同学的讨论及老师的指导解决了疑难,使课题设计能顺利的完成。

同时,在设计过程中,进一步加强了对电子的了解,复习了在大学期间学过的电子技术基础的知识,培养综合设计能力和实际动手能力,提高了综合应用电子解决问题的能力,相信这对我今后的工作有十分重要意义!

面对科技的不断发展和进步,相信在不久的将来电风扇的功能会更强,例如用红外线遥控控制、具有定时功能、智能控制等,甚至电子控制线路的电风扇会被取代。

参考文献

1. 康华光.电子技术基础数字部分(第五版)[M].北京:

高等教育出版社.2006 

2. 彭介华.电子技术课程设计指导[M].北京:

高等教育出版社.2005

3. 谢自美.电子线路设计.实验.测试[M].武汉:

华中科技大学出版.2000

4. 赵伟军. Protel 99 SE 教程.北京:

邮电出版社.2004

5. 肖玲妮等.Protel 99 SE 印刷电路板设计教程[M].北京:

清华大学出版社.2003

五、硬软件设计

按键控制程序

modulecount(

clock,

key1,

key2,

key3,

key4,

hour_ge,

hour_shi,

minute_ge,

minute_shi,

second_shi,

second_ge,

state1,//调整位选择输出到display

flag,//当到达00:

00:

00时输出1停止信号到dian_ji

);

inputclock;

inputkey1;//选择

inputkey2;//加

inputkey3;//减

inputkey4;//确定

output[2:

0]state1;

outputflag;

output[3:

0]minute_ge;

output[3:

0]second_ge;

output[2:

0]minute_shi;

output[2:

0]second_shi;

output[3:

0]hour_ge;

output[2:

0]hour_shi;

//**************************

reg[4:

0]hour;//最大31

reg[5:

0]minute;

reg[5:

0]second;

reg[3:

0]minute_ge_out;

reg[3:

0]second_ge_out;

reg[2:

0]minute_shi_out;

reg[2:

0]second_shi_out;

reg[3:

0]hour_ge_out;

reg[2:

0]hour_shi_out;

regflag_q;

reg[2:

0]state1_out;

regflag_out;

//*****************************

always@(posedgeclock)

begin

reg[19:

0]count1;//消抖

reg[29:

0]count;//计数

reg[29:

0]count6;

if(key4==1'b0)//确认键

if(count1<50_0000)

begin

count1<=count1+1'd1;

if(count1==49_9999)

if(key4==1'b0)

begin

flag_q=~flag_q;

second<=59;//确认键按下后秒置数59,

flag_out<=0;//停止信号复位

end

end

if(key4==1'b1)count1<=20'd0;

//*****************************

if(flag_q==1'b1)//确定键按下后才开始倒计时

begin

count<=count+1'd1;

if(count==30'd50_00_0000)

begin

count<=30'd0;

if(second==6'd0)

begin

if((hour==0)&&(minute==0))

second<=0;

elsesecond<=59;

if(minute==4'd0)

begin

if(hour==0)

minute<=0;

elseminute<=59;

if(hour==0)

begin

flag_out<=1;//停止信号

hour<=0;

end

elsebeginhour<=hour-1;flag_out<=0;end

end

elseminute<=minute-1'b1;

end

elsesecond<=second-1'b1;

end

end

//*************************按键控制加减***************************************

if(state1==3'b001)//分钟加

begin

if(key2==1'b0)

begin

count6<=count6+1'b1;

if(count6==30'd100_00000)//

begin

count6<=30'd0;

if(key2==1'b0)

begin

minute<=minute+1'd1;

if(minute>7'd59)

minute<=0;

end

end

end

//***********************************************

elseif(key3==1'b0)//分钟减

begin

count6<=count6+1'b1;

if(count6==30'd100_00000)//10ms

begin

count6<=30'd0;

if(key3==1'b0)

begin

minute<=minute-1'd1;

if(minute==7'd0)

minute<=7'd59;

end

end

end

end

//*******************************

elseif(state1==3'b010)//小时加

begin

if(key2==1'b0)

begin

count6<=count6+1'b1;

if(count6==30'd10_00_0000)//12ms

begin

count6<=30'd0;

if(key2==1'b0)

begin

hour<=hour+1'd1;

if(hour>6'd23)

hour<=6'd0;

end

end

end

//*********************************

if(key3==1'b0)//小时减

begin

count6<=count6+1'b1;

if(count6==30'd100_00000)//10ms

begin

count6<=30'd0;

if(key3==1'b0)

begin

hour<=hour-1'd1;

if(hour==6'd0)

hour<=6'd23;

end

end

end

end

second_shi_out<=second/10;

second_ge_out<=second%10;

minute_shi_out<=minute/10;

minute_ge_out<=minute%10;

hour_shi_out<=hour/10;

hour_ge_out<=hour%10;

end

//********按键选择调整对象****************

always@(posedgeclock)

begin

reg[19:

0]count_x1;//消抖

if(key1==0)

begin

if(count_x1<50_0000)

begin

count_x1<=count_x1+1;

if(count_x1==49_9999)

begin

if(key1==0)

state1_out<=state1_out+1;

if(state1_out==2)state1_out<=0;

end

end

end

if(key1==1)count_x1<=0;

if(key4==0)state1_out<=0;//确认键按下

end

//******************************************************

assignsecond_ge=second_ge_out;

assignsecond_shi=second_shi_out;

assignminute_ge=minute_ge_out;

assignminute_shi=minute_shi_out;

assignhour_ge=hour_ge_out;

assignhour_shi=hour_shi_out;

assignstate1=state1_out;

assignflag=flag_out;

endmodule

电机程序

moduledian_ji(

clock,

key1,

key2,

key3,

moto_z,

moto_f,

led_s,//速度

led_m,//模式

flag,//模式输出

flag_stop,//倒计时时间到时,输入信号

);

inputclock;

inputflag_stop;

inputkey1;

inputkey2;

inputkey3;

output[1:

0]flag;

outputmoto_z;

outputmoto_f;

output[2:

0]led_s;

output[2:

0]led_m;

//******************

reg[29:

0]count1;

reg[29:

0]count2;//正常模式

reg[29:

0]count3=5_00000;//自然模式

reg[2:

0]led_s_r;

reg[2:

0]led_m_r;

regmoto_z_r;

regmoto_f_r;

reg[1:

0]flag2_out;

reg[2:

0]flag1;//风速(高,低,中)

//reg[1:

0]flag2;//模式(正常,自然,睡眠)

reg[2:

0]flag3;//自然风中的模式

//***************************************

always@(posedgeclock)

begin

reg[31:

0]count_x;

count_x<=count_x+1;

if(count_x==150_000000)//5秒

begin

flag3<=1;

count_x<=0;

end

elseflag3<=0;

end

//******************电机转动***************

always@(posedgeclock)

begin

count1<=count1+1;

if(count1

moto_z_r<=0;

elseif(count1<500)

moto_z_r<=1'b1;

elsecount1<=0;

end

//********按键选择,高,中,低****************

always@(posedgeclock)

begin

reg[29:

0]count_x1;//消抖

if((flag2_out==1)||(flag2_out==3))//正常模式下

begin

if(key1==0)

begin

if(count_x1<50_0000)

begin

count_x1<=count_x1+1;

if(count_x1==49_9999)

begin

if(key1==0)

flag1<=flag1+1;

if(flag1==3)flag1<=1;

end

end

end

end

if(key1==1)count_x1<=0;

if(key3==0)flag1<=0;//停止

//***********自然模式下,高,中,低循环******************

if(flag2_out==2)

begin

if(flag3==1)

flag1<=flag1+1;

if(flag1>3)

flag1<=0;

end

if(flag_stop==1)flag1<=0;//倒计时完毕,风扇停止,风速调节无效,需要按确定键复位flag_stop

end

//***************风速***********************

always@(posedgeclock)

begin

if(flag1==1)

count2<=300;//低

elseif(flag1==2)count2<=250;//中

elseif(flag1==3)count2<=20;//高

elseif(flag1==0)count2<=500;//停

end

//********按键选择模式****************

always@(posedgeclock)

begin

reg[29:

0]count_x2;//消抖

if(key2==0)

begin

if(count_x2<50_0000)

begin

count_x2<=count_x2+1;

if(count_x2==49_9999)

begin

if(key2==0)

flag2_out<=flag2_out+1;

if(flag2_out==3)flag2_out<=1;

end

end

end

if(key2==1)count_x2<=0;

if(key3==0)flag2_out<=0;//停止

if(flag_stop==1)flag2_out<=0;//倒计时完毕后模式按键无效,需要按确定键复位flag_stop

end

//***************led*****************

always@(posedgeclock)

begin

if(flag1==1)led_s_r<=3'b011;

elseif(flag1==2)led_s_r<=3'b101;

elseif(flag1==3)led_s_r<=3'b110;

elseled_s_r<=3'b111;

if(flag2_out==1)led_m_r<=3'b011;

elseif(flag2_out==2)led_m_r<=3'b101;

elseif(flag2_out==3)led_m_r<=3'b110;

elseled_m_r<=3'b111;

end

//*******************************************

assignled_s=led_s_r;

assignled_m=led_m_r;

assignmoto_f=0;

assignmoto_z=moto_z_r;

assignflag=flag2_out;

endmodule

数码管显示程序

moduledisplay(

led_wei1,

led_wei2,

led_wei3,

led_wei4,

led_wei5,

led_wei6,

led_wei7,

led_wei8,

led_du,

clock,

hour_ge,

hour_shi,

minute_ge,

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

当前位置:首页 > 农林牧渔 > 林学

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

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