數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)

上傳人:good****022 文檔編號(hào):116503434 上傳時(shí)間:2022-07-05 格式:DOC 頁數(shù):16 大?。?69.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)_第1頁
第1頁 / 共16頁
數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)_第2頁
第2頁 / 共16頁
數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)_第3頁
第3頁 / 共16頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)字電路課程設(shè)計(jì):基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì)(16頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 08電氣8班 吳俊 學(xué)號(hào):20080711121數(shù)字電路課程設(shè)計(jì)題目:基于FPGA和VHDL語言的洗衣機(jī)控制系統(tǒng)設(shè)計(jì) 報(bào)告員:吳俊 20080711121 組員:彭亮,劉靖,鄭淑芳 日期:2010年12月 20日課題:洗衣機(jī)定時(shí)系統(tǒng)功能:1按內(nèi)定標(biāo)準(zhǔn)洗滌時(shí)間洗滌,脫水時(shí)間脫水; 2有預(yù)約洗衣功能,如:你預(yù)約1小時(shí),則系統(tǒng)會(huì)在1小時(shí)后自動(dòng)進(jìn)入洗滌狀態(tài); 3顯示屏上能實(shí)時(shí)顯示該機(jī)正處于何種狀態(tài)和該狀態(tài)下的時(shí)間; 4為該機(jī)設(shè)置了報(bào)警提示,及報(bào)警鈴聲控制時(shí)間; 5可以自己設(shè)定洗滌及脫水的時(shí)間; 6可以用于直接脫水; 7報(bào)警顯示;模塊分析:根據(jù)系統(tǒng)的設(shè)計(jì)要求,整個(gè)系統(tǒng)可分為鍵盤轉(zhuǎn)按鍵,洗衣機(jī)主控制器,

2、LCD三個(gè)模塊。各個(gè)模塊的作用如下: 1鍵盤轉(zhuǎn)按鍵:將板上鍵盤變?yōu)?6個(gè)按鍵,從左上到右下,按鍵按下時(shí),對(duì)應(yīng)輸出為1,松開為0 ,它用于洗衣機(jī)外端口的輸入; 2洗衣機(jī)主控制器:它是整個(gè)系統(tǒng)正常有序工作的核心,按設(shè)計(jì)要求產(chǎn)生相應(yīng)的控制邏輯,以控制其他各部分的協(xié)調(diào)工作; 3LCD:在LCD上按格式顯示4組兩位數(shù)碼 D0D3 從左至右,它用于顯示功能中要顯示的信息;設(shè)計(jì)要求1.分析設(shè)計(jì)任務(wù),擬定多種設(shè)計(jì)方案,根據(jù)當(dāng)時(shí)的制作條件,選定適合的方案繪制框圖和設(shè)計(jì)流程。2.設(shè)計(jì)各部分單元電路或編寫VHDL描述程序。3.對(duì)制作的電路進(jìn)行功能測(cè)試,分析各項(xiàng)技術(shù)指標(biāo);或?qū)υO(shè)計(jì)的電路進(jìn)行功能仿真,分析仿真波形。4.

3、總結(jié)設(shè)計(jì)資料,但因包括原理電路、VHDL描述、仿真波形的設(shè)計(jì)報(bào)告,校驗(yàn)并演示電路裝置。設(shè)計(jì)過程: 根據(jù)上述功能及要顯示的信息,我們分析得出10個(gè)狀態(tài),分別為s0(復(fù)位即等待命令,輸入),s1(輸入命令),s2(注水),s3(洗滌),s4(排水),s5(漂洗),s6(脫水),s7(報(bào)警響鈴計(jì)時(shí)),s8(預(yù)約計(jì)時(shí)),s9(結(jié)束,播放提示音計(jì)時(shí))。相關(guān)模塊的程序:1主控系統(tǒng):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity xiyiji is port (CPIN,R : IN STD_LO

4、GIC; bgxh:IN STD_LOGIC; X_add_time: IN STD_LOGIC; X_minus_time:IN STD_LOGIC; start_1 : IN STD_LOGIC; start_2 : IN STD_LOGIC; T_MINUS_TIME: IN STD_LOGIC; T_ADD_TIME : IN STD_LOGIC; yuy_z_TIME : IN STD_LOGIC; xl_out: OUT STD_LOGIC; cp1_out: OUT STD_LOGIC; light: OUT STD_LOGIC; xi_yi_out: OUT STD_LOGIC

5、_VECTOR(7 DOWNTO 0 ); liucsj_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0 ); zt_2_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); zt_1_out: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);end entity ;architecture JGT of xiyiji is TYPE STATES IS (S0,S1,S2,S3,S4,s5,s6,s7,s8,s9); SIGNAL s: STATES; SIGNAL xidi: STD_LOGIC_VECTOR(7 DOWN

6、TO 0) ; SIGNAL TUOSHUI: STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL PIAOXI: STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL zhushui: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL PAISHUI:STD_LOGIC_VECTOR(7 DOWNTO 0); signal yuyue:std_logic_vector(7 downto 0); SIGNAL xlsj:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL xiyi:STD_LOGIC_V

