工程文件链接:Verilog简易电梯控制系统设计(两层,含附加项蜂鸣器和流水灯)-单片机文档类资源-CSDN下载

一、实验项目名称:简易电梯控制系统(2层)

二、实验学时:2

三、设计目标:

1.实现2层楼的简易电梯控制系统。

2.电梯有4个按键。

1楼外只有向上按键(KEY0),2楼外只有向下按键(KEY1),电梯内还有2个按键分别为1楼按键(KEY2)和2楼按键(KEY3)。所有楼层外和电梯内的按键产生的信号作为给电梯的运行请求信号。

3.电梯有4个指示灯(LED0、 LED1 、 LED2 、 LED3)。

LED0: 按下KEY0键,若电梯不在1楼,则LED0亮。

LED1: 按下KEY1键,若电梯不在2楼,则LED1亮。

LED2: 电梯在2楼,按KEY2键, 则LED2亮,电梯到1楼后LED2灭。

LED3: 电梯在1楼,按KEY3键, 则LED3亮,电梯到2楼后LED3灭。

4.有2个数码管,分别显示当前运行状态及楼层。

(1)1个数码管显示当前运行状态,电梯有三个运行状态:待机、上行、下行。

待机:电梯停在1楼或2楼且无请求信号时均为待机状态。

上行状态:电梯停在1楼,有KEY1或KEY3被按下,进入上行状态。

下行状态:电梯停在2楼,有KEY0或KEY2被按下,进入下行状态。

(2)1个数码管显示所在楼层,显示1或2;每一层楼之间的运行时间间隔为5秒。

5.有2个拨码开关。

(1)复位开关。向下拨动后,电梯复位回到1楼。

(2)启动开关。向上拨动后,按键有效,电梯正常工作。

6.增加其它功能后续发布,如能实现有加分:

1.电梯上行时,LED11至LED7五个指示灯从左到右每隔一秒点亮一个;

电梯下行时,LED7至LED11五个指示灯从右到左每个一秒点亮一个。

2.电梯运行到达心楼层时,蜂鸣器发出一声清晰“嘀”声。

3.电梯开始上行或者下行时,在最左边的两个数码管上倒计时显示运行时间4.9~0.0秒,精度为0.1s。到达新楼层时显示0.0秒

4.电梯上行时,楼层显示数码管前4s显示1,后1s显示2;

电梯下行时,楼层显示数码管前4s显示2,后1s显示1。

四、设计方案框图

