久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12154|回復(fù): 6
收起左側(cè)

全自動洗衣機(jī)控制器設(shè)計(jì)(含單片機(jī)源碼)

  [復(fù)制鏈接]
ID:320387 發(fā)表于 2018-5-2 13:13 | 顯示全部樓層 |閱讀模式

洗衣機(jī)是現(xiàn)代家庭中必不可少的一部分,它的出現(xiàn)方便了我們的生活,為我們節(jié)省了不少時(shí)間。隨著經(jīng)濟(jì)的發(fā)展和人民生活水平的不斷提高,其發(fā)展也是日新月異,全自動化的程序是現(xiàn)在洗衣機(jī)的基本要求。我們現(xiàn)在只要按一個(gè)鍵,我們就可以完成洗衣服的所有操作。洗衣機(jī)逐漸向微電腦智能化發(fā)展。傳統(tǒng)的機(jī)械式、簡單的電子式控制都難以滿足現(xiàn)代洗衣機(jī)的發(fā)展要求。本系統(tǒng)的微控制器采用STC89C52單片機(jī),系統(tǒng)主要由液晶顯示模塊,系統(tǒng)報(bào)警模塊,電機(jī)控制模塊,功能按鍵模塊,指示燈模塊。洗衣機(jī)開機(jī)默認(rèn)標(biāo)準(zhǔn)模式,洗滌12分鐘,漂洗6分鐘,漂洗兩次脫水,漂洗和洗滌,電機(jī)都正轉(zhuǎn)四秒,停兩秒,反轉(zhuǎn)四秒,停兩秒。系統(tǒng)通過按鍵來啟停洗衣機(jī),通過按鍵選擇洗衣機(jī)標(biāo)準(zhǔn),快速,脫水三種模式,通過按鍵模擬脫水翻蓋功能等等。
本設(shè)計(jì)洗衣的過程控制主要包括,洗滌,漂洗,排水脫水三個(gè)過程。按照全自動洗衣機(jī)的控制系統(tǒng)的要求和特點(diǎn),來進(jìn)行確定單片機(jī)的輸入輸出分配關(guān)系,根據(jù)洗衣過程的需求,控制程序的設(shè)計(jì)主要包括主程序、內(nèi)部定時(shí)中斷服務(wù)程序、外部定時(shí)中斷程序、洗衣,排水和脫水的設(shè)計(jì),設(shè)計(jì)完畢并進(jìn)行系統(tǒng)調(diào)試。

1.緒 論

1.1 課題研究背景及意義

1.2本文主要的研究內(nèi)容

2系統(tǒng)方案總體設(shè)計(jì)

2.1 全自動洗衣機(jī)指標(biāo)要求

2.2 系統(tǒng)方案選擇

2.2.1 控制器選擇

2.2.2 電機(jī)驅(qū)動器選擇

2.3 系統(tǒng)總體設(shè)計(jì)

3 系統(tǒng)硬件電路設(shè)計(jì)

3.1 電機(jī)驅(qū)動電路設(shè)計(jì)

3.1.1 L298介紹

3.1.2 電機(jī)驅(qū)動電路設(shè)計(jì)

3.2 單片機(jī)控制單元設(shè)計(jì)

3.2.1單片機(jī)介紹

3.2.2 中斷系統(tǒng)

3.2.3定時(shí)器

3.2.4控制系統(tǒng)電路設(shè)計(jì)

3.3. 顯示電路設(shè)計(jì)

3.4 報(bào)警電路設(shè)計(jì)

3.5指示燈電路設(shè)計(jì)

3.6鍵盤電路設(shè)計(jì)

3.7電源電路設(shè)計(jì)

4.系統(tǒng)軟件設(shè)計(jì)

4.1 軟件開發(fā)環(huán)境介紹

4.2 C語言介紹

4.3 軟件總體設(shè)計(jì)

4.3.1系統(tǒng)主程序設(shè)計(jì)

4.3.2系統(tǒng)中斷程序設(shè)計(jì)

4.3.3 鍵盤掃描程序

4.3.4 電機(jī)驅(qū)動程序設(shè)計(jì)

5.系統(tǒng)仿真及結(jié)果分析

5.1 硬件實(shí)物

5.2系統(tǒng)仿真環(huán)境介紹

5.3 系統(tǒng)仿真結(jié)果分析

5.4仿真遇到的問題

結(jié)束語

參考文獻(xiàn)

致 謝

附錄

系統(tǒng)電路圖

程序代碼清單


1.緒

在本章中主要介紹了課題研究的背景和意義,以及洗衣機(jī)控制系統(tǒng)的使用現(xiàn)狀,結(jié)合一些實(shí)際中的問題,闡述了洗衣機(jī)控制系統(tǒng)設(shè)計(jì)的必要性,最后介紹了一下本設(shè)計(jì)的的要求和內(nèi)容,以及在文檔的結(jié)構(gòu)安排。

1.1 課題研究背景及意義

洗衣服從古到今都是一個(gè)必不可少的家務(wù)勞動,從電視上的劇集上也可以看到,古代婦女都把衣服拿到河邊用棍子敲打,用手搓等等。但是隨著時(shí)間的推移,科技的發(fā)展,出現(xiàn)了用機(jī)械洗衣代替手工洗衣的操作。早在1858年,一個(gè)叫漢密爾頓·史密斯的美國人在匹茨堡制成了世界上第一臺洗衣機(jī)。這個(gè)洗衣機(jī)整體設(shè)計(jì)比較簡單,它的主件是一只圓桶,桶內(nèi)裝有一根帶有槳狀葉子的直軸。軸是通過搖動和它相連的曲柄轉(zhuǎn)動的。但這臺洗衣機(jī)使用起來比較費(fèi)力,而且對衣物的損害也比較大,所以并沒被廣泛使用,但是給人們用機(jī)器代替手工洗衣服的想法起到一個(gè)至關(guān)重要的啟示。時(shí)至今天,洗衣機(jī)已經(jīng)發(fā)展到一個(gè)非常先進(jìn)水平。

我們這一代人也可以深刻地體會到洗衣機(jī)的發(fā)展。在90年代初期,普通大眾還是用著半自動的洗衣機(jī),就是那種洗和甩干分開兩個(gè)滾筒,那種要我們把洗滌好的衣服再人手拿到另外一個(gè)滾筒去甩干。在今天看來是比較落后的洗衣機(jī),但是在當(dāng)時(shí)也是十分先進(jìn)的。再到了90年代后期出現(xiàn)了全自動洗衣機(jī),全自動洗衣機(jī)是一個(gè)重大的跨越。它的操作十分方便,我們只要把衣服放進(jìn)去,再按開始,過一段時(shí)間就能洗好并自動甩干。現(xiàn)在的洗衣機(jī)就更先進(jìn)了,有了更多的功能,例如自動烘干、自動熨好等等更實(shí)用的功能。

本洗衣機(jī)控制系統(tǒng)正是在這一個(gè)背景下產(chǎn)生的,設(shè)計(jì)一套完善的洗衣機(jī)控制系統(tǒng)對于勞動力有著重要意義,一個(gè)好的控制系統(tǒng),不僅能在保證洗干凈衣服的前提下,還能夠更好的保護(hù)衣服,節(jié)約時(shí)間。


1.2本文主要的研究內(nèi)容

本設(shè)計(jì)采用STC89S52單片機(jī)作為控制芯片,使用L298控制芯片作為電機(jī)驅(qū)動,使用蜂鳴器來作為報(bào)警系統(tǒng),使用LCD1602作為顯示,使用LED來作為標(biāo)示洗衣狀態(tài)。系統(tǒng)在軟件里面通過多個(gè)定時(shí)器協(xié)同工作,完成洗衣的漂洗過程:正轉(zhuǎn)4秒,停止2秒,反轉(zhuǎn)4秒,停止2秒。并且在系統(tǒng)的運(yùn)行過程中,通過啟動/停止按鍵來啟動和暫停洗衣機(jī),通過模式切換開關(guān)來切換洗衣機(jī)在標(biāo)準(zhǔn)洗滌,快速洗滌,脫水三個(gè)模式切換;通過按鍵來模擬洗衣機(jī)在脫水過程中翻蓋報(bào)警急停功能。

對于整個(gè)系統(tǒng)而言,系統(tǒng)上電確認(rèn)后,系統(tǒng)同默認(rèn)進(jìn)入到標(biāo)準(zhǔn)模式,當(dāng)按照標(biāo)準(zhǔn)洗滌的12分鐘后,洗衣機(jī)進(jìn)行排水脫水,然后進(jìn)入到漂洗過6分鐘,在此過程中,標(biāo)準(zhǔn)洗滌指示燈,排水脫水指示燈分別不斷閃爍來表示正在進(jìn)行的過程,完成以后的漂洗和脫水便可以完成整個(gè)標(biāo)準(zhǔn)洗衣過程。對于快速洗滌過程跟標(biāo)準(zhǔn)洗滌過程一樣;對于脫水模式,洗衣機(jī)進(jìn)入到高速旋轉(zhuǎn)模式,當(dāng)有翻蓋模擬按鍵按下時(shí)候,洗衣機(jī)急停并且報(bào)警。

