智能电梯控制器设计报告Word文档格式.docx
- 文档编号:21528413
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:31
- 大小:378.53KB
智能电梯控制器设计报告Word文档格式.docx
《智能电梯控制器设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《智能电梯控制器设计报告Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
分频模块
分频模块的实现是靠对输入的时钟进行计数来实现的,计数到一定的数后对输出的时钟进行取反,同时计数清零,重新进行计数,这样就实现了分频。
主程序模块
主程序模块主要是对楼层i进行划分,分别写其对输入信号的响应。
开始是把各种input与所设的变量进行联系,这样对变量就可以对整个系统进行控制。
情况可分为以下几种,首先是本层有无需求,若有,则进行停留,并进行开门关门动作,若无,则又根据电梯的状态进行分类,上升,下降或者停留,其中都各有上升的请求、下降的请求;
对情况进行分析,然后对变量重新赋值,这样再下一个时钟来时就会继续产生不同的响应,此时的状态也有变化。
其中上升下降的操作用i+1,i-1来实现。
LCD模块
LCD模块主要是主控制程序中的control变量进行控制,对于每次control变化,LCD都会重新写一次数据,并且数据也是根据control的不同进行选择。
数码管模块
数码管模块是对楼层i进行译码然后进行显示,这里不赘述。
2.3系统转态转换图
状态图分析:
每当条件变化时,状态再一定的时间后更新,然后通过LED灯和数码管可以看到状态的变化。
S=00表示电梯处于停留状态,此间可进行开门关门操作,即用LCD显示开门关门状态;
S=01代表电梯处于上升阶段,S=10代表电梯处于下降阶段,其状态的转换是根据有无上升下降的需求来进行条件判断的,每一次状态转换都会对已完成的需求进行清零操作,然后进行下一步的请求执行。
实例说明:
当此时电梯处于一楼,我们将六楼的开关向上拨动并复位,此时将变量floor3[5]=1,符合向上的要求,即只需floor3[1]~floor[5]任意一个为一,都会执行i+1操作,并将状态识别为S=01,直到电梯到达六楼,此时i=6,floor[5]=1,满足开门的条件判断,将状态转换为00,并改变control的值来实现LCD的显示,control=10,显示开门,0.5S后改为control=11,显示关门,最后control=00,即清屏,关门结束,不显示任何信息。
2.4输入输出设计
按键输入
上面左边的六个键分别是各层楼的需求按钮(从右到左分别是1~6)右边单独的两个是A、B两个键,分别表示外面有需求(配合楼层键进行)。
注意楼层键拨动后要复位,然后是A、B两键都拨上去的时候,电梯自动锁定,并且自动回到一楼。
数码管和LCD
LCD显示的箭头方向表示开门和关门,最右端的数码管显示电梯所在楼层。
LED灯
左边单个亮表示电梯处于停留状态,后面三个,第一个表示上升状态,第二个表示电梯锁定状态,第三个表示下降状态。
三、系统仿真
3.1各个情况下的仿真波形
注意,这里是在使用时钟分频前仿真的。
有以下各种情况:
上升请求
下降请求
多个上升请求
多个下降请求
电梯锁定
四、实验总结
4.1心得体会
本次的电子课程设计我选择了智能电梯控制。
选择题目时,因为电梯是我们再熟悉不过的了,所以以为设计会比较简单,然而真正实现起来并没有那么容易。
首先电梯请求会有多种情况,如何选取最有效率的步骤才是关键。
后来我通过实际了解电梯的流程,来通过状态图表示了算法。
本次课设我觉得给我最大的收获就是对Verilog语言的掌握和模块思想的更深刻的理解。
在大二时,我们学习了数字电路中的Verilog,并通过它进行了FPGA的数字钟设计。
然而此次的课程设计却要远远难于数字钟。
因此经过分析之后,我决定把大工程分成几个子模块来进行分别设计,这样会降低难度,也利于管理。
之后我又学习了Verilog语言,通过Altera公司网站上的教程,因此对它也有了更好的掌握。
附录:
源代码
moduledianti(ledup,leddown,ledforbid,ledstay,A,B,c1,c2,c3,c4,c5,c6,clock,out,LCD_DATA,LCD_EN,LCD_RS,LCD_RW,LCD_ON,LCD_BLON,test);
outputledup,leddown,ledstay,ledforbid;
output[6:
0]out;
outputLCD_EN,LCD_RS,LCD_RW,LCD_ON,LCD_BLON;
output[1:
0]test;
//用于测试开门关门状态
inputA,B,clock,c1,c2,c3,c4,c5,c6;
inout[7:
0]LCD_DATA;
//.输入输出变量的声明
reg[4:
0]floor1;
reg[5:
1]floor2;
0]floor3;
reg[3:
0]i;
reg[1:
0]s;
reg[6:
0]t;
0]control;
//寄存器变量
wireclk_out;
//分频后的输出时钟
wire[1:
regledup,leddown,ledforbid,ledstay;
assigntest=control;
Clockc(clock,clk_out);
//分频
LCDd(clock,control,LCD_DATA,LCD_EN,LCD_RS,LCD_RW,LCD_ON,LCD_BLON);
//LCD显示
always@(posedgeclk_out)
begin
t<
=t+4'
b0001;
ledup<
=(s==2'
b01&
&
!
(A==1&
B==1));
//电梯上升中
leddown<
b10&
B==1));
//电梯下降中
ledforbid<
=(A==1&
B==1);
//电梯处于锁定
ledstay<
b00&
//电梯停留
if(A==1&
B==0)
begin//requestup
if(c5==1)
floor1[4]<
=1;
if(c4==1)
floor1[3]<
if(c3==1)
floor1[2]<
if(c2==1)
floor1[1]<
if(c1==1)
floor1[0]<
end
elseif(B==1&
A==0)
begin//requestdown
if(c6==1)
floor2[5]<
floor2[4]<
floor2[3]<
floor2[2]<
floor2[1]<
elseif(A==0&
B==0)//requestintheelv
begin
floor3[5]<
floor3[4]<
floor3[3]<
floor3[2]<
floor3[1]<
floor3[0]<
else
floor1[4:
0]<
=floor1[4:
0];
floor2[5:
1]<
=floor2[5:
1];
floor3[5:
=floor3[5:
case(i)
1:
//the1stfloor
if(floor1[0]==1'
b1||floor3[0]==1'
b1)//openthendoor
if(t==2)
s<
=2'
b00;
//stop
control<
b10;
if(t==4)
b11;
if(t==6)
=1'
b0;
=0;
elseif(floor1[0]!
b1&
floor3[0]!
t==2)
if(floor1[4:
1]==4'
b0000&
1]==5'
b00000&
b00000)
i<
else
b01;
//up
=i+4'
end
2:
//the2edfloor
if((floor1[1]==1'
b1||floor3[1]==1'
b1))//本层有需求,停留后开门和关门
if(t==2)
s<
control<
if(t==4)
//开门
if(t==6)
floor1[1]<
floor3[1]<
//关门
t<
elseif(!
(s==2'
(floor1[1]==1'
b1))&
(floor2[1]==1'
t==2)//本层无需求
begin
if(s==2'
b01)//若处于上升中
2]!
=3'
b000||floor2[5:
=4'
b0000||floor3[5:
b0000)//上面有需求
elseif(floor1[4:
2]==3'
b000&
2]==4'
floor3[0]==1'
b1)//下面有需求
//down
=i-4'
end
elseif(s==2'
b10)//down//若处于下降中
if(floor3[0]!
b0||floor1[0]!
b0)//下面有需求
elseif(floor1[0]==1'
b0&
b000)//上面有需求
elseif(s==2'
b00)//若处于停留
b0000)//上面有需求
//up
elseif(floor1[0]!
b0||floor3[0]!
//down
//下面几层都和二层的情况一样,故不做相应的注释
3:
//the3rdfloor
if((floor1[2]==1'
b1||floor3[2]==1'
b1))//openthendoor
floor1[2]<
floor3[2]<
elseif((floor2[2]==1'
floor2[2]<
(floor1[2]==1'
(floor2[2]==1'
t==2)
b01)//up
3]!
b00||floor2[5:
b000||floor3[5:
b000)
elseif(floor1[4:
3]==2'
b00&
3]==3'
(floor2[1]!
b0||floor3[1:
0]!
b00))
elseif(s==2'
b10)//down
if(floor1[1:
b00||floor3[1:
b00||floor2[1]!
b0)
elseif(floor2[1]==1'
floor3[1:
0]==2'
b00)
begin//up
else//stop
elseif(s==2'
b00)
b000)//up
elseif(floor1[1:
b00)//down
end
4:
//the4thfloor
if((floor1[3]==1'
b1||floor3[3]==1'
b1))//openthendoor
floor1[3]<
floor3[3]<
elseif((floor2[3]==1'
floor2[3]<
(floor1[3]==1'
(floor2[3]==1'
if(floor1[4]!
b0||floor2[5:
4]!
b00||floor3[5:
elseif(floor1[4]==1'
4]==4'
(floor2[2:
1]!
b00||floor3[2:
b000))
if(floor1[2:
b000||floor3[2:
b000||floor2[2:
elseif(floor2[2:
1]==2'
floor3[2:
0]==3'
floor1[4]==1'
b1)
elseif(floor1[2:
b000||floor2[2:
5:
//the5thfloor
if((floor1[4]==1'
b1||floor3[4]==1'
floor1[4]<
floor3[4]<
elseif((floor2[4]==1'
floor2[4]<
(floor1[4]==1'
(floor2[4]==1'
if(floor3[5]==1'
b1||floor2[5]==1'
b1)
elseif(floor2[5]==1'
floor3[5]==1'
(floor2[3:
b000||floor3[3:
b0000))
b1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 电梯 控制器 设计 报告