7、ECTOR(7 DOWNTO 0); SIGNAL bgsj:STD_LOGIC_VECTOR(7 DOWNTO 0); signal zt1: std_logic_vector(7 downto 0); signal zt2: std_logic_vector(7 downto 0); signal liucsj: std_logic_vector(7 downto 0); SIGNAL xl: STD_LOGIC; SIGNAL cishu:integer range 0 to 5; signal cp:std_logic;beginPROCESS(CPIN,R)BEGINIF R=1 T

8、HEN S=S0; xidi=00000100;tuoshui=00000011;piaoxi=00000100;zhushui=00000011; PAISHUI=00000011;bgsj=00000010;xlsj=00000010; xl=0;cishu=2; yuyue=00000000; light=1; zt1=00010011; -輸入-s zt2=00010010; -rELSIF CPIN=1 AND CPINEVENT THEN if s=s0 or s=s1 then xiyi=00000000; else xiyiS if bgxh=1 then zt1=000000

9、10; -報(bào)警-b zt2=00001010; -j s= s7; elsif x_add_time=1then zt1=00011000; -洗滌加時(shí)-x zt2=00011010; -z xidi=xidi+1; if xidi=00011110 then xidi=00011110; end if; elsif x_minus_time=1then zt1=00011000; -洗滌減 -x zt2=00001010; -j xidi=xidi-1; if xidi=00000000 then xidi=00000000; end if; elsif T_add_time=1then z

10、t1=00010100; -脫水加 -t zt2=00011010; tuoshui=tuoshui+1; if tuoshui=00011001 then tuoshui=00011001; end if; elsif T_minus_time=1then zt1=00010100; -脫水減 zt2=00001010; tuoshui=tuoshui-1; if tuoshui=00000000 then tuoshui=00000000; end if; elsif yuy_z_time=1then zt1=00011001; -預(yù)約加 zt2=00011010; yuyue=yuyue

11、+1; if yuyue=00011001 then yuyue=00011001; end if; elsif start_1=1then if yuyue=00000000 then zt1=00011010;-注水 zt2=00010011; s=s2; Else zt1=00000100; -倒計(jì)時(shí) zt2=00001010; s=s8; end if; elsif start_2=1then zt1=00010100; -脫水 zt2=00010011; s=s6;xidi=00000000;piaoxi=00000000;zhushui=00000000; PAISHUI if b

12、gxh=1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; else IF zhushui=00000001 THEN zt1=00011000;-洗滌 zt2=00000100; S=S3; zhushui=00000000; else zhushui if bgxh=1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; else IF xidi=00000001 THEN zt1=00010000;-排水 zt2=00010011; s=s4; xidi=00000000; else xidiif bgxh=

13、1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; else IF paishui=00000001 THEN zt1=00010000;-漂洗 zt2=00011000; s=s5; paishui=00000000; else paishui if bgxh=1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; elsIF piaoxi=00000001 THEN zt1=00010100; -脫水 zt2=00010011; s=s6; piaoxi=00000000; else piaoxi if bgx

14、h=1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; elsIF tuoshui=00000001 THEN zt1=00001010; -洗完 zt2=00010011; S=s9; tuoshui=00000000; else tuoshui if bgsj=00000000 then xl=0;s=s0; else bgsj=bgsj-1; xl if bgxh=1 then zt1=00000010; -報(bào)警-b zt2=00001010; s=s7; elsIF yuyue=00000001 then zt1=00011010;-注水 zt

15、2=00010011; yuyue=00000000; s=s2; else yuyue=yuyue-1; zt1=00000100; -倒計(jì)時(shí) zt2 if cishu=0 then zt1=00010011; -輸入-s zt2=00010010; -r s=s1; elsif xlsj=00000000 then xlsj=00000001; xl=0;cishu=cishu-1; else xlsj=xlsj-1; xl s=s1; end case;end if;end process; process (xiyi,tuoshui,xl,zhushui,zt1,zt2,yuyue,x

16、idi,piaoxi,paishui,liucsj,CPIN) begin if x_add_time=1or x_minus_time=1then liucsj=xidi; elsif T_add_time=1 or T_minus_time=1then liucsj=tuoshui; elsif yuy_z_time=1then liucsj00000000then liucsj00000000 then liucsj00000000then liucsj00000000 then liucsj00000000then liucsj00000000 then liucsj= tuoshui

