洗衣機(jī)控制器課程設(shè)計(jì)_第1頁(yè)
洗衣機(jī)控制器課程設(shè)計(jì)_第2頁(yè)
洗衣機(jī)控制器課程設(shè)計(jì)_第3頁(yè)
洗衣機(jī)控制器課程設(shè)計(jì)_第4頁(yè)
洗衣機(jī)控制器課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、九江學(xué)院課 程 設(shè) 計(jì)課 程 EDA技術(shù)課程設(shè)計(jì) 題 目 洗衣機(jī)控制器 院 系 電子信息學(xué)院 專業(yè)班級(jí) 電子信息工程技術(shù) 學(xué)生姓名 張翁生 學(xué)生學(xué)號(hào) 37 指導(dǎo)教師 高玉寶 一、設(shè)計(jì)要求與原理設(shè)計(jì)一個(gè)洗衣機(jī)控制器,要求洗衣機(jī)有正轉(zhuǎn)、反轉(zhuǎn)、暫停三種狀態(tài)。設(shè)定洗衣機(jī)的工作時(shí)間,要洗衣機(jī)在工作時(shí)間內(nèi)完成:定時(shí)啟動(dòng)正轉(zhuǎn)20秒暫停10秒反轉(zhuǎn)20秒暫停10秒定時(shí)未到回到“正轉(zhuǎn)20秒暫停10秒”,定時(shí)到則停止,同時(shí)發(fā)出提示音?;疽螅?、設(shè)計(jì)一個(gè)電子定時(shí)器,控制洗衣機(jī)作如下運(yùn)轉(zhuǎn):定時(shí)啟動(dòng)正轉(zhuǎn)20秒暫停10秒反轉(zhuǎn)20秒暫停10秒定時(shí)未到回到“正轉(zhuǎn)20秒暫停10秒”,定時(shí)到則停止;2、若定時(shí)到,則停機(jī)發(fā)出音響

2、信號(hào);3、用兩個(gè)數(shù)碼管顯示洗滌的預(yù)置時(shí)間(分鐘數(shù)),按倒計(jì)時(shí)方式對(duì)洗滌過(guò)程作計(jì)時(shí)顯示,直到時(shí)間到停機(jī);洗滌過(guò)程由“開(kāi)始”信號(hào)開(kāi)始;4、三只LED燈表示“正轉(zhuǎn)”、“反轉(zhuǎn)”、“暫?!比齻€(gè)狀態(tài)。二、洗衣機(jī)的工作過(guò)程首先用電路控制三只LED顯示洗衣機(jī)正轉(zhuǎn)、反轉(zhuǎn)、暫停三種狀態(tài)。然后用電子定時(shí)器控制洗衣機(jī)設(shè)定的工作時(shí)間,以及正傳和反轉(zhuǎn)運(yùn)行時(shí)間的控制。同時(shí)用兩個(gè)數(shù)碼管顯示洗滌的預(yù)置時(shí)間(按分鐘計(jì)數(shù)),按倒計(jì)時(shí)方式對(duì)洗滌過(guò)程作計(jì)時(shí)顯示,直到時(shí)間到停機(jī);洗滌過(guò)程由“開(kāi)始”信號(hào)開(kāi)始;最后定時(shí)到則停止,同時(shí)用蜂鳴器發(fā)出提示音。通過(guò)各種開(kāi)關(guān)組成控制電路,使洗衣機(jī)實(shí)現(xiàn)程序運(yùn)轉(zhuǎn)。 直至結(jié)束為止。三、各模塊圖洗衣機(jī)控制電路

3、由定時(shí)輸入模塊,電機(jī)輸出模塊,電機(jī)時(shí)間控制模塊,數(shù)字顯示電路,倒計(jì)時(shí)模塊以及報(bào)警器模塊組成。 循環(huán)控制電路,使其在三個(gè)狀態(tài)轉(zhuǎn)換按鍵控制模塊控制循環(huán)時(shí)間數(shù)字顯示模塊 報(bào)警電路定時(shí)輸入模塊 倒計(jì)時(shí)模塊 圖一 四、各模塊的VHDL代碼與仿真結(jié)果1、輸入定時(shí)模塊,此模塊是為了實(shí)現(xiàn)希望讓洗衣機(jī)工作多少個(gè)分鐘,有兩個(gè)數(shù)碼管顯示工作時(shí)間,所以可以不同要求輸入要洗衣的時(shí)間,可以輸入159分鐘不等時(shí)間,人性化控制,與實(shí)際的洗衣機(jī)工作是一樣的。程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.ST

