엘리베이터 제어기
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 실습주제

2.엘리베이터 동작절차분석

3.엘리베이터 운행에 영향을 끼치는 변수들 조사 .

4.엘리베이터 편의성을 높이기 위한 방안.

5. 후기

6.추가 해야할것들.

7.vhdl 소스코드

본문내용

s ( clk, sel_floor)
begin
if clk'event and clk = '1' then
-- 해당 층 선택 버튼이 눌려지면 해당 변수는 '1'로 설정되고 해당 층에
-- 도착할 경우 값은 '0'으로 된다.
if senser_floor(0) = '0' then
sel_floor(0) <= '0';
elsif bt_floor(0) = '0' then
sel_floor(0) <= '1';
end if;
if senser_floor(1) = '0' then
sel_floor(1) <= '0';
elsif bt_floor(1) = '0' then
sel_floor(1) <= '1';
end if;
if senser_floor(2) = '0' then
sel_floor(2) <= '0';
elsif bt_floor(2) = '0' then
sel_floor(2) <= '1';
end if;
if senser_floor(3) = '0' then
sel_floor(3) <= '0';
elsif bt_floor(3) = '0' then
sel_floor(3) <= '1';
end if;
end if;
led_sel_floor <= sel_floor;
end process;
-- 엘리베이터가 위치한 층을 7segment로 표시하기 위한 구문
process ( clk )
variable seg : std_logic_vector (6 downto 0);
begin
if clk'event and clk = '1' then
case senser_floor is
when "0111" =>
seg := "1100110";
floor <= "11";
when "1011" =>
seg :="1001111";
floor <= "10";
when "1101" =>
seg := "1011011";
floor <= "01";
when "1110" =>
seg := "0000110";
floor <= "00";
when "1111" =>
seg := seg;
floor <= floor;
when others =>
seg := "1111001";
floor <= floor;
end case;
end if;
seg_floor <= seg;
end process;
process(clk)
variable cnt_Hz : integer range 0 to 100;
variable cnt_Hzz : integer range 0 to 50;
begin
if clk'event and clk = '1' then
if cnt_Hz = 100 then
cnt_Hz := 0;
CLK_T <= NOT CLK_T;
else
cnt_Hz := cnt_Hz + 1;
end if;
if cnt_Hzz = 50 then
cnt_Hz := 0;
CLK_TT <= NOT CLK_TT;
else
cnt_Hzz := cnt_Hzz + 1;
end if;
end if;
end process;
process(soun,clk_t,clk_tt)
begin
if soun = "01" then
buz <= clk_t;
elsif soun = "10" then
buz <= clk_tt;
else
buz <= '0';
end if;
end process;
-- 스텝 모터를 구동하기 위한 데이터를 생성하기 위한 구문
process ( clk )
variable count : integer range 0 to 1;
variable d_count: integer range 0 to 4;
-- m_data의 값을 우로 1bit 순환 쉬프트하면 상승이 되며
-- 좌로 1bit 순환 쉬프트하면 하강이 된다.
variable m_data : std_logic_vector (3 downto 0);
begin
if clk'event and clk = '1' then
if status = "10" or status = "01" or status = "110" or status = "001" then
if count = 1 then
count := 0;
if d_count = 3 then
d_count := 0;
else
d_count := d_count + 1;
end if;
else
d_count := d_count;
count := count + 1;
end if;
else
d_count := d_count;
count := count;
end if;
--고속상승제어
if status = "110" then
if d_count = 0 then
m_data := "0011";
elsif d_count = 1 then
m_data := "1001";
elsif d_count = 2 then
m_data := "1100";
else
m_data := "0110";
end if;
--고속하강제어
elsif status = "011" then
if d_count = 0 then
m_data := "1100";
elsif d_count = 1 then
m_data := "1001";
elsif d_count = 2 then
m_data := "0011";
else
m_data := "0110";
end if;
else
m_data := m_data;
--저속상승제어
if status = "100" then
if d_count = 0 then
m_data := "0001";
elsif d_count = 1 then
m_data := "1000";
elsif d_count = 2 then
m_data := "0100";
else
m_data := "0010";
end if;
--저속하강제어
elsif status = "001" then
if d_count = 0 then
m_data := "1000";
elsif d_count = 1 then
m_data := "0001";
elsif d_count = 2 then
m_data := "0010";
else
m_data := "0100";
end if;
else
m_data := m_data;
end if;
end if;
end if;
motor_data <= m_data;
end process;
end cont_car;
  • 가격2,000
  • 페이지수17페이지
  • 등록일2008.02.26
  • 저작시기2007.12
  • 파일형식한글(hwp)
  • 자료번호#452200
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니