主要的設(shè)計(jì)任務(wù)有:第一步是把可行的方案列舉出來,并選擇最為合適的方案,再選擇控制芯片和電機(jī)驅(qū)動的方案,確定大致的設(shè)計(jì)方向;第二步是設(shè)計(jì)單片機(jī)控制控制系統(tǒng)硬件,能夠?qū)崿F(xiàn)控制電機(jī)、顯示當(dāng)前工作狀態(tài)、時(shí)間、報(bào)警等等的功能;第三步是軟件設(shè)計(jì),設(shè)計(jì)人機(jī)交互界面,電機(jī)驅(qū)動程序,報(bào)警程序設(shè)計(jì),模式選擇程序設(shè)計(jì),中斷程序設(shè)計(jì)等等;最后的步驟是系統(tǒng)調(diào)試仿真,調(diào)試系統(tǒng)的硬件和軟件,并且進(jìn)行仿真,看設(shè)計(jì)是否成功。


2系統(tǒng)方案總體設(shè)計(jì)
2.1 全自動洗衣機(jī)指標(biāo)要求

全自動洗衣機(jī)的指標(biāo)要求如下:

首先,標(biāo)準(zhǔn)洗滌12分鐘再漂洗6分鐘,漂洗兩次就脫水3分鐘。

其次,快速洗滌7分鐘再漂洗3分鐘,漂洗兩次,脫水。

最后:還可以實(shí)現(xiàn)啟動和暫停按鈕控制,第一次啟動,標(biāo)準(zhǔn)洗滌;工作時(shí)按此按鈕暫停,再按則恢復(fù)工作。洗滌、漂洗4秒正轉(zhuǎn),停2秒,反轉(zhuǎn)4秒,停2秒,繼續(xù)運(yùn)行。為了安全,在脫水時(shí),如果打開蓋板(K3鍵模擬),脫水暫停。在洗滌時(shí)洗滌指示燈閃爍,漂洗時(shí)漂洗指示燈閃爍,脫水時(shí)脫水指示燈閃爍。

按鍵功能設(shè)想:K1鍵改變“標(biāo)準(zhǔn)、快速、排水”三種方式,執(zhí)行相應(yīng)程序,對應(yīng)LED閃爍。默認(rèn)標(biāo)準(zhǔn)模式。k2鍵改變控制洗衣機(jī)的“啟動、暫停”功能。按下暫停,再按下恢復(fù)運(yùn)行。K3鍵模擬打開蓋板,在脫水時(shí),如果打開蓋板,脫水暫停。

根據(jù)設(shè)計(jì)所需要求,要完成一個(gè)比較完善的洗衣機(jī)控制器,必須要注意每一個(gè)細(xì)節(jié),把系統(tǒng)調(diào)試到最為合適的工作狀態(tài)。并且要有一定的可靠性,所以可靠性是在設(shè)計(jì)過程中應(yīng)該優(yōu)先考慮的一個(gè)因素,一個(gè)控制系統(tǒng)必須要能穩(wěn)定、可靠地工作,才能投入到生產(chǎn)實(shí)踐中去。如果系統(tǒng)的可靠性不能達(dá)到要求,那么系統(tǒng)出現(xiàn)故障的可能就會增大,有可能會造成很大的損失。


2.2 系統(tǒng)方案選擇
2.2.1 控制器選擇

本設(shè)計(jì)中擁有一個(gè)控制器,它主要控制驅(qū)動信號產(chǎn)生,以及信息的現(xiàn)實(shí)等功能,控制器擁有很多種,下面介紹一些控制器以及本設(shè)計(jì)采用的控制器。

方案一:選擇STC89C52作為控制器。首先,STC89C52是51內(nèi)核,是8位單片機(jī),其指令是采用的被稱為“CISC”的復(fù)雜指令集,共有111條指令,內(nèi)部自然豐富,并且操作簡單。[1]還有,它的供電電壓是5V和其他的一些芯片具有相同的供電電壓,其抗干擾能力強(qiáng),端口容易操作,構(gòu)建其最小控制系統(tǒng)簡單。[2]

該方案的實(shí)用性和可靠性比較高,可以滿足絕大多數(shù)控制,選擇51單片機(jī)作為控制器,對于初學(xué)者可以很方便的構(gòu)建一個(gè)最小控制系統(tǒng),并且其的編程很簡單,成本低,便于操作者實(shí)現(xiàn)控制目標(biāo)。

方案二:選擇MSP430作為控制器。MSP430是TI公司生產(chǎn)的一款低功耗控制芯片,其功耗低,供電電壓3.3V,其可以工作在低功耗模式,可以減少系統(tǒng)的功耗,并且MSP430單片機(jī)是16位的單片機(jī),采用了精簡指令集(RISC)結(jié)構(gòu),只有簡潔的27條指令,大量的指令則是模擬指令,眾多的寄存器以及片內(nèi)數(shù)據(jù)寄存器都可參加多種運(yùn)算。[3]

該方案在低功耗和運(yùn)算能力上具有很大的優(yōu)勢,然而其的可靠性不高,其抗干擾能力比較差,最重要的是其編寫程序比較復(fù)雜,芯片成本比較高,編寫程序復(fù)雜。

聯(lián)系本設(shè)計(jì)的任務(wù),對于控制器的要求不是很高,所以從設(shè)計(jì)成本以及可靠性和實(shí)施難度等方面考慮,本設(shè)計(jì)選擇控制方案一作為控制方案選擇。


2.2.2 電機(jī)驅(qū)動器選擇

本設(shè)計(jì)要對洗衣機(jī)的電機(jī)進(jìn)行控制,選擇恰當(dāng)?shù)碾姍C(jī)驅(qū)動方案有利于電機(jī)控制,在本設(shè)計(jì)中要求電機(jī)可以調(diào)速,電機(jī)可以改變方向,具體方案如下:

方案一:采用數(shù)字電位器加大電流穩(wěn)壓器構(gòu)建調(diào)壓電路,采用繼電器構(gòu)建電壓方向改變電路。在本方案中,通過驅(qū)動數(shù)字電位器改變大電流穩(wěn)壓器的輸出電壓,從而實(shí)現(xiàn)電壓調(diào)速,通過繼電器切換電壓方向來改變輸出電壓方向,從而改變電機(jī)轉(zhuǎn)向,采用這一種辦法來實(shí)現(xiàn)電機(jī)調(diào)速雖然方便智能,但是由于使用了大量價(jià)格昂貴的數(shù)字電位器等芯片,成本很高,并且調(diào)速范圍不廣。

方案二:采用專用電機(jī)調(diào)速控制器L298來進(jìn)行電機(jī)控制。L298通過四個(gè)控制引腳來控制兩個(gè)電機(jī)的運(yùn)行速度以及運(yùn)行電壓方向,不過使用L298來對電機(jī)調(diào)速的時(shí)候,要運(yùn)用PWM波形進(jìn)行控制,這種控制方案不僅集成度高,便于控制,而且整個(gè)系統(tǒng)的成本相對較低。

聯(lián)系本設(shè)計(jì)的任務(wù),由于本設(shè)計(jì)還要求仿真,并且設(shè)計(jì)都對成本又要求,所以,在本設(shè)計(jì)選用方案二來對電機(jī)控制。


2.3 系統(tǒng)總體設(shè)計(jì)

    在本設(shè)計(jì)中,要求實(shí)現(xiàn)洗衣機(jī)的全自動控制,在整個(gè)控制系統(tǒng)中,要求對電機(jī)控制,報(bào)警控制,液晶顯示以及鍵盤輸入等功能,在本設(shè)計(jì)里面主要體現(xiàn)出對電機(jī)的智能控制,在軟件里面實(shí)現(xiàn),首先通過按鍵選擇洗衣機(jī)的工作模式,選擇完工作模式后,系統(tǒng)進(jìn)入到相應(yīng)的模式下運(yùn)行,在運(yùn)行的過程中也可以通過按鍵來啟停電機(jī),并且還可以用按鍵來模擬脫水翻蓋報(bào)警功能。本設(shè)計(jì)的總體設(shè)計(jì)框圖如下:

圖2-1 全自動洗衣機(jī)控制系統(tǒng)框圖

Fig.2-1 Block diagram of control system of automatic washing machine

  由圖2-1可以知道,整個(gè)系統(tǒng)分為三大塊:人機(jī)交互,狀態(tài)顯示,執(zhí)行電路。在這個(gè)三個(gè)模塊中,人機(jī)交互模塊有液晶和鍵盤組成,在整個(gè)系統(tǒng)中,通過電機(jī)運(yùn)行時(shí)間來判斷當(dāng)前電機(jī)運(yùn)行狀態(tài),當(dāng)洗衣機(jī)的洗滌時(shí)間到了后,系統(tǒng)自動運(yùn)行到排水脫水狀態(tài),并且相應(yīng)的指示燈閃爍,通過按鍵來設(shè)置洗衣機(jī)運(yùn)行狀態(tài),并且在洗衣機(jī)運(yùn)行過程中,通過啟動/暫停按鍵來啟動和暫停按洗衣機(jī),當(dāng)洗衣機(jī)洗衣結(jié)束的時(shí)候,電機(jī)停止,蜂鳴器報(bào)警。在脫水的時(shí)候,用按鍵來模擬翻蓋,當(dāng)有按鍵按下時(shí),洗衣機(jī)停止脫水,并且報(bào)警,當(dāng)再次按下的時(shí)候,系統(tǒng)進(jìn)入到正常脫水模式。


3 系統(tǒng)硬件電路設(shè)計(jì)
3.1 電機(jī)驅(qū)動電路設(shè)計(jì)

3.1.1 L298介紹