五、程序代码:

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/06/02 19:34:35
// Design Name:
// Module Name: top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module top(input clk,input rst_n,input start,input  [3:0] key,output reg [4:0] state_led = 0,output reg buzzer = 1,output reg [3:0] led =0,output  [3:0] row,output  [7:0] data_seg,output  [5:0] data_dig); //--------------------------------------------------------------------------------------------------
//按键相关
assign row = 4'b1110;  //只需要用到最下面一行,不需要按建行扫描
//按键消抖
wire [3:0] key_xd;
ajxd u2 (
.clk  (clk),
.btn_in  ( key),
.rst_n  (rst_n),
.btn_out  (key_xd)
);
//定义四个按键信号,代表按下按键并消抖之后的信号
wire key0,key1,key2,key3;
//按键按下时定义为高电平
assign key0 = ~(key_xd[0]|row[0]);
assign key1 = ~(key_xd[1]|row[0]);
assign key2 = ~(key_xd[2]|row[0]);
assign key3 = ~(key_xd[3]|row[0]);
//--------------------------------------------------------------------------------------------------
/*
每一个按键都对应了一个五秒的计时器,
该计时器检测到按键上升沿信号后开始计时,
计时状态位--status:  1 = 计时中  ;  0 = 计时完成
*/
//四个状态位,分别代表了key0下行,key1上行,key2下行,key3上行状态
wire status_dow0;
wire status_up1;
wire status_dow2;
wire status_up3;
/*
四个按键信号延迟位 key_delay_x    x=0,1,2,3
为了完成"在上行状态时按下KEY0或KEY2下行,电梯到达2楼后立刻下行"这一要求
在计时器中添加了一个按键被按下后的延迟按键信号输出
其功能为:
若处于上行状态中,按下KEY0或KEY2,那么KEY0或KEY2对应的计时器会被触发,但由于
还处于上行状态,无法开启下行状态。于是将等待上行状态完成后模拟一次KEY0或KEY2被
按下的信号。相当于在上行状态结束的一瞬间再按下了KEY0或KEY2一次,以此来达到期望的效果。
在下行状态按下上行按键也同理
*/
wire key_d0;
wire key_d1;
wire key_d2;
wire key_d3;/*
用来记录四个按键是否被按下的信号,其主要作用是点亮按键对应的led灯
当按键被按下对应的flag就会置位为1,后面会用到该信号来点亮按键对应的
led灯
*/
wire flag0;
wire flag1;
wire flag2;
wire flag3;//定义两个楼层
reg lou1,lou2;
//定义5个状态---上行(key1)、上行(key3)、下行(key0)、下行(key2)、待机
reg state_up1,state_up3,state_dow0,state_dow2,state_wait;wire rstout;//实现复位功能需要的中间变量
//当复位键按下,rstout表示产生的脉冲信号maichong u1(clk_1khz,rst_n,rstout );/*
例化计时器模块
*/
count_5 dow_count0 (
.clk  (clk),
.en  ((key0|rstout==0)&(lou2|(~state_wait))&(~led[2])),
.flag  (flag0),
.key_d (key_d0),
.wait1  (status_up1),
.wait2  (status_up3),
.status  (status_dow0)
);count_5 up_count1 (
.clk  (clk),
.en  (key1&(lou1|(~state_wait))&(~led[3])),
.flag  (flag1),
.key_d (key_d1),
.wait1  (status_dow0),
.wait2  (status_dow2),
.status  (status_up1)
);count_5 dow_count2 (
.clk  (clk),
.en  ((key2|rstout==0)&(lou2|(~state_wait))&(~led[0])),
.flag  (flag2),
.key_d (key_d2),
.wait1  (status_up1),
.wait2  (status_up3),
.status  (status_dow2)
);count_5 up_count3 (
.clk  (clk),
.en  (key3&(lou1|(~state_wait))&(~led[1])),
.flag  (flag3),
.key_d (key_d3),
.wait1  (status_dow0),
.wait2  (status_dow2),
.status  (status_up3)
);//--------------------------------------------------------------------------------------------------
/*
楼层及电梯状态判断
*/
//定义5个状态---上行(key1)、上行(key3)、下行(key0)、下行(key2)、待机
//reg state_up1,state_up3,state_dow0,state_dow2,state_wait;
//定义两个楼层
//reg lou1,lou2;
//初始状态:电梯停在一楼,待机状态
initial
begin
lou1 = 1;
lou2 = 0;
state_up1 = 0;
state_up3 = 0;
state_dow0 = 0;
state_dow2 = 0;
state_wait = 1;
end/*
使用计时器状态和楼层状态以及按键被按下的信号做逻辑判断
以此来改变楼层状态位和上下行状态位以及待机状态位
*/
always@(posedge clk)
begin
//    if(rst_n == 0)    //复位,所有状态皆回到初始值
//        begin
//            lou1 = 1;
//            lou2 = 0;
//            state_up1 = 0;
//            state_up3 = 0;
//            state_dow0 = 0;
//            state_dow2 = 0;
//            state_wait = 1;
//        endif (start == 1)   //启动begin                                   if(lou1&(~lou2)&(key_d1|key_d3)) //电梯不处于上行状态且电梯在一楼、KEY1或KEY3被按下,则电梯进入上行状态,跳出待机状态beginif(status_up1 == 1)   beginstate_up1 <= 1;state_wait <= 0;                           endelse if (status_up3 == 1)beginstate_up3 <= 1;state_wait <= 0;                           endend                                else  beginif((status_up1 == 0)&(state_up1 == 1)) //上行状态保持5秒后,status_up1/3置位、上行状态结束、进入待机状态、楼层状态翻转begin    state_up1 <= 0;state_wait <= 1;lou1 <= ~lou1;lou2 <= ~lou2;endelse if((status_up3 == 0)&(state_up3 == 1))begin    state_up3 <= 0;state_wait <= 1;lou1 <= ~lou1;lou2 <= ~lou2;endendif(lou2&(~lou1)&(key_d0|key_d2|(rstout==0))) //电梯不处于下行状态且电梯在二楼、KEY2或KEY0被按下,则电梯进入下行状态,跳出待机状态beginif(status_dow0 == 1)   beginstate_dow0 <= 1;state_wait <= 0;                           endelse if (status_dow2 == 1)beginstate_dow2 <= 1;state_wait <= 0;                           endend                                else  beginif((status_dow0 == 0)&(state_dow0 == 1))   //下行状态保持5秒后,status_dow0/2置位、下行状态结束、进入待机状态、楼层状态翻转begin    state_dow0 <= 0;state_wait <= 1;lou1 <= ~lou1;lou2 <= ~lou2;endelse if((status_dow2 == 0)&(state_dow2 == 1))begin    state_dow2 <= 0;state_wait <= 1;lou1 <= ~lou1;lou2 <= ~lou2;endend                end
end
点亮LED灯
*/
always@(posedge clk )
beginif(rst_n == 1'b0)   //resetbeginled <= 0;endelseif(start == 1)  //startbeginled[0] <=  (status_dow0&(~status_dow2)&(lou2&(~lou1)))|((state_up1|state_up3)&flag0);led[1] <=  (status_up1&(~status_up3)&(lou1&(~lou2)))|((state_dow0|state_dow2)&flag1);led[2] <=  (status_dow2&(~status_dow0)&(lou2&(~lou1)))|((state_up1|state_up3)&flag2);led[3] <=  (status_up3&(~status_up1)&(lou1&(~lou2)))|((state_dow0|state_dow2)&flag3);end
end//--------------------------------------------------------------------------------------------------
/*
这里使用的是共阴极数码管,若为共阳极数码管则只需要改动数码管相关的一些代码
调用数码管动态显示模块控制数码管的显示
用两个七段(八段)数码管,一个显示楼层数字,一个显示上行、下行、待机状态。
上行用数码管a亮其他灭表示;待机用数码管g亮其他灭表示;下行用数码管d亮其他灭表示。
*/
reg [6:0] data_seg0;  //运行状态显示
reg [6:0] data_seg1;  //当前楼层显示
seg_scan  scan (
.clk  (clk),
.data_seg0  (data_seg1),
.data_seg1  (data_seg0),
.data_seg  (data_seg),
.data_dig  (data_dig)
);
//定义一个数码管状态变量,方便用数码管显示状态
wire [6:0] status_seg ;
assign status_seg = {lou1,lou2,state_up1,state_up3,state_dow0,state_dow2,state_wait};
always@(posedge clk)
begincase(status_seg)    7'b1000001:     //1楼待机begindata_seg0 <= 7'b1000000;data_seg1 <= 7'b0000110;end7'b1010000:    //1楼上行--status_up1--KEY1被按下begindata_seg0 <= 7'b0000001;data_seg1 <= 7'b0000110;end7'b1001000:    //1楼上行--status_up3--KEY3被按下begindata_seg0 <= 7'b0000001;data_seg1 <= 7'b0000110;end7'b0100001:    //2楼待机begindata_seg0 <= 7'b1000000;data_seg1 <= 7'b1011011;end7'b0100100:    //2楼下行--status_dow0--KEY0被按下begindata_seg0 <= 7'b0001000;data_seg1 <= 7'b1011011;end7'b0100010:    //2楼下行--status_dow2--KEY2被按下begindata_seg0 <= 7'b0001000;data_seg1 <= 7'b1011011;enddefault:    //其他情况,显示E,待机begindata_seg0 <= 7'b1000000;data_seg1 <= 7'b1111001;endendcase
end//--------------------------------------------------------------------------------------------------
//附加功能:蜂鸣器
//这里采用无源蜂鸣器,需要输入一定频率的方波信号
//输入信号频率决定了蜂鸣器发出的声音频率,这里采用500hz的方波信号//获得1khz的信号
reg [31:0] temp =0;
reg clk_1khz = 0;
always@(posedge clk)
beginif(temp == 49999)begintemp <= 0;clk_1khz <= 1;endelsebegintemp <= temp +1;clk_1khz <= 0;end
endreg lou1_dly;
reg turn = 0;
reg [15:0] cnt = 0;
//这是一个检测信号翻转的模块
//检测楼层状态是否翻转,若翻转则turn = 1并开始计时,计时完成后turn = 0
always@(posedge clk)
beginlou1_dly <= lou1;if(lou1 != lou1_dly)turn <= 1;else if(cnt == 100)turn <= 0;
end  //当turn = 1时向蜂鸣器输入1khz的信号,蜂鸣器响0.1s,这里蜂鸣器响的时间由上面的cnt计数器决定
//t = cnt_max / 1000     单位s
parameter cnt_max = 100;
always@(posedge clk_1khz)
beginif(turn == 1)beginif(cnt == cnt_max)cnt <= 0;elsecnt <= cnt + 1;endelsecnt <= 0;
end   //作为蜂鸣器的输入信号buzzer的声音频率为500hz
always@(posedge clk_1khz)
beginif(turn == 1)buzzer <= ~buzzer;else if(turn == 0)buzzer <= 0;
end                                                     //--------------------------------------------------------------------------------------------------
//附加功能:流水灯,上行状态将LED11---LED7从左到右每隔一秒依次点亮;
//                 下行状态将LED7---LED11从右到左每隔一秒依次点亮
//定义两个状态位控制流水灯的状态
wire state_up;//用来控制上行流水灯
wire state_dow;//用来控制下行流水灯
//为了防止预期以外的情况出现,这里采用了楼层和按键对应的led灯来共同控制流水灯的状态
assign state_up = (led[1]|led[3])&(lou1&(~lou2));
assign state_dow = (led[0]|led[2])&(lou2&(~lou1));/*
获得1.05hz的信号(总共5个灯,每隔一秒亮一个)
*/
reg [31:0] temp1 =0;
reg clk_1hz = 0;
always@(posedge clk or negedge state_up or negedge state_dow)
beginif(~(state_up|state_dow))begintemp1 <= 0;clk_1hz <= 0;endelse if(state_up | state_dow)beginif(temp1 == 47619046)begintemp1 <= 0;clk_1hz <= 1;endelsebegintemp1 <= temp1 +1;clk_1hz <= 0;endendelsetemp1 <= 0;
end//计数器
reg [3:0] cnt1 = 0;
always@(posedge clk_1hz or negedge state_up or negedge state_dow)
beginif(~(state_up|state_dow))begincnt1 <= 0;endelse if(state_up | state_dow)beginif(cnt1 == 5)cnt1 <= 0;elsecnt1 <= cnt1 + 1;endelsecnt1 <= 0;
endalways@(posedge clk )
beginif(state_up)begincase(cnt1)0 :state_led <= 5'b10000;1 :state_led <= 5'b11000;2 :state_led <= 5'b11100;3 :state_led <= 5'b11110;4 :state_led <= 5'b11111;default:state_led <= 5'b00000;endcaseendelse if(state_dow)begincase(cnt1)0 :state_led <= 5'b00001;1 :state_led <= 5'b00011;2 :state_led <= 5'b00111;3 :state_led <= 5'b01111;4 :state_led <= 5'b11111;default:state_led <= 5'b00000;endcaseendelse state_led <= 5'b00000;endendmodule//开关消抖部分module ajxd(input clk,input  [3:0] btn_in,output [3:0] btn_out,input rst_n);reg clk_20ms = 0;
reg [31:0] temp = 0;
always@(posedge clk)
beginif(rst_n == 0)begintemp <= 0;clk_20ms <= 0;endelse if(temp == 999999)begintemp <= 0;clk_20ms <= 1;endelse if(temp < 999999)beginclk_20ms <= 0;temp <= temp+1;end
end    reg [3:0] btn0;
reg [3:0] btn1;
reg [3:0] btn2;
initial
begin
btn0=0;
btn1=0;
btn2=0;
endalways@(posedge clk_20ms)
begin
btn0<=btn_in;
btn1<=btn0;
btn2<=btn1;
endassign btn_out=((btn0&btn1)&(~btn2) | (btn0&btn1&btn2) | ((~btn0)&btn1&btn2));endmodule//计时部分
module count_5(input en,    //使能位,即满足这次操作的条件input clk,input wait1,         //两个等待位,检测是否处于冲突状态input wait2,output reg flag =0,   //led灯使能信号,表示主灯,即每次操作第一次按下的灯output reg key_d,    //按键延迟信号output reg status = 0   //计数状态输出:为1计数、为0不计数,表示主灯所对应的状态);//等待位,如果该计时器被用于上行计时,那么如果处于下行状态时,计时器就会等待下行状态结束再开始计时
//这里的两个等待位分别对应了两个上行计数器的状态输出位---status
reg flag2 = 1;
always@(posedge clk)
beginif(wait1 | wait2)  //情况1:例:按下下行按键后再立刻按下上行按键中的某一个flag2 <= 0;    else              //情况2:例:只按下下行按键flag2 <= 1;
end        //使能位上升沿来临,计数器使能信号置位为1
//作用是记住按键被按下的状态
//flag1=1表示这个状态仍然成立,不管使能
reg flag1 = 1;
always@(posedge clk)
beginif(en == 1)      //若操作满足条件,则主灯亮flag <= 1;  else if (flag1 == 0)flag <= 0;
end//当使能位为1且不处于冲突状态时计时器开始计时,并将输出状态位置位为1
always@(posedge clk)
beginif(flag & flag2)status <= 1 ;else if (flag1 == 0)status <= 0;
end//在开始计时的时候获得一个冲激信号
//这个信号被用来模拟按键被按下的动作
reg [31:0] temp1 =0;
reg impluse = 0;
always@(posedge clk)
beginif(status == 0)begintemp1 <= 0;impluse <= 0;endelse if(temp1 < 10)begintemp1 <= temp1 +1;impluse <= 1;endelse begintemp1 <= temp1+1;impluse <= 0;end
end
//key_d = key_delay,是处于冲突状态时有按键被按下的延时信号,即冲突状态结束后模拟一次按键被按下的动作
always@(posedge clk)
beginif(impluse)key_d = 1;elsekey_d = 0;
end//获得1hz的信号,用来计时
reg [31:0] temp =0;
reg clk_1hz = 0;
always@(posedge clk)
beginif(status == 0)begintemp <= 0;clk_1hz <= 0;endelse if(temp == 49999999)begintemp <= 0;clk_1hz <= 1;endelsebegintemp <= temp +1;clk_1hz <= 0;end
end//开始计时
//计时完成后,计时器状态位复位,使能信号复位,等待下一次按键被按下
reg [2:0] count = 0;
always@(posedge clk_1hz or negedge status)
beginif(status == 0)begincount <=0;flag1 <= 1;endelse if(count == 4 )begincount <= 0;flag1 <= 0;endelsebegincount <= count + 1;flag1 <= 1;end
end   endmodule//数码管显示部分
module seg_scan(
input  clk,
input [6:0] data_seg0,
input [6:0] data_seg1,
output reg [7:0] data_seg,
output reg [5:0] data_dig
);
parameter clk_freq=50000000;//50Mhz
parameter scan_freq=200;//200hz
parameter scan_cont=clk_freq/scan_freq/2-1;reg [31:0] time_cont = 0;
reg  temp = 0;
always@(posedge clk)
beginif(time_cont<scan_cont)time_cont = time_cont+1;else  begintime_cont <= 0;temp <= ~temp;end
end            always@(posedge clk)
begincase(temp)0:begindata_seg<={1'b0,data_seg0};data_dig<=6'b111110;end1:begindata_seg<={1'b0,data_seg1};data_dig<=6'b111101;endendcase
end
/*         2:begindata_seg<={1'b0,data_seg2};data_dig<=6'b111011;end3:begindata_seg<={1'b0,data_seg3};data_dig<=6'b110111;end4:begindata_seg<={1'b0,data_seg4};data_dig<=6'b101111;end5:begindata_seg<={1'b0,data_seg5};data_dig<=6'b011111;end
*/
endmodule//脉冲module maichong(clk,rst,rstout );
input clk;
input rst;
output reg rstout=0;
//reg flag=0;
reg [4:0]count=0;
always@(posedge clk)
beginif(rst==0)  //开始复位beginif(count<20)begincount<=count+1;rstout<=0;                      endelsebeginrstout<=1;count<=20;endendelsebeginrstout<=1;count<=0;end
endendmodule

六、RTL仿真截图

 文件链接:Verilog简易电梯控制系统设计(两层,含附加项蜂鸣器和流水灯)-单片机文档类资源-CSDN下载

七、自己对设计要求完成度的评价:

基础部分

电梯处于1楼,按KEY3,LED3亮,电梯处于上行状态,楼层显示1;运行5秒至2楼后LED3灭,2楼待机。

已完成

电梯处于2楼,按KEY2,LED2亮,电梯处于下行状态,楼层显示2;运行5秒至1楼后LED2灭,1楼待机。

已完成

电梯处于1楼,按KEY1,LED1亮,电梯处于上行状态,楼层显示1;电梯运行至2楼后LED1灭,2楼待机。

已完成

电梯处于2楼,按KEY0,LED0亮,电梯处于下行状态,楼层显示2;运行至1楼后LED0灭,1楼待机。

已完成

电梯处于1楼,按KEY0或KEY2,指示灯均不应该亮,电梯1楼待机。

已完成

电梯处于1楼,按KEY3,LED3亮,电梯处于上行状态时,立刻按 KEY2,LED2亮,电梯继续运行至2楼,LED3灭;然后电梯自动返回1楼待机,LED2灭。

已完成

电梯处于1楼;按KEY3,LED3亮,电梯处于上行状态时,立刻按 KEY0,LED0亮,电梯继续运行至2楼,LED3灭;然后电梯自动返回1楼待机,LED0灭。

已完成

电梯处于1楼,按KEY1或 KEY3,让电梯运行至2楼待机;再按KEY1/ KEY3,指示灯均不应该亮,电梯继续待机。

已完成

电梯处于2楼,按KEY2,LED2亮,电梯处于下行状态时,立刻按 KEY3,LED3亮,电梯继续运行至1楼,LED2灭;然后电梯自动返回2楼待机,LED3灭。

已完成

电梯处于2楼,按KEY2,LED2亮,电梯处于下行状态时,立刻按 KEY1,LED1亮,电梯继续运行至1楼,LED2灭;然后电梯自动返回2楼待机,LED1灭。

已完成

将复位开关SW11拨至下方,电梯运行至1楼(运行时间5S)。

已完成

将启动开关SW0拨至下方,按任意按键均无反应。

已完成

发挥部分

电梯上行时,LED11至LED7五个指示灯从左到右每隔一秒点亮一个;

电梯下行时,LED7至LED11五个指示灯从右到左每隔一秒点亮一个。

已完成

电梯运行到达新楼层时,蜂鸣器发出一声清晰“嘀”声。

已完成

电梯开始上行或下行时,在最左边两个数码管上倒计时显示运行时间4.9~0.0(秒),精度为0.1秒。到达新楼层时显示0.0(秒)。

未完成

电梯上行时,楼层显示数码管前4秒显示1,后1秒显示2;

电梯下行时,楼层显示数码管前4秒显示2,后1秒显示1。

未完成

Verilog简易电梯控制系统(2层)相关推荐

  1. FPGA编程,verilog实现简易电梯控制系统,某大学数电实验课设

    开发环境:Vivado 2020.1 使用编程语言:Verilog 开发板芯片:xc7a35tftg256-1(具体开发板型号未知,不同版本的开发板可能某些元件的引脚电平会不同,可能需要根据自己手上的 ...

  2. 电梯控制系统的实现(代码简洁优质、易懂)

    目录 设计目的与要求 设计原理及方案 下面是设计的细节,再这里,笔者的注释都写得很清楚,因此不会啰嗦的一段段解释,只介绍关键的部分,其余的详见代码注释即可(此处建议直接看代码更好,上面的知识一个框架而 ...

  3. FPGA实现简易电梯控制系统设计

    这是某高校数字电路实验II课设,已实现2022年秋季学期所有功能 软硬件配置 系统:win10 软件:Vivado 2018.3 开发板芯片:xc7a35tftg256-2 设计要求 1.实现2层楼的 ...

  4. 单片机多电梯控制系统

    单片机多电梯控制系统 ​​​​​​​​ 写在前面: 前段时间单片机的课设题目,难度为5,算是选题1~5最难的一类.之前也没怎么学过,这次算是从头开始学习51单片机.此篇所写代码是基于我自己理解能让小白 ...

  5. 单片机课程设计电梯(c语言),单片机课程设计之电梯控制系统.docx

    PAGE \* MERGEFORMAT 23 JIANGSU UNIVERSITY OF TECHNOLOGY 单片机应用系统设计 电梯控制器 学 院: 电气信息工程学院 专 业: 测控技术与仪器 班 ...

  6. 基于51单片机的简易电梯系统的设计

    系统概述 设计要求 根据所学的知识以及技能,利用MCS-51系列单片机为中心设计一个简易电梯系统,实现四层电梯的无故障运行,并用数码管和指示灯显示对应楼层和运行方向等基本信息.设计所用的单片机为STC ...

  7. java 电梯类图,电梯控制系统(用UML图理解)

    5.9  电梯控制系统 在前面几节中,讨论了用于实现单个UML图的基本技术.现在,将演示如何将所有这些技术应用到实际问题中去.下面是简化的电梯控制系统的描述. 电梯由门.监视器和电梯控制器组成.电梯控 ...

  8. 计算机原理电梯控制系统设计,《智能电梯控制系统的实现》-毕业论文(设计).doc...

    PAGE 精品 题目:基于FPGA的智能电梯控制系统的实现 年 12 月 07 日 摘要 智能电梯控制系统的设计思想 智能电梯的编写的过程也不是一帆风顺的.而且我试过好多种方法去实现电梯的状态的转移. ...

  9. 计算机控制电梯报告总结,电梯控制系统论文

    电梯控制系统论文 摘  要 随着经济的高速发展,微电子技术.计算机技术和自动控制技术也得到了迅速发展,交流变频调速技术已经进入一个崭新的时代,其应用越来越广.电梯是现代高层建筑的垂直交通工具,其设计要 ...

最新文章

  1. Java笔试面试总结—try、catch、finally语句中有return 的各类情况
  2. How to Make a Computer Operating System
  3. pgjdbc源码分析
  4. Python 技术篇-在cmd命令提示行里模拟动态下载进度条实例演示,cmd清除日志、打印动态内容方法
  5. 9.2 mnist_with_summaries tensorboard 可视化展示
  6. 关于API的设计和需求抽象
  7. OpenResty+lua+GraphicsMagick生成缩略图
  8. JAVA_if或者怎么用,Java If语句
  9. ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
  10. 基本的正则表达式符号 【】
  11. 强化学习在推荐混排中的应用
  12. vue-props入门
  13. OpenGL超级宝典第5版基础渲染
  14. linux系统移植和根文件系统制作
  15. java中的Character和char的区别
  16. 【word】设置背景为绿豆沙保护色
  17. php 港澳台、大陆身份证正则表达式
  18. Eclipse中快捷键Ctrl + Alt + 向上箭头 或者 Ctrl + Alt + 向下箭头与Windows冲突
  19. PyTorch学习率衰减策略:指数衰减(ExponentialLR)、固定步长衰减(StepLR)、多步长衰减(MultiStepLR)、余弦退火衰减(CosineAnnealingLR)
  20. Java安卓适配全面屏_Android APP全面屏适配技术要点

热门文章

  1. DataGrip深入实战教程
  2. matlab 两行输出,设计一个c++程序输出两行*中间夹着hello
  3. 强大的录屏工具:Screen Recorder by Omi Mac
  4. TFTP 简单文件传输协议
  5. Go语言精进之路:绞尽脑汁,帮你理解方法本质并选择正确的receiver类型
  6. http和httpsd的区别
  7. hashmap有序吗?
  8. .mat文件批量转成图片——python脚本编写
  9. Python创建excel,并写入数据
  10. 解决org.apache.ibatis不存在的问题