4、D_LOGIC_UNSIGNED.ALL;entity shuru isPort ( shu : in std_logic; hshu: in std_logic; din : in std_logic; dout:out std_logic_vector(3 downto 0); dout1:out std_logic_vector(3 downto 0); end shuru;architecture Behavioral of shuru issignal count: std_logic_vector(3 downto 0);signal count1: std_logic_vecto

5、r(3 downto 0);beginprocess(shu,hshu,din)begindout<=count;dout1<=count1; if din='0' then dout<="1111"dout1<="1111" elsif rising_edge(shu) then if count="1001" then count<="0000" else count<=count+1; end if; end if; if rising_edge(hshu)

6、 then if count1="0110" then count1<="0000" else count1<=count1+1; end if; end if;end process;end Behavioral;仿真波形如下2、產(chǎn)生1HZ頻率的信號(hào) 此程序是將學(xué)校試驗(yàn)箱上提供的48MHZ的信號(hào)分頻成1HZ頻率的信號(hào),這樣可以一秒進(jìn)行計(jì)數(shù),程序很簡(jiǎn)單,如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fp48M is port

7、(clk_48MHZ: in std_logic; clk_1HZ: out std_logic );end fp48M;architecture behav of fp48M is signal clk_1HZ_r: std_logic; signal count : std_logic_vector(24 downto 0); begin process (clk_48MHZ)begin if clk_48MHZ'event and clk_48MHZ='1' then if count="1011011100011010111111111"th

8、en count<=(others=>'0'); clk_1HZ_r<=not clk_1HZ_r; else count<=count+1; clk_1HZ<=clk_1HZ_r; end if; end if;end process;end behav;3、提供定時(shí)脈沖模塊 此模塊提供1分鐘產(chǎn)生一個(gè)高電平和5秒產(chǎn)生一個(gè)高電平,這兩個(gè)脈沖為后面的循環(huán)和控制60秒減一分鐘有很多的作用,起到后面的鏈接作用,同時(shí)可以根據(jù)自己來(lái)設(shè)置各狀態(tài)工作時(shí)間,這可以和后面的循環(huán)控制一起來(lái)控制,程序如:library IEEE;use IEEE.STD_LOGIC_1

9、164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity washmachine is Port ( clk : in std_logic; c :out std_logic; d :out std_logic);end washmachine;architecture miao20 of washmachine issignal count: std_logic_vector(2 downto 0); signal shi: integer range 0 to 60;beginprocess(cl

10、k)begin if rising_edge(clk) then if shi=60 then shi<=0;c<='1' else shi<=shi+1;c<='0' end if; if count="100" then count<="000" d<='1' else count<=count+1; d<='0' end if; end if; end process;end miao20;仿真波形如下:4、循環(huán)控制模塊此模塊是為了實(shí)現(xiàn)能

11、夠控制洗衣機(jī)正轉(zhuǎn)、反轉(zhuǎn)、暫停的功能,同時(shí)也可以和前一模塊一起控制各個(gè)狀態(tài)的工作時(shí)間。library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity dianji is Port ( cc :in std_logic; deng : out std_logic_vector(2 downto 0);end dianji;architecture di of dianji is signal count : std_logic_vector(3

12、downto 0); signal deng1 : std_logic_vector(2 downto 0);begin deng<=deng1;process(cc)begin if rising_edge(cc) then if count = "1010" then count <= "0000" else count <= count+1; end if; if count="0000" then deng1<="011" elsif count="0100" t

13、hen deng1<="101" elsif count="0110" then deng1<="110" end if; end if; end process;end di ;仿真波形如下:5、分鐘的個(gè)位控制根據(jù)課程設(shè)計(jì)要求,把工作狀態(tài)及工作時(shí)間顯示出來(lái),按下KEY5鍵就可以顯示工作時(shí)間的分鐘個(gè)位顯示在數(shù)碼管上,可以根據(jù)洗衣不同要求設(shè)置同時(shí)可以控制分鐘的十位時(shí)間,當(dāng)個(gè)位分鐘為0時(shí)下一個(gè)分鐘個(gè)位脈沖過(guò)來(lái)分鐘的十位就減1程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IE

14、EE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fen_l is Port ( jian : in std_logic; reset : in std_logic; din : in std_logic_vector(3 downto 0); dout : out std_logic_vector(3 downto 0); c:out std_logic);end fen_l;architecture Behave of fen_l is signal count : std_logic_vector(3 downto

15、 0);begin dout <= count;process(jian,reset,din)begin if reset='0'then count <= din ; c<='0' elsif rising_edge(jian) then if count = "0000" then count <= "1001" c<='1' else count <= count-1; c<='0' end if; end if; end process;en

16、d Behave;仿真波形如下:6、分鐘的十位控制根據(jù)課程設(shè)計(jì)要求,把工作狀態(tài)及工作時(shí)間顯示出來(lái),按下KEY5鍵就可以顯示工作時(shí)間的分鐘十位顯示在數(shù)碼管上,可以根據(jù)洗衣不同要求設(shè)置,這和上面程序相似,當(dāng)個(gè)位分鐘為0時(shí)下一個(gè)分鐘個(gè)位脈沖過(guò)來(lái)分鐘的十位就減1程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fen_h is Port ( jian : in std_logic; reset : in std_logic;

17、din : in std_logic_vector(3 downto 0); dout : out std_logic_vector(3 downto 0); c:out std_logic);end fen_h;architecture Behave of fen_h is signal count : std_logic_vector(3 downto 0);begin dout <= count;process(jian,reset,din)begin if reset='0'then count <= din ; c<='0' elsi

18、f rising_edge(jian) then if count = "0000" then count <= "1001" c<='1' else count <= count-1; c<='0' end if; end if; end process;end Behave;7、數(shù)碼管顯示模塊 此模塊是顯示要洗衣的時(shí)間,這個(gè)時(shí)間是可以在前面的控制模塊控制的,安下KEY5鍵就可以顯示時(shí)間。LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD

19、_LOGIC_Arith.ALL;USE IEEE.STD_LOGIC_Unsigned.ALL;ENTITY xianshi_led ISPORT(clk_2k: IN STD_LOGIC;d: IN STD_LOGIC_VECTOR(7 DOWNTO 0); -輸入要顯示的數(shù)據(jù)dig: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -數(shù)碼管選擇輸出引腳seg: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -數(shù)碼管段輸出引腳);END ENTITY;ARCHITECTURE one OF xianshi_led ISSIGNAL seg_r: ST

20、D_LOGIC_VECTOR(7 DOWNTO 0); -定義數(shù)碼管輸出寄存器SIGNAL dig_r: STD_LOGIC_VECTOR(7 DOWNTO 0); -定義數(shù)碼管選擇輸出寄存器SIGNAL disp_dat: STD_LOGIC_VECTOR(3 DOWNTO 0); -定義顯示數(shù)據(jù)寄存器SIGNAL count: STD_LOGIC_VECTOR(2 DOWNTO 0); -定義計(jì)數(shù)寄存器BEGINdig<=dig_r;seg<=seg_r;PROCESS(clk_2k)BEGIN IF RISING_EDGE(clk_2k) THEN count<=cou

21、nt+1; END IF;END PROCESS;PROCESS(clk_2k)BEGIN IF RISING_EDGE(clk_2k) THEN CASE count IS WHEN "000"=> disp_dat<=d(7 DOWNTO 4); -第一個(gè)數(shù)碼管 WHEN "001"=> disp_dat<=d(3 DOWNTO 0); -第二個(gè)數(shù)碼管 when others=>null; END CASE; CASE count IS -選擇數(shù)碼管顯示位 WHEN "000"=> dig_r&

22、lt;="01111111" -選擇第一個(gè)數(shù)碼管顯示 WHEN "001"=> dig_r<="10111111" -選擇第二個(gè)數(shù)碼管顯示 when others=>null; END CASE; END IF;END PROCESS;PROCESS(disp_dat)BEGIN CASE disp_dat IS WHEN X"0"=> seg_r<=X"c0"-顯示0 WHEN X"1"=> seg_r<=X"f9&quo

23、t;-顯示1 WHEN X"2"=> seg_r<=X"a4"-顯示2 WHEN X"3"=> seg_r<=X"b0"-顯示3 WHEN X"4"=> seg_r<=X"99"-顯示4 WHEN X"5"=> seg_r<=X"92"-顯示5 WHEN X"6"=> seg_r<=X"82"-顯示6 WHEN X"7"

24、;=> seg_r<=X"f8"-顯示7 WHEN X"8"=> seg_r<=X"80"-顯示8 WHEN X"9"=> seg_r<=X"90"-顯示9 WHEN X"a"=> seg_r<=X"88"-顯示a WHEN X"b"=> seg_r<=X"83"-顯示b WHEN X"c"=> seg_r<=X"c

25、6"-顯示c WHEN X"d"=> seg_r<=X"a1"-顯示d WHEN X"e"=> seg_r<=X"86"-顯示e WHEN X"f"=> seg_r<=X"8e"-顯示f END CASE;END PROCESS;END;8、提供數(shù)碼管工作頻率模塊 由于數(shù)碼管要工作在2KHZ的頻率信號(hào)下有所需要將試驗(yàn)箱48MHZ的信號(hào)分頻分頻成2KHZ,此程序和產(chǎn)生1HZ是一樣的程序如下:LIBRARY IEEE;USE IEEE

26、.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fp2k is port(clk_48MHZ: in std_logic; clk_2KHZ: out std_logic );end fp2k;architecture behav of fp2k is signal clk_2KHZ_r: std_logic; signal count : std_logic_vector(14 downto 0); begin process (clk_48MHZ)begin if clk_48MHZ'event and clk_48MHZ='1' then if count="10111011011111"then count<=(ot

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論