平時(shí)我們在觀察洗衣機(jī)工作時(shí)可以發(fā)現(xiàn),在洗衣服的過程中,洗衣機(jī)的轉(zhuǎn)動會先順時(shí)針轉(zhuǎn)一會,停一會,再逆時(shí)針轉(zhuǎn)一會,通過這樣的動作,就能夠起到像手動揉衣服的作用。因?yàn)檎D(zhuǎn)反轉(zhuǎn)所以工作的電機(jī)轉(zhuǎn)速不可過快,不然對電機(jī)的傷害會比較大。在脫水時(shí),洗衣機(jī)只會需朝某一個(gè)方向快速旋轉(zhuǎn),利用離心力的方法把衣物甩干。 本設(shè)計(jì)系統(tǒng)的電機(jī)驅(qū)動采用的是電機(jī)驅(qū)動芯片L298,它的驅(qū)動電流達(dá)3A,可以滿足系統(tǒng)工作的需求。而且L298的驅(qū)動方式比較簡單, L298有兩個(gè)電壓輸入,一個(gè)給電機(jī)的電壓,一個(gè)是給芯片工作與控制邏輯的參考電壓。L298相當(dāng)于有四個(gè)驅(qū)動門,每個(gè)IN1,對應(yīng)該一個(gè)OUT1,當(dāng)IN1為高電平是,OUT1輸出高電平,電壓為VSS,也就是給這個(gè)芯片電機(jī)的供電電壓,而且指的不是邏輯電壓。[5]又見圖2-1與L298的內(nèi)部原理圖3-1本設(shè)計(jì)每個(gè)兩個(gè)驅(qū)動門做成一路控制電機(jī)的信號,這樣可以使電機(jī)在四個(gè)象限運(yùn)行,即正轉(zhuǎn),反轉(zhuǎn),停車,自由滑行。ENA與ENB的使能的控制,如果采用PWM對電機(jī)進(jìn)行調(diào)速,可以在ENA與ENB中分別接入PWM信號,IN1與IN2,和IN3與IN4,分別可以控制電機(jī)的正反轉(zhuǎn)與不轉(zhuǎn)。為了方便一些接線的電機(jī),本電路板設(shè)計(jì)輸出的接線端子,輸出端子分別為:OUT1,OUT2,OUT3,OUT4。同時(shí)為了方便接四線的步進(jìn)電機(jī),在接線端子上也設(shè)計(jì)了四位排針,輸出信號與接線端子相同的順序[7]。L298內(nèi)部原理圖如圖3-1所示。

圖3-1 L298內(nèi)部原理圖

Fig.3-1 L298 internal schematic diagram

3.1.2 電機(jī)驅(qū)動電路設(shè)計(jì)
本設(shè)計(jì)系統(tǒng)的電機(jī)驅(qū)動采用的是L298電機(jī)驅(qū)動芯片,因?yàn)橛肔298電機(jī)芯片在編寫程序是只要兩個(gè)指令就能夠滿足電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止等等的功能。編寫比較簡單,操作也更為容易。而如圖3-2就是L298的管腳圖。

圖3-2  L298管腳圖

Fig.3-2 L298 Pin diagram

     L298有兩路電源分別為邏輯電源和動力電源,它的電路原理圖如圖3-3所示。它圖中5V為邏輯電源,16V為動力電源。ENA與ENB直接接入5V邏輯電源也就是說兩個(gè)電機(jī)時(shí)刻都工作在使能狀態(tài),控制電機(jī)的運(yùn)行狀態(tài)只有通過IN1與IN2,IN3與IN4兩個(gè)接口。由于我們使用的電機(jī)是線圈式的,在從運(yùn)行狀態(tài)突然轉(zhuǎn)換到停止?fàn)顟B(tài)和從順時(shí)針狀態(tài)突然轉(zhuǎn)換到逆時(shí)針狀態(tài)時(shí)會形成很大的反向電流,在電路中加入二極管的作用就是在產(chǎn)生反向電流的時(shí)候進(jìn)行泄流,保護(hù)芯片的安全。各輸入端串如二極管同樣是起保護(hù)作用。[16]

圖3-3  L298驅(qū)動原理圖

Fig.3-3 Schematic of L298 driver



3.2 單片機(jī)控制單元設(shè)計(jì)3.2.1單片機(jī)介紹

    在微型計(jì)算機(jī)中,單片機(jī)微型計(jì)算機(jī)具有很重要的地位,并且得到廣泛的應(yīng)用。也就是我們常說的單片機(jī)。單片機(jī)在電子行業(yè)起著十分重要的作用。單片機(jī)也是我們學(xué)習(xí)的重點(diǎn),可想而知,單片機(jī)在今天的電子計(jì)算機(jī)行業(yè)是多么的重要。又因?yàn)閱纹瑱C(jī)被廣泛應(yīng)用在控制系統(tǒng)中,所以也常常稱其為微控制器。單片機(jī)也被叫做微型電腦。一般情況,單片機(jī)就是集成電路芯片,不過其內(nèi)部包含有計(jì)算機(jī)的功能部分:加法器,存儲器以及與外設(shè)連接的I/O設(shè)備。因此,單片機(jī)加上基本工作電路以及對應(yīng)的外設(shè)電路便可以構(gòu)造我們想要的控制系統(tǒng)。

    STC89C52是擁有51內(nèi)核單片機(jī)的典型產(chǎn)品,在單片機(jī)內(nèi)部包含了中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。如圖3-4所示就是STC89C52單片機(jī)。中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是擁有8微數(shù)據(jù)處理能的處理器,能夠處理8位組成的代碼和數(shù)據(jù),CPU起到一個(gè)大腦的作用,負(fù)責(zé)指揮和調(diào)度系統(tǒng)的各個(gè)單元協(xié)調(diào)工作。芯片內(nèi)部有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。片上共有4組8位I/O口(P0、P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。

圖3-4 STC89C52管腳分布

Fig.3-4 STC89c52Pin diagram


而STC89C52各個(gè)引腳的作用與介紹:

  • VCC是供電電壓;
  • GND是接地;
  • P0口是一個(gè)雙向I/O口,每個(gè)引腳均可以吸收8TLL電流,當(dāng)P1口的引腳在第一次被置為高電平的時(shí)候表示為高阻輸入。P0能夠可以與外部存儲器相連接,并且充當(dāng)高8位地址或者數(shù)據(jù)。使用FLASH編程的時(shí)候,它作為程序燒寫口,也就是通過P1口可以把程序?qū)戇M(jìn)單片機(jī)中。
  • P2口是一個(gè)雙向I/O口,并且內(nèi)部漏極上拉,P2口 可以作為緩沖器接受,可以輸出P0口一半的電流,當(dāng)P2口被寫1的時(shí)候,該管教被上拉到高電平,表示當(dāng)前為輸入狀態(tài)。當(dāng)作為輸入時(shí),其電平被外設(shè)拉低,將電流輸出。這是由于內(nèi)部被上拉的緣故。
  • P3口是一個(gè)雙向I/O口,并且內(nèi)部漏極上拉,P2口 可以作為緩沖器接受,可以輸出P0口一半的電流,當(dāng)P3口被寫1的時(shí)候,該管教被上拉到高電平,表示當(dāng)前為輸入狀態(tài)。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為下載端口等一些特殊口。

總體來說,STC89C52是一款功能強(qiáng)大的單片機(jī),它為許多控制系統(tǒng)提供了靈活,成本更低的解決方案。本次設(shè)計(jì)之所以采用STC89C51單片機(jī)主要是想應(yīng)用STC89C52的外部中斷和定時(shí)器中斷等片上自帶的外部資源,從而使設(shè)計(jì)更容易。


3.2.2 中斷系統(tǒng)

中斷是處理器處理外部突發(fā)事件的一個(gè)重要技術(shù)。它能使處理器在運(yùn)行過程中對外部事件發(fā)出的中斷請求及時(shí)地進(jìn)行處理,處理完成后又立即返回?cái)帱c(diǎn),繼續(xù)進(jìn)行處理器原來的工作。觸發(fā)中斷的事件和原因可以被稱為中斷源。根據(jù)中斷的的不同來源,可以把中斷的種類分為軟硬件中斷,而硬件的中斷又可以分為由外部事件和內(nèi)部事件觸發(fā)的中斷兩類。

外部中斷一般是指由外部事件觸發(fā)的,如:鍵盤,定時(shí)器,ADC等。外部中斷是可以屏蔽的中斷,也就是說,利用中斷控制器可以屏蔽這些外部設(shè)備的中斷請求。中斷是各個(gè)設(shè)計(jì)系統(tǒng)中不可缺少的一個(gè)功能。

3.2.3定時(shí)器

在本設(shè)計(jì)中采用的是51定時(shí)器,通過在學(xué)校的學(xué)習(xí)和查閱相關(guān)的資料,可以知道51定時(shí)器操作較為簡單。其工作原理為:單片機(jī)包含兩個(gè)定時(shí)器,這兩個(gè)定時(shí)器也叫計(jì)數(shù)器,它們都可以進(jìn)行編程控制,它們工作在四種工作方式,通過寫控制字和相關(guān)寄存器可以選擇器工作在不同的工作方式。

具體的要求是:定時(shí)器0的控制寄存器TL0(低8位)和 TH0(高8位)構(gòu)成,定時(shí)器1的控制寄存器TL1(低8位)和TH1(高8位)構(gòu)成。通過改變相關(guān)寄存器的值可以使他們工作在不同的方式,TCON則用于定時(shí)器的啟停,同時(shí)還兼顧溢出標(biāo)志等功能。程序開始時(shí)需對這些寄存器進(jìn)行初始化,然后才能控制這些寄存器。