17、; elsif zhushui=00000000 and yuyue=00000000and xidi=00000000and paishui=00000000 and piaoxi=00000000 and tuoshui=00000000 then liucsj=00000000; end if; if xiyi 10 then xi_yi_out= xiyi; elsif xiyi20 then xi_yi_out=xiyi+6; elsif xiyi30 then xi_yi_out= xiyi+12; elsif xiyi40 then xi_yi_out=xiyi+18; elsi

18、f xiyi50 then xi_yi_out=xiyi+24; elsif xiyi60 then xi_yi_out=xiyi+30; elsif xiyi70 then xi_yi_out=xiyi+36; end if; if liucsj 10 then liucsj_out= liucsj; elsif liucsj20then liucsj_out =liucsj+6; elsif liucsj30 then liucsj_out =liucsj+12; elsif liucsj40 then liucsj_out = liucsj+18; elsif liucsj50 then

19、 liucsj_out = liucsj+24; elsif liucsj60 then liucsj_out = liucsj+30; elsif liucsj70 then liucsj_out = liucsj+36; end if; if xl=1 then xl_out=xl;cp1_out=CPIN; else xl_out=0;cp1_out=0; end if; zt_1_out=zt1; zt_2_out=zt2;end process ;end architecture jgt;-主控程序2鍵盤轉(zhuǎn)按鍵程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_11

20、64.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity PADTOKEY is port (CPIN,R :IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); ICOL : IN STD_LOGIC_VECTOR(3 DOWNTO 0); OROW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY;architecture JGT of PADTOKEY is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES;

21、 SIGNAL SROW : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CPCT : INTEGER RANGE 0 TO 255; SIGNAL CTDELAY: INTEGER RANGE 0 TO 511; SIGNAL CP:STD_LOGIC; BEGIN PROCESS(CPIN) BEGIN IF CPIN=1 AND CPIN EVENT THEN IF CPCT=255 THEN CPCT=0;CP= NOT CP; ELSE CPCT=CPCT+1; END IF; END IF; END PROCESS; PROCESS(CP,R) VAR

22、IABLE N:INTEGER RANGE 0 TO 12; BEGIN IF R=1 THEN S=S0;Y=0000000000000000;SROWSOROW=SROW;SSY(3 DOWNTO 0)Y(7 DOWNTO 4)Y(11 DOWNTO 8)Y(15 DOWNTO 12)NULL; END CASE; WHEN S3=IF N=12 THEN N:=0;S=S4;CTDELAY=0;SROW=1110; ELSE N:=N+4;S=S1;SROWIF CTDELAY=511 THEN S=S1;CTDELAY=0; ELSE CTDELAY=CTDELAY+1; END IF

23、; END CASE;END IF;END PROCESS;END JGT;3LCD模塊程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity GENLCD8 is port (CPIN,R,BUSY :IN STD_LOGIC; xlxh :IN STD_LOGIC; xy_sj,lc_sj,zhuangt_1,zhuangt_2 :IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK,RST,STROBE,OUTLINE : OUT STD_LOGIC; DAT

24、A : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);end entity ;architecture JGT of GENLCD8 is TYPE STATES IS (S0,S1,S2,S3,S4); SIGNAL S: STATES; SIGNAL LCDPT : INTEGER RANGE 0 TO 20; SIGNAL CPCT: INTEGER RANGE 0 TO 65535; SIGNAL CP: STD_LOGIC; SIGNAL D3: STD_LOGIC_VECTOR(7

25、 DOWNTO 0);beginPROCESS(CPIN,R)BEGINCLK=CPIN;IF R=1 THEN CPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THEN IF CPCT=0 THEN CPCT=65535;CP=NOT CP;-分頻為500US周期 ELSE CPCT=CPCT-1; END IF;END IF;END PROCESS;PROCESS(CP,R)-主進(jìn)程:擬采用500us時(shí)鐘,即在500us后完成狀態(tài)轉(zhuǎn)換,修改LCDPT指針BEGINIF R=1 THEN -S0:初始狀態(tài),在R=1時(shí),處于S0狀態(tài),LCDPT=0 S=S0;LC

26、DPT=0;RST S=S1;LCDPT=0;RST RST=0;STROBE=0;-輸出RST=0; IF BUSY=0 THEN-判斷BUSY=0? LCDPT=LCDPT+1;-:Y: LCDPT+1 IF LCDPT=7 THEN-LCDPT到固定最后? S=S3;-:Y: 轉(zhuǎn)S3 ELSe S S=S1;STROBE STROBE=0; IF BUSY=0 THEN-BUSY=0? IF LCDPT=14 THEN LCDPT=7; ELSe LCDPT=LCDPT+1; END IF; S STROBE=1;S NULL;- END CASE;END IF; END PROCESS