3.2.4控制系統(tǒng)電路設(shè)計(jì)

    如圖3-5所示為系統(tǒng)控制電路系統(tǒng)電路原理圖。是通過C45,S1,R22組成而成的復(fù)位電路,由相關(guān)的資料可以知道51單片機(jī)為高電平復(fù)位,單片機(jī)上電時(shí),電容C45和R22組成的RC電路中電容緩慢充電,使RST端保持一個(gè)幾個(gè)微秒的高電平,使單片機(jī)上電復(fù)位,當(dāng)電容C45充滿電后RST腳電平通過下拉電阻將電平拉低為零,單片機(jī)開始進(jìn)入運(yùn)行狀態(tài),復(fù)位完成。當(dāng)單片機(jī)在運(yùn)行的過中,通過按下按鍵S1也可以形成一個(gè)高電平狀態(tài),單片機(jī)手動復(fù)位。

圖3-5復(fù)位電路

Fig.3-5 Reset circuit

電路中為了計(jì)時(shí)方便計(jì)算,本設(shè)計(jì)的晶振選用12MHz無源外部晶振。配合兩個(gè)起振電容C2,C3。形成晶體諧振電路為單片機(jī)提供一個(gè)12MHz的穩(wěn)定的時(shí)鐘源。為了方便起振,起振電容選用22pF。電路圖如圖3-6所示

圖3-6 晶振電路

Fig.3-6 Crystal oscillator circuit

  單片機(jī)的原理圖如圖3-6所示,在本設(shè)計(jì)中使用51單片機(jī),采用圖3-4、圖3-5、圖3-6所示電路圖與圖3-7構(gòu)成最小系統(tǒng),。

     

圖3-7 STC89C52單片機(jī)最小系統(tǒng)

Fig.3-7 STC89C52 Single chip microcomputer

3.3. 顯示電路設(shè)計(jì)

在本設(shè)計(jì)中使用LCD1602來作為顯示器,LCD1602能夠同時(shí)顯示16x02即32個(gè)字符,也就是2行16列。如圖3-8所示。LCD1602采用的是5V供電,在一些基礎(chǔ)的設(shè)計(jì)和實(shí)驗(yàn)室操作中都有比較多的應(yīng)用。


圖3-8 LCD1602液晶

Fig.3-8 LCD1602 Liquid crystal


在PROPEUS軟件上的LCD1602電路圖設(shè)計(jì)如圖3-9所示:

圖3-9 LCD1602電路設(shè)計(jì)

Fig.3-9 LCD1602 circuit design

3.4 報(bào)警電路設(shè)計(jì)

在本設(shè)計(jì)中,顯然沒有要求有報(bào)警電路,但是平時(shí)我們的洗衣機(jī)出于安全考慮都會加入報(bào)警電路,我們平時(shí)也應(yīng)該有留意到當(dāng)洗衣機(jī)完成洗衣的時(shí)候,洗衣機(jī)會提示洗衣完成,當(dāng)脫水時(shí)翻開蓋的時(shí)候,洗衣機(jī)也會報(bào)警警示用戶小心,所以為了更加完善本設(shè)計(jì)的系統(tǒng),使設(shè)計(jì)更有實(shí)用性。在設(shè)計(jì)中加入了蜂鳴報(bào)警器。具體的設(shè)計(jì)如圖3-10所示,此電路中的蜂鳴器是有源蜂鳴器,在本設(shè)計(jì)中由于仿真的時(shí)候沒有三極管可以達(dá)到蜂鳴器的驅(qū)動要求,所以在仿真處理的時(shí)候,直接使用單片機(jī)的引腳來驅(qū)動蜂鳴器,而在實(shí)際的電路中,并需通過一個(gè)三極管的電流放大作用才能驅(qū)動蜂鳴器,所以在實(shí)際電路中,為了減小單片機(jī)的負(fù)擔(dān),所以,采用PNP的三極管來驅(qū)動蜂鳴器。

圖3-10 報(bào)警電路

Fig.3-10 The alarm circuit

如圖3-10所示,蜂鳴器選用5V的,驅(qū)動蜂鳴器需要大約100mA的電流,也就是說驅(qū)動蜂鳴器的三極管的集電極電流為Ic=100mA。三極管選用直流放大系數(shù)為100的9014,根據(jù)Ic=βIb,可計(jì)算得三極管基極電流Ib=1mA,而Vbe=0.7V,又由于光耦中的光電三極管的集電極、發(fā)射極飽和壓降Vces=0.3V,所以基極的限流電阻上的壓降為(5-Vces-Vbe)=4V,4V/0.001A=4KΩ,由于沒有標(biāo)稱值為4KΩ的電阻,所以選擇4.7KΩ的。電路中的發(fā)光二極管用來表示當(dāng)前設(shè)備處于運(yùn)行狀態(tài)。而電路中的電阻均用來限流,保護(hù)后級的三極管和發(fā)光二極管的正常工作。


3.5指示燈電路設(shè)計(jì)

本設(shè)計(jì)要求在不同的工作狀態(tài)的時(shí)候要有不同的指示燈,所以在設(shè)計(jì)指示燈電路中,通過用三個(gè)LED發(fā)光二極管來表示系統(tǒng)當(dāng)前的運(yùn)行狀態(tài):分別為:脫水,漂洗,洗滌三個(gè)狀態(tài),根據(jù)當(dāng)前電機(jī)運(yùn)行的時(shí)長,不停的切換當(dāng)前的電機(jī)運(yùn)行狀態(tài),LED也不斷的更替閃爍,其原理圖3-11所示。

圖3-11 洗衣機(jī)運(yùn)行狀態(tài)指示燈

Fig.3-11 Washing machine operation status indication lamp


3.6鍵盤電路設(shè)計(jì)

在這一個(gè)設(shè)計(jì)中使用的鍵盤電路是14鍵盤電路,鍵盤在電路中實(shí)現(xiàn)的功能是:模式選擇、啟動暫停、模擬洗衣機(jī)翻蓋、確定按鍵等。在本設(shè)計(jì)中采用上拉電路的方式構(gòu)建鍵盤電路,如圖3-11示,采用的是1K電阻上拉,使按鍵按下時(shí)輸出低電平,按鍵彈起時(shí)輸出高電平,從而實(shí)現(xiàn)按鍵對應(yīng)的功能。

圖3-11鍵盤電路設(shè)計(jì)

Fig 3-11 keyboard circuit design

3.7電源電路設(shè)計(jì)
本設(shè)計(jì)中系統(tǒng)供電電源為5V,由于單片機(jī)都屬對電源的紋波要求較高,并且LCD、蜂鳴器等等部件使用的都是5V供電,所以系統(tǒng)供電采用線性電源。系統(tǒng)電源電路如圖3-12所示。

圖3-12系統(tǒng)電源電路

Fig.3-12 The system power supply circuit

如圖3-12示,所接電源為220V交流電。通過工頻變壓器將電壓降壓到9V后,整流濾波為直流電,然后再經(jīng)過5V的三端穩(wěn)壓器將電壓穩(wěn)定為5V的直流電壓輸出為信號調(diào)理電路,單片機(jī)電路等整個(gè)系統(tǒng)供電。電路圖的原理如下,220V交流電經(jīng)過線性變壓器T1變壓后轉(zhuǎn)換成一個(gè)峰值比較小的交流信號,通過整流橋后,交流小信號變換成一個(gè)脈動的直流信號,經(jīng)過后級的電容C14和C11的濾波,信號變換成一個(gè)脈動很小的直流信號,通過5V的穩(wěn)壓器構(gòu)成的穩(wěn)壓電路后,輸出5V的直流電壓,后級接兩個(gè)電容用于穩(wěn)壓以及減少輸出電壓的的脈動。建立起這個(gè)一個(gè)系統(tǒng)供電電源后,便可以向運(yùn)放、單片機(jī)、液晶、鍵盤等等供應(yīng)電源,使他們能夠正常的工作。
1



4.系統(tǒng)軟件設(shè)計(jì)4.1 軟件開發(fā)環(huán)境介紹

在這一次的設(shè)計(jì)中,在軟件部分使用uVision4軟件進(jìn)行程序的編寫,uVision4使用起來比較簡單,操作也相對較為方便,比起老式的c語言編程軟件更有效率。該軟件集成了業(yè)內(nèi)最領(lǐng)先的技術(shù)。Keil software的8051開發(fā)工具提供以下程序,可以用它們來編譯C程序代碼,匯編源程序,連接和重定位目標(biāo)文件和庫文件,創(chuàng)建HEX文件以及調(diào)試目標(biāo)程序。

4.2 C語言介紹

在這個(gè)系統(tǒng)設(shè)計(jì)中,利用的是c語言編寫程序。c語言在電子工程,計(jì)算機(jī)工程等等方面是至關(guān)重要的。C語言是人與計(jì)算機(jī)之間進(jìn)行交互的、面向過程的一門高級設(shè)計(jì)語言。它的層次清晰,便于初學(xué)者組織程序,易于調(diào)試和維護(hù),語言簡潔,使用方便靈活。c語言還可以直接訪問內(nèi)存地址,能進(jìn)行位操作等等的特點(diǎn)。由于c語言可以對硬件進(jìn)行編程操作,因此,它既有高級語言的功能,同時(shí)也有低級語言的優(yōu)勢。不僅可用于系統(tǒng)軟件的開發(fā),同時(shí)也適用于應(yīng)用軟件的開發(fā)。所以本次設(shè)計(jì)采用的是c語言編程。


4.3 軟件總體設(shè)計(jì)

本設(shè)計(jì)的軟件設(shè)計(jì)主要包括主程序,液晶顯示,鍵盤掃描,中斷程序,電機(jī)控制程序等五個(gè)模塊的程序。其中主程序主要完成的是開機(jī)界面的顯示,以及各個(gè)模塊的初始化,并且中斷程序的初始化。

在KEIL工程中編程時(shí),為了讓程序的可讀性變強(qiáng),我們一般講各個(gè)模塊化程序都建立一個(gè)C文件來寫相關(guān)的驅(qū)動子程序,然后給每一個(gè)子程序的C文件配備一個(gè)H文件,用來生命C文件里面所定義的驅(qū)動函數(shù),并且兩個(gè)文件的名字要一樣。當(dāng)要將某一個(gè)C文件的函數(shù)調(diào)用到別的C文件中的時(shí)候,那么就要在要調(diào)用其他C文件里的C文件的里面加上調(diào)用對應(yīng)C文件的H文件,用來聲明,例如#include <*.h>。


4.3.1系統(tǒng)主程序設(shè)計(jì)

系統(tǒng)的主程序主要的任務(wù)是要完成各個(gè)模塊的初始化,對于本設(shè)計(jì)的模塊包括有液晶顯示程序的初始化、延時(shí)程序的初始化、鍵盤掃描程序的初始化、電機(jī)啟動程序的初始化等等。并且定義各種變量。起到本設(shè)計(jì)的程序基礎(chǔ)的作用。可以實(shí)現(xiàn)標(biāo)準(zhǔn)模式、快速模式、脫水模式、并有啟動暫停功能、翻蓋模擬功能等等。可以調(diào)用各個(gè)子程序。主程序的具體實(shí)現(xiàn)的功能可以看到附錄中的程序代碼。要其程序流程圖如圖4-1所示。

圖4-1 主程序流程圖

Fig.4-1 The main program flow chart


    主程序中的具體程序?qū)崿F(xiàn)的幾個(gè)主要的功能:

這一段程序是定義顯示器的初始值,具體如下:如果模式選擇完畢,再按確定按鍵,程序就會跳到對應(yīng)的模式的程序運(yùn)行。delay_10ms(10); 再定義LCD顯示,LCD_write_com(0X0C);  LCD_clear(); key_flag=key_scan();                LCD_write_str(4,0,"00:  :  ");             if(c==0)LCD_write_str(1,1,"Standard mode");                if(c==5)LCD_write_str(3,1,"fast mode");  if(c==10)LCD_write_str(1,1,"Dehydrate mode");             while(1) }。 如圖4-2所示,為LCD液晶顯示的初始化操作。

圖4-2 LCD初始化流程框圖

Fig 4-2 LCD initialization flow chart

下面這一段分別表示的是啟動暫停功能,在運(yùn)行時(shí)只要按下了暫停按鍵,電機(jī)就會暫停運(yùn)行。

{key_flag=key_scan();  if(key_flag==UP){delay_ms(20); while(key_flag!=UP) key_flag = key_scan();temp1=~temp1;temp=!temp;buzzer_flag=temp;if(temp1==1){if(key_flag==DOWN) {delay_ms(20); while(key_flag!=DOWN) key_flag =key_scan(); buzzer_flag=!buzzer_flag; temp=0;} }

              這個(gè)表示的是在脫水時(shí),如果翻蓋電機(jī)就暫停運(yùn)行的程序,如圖4-3翻蓋模擬流程圖所示,if(buzzer_flag==1){{motor_stop();buzzer=!buzzer;delay_10ms(10);}}if(temp1==1){if(temp2==0)motor_stop();}}


圖4-3 翻蓋模擬流程框圖

Fig 4-3 analogue flow diagram

              下面的表示的是選擇了對應(yīng)模式的對應(yīng)的程序,分別有標(biāo)準(zhǔn)洗滌、快速洗滌、脫水等。當(dāng)按鍵選擇了case 0標(biāo)準(zhǔn)洗滌就會執(zhí)行這一段程序,并且設(shè)計(jì)在洗滌,漂洗,脫水下對應(yīng)的led等會閃爍,還有設(shè)計(jì)了時(shí)間的間隔,就是每個(gè)過程用的時(shí)間等等。case5與case10同理就是當(dāng)按鍵選擇了快速模式與脫水模式的運(yùn)行。

  如圖4-4所示,當(dāng)c值為0、5、10的時(shí)候分別表示的是在標(biāo)準(zhǔn)模式下的工作,在快速模式下的工作,在脫水模式系的工作等。

圖4-4 洗衣機(jī)模式框圖

Fig 4-4 washing machine model diagram

    每一個(gè)模式下都有不同的工作時(shí)間與對應(yīng)的led等的顯示,用當(dāng)c=0的標(biāo)準(zhǔn)模式下的程序?yàn)槔樱瑯?biāo)準(zhǔn)洗滌12分鐘再漂洗6分鐘,漂洗兩次就脫水3分鐘。程序如下switch (c){case 0: {                                                                                          

                                                                                          if(time_minite<12) {temp2=0;TR0=1;led3=0;led1=!led1; delay_10ms(10);}

                                                                                           if((time_minite>=12)&&(time_minite<15)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led1=0;led3=!led3;delay_10ms(10);}

                                                                                                                if((time_minite==15)&&(time_second<8)) {temp1=0;temp2=0;}

                                                                                                     if((time_minite>=15)&&(time_minite<21)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}

                                                                                                                if((time_minite>=21)&&(time_minite<24)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led2=0;led3=!led3;delay_10ms(10);}

                                                                                                                if((time_minite==24)&&(time_second<8)) {temp1=0;temp2=0;}

                                                                                                                if((time_minite>=24)&&(time_minite<30)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}

                                                                                                                if((time_minite>=30)&&(time_minite<33)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led2=0;led3=!led3;delay_10ms(10);}

                                                                                                     if((time_minite>=33)) {TR0=0;motor_stop();buzzer=!buzzer;delay_10ms(10);}  break; }

4.3.2系統(tǒng)中斷程序設(shè)計(jì)

系統(tǒng)要實(shí)時(shí)的產(chǎn)生占空比可調(diào)的PWM,并且做出判斷做出動作,為了滿足實(shí)時(shí)性和可靠性,增加程序的可讀性,在程序中使用定時(shí)器中斷來來產(chǎn)生PWM,并且使用另外一個(gè)定時(shí)器來進(jìn)行計(jì)時(shí),按鍵判斷等操作。

為了方便運(yùn)算,本設(shè)計(jì)中定時(shí)器工作于方式1,采用16位定時(shí)的方式。計(jì)數(shù)最大值為65535。定時(shí)器初值計(jì)算方法為:由于選用的16位定時(shí)法。當(dāng)系統(tǒng)開啟中斷的時(shí)候,計(jì)數(shù)器每次溢出的時(shí)候,系統(tǒng)進(jìn)入到中斷,別且做出相應(yīng)的操作,系統(tǒng)每隔50ms進(jìn)入一次中斷,進(jìn)行倒計(jì)時(shí),并且進(jìn)行按鍵掃描,PWM產(chǎn)生,則計(jì)數(shù)器的設(shè)置如下:

TH0 = (65536-100)/256

TL0 = (65536-100)%256

TH1 = (65536-50000)/256

TL1 = (65536-50000)%256

每當(dāng)系統(tǒng)運(yùn)行到要進(jìn)行下一個(gè)運(yùn)行時(shí)系統(tǒng)開啟中斷,系統(tǒng)進(jìn)入到系統(tǒng)中斷中,并且對系統(tǒng)進(jìn)行相應(yīng)的操作。中斷程序的流程圖如圖4-5,4-6所示。

圖4-5中斷服務(wù)0子程序流程圖

Fig 4-5 0 Interrupt service subroutine flow chart

圖4-6 中斷服務(wù)1子程序流程圖

Fig 4-6 1 Interrupt service subroutine flow chart

4.3.3 鍵盤掃描程序

對于鍵盤來說,分為編碼鍵盤和非編碼鍵盤,單片機(jī)一般使用的事編碼鍵盤,對于系統(tǒng)來說鍵盤的掃描程序一般分為以下幾步:掃描,延時(shí)消抖,賦予功能,檢測松開四個(gè)步驟。他的驅(qū)動程序流程圖如圖4-7所示。

本系統(tǒng)采用的是4×1的鍵盤,具體的按鍵流程如下圖所示。

圖4-7 鍵盤掃描程序流程圖

Fig 4-7 keyboard scanning program flow chart

由圖4-7可知在掃描按鍵程序是的流程,具體的程序如下:開始定義鍵盤掃描程序unsigned char key_scan(void),按鍵掃描函數(shù),返回掃描的鍵值。{ unsigned char key_value = 0;   P2 = 0X1F;  key_value = (P2&0X0f);  key_value = key_value^0X0f; 如果有按鍵按下,求異或    if(key_value  {  delay_10ms(10); 延時(shí)去抖 key_value = (P2&0X0f);    延時(shí)之后再求異或  key_value = key_value^0X0f;  if(key_value)  { return  key_value;  返回鍵值} }else   return              0;}  通過這一段程序就能夠?qū)崿F(xiàn)對鍵盤的掃描。


4.3.4 電機(jī)驅(qū)動程序設(shè)計(jì)

電機(jī)驅(qū)動程序是用專用驅(qū)動芯片L298來驅(qū)動,當(dāng)給出控制L298的驅(qū)動信號不一樣的時(shí)候,電機(jī)正轉(zhuǎn)或者反轉(zhuǎn),當(dāng)給定控制L298的驅(qū)動信號同時(shí)為零的時(shí)候點(diǎn)擊停止。同時(shí)外加電機(jī)使能引腳,當(dāng)使能引腳為0的時(shí)候,電機(jī)停止運(yùn)行。控制策略如公式(1)所示。控制組合方式如表4-1所示。   

                                                              (1)

表4-1 電機(jī)運(yùn)行狀態(tài)與控制信號關(guān)系表

Tab 4-1 motor running state and control signal relationship table

P2^3

P2^4

電機(jī)運(yùn)行狀態(tài)

0

0

停止

1

0

正轉(zhuǎn)

0

1

反轉(zhuǎn)

1

1

勿用


因?yàn)楸緜(gè)設(shè)計(jì)使用的是L298作為啟動芯片,使用電機(jī)只要用兩個(gè)信號就可以開始電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)、停止、電機(jī)全速轉(zhuǎn)動等等各個(gè)不同的運(yùn)行。對于電機(jī)的占空比pwm都是有不同的數(shù)據(jù)設(shè)計(jì)的,因?yàn)閷?yīng)于不同的電機(jī)運(yùn)行模式,下面就對電機(jī)的程序代碼分別實(shí)現(xiàn)的功能描述一下,motor_forward  (void) if(c==0)  PWM_VALUE=70;  else PWM_VALUE=90;  motor1=0;表示的是電機(jī)在正轉(zhuǎn)的是時(shí)候的轉(zhuǎn)速;通過void motor_back (void)  { if(c==0) PWM_VALUE=30; else PWM_VALUE=10;  motor1=1; } 表示的是電機(jī)在反轉(zhuǎn)的時(shí)候的轉(zhuǎn)速;通過void motor_stop(void){  PWM_VALUE=0;  motor0=0;  motor1=0; }讓電機(jī)停止運(yùn)行、通過void motor_full(void) {  PWM_VALUE=100;  motor1=0;  }讓電機(jī)全速運(yùn)行。這樣就能夠滿足在本次設(shè)計(jì)中對電機(jī)運(yùn)行的各個(gè)要求。