27、;PROCESS(LCDPT,xlxh)-選擇輸出進(jìn)程(LCDPT)BEGINif xlxh=1 then D3=00010001; else D3 NULL;WHEN 1=DATA=00011000;ADDR=0010;OUTLINEDATA=00011001;ADDR=0001;OUTLINEDATA=00001100;ADDR=0110;OUTLINEDATA=00000011;ADDR=0101;OUTLINEDATA=00011010;ADDR=1010;OUTLINEDATA=00010100;ADDR=1001;OUTLINEDATA=0011&xy_sj(7 DOWNTO 4)

28、;ADDR=0011;OUTLINEDATA=0011&xy_sj(3 DOWNTO 0);ADDR=0010;OUTLINEDATA=0011&lc_sj(7 DOWNTO 4);ADDR=0110;OUTLINEDATA=0011&lc_sj(3 DOWNTO 0);ADDR=0101;OUTLINEDATA=zhuangt_1;ADDR=1010;OUTLINEDATA=zhuangt_2;ADDR=1001;OUTLINEDATA=0000&D3(7 DOWNTO 4);ADDR=1110;OUTLINEDATA=0000&D3(3 DOWNTO 0);ADDR=1101;OUTLIN

29、E NULL;END CASE;END PROCESS;ENDJGT;下板后具體模擬演示過程:-接通電源,按下復(fù)位鍵1,LCD上顯示如下: 報(bào)警狀態(tài)流程洗衣00ZTLCXY00SR0000-再按下5號(hào)鍵(x_add_time 代表洗衣時(shí)間在標(biāo)準(zhǔn)定值基礎(chǔ)上加一個(gè)單位時(shí)間,為實(shí)驗(yàn)以觀察一個(gè)單位時(shí)間在這兒都是取值1個(gè)脈沖),則LC兩格下依次顯示05(表示洗衣時(shí)間在標(biāo)準(zhǔn)的基礎(chǔ)上加了一個(gè)單位時(shí)間);-再按下7號(hào)鍵(T_minus_time代表脫水時(shí)間在標(biāo)準(zhǔn)基礎(chǔ)上減一個(gè)單位時(shí)間),則LC兩格下依次03;-再按下6號(hào)鍵(yuy_z_time表示預(yù)約時(shí)間為一個(gè)單位時(shí)間),LC兩格下依次顯示01;-再按下3號(hào)鍵

30、(start_1表示開始進(jìn)入洗衣狀態(tài));LC顯示預(yù)約時(shí)間倒計(jì)時(shí)01;ZT顯示DJ(倒計(jì)時(shí));XY顯示18(整個(gè)洗衣過程的用時(shí)); 接著LCD上顯示的就是狀態(tài)之間的變化等.如下:ZTLCXY00ZSO31700XD051400PS030900PX030600TS030300JS020000RS0000當(dāng)ZT顯示JS時(shí)表示洗衣結(jié)束,LC顯示的是結(jié)束提示音的時(shí)間,洗衣時(shí)間XY顯示為00;當(dāng)提示音為00時(shí)狀態(tài)又轉(zhuǎn)到復(fù)位狀態(tài)即輸入(等待命令);與此操作類似的仿真圖如下:原理圖如下心得體會(huì) 在為期兩周的數(shù)字課程設(shè)計(jì)的時(shí)間里,我初步掌握了altium designer在硬件開發(fā)方面的應(yīng)用,并且學(xué)會(huì)了用VHD

31、L語言進(jìn)行簡單的硬件程序描述,不僅開拓了自己的視野而且讓自己的邏輯思維更加敏捷與嚴(yán)謹(jǐn)。大家都清楚這個(gè)課程設(shè)計(jì)中老師管得較為寬松,而且老師讓我們自己設(shè)計(jì)的主要就是主控程序這一塊,所以一開始我們小組都不待見它,感覺應(yīng)該蠻容易就能完成了?;谶@一點(diǎn)我們小組的課題拖了很久才定下來。雖然當(dāng)我來寫主控程序時(shí)感覺和C語言的有很多類似的地方,所以給我的錯(cuò)覺是不是很難,可是當(dāng)我去機(jī)房仿真時(shí)發(fā)現(xiàn)了一些邏輯上的問題,這時(shí)我發(fā)現(xiàn)它與C語言還是有區(qū)別的。還有就是LCD,它是很實(shí)際性的器件,我自己仿真成功了,可就是下板子老是出來了信息。后來才知道對(duì)于LCD只有單獨(dú)下板子成功了才能表示LCD程序無誤,看其仿真波形無法判斷的。當(dāng)自己的作品順利顯示在FPGA開發(fā)板上的時(shí)候,才明白我們平時(shí)缺乏的是實(shí)踐能力,以至于在邏輯上還停留在理論上,唯有多加實(shí)踐,才能讓我們更加穩(wěn)固的掌握一門學(xué)科和技術(shù)。 16

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!