如圖4-8所示,當(dāng)電機(jī)在標(biāo)準(zhǔn)模式、快速模式時(shí),通過對變量b的控制,就可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)4s,停2s,反轉(zhuǎn)4s的功能要求。

圖4-8電機(jī)運(yùn)行程序框圖

                     Figure 4-8 motor running program diagram

1



5.系統(tǒng)仿真及結(jié)果分析5.1 硬件實(shí)物

在經(jīng)過前面的軟件設(shè)計(jì)和硬件設(shè)計(jì)后,就可以用protel軟件繪制原理圖和PCB ,再根據(jù)畫好的pcb圖焊接電路板,如圖5-1所示實(shí)物圖就是本設(shè)計(jì)的實(shí)物圖。在實(shí)物圖中包含單片機(jī)最小系統(tǒng),人機(jī)交互電路,電機(jī)驅(qū)動電路,狀態(tài)顯示電路。

圖5-1 實(shí)物圖

Fig 5-1 Material object


5.2系統(tǒng)仿真環(huán)境介紹

本設(shè)計(jì)的仿真軟件用的是PROTEUS,從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。因?yàn)樵谛F陂g,同Proteus的學(xué)習(xí)比較全面,而且軟件操作起來也比較簡單,所以在設(shè)計(jì)時(shí)就采用了這一個(gè)軟件作為本系統(tǒng)的仿真軟件。


5.3 系統(tǒng)仿真結(jié)果分析

通過完整的硬件設(shè)計(jì)和軟件設(shè)計(jì)后,可以通過Proteus軟件來連接仿真全自動洗衣機(jī)控制系統(tǒng),具體的連接線路可見附錄中的全自動洗衣機(jī)控制系統(tǒng)原理圖。在整個(gè)系統(tǒng)中都能夠通過液晶顯示當(dāng)前運(yùn)行狀態(tài),和通過鍵盤來設(shè)置當(dāng)前運(yùn)行的狀態(tài),如圖5-2,5-3,5-4,5-5,5-6所示。

      

圖5-2 開始界面                              圖5-3 模式選擇界面

Fig 5-2 interface                         Fig 5-3 mode selection interface

      

圖5-4 標(biāo)準(zhǔn)模式界面                         圖5-5 快速模式界面

     Fig 5-4 standard interface                       Fig 5-5 fast interface

圖5-6 脫水模式界面

        Fig 5-6 dehdydrate interface

通過仿真可以得出,當(dāng)通過圖5-1到圖5-6所示的設(shè)定方法設(shè)置洗衣機(jī)工作在不同的運(yùn)行狀態(tài),并且系統(tǒng)的工作狀態(tài)也受到時(shí)間的設(shè)定,當(dāng)時(shí)間滿足要求后,洗衣機(jī)自動進(jìn)入到下一個(gè)狀態(tài)來運(yùn)行。就是說分別在標(biāo)準(zhǔn)模式、快速模式、脫水模式下都能夠按要求完成。



5.4仿真遇到的問題

在整個(gè)系統(tǒng)的仿真過程中遇到了各種問題,但是經(jīng)過自己的努力,利用各種方法也克服了這些困難。

首先,在仿真的時(shí)候,出現(xiàn)驅(qū)動LCD1602的問題,由于在PROTUSE里面是理想模型,而理想模型對于時(shí)間特別敏感,在實(shí)物上調(diào)試好的程序,在仿真里面,LCD1602總是閃爍,顯示不穩(wěn)定,最后通過協(xié)調(diào)實(shí)物上控制時(shí)間和仿真里面的控制時(shí)間,最后實(shí)物和仿真都可以比較好的顯示。

其次:在使用PROTUSE仿真軟件的時(shí)候,在構(gòu)建基于L298的電機(jī)驅(qū)動電路的時(shí)候,在給這一款專用電機(jī)驅(qū)動芯片配置地的時(shí)候是直接將地的符號拉倒對應(yīng)的引腳,沒有通過導(dǎo)線連接,從而在正確的功能下,電機(jī)不能夠運(yùn)行。通過我一天的努力,從排查程序錯(cuò)誤到懷疑L298使用方法錯(cuò)誤等過程,終于在重新構(gòu)建仿真電路的時(shí)候發(fā)現(xiàn)了這一問題,從而順利解決了問題,自己也學(xué)習(xí)到了找問題,解決問題的方法。

最后:在整體仿真的時(shí)候,由于中斷時(shí)間時(shí)50mS一次,但是我放在中斷里面的程序運(yùn)行時(shí)間遠(yuǎn)遠(yuǎn)大于中斷時(shí)間,所以程序運(yùn)行的不正常,但有的時(shí)候也運(yùn)行正常,通過自己查閱相關(guān)的資料,當(dāng)我進(jìn)入中斷的時(shí)候我屏蔽了中斷,從而保證整個(gè)中斷程序的執(zhí)行,并且將部分程序拿到中斷程序以外執(zhí)行,從而順利解決了這一問題。

總之,在整個(gè)仿真的過程中,我遇到了各種各樣的問題,但是通過自己的努力,我克服了各種問題和困難,順利完成了系統(tǒng)的仿真。


1




結(jié)束語

這一次設(shè)計(jì)使我收獲了很多,特別是之前沒有接觸到太多硬件方面的知識,然而在這一次設(shè)計(jì)中通過查詢一些資料和尋求老師,同學(xué)的幫助,使我初步的了解了這次設(shè)計(jì)的一些知識,也使我認(rèn)識到了自己的不足。在大學(xué)期間都比較偏重理論的學(xué)習(xí),而沒有太多注重實(shí)踐操作,所以在設(shè)計(jì)的過程中總是會遇到各種問題。但是最終在自己的努力下,還是順利的完成了這一次的設(shè)計(jì)。

通過這一次設(shè)計(jì),我覺得我能夠把理論知識與實(shí)踐相結(jié)合。設(shè)計(jì)都是一個(gè)人一個(gè)項(xiàng)目,通過自己的獨(dú)立思考和分析,解決設(shè)計(jì)中的各種難題,很好的鍛煉了自己獨(dú)立解決問題和分析問題的能力。在做設(shè)計(jì)的時(shí)候,都是幾個(gè)人一組,遇到問題都是大家一起解決的,或者是自己僅僅只是做了自己會的那一部分,這樣使自己的知識體系很不完整,不能夠全面地解決問題。而這一次的設(shè)計(jì),從方案的選擇,元器件的選擇到驅(qū)動程序的設(shè)計(jì),原理圖的繪制都是自己獨(dú)立完成的,感覺對自己的設(shè)計(jì)的整個(gè)過程有很深的了解。

雖然這一次的設(shè)計(jì)是完成了,但是通過自己的分析,深刻的認(rèn)識到,全自動洗衣機(jī)的設(shè)計(jì)還可以實(shí)現(xiàn)更多的功能,例如我在設(shè)計(jì)中加入了蜂鳴報(bào)警器,為這一個(gè)系統(tǒng)提供了提醒的功能。還可以有其他方面的改進(jìn),又例如在電機(jī)驅(qū)動上,可以改用其它的電機(jī)控制器件來控制電機(jī),使其可以實(shí)現(xiàn)電機(jī)調(diào)速等等的功能。雖然本次設(shè)計(jì)中基本完成了任務(wù),但是如果用在實(shí)際應(yīng)用中,還是有一定的問題的,在下一步的設(shè)計(jì)中,可以針對這些問題進(jìn)行修改,使系統(tǒng)更加智能化。使其可以更接近生活上要求的智能洗衣機(jī)的功能。

總而言之:設(shè)計(jì)在很大程度上提高了我的分析和解決問題的能力,為我以后的就業(yè)打下了十分堅(jiān)實(shí)的基礎(chǔ)。







經(jīng)過近半年的學(xué)習(xí)和一直以來的努力,設(shè)計(jì)即將進(jìn)入尾聲。在本次設(shè)計(jì)中我有因?yàn)槭《械骄趩蔬^,有因?yàn)槌晒Χ矏傔^,但是我還是十分享受這一次設(shè)計(jì)。在這次設(shè)計(jì)中我得到了老師、同學(xué)、家人等等的支持與幫助。我首先要衷心感謝我的指導(dǎo)老師,老師在本次設(shè)計(jì)中作為我的指導(dǎo)老師,她淵博的學(xué)識、嚴(yán)謹(jǐn)細(xì)致的治學(xué)作風(fēng),實(shí)事求是的處世態(tài)度深深地影響著我,并將使我終生受益。在我整個(gè)設(shè)計(jì)過程中,老師為我提供了設(shè)計(jì)思路,傳授我設(shè)計(jì)相關(guān)的專業(yè)知識。正是老師的悉心指導(dǎo)和熱心教誨才使我能順利完成此次設(shè)計(jì)。這些都在本次設(shè)計(jì)中為我?guī)砹撕艽蟮膸椭?/p>

在本次設(shè)計(jì)的過程中,還得到同學(xué)們的幫助。他們一直都幫我答疑解難。為我提供豐富的學(xué)習(xí)資料,給我的設(shè)計(jì)提供了很多參考和寶貴的意見。正是有了他們的無私幫助我才能一步步的克服設(shè)計(jì)中遇到的種種技術(shù)難題。

另外感謝我的父母,你們一直都默默的在我身后支持我,對我關(guān)懷備至。正是你們的關(guān)心和支持讓我順利完成學(xué)業(yè)。感謝全體同學(xué)。在這即將畢業(yè)的日子,與你們相處的每一天都是那樣的珍惜。

最后感謝和評閱的各位老師。感謝你們對我的設(shè)計(jì)進(jìn)行評審,感謝你們對我大學(xué)學(xué)習(xí)的檢測。讓我更好地完成大學(xué)的學(xué)習(xí)生活。


附錄系統(tǒng)電路圖

程序代碼清單
  1. #include <REG52.H>
  2. #include "lm1602.h"
  3. #include "delay.h"
  4. #include <key_scan.h>
  5. #include <intrins.h>
  6. #include <math.h>
  7. #include "motor.h"               //這一部分是調(diào)用各部分的程序,例如lm1602是液晶程序,delay是延時(shí)程序,key-scan是鍵盤程序等等。

  8. sbit buzzer=P2^4;
  9. sbit led1=P1^0;
  10. sbit led2=P1^1;
  11. sbit led3=P1^2;            //這部分是定義外設(shè),對應(yīng)的就是三個(gè)led燈
  12. unsigned char buzzer_flag=0;  (這里是蜂鳴器標(biāo)志位)
  13. unsigned char PWM_count=0;  
  14. extern unsigned char PWM_VALUE;( PWM是占空比,而且是從電機(jī)的子程序引用過來的)
  15. unsigned char value=0;
  16. unsigned char a=0,b=0,c=0;
  17. unsigned char time_count=0;
  18. unsigned char time_second=0;time_minite=0;
  19. unsigned char key_flag=0;
  20. unsigned char temp1=0,temp2=0;   //這部分是定義變量

  21. 程序設(shè)計(jì)兩個(gè)定時(shí)器,下面的是定時(shí)器一的程序
  22. void InitialTime1 (void)
  23. {
  24.   TMOD |= 0x11;//16計(jì)數(shù)器
  25.   TH1=(65535-100)/256;
  26.   TL1=(65535-100)%256;  
  27.               TH0=(65535-50000)/256;
  28.   TL0=(65535-50000)%256;
  29.             
  30. }
  31. void InitialIt (void)
  32. {              
  33.                 ET1=1;
  34.                 TR1=1;
  35.                             ET0=1;
  36. //                             TR0=1;
  37.                 EA=1;
  38. }     //定時(shí)器的初始化及其定義


  39. 下面的是主程序
  40. main()
  41. {
  42.               InitialTime1();
  43.               InitialIt();
  44.   LCD_init();     //主程序初始化
  45.               motor_stop();
  46.               led1=0;
  47.               led2=0;
  48.               led3=0;
  49.               LCD_write_str(4,0,"welcome");
  50.               LCD_clear();
  51.               LCD_write_str(0,0,"Ok->Set System");
  52.               LCD_write_str(0,1,"Back->Run System");
  53.               while(1)
  54.               {
  55.                             key_flag=key_scan();
  56.                             if(key_flag==OK)
  57.                             {  
  58.      while(key_flag==OK)key_flag=key_scan();
  59.                                                         LCD_clear();
  60.                                                         LCD_write_str(4,0,"00:  :  ");
  61.                                                         LCD_write_str(0,1,"1sta 2fas 3def");            
  62.                                                         delay_10ms(10);
  63.                                                         Cursor_GotoXY(0,1);
  64.                                                         delay_10ms(10);
  65.                                                         LCD_write_com(0X0F);
  66.                                              key_flag=key_scan();     這一部分是LCD顯示器的顯示,就是各種模式的選擇
  67.                                          
  68.                                           while(key_flag!=OK)
  69.                                           {                           
  70.         key_flag=key_scan();
  71.                                                         if(key_flag==BACK) {while(key_flag!=BACK) key_flag = key_scan();c=c+5;if(c>10)c=0;}  //定義按鍵1,就是設(shè)計(jì)實(shí)物中最左邊的按鍵,通過這一個(gè)按鍵可以選擇不同的模式,分別有標(biāo)準(zhǔn)洗滌、快速洗滌、脫水模式等。
  72.                                                         delay_10ms(10);
  73.                                                         Cursor_GotoXY(c,1);            
  74.                                           }  //如果模式選擇完畢,再按確定按鍵,程序就會跳到對應(yīng)的模式的程序運(yùn)行
  75.                                                         delay_10ms(10);
  76.                                                         LCD_write_com(0X0C);
  77.                                           LCD_clear();
  78.                                           key_flag=key_scan();            
  79.                                           LCD_write_str(4,0,"00:  :  ");            
  80.                                           if(c==0)LCD_write_str(1,1,"Standard mode");            
  81.                                           if(c==5)LCD_write_str(3,1,"fast mode");
  82.                                           if(c==10)LCD_write_str(1,1,"Dehydrate mode");                                         
  83.                                          
  84.                                           while(1)
  85.                                           {            
  86. 下面這一段分別表示的是啟動暫停同翻蓋模擬的功能,在運(yùn)行時(shí)只要按下了暫停按鍵,電機(jī)就會暫停運(yùn)行。而在脫水模式下,模擬翻蓋脫水就會暫停等等。            
  87.         key_flag=key_scan();
  88.               if(key_flag==UP){delay_ms(20);while(key_flag!=UP) key_flag = key_scan();temp1=~temp1;temp=!temp;buzzer_flag=temp;}
  89.               if(temp1==1){              if(key_flag==DOWN) {delay_ms(20);while(key_flag!=DOWN) key_flag = key_scan();buzzer_flag=!buzzer_flag;temp=0;} }                                                                     
  90.                                                         下面的表示的是選擇了對應(yīng)模式的對應(yīng)的程序,分別有標(biāo)準(zhǔn)洗滌、快速洗滌、脫水等。
  91. switch (c)
  92.                                                         {
  93.                                                                       case 0: {                                                                                          
  94.                                                                                            if(time_minite<12) {temp2=0;TR0=1;led3=0;led1=!led1; delay_10ms(10);}
  95.                                                                                            if((time_minite>=12)&&(time_minite<15)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led1=0;led3=!led3;delay_10ms(10);}
  96.                                                                                                                 if((time_minite==15)&&(time_second<8)) {temp1=0;temp2=0;}
  97.                                                                                                      if((time_minite>=15)&&(time_minite<21)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}
  98.                                                                                                                 if((time_minite>=21)&&(time_minite<24)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led2=0;led3=!led3;delay_10ms(10);}
  99.                                                                                                                 if((time_minite==24)&&(time_second<8)) {temp1=0;temp2=0;}
  100.                                                                                                                 if((time_minite>=24)&&(time_minite<30)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}
  101.                                                                                                                 if((time_minite>=30)&&(time_minite<33)) {temp1=1;temp2=1;if(buzzer_flag==0)motor_full();led2=0;led3=!led3;delay_10ms(10);}
  102.                                                                                                      if((time_minite>=33)) {TR0=0;motor_stop();buzzer=!buzzer;delay_10ms(10);}
  103.                                                                                                                                             break;
  104.                                                                               }              //case 0 是當(dāng)按鍵選擇了標(biāo)準(zhǔn)洗滌就會執(zhí)行這一段程序,并且設(shè)計(jì)在洗滌,漂洗,脫水下對應(yīng)的led等會閃爍,還有設(shè)計(jì)了時(shí)間的間隔,就是每個(gè)過程用的時(shí)間等等。
  105.                                                                      
  106.          case 5: {
  107.                    if(time_minite<7) {temp2=0;TR0=1;led3=0;led1=!led1; delay_10ms(10);}
  108.                                                                                       if((time_minite>=7)&&(time_minite<10)) {temp1=1;temp2=1;if((buzzer_flag==0)&&(temp==0))motor_full();led1=0;led3=!led3;delay_10ms(10);}
  109.                                                                                       if((time_minite==10)&&(time_second<8)) {temp1=0;temp2=0;}
  110.                                                                                       if((time_minite>=10)&&(time_minite<13)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}
  111.                                                                                     if((time_minite>=13)&&(time_minite<16)) {temp1=1;temp2=1;if((buzzer_flag==0)&&(temp==0))motor_full();led2=0;led3=!led3;delay_10ms(10);}
  112.                                                                                     if((time_minite==16)&&(time_second<8)) {temp1=0;temp2=0;}
  113.                                                                                     if((time_minite>=16)&&(time_minite<19)) {led3=0;led1=0;led2=!led2; delay_10ms(10);}
  114.                                                                                     if((time_minite>=19)&&(time_minite<22)) {temp1=1;temp2=1;if((buzzer_flag==0)&&(temp==0))motor_full();led2=0;led3=!led3;delay_10ms(10);}
  115.                                                                                     if(time_minite>=22) {TR0=0;motor_stop();buzzer=!buzzer;delay_10ms(10);}
  116.                                                                                                                                             break;                                                                     
  117.                     break;
  118.                                                                              }    //當(dāng)選擇了快速模式,程序就會執(zhí)行這一部分的程序

  119.          case 10: {
  120.                                                                               temp1=1;
  121.                                                                               if(time_minite<3)
  122.                                                                                                                               {
  123.                                                                                                                               led3=!led3;  //對應(yīng)的led燈閃爍
  124.                                                                                             delay_10ms(10);
  125.                                                                                                                                             TR0=1; //這個(gè)是定時(shí)器
  126.                                                                                        temp1=1;
  127.                                                                                                                                             temp2=1;
  128.                                                                                                                                             if((buzzer_flag==0)&&(temp==0))
  129.                                                                                    motor_full();
  130.                                                                                                                                             else motor_stop();
  131.                                                                                                                                           
  132.                                                                                                                               }
  133.                                                                                                                               else {motor_stop();TR0=0;}
  134.                    break;
  135.                                                                              }                            //這一段是脫水模式的程序                                                                                   
  136.         }                                                      
  137.       if(buzzer_flag==1) {{motor_stop();buzzer=!buzzer;delay_10ms(10);}}
  138.                                           if(temp1==1){if(temp2==0)motor_stop();}
  139.                                           }
  140.      }
  141.    }
  142.             
  143.   }
  144. void time0() interrupt 1   //定時(shí)器0
  145. {
  146.               TH0=(65535-50000)/256;
  147.   TL0=(65535-50000)%256; //這里表示的是50毫秒進(jìn)行中斷
  148.     a++;
  149.               if(a==20)
  150.               {
  151.                             a=0;
  152.                             if(temp1==0)  //這里temp1為0是表示的是在標(biāo)準(zhǔn)模式下和快速模式下的功能
  153.                             {
  154.                                           b++;
  155.                                           if(b<4)motor_forward();      
  156.                                           if(b==4) motor_stop();
  157.                                           if(b==6) motor_back();
  158.                                           if(b==10) motor_stop();
  159.                                           if(b==12)  b=0; }   //這一部分表示的是在標(biāo)準(zhǔn)模式和在快速模式下的洗滌、漂洗時(shí),電機(jī)正轉(zhuǎn)4s,停2s,再反轉(zhuǎn)4s的一個(gè)程序
  160.                             else{if(temp2==0)motor_stop();}  //如果temp1不滿足上面的要求就會執(zhí)行這段程序,程序就會判斷temp2是否為0,如果是的就表示按了stop按鍵,模擬的就是在脫水模式下洗衣機(jī)翻蓋的操作,電機(jī)就會停止。
  161.                               time_count++;
  162.                             if(time_count==60)
  163.                             {            
  164.                                             time_count=0;
  165.                                                         time_second=0;
  166.                                                         time_minite++;
  167.                                                         LCD_clear();
  168.                                           LCD_write_str(4,0,"00:  :  ");            
  169.                                                         if(c==0)LCD_write_str(1,1,"Standard mode");            
  170.                                                         if(c==5)LCD_write_str(3,1,"fast mode");
  171.                                                         if(c==10)LCD_write_str(1,1,"Dehydrate mode");            
  172.      }
  173.                             else time_second=time_count;
  174.    }   //這一段是時(shí)間的計(jì)數(shù)和對應(yīng)的顯示
  175.               key_flag=key_scan();
  176.               if(key_flag==UP) temp1=!temp1;
  177.               if(temp1==1){              if(key_flag==DOWN) {buzzer_flag=!buzzer_flag;} }
  178.                                                         DIS_UINT(7,0,time_minite);
  179.                                             DIS_UINT(10,0,time_second);            
  180.             
  181. }

  182. void time1() interrupt 3    //定時(shí)器1
  183. {
  184.     TH1=(65535-100)/256;
  185.     TL1=(65535-100)%256;   //這里指的是占空比,定時(shí)每100微秒就執(zhí)行中斷
  186.     PWM_count++;
  187.     if(PWM_count==100) PWM_count=0;   //pwm的占空比為1k
  188.                  if(PWM_count>PWM_VALUE) motor0=0;  //可以把pwm的占空比分為0到100的占空比
  189.                   else motor0=1;

  190. //               key_flag=key_scan();
  191. //               if(key_flag==UP) temp1=!temp1;  //表示的是啟動停止的標(biāo)志位。當(dāng)按鍵按下,就會暫停運(yùn)行,再按就會繼續(xù)運(yùn)行。
  192. //               if(temp1==1){              if(key_flag==DOWN) {buzzer_flag=1;} }
  193.             
  194. }


  195. 電機(jī)的程序
  196. 因?yàn)槭褂玫氖莑298啟動,所以電機(jī)只要用兩個(gè)信號就可以控制電機(jī)的正反轉(zhuǎn)
  197. #include "motor.h"
  198. #include "delay.h"
  199. extern unsigned char c;
  200. unsigned char PWM_VALUE=0;

  201. void motor_forward(void)
  202. {
  203.               if(c==0)
  204.               PWM_VALUE=70;
  205.               else
  206.               PWM_VALUE=90;
  207.               motor1=0;
  208. }     //這里表示的是正轉(zhuǎn)

  209. void motor_back(void)
  210. {
  211.               if(c==0)
  212.               PWM_VALUE=30;
  213.               else
  214.               PWM_VALUE=10;
  215.               motor1=1;
  216. }    //這里表示的是反轉(zhuǎn)
  217. 正轉(zhuǎn)反轉(zhuǎn)的占空比都有設(shè)定。

  218. void motor_stop(void)
  219. {
  220.               PWM_VALUE=0;
  221. ……………………

  222. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

以上的Word格式文檔51黑下載地址:
word文檔.docx (968.97 KB, 下載次數(shù): 239)

回復(fù)

使用道具 舉報(bào)

ID:595237 發(fā)表于 2020-3-4 11:37 | 顯示全部樓層
一個(gè)致命的錯(cuò)誤?
洗衣機(jī)難道不用進(jìn)水控制嗎?
回復(fù)

使用道具 舉報(bào)

ID:595237 發(fā)表于 2020-3-4 11:38 | 顯示全部樓層
洗衣機(jī)難道不用進(jìn)水控制嗎?是不是致命的錯(cuò)誤?
回復(fù)

使用道具 舉報(bào)

ID:729509 發(fā)表于 2020-4-15 09:47 | 顯示全部樓層
感覺很詳細(xì)
回復(fù)

使用道具 舉報(bào)

ID:355096 發(fā)表于 2020-4-15 21:22 | 顯示全部樓層
juncedz 發(fā)表于 2020-3-4 11:38
洗衣機(jī)難道不用進(jìn)水控制嗎?是不是致命的錯(cuò)誤?

應(yīng)該是手動控制進(jìn)水吧
回復(fù)

使用道具 舉報(bào)

ID:729509 發(fā)表于 2020-4-20 16:22 | 顯示全部樓層
很棒的設(shè)計(jì)
回復(fù)

使用道具 舉報(bào)

ID:737195 發(fā)表于 2020-4-27 16:52 | 顯示全部樓層
誰能根據(jù)樓主提供的word來畫一個(gè)仿真圖學(xué)習(xí)一下嗎?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品在线一区二区三区 | 亚洲成av人影片在线观看 | 免费的av网站 | 午夜av一区二区 | 久久三区 | 久久精品亚洲 | 亚洲国产成人精品久久久国产成人一区 | 久久精品久久综合 | 欧美日韩视频 | 韩日一区二区三区 | 国产精品久久一区 | 精品久久精品 | 精品国产乱码久久久久久影片 | 一区二区三区视频在线观看 | 91福利网址 | 91视频大全 | 国产激情偷乱视频一区二区三区 | 国产不卡在线 | 欧美久久久久 | 日韩一级免费看 | 亚洲精品国产电影 | 精品欧美一区二区三区免费观看 | 一级a爱片性色毛片免费 | 97精品超碰一区二区三区 | 久久99久久98精品免观看软件 | 成人免费在线观看 | 日韩av免费在线观看 | 在线播放一区 | 拍拍无遮挡人做人爱视频免费观看 | 国产欧美精品在线 | 亚洲欧美在线观看视频 | 久久99精品久久久97夜夜嗨 | 免费电影av | 亚洲免费在线播放 | 国产精品久久久久久久久久久久久久 | av网站在线播放 | 欧美片网站免费 | 国产a级毛片 | 久久伊人在 | 午夜国产一区 | 精品欧美一区二区精品久久久 |