單片機(jī)在電飯鍋上的應(yīng)用課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  引言2</b></p><p>  1 電飯鍋的原理與結(jié)構(gòu)3</p><p>  2 MCS─51單片機(jī)在電飯鍋上的應(yīng)用6</p><p>  3 程序設(shè)計(jì)12</p><p><

2、;b>  6 結(jié)束語20</b></p><p><b>  參考文獻(xiàn)20</b></p><p>  附錄Ⅰ:電路原理接線圖21</p><p><b>  引言</b></p><p>  電飯鍋是一種能夠進(jìn)行蒸、煮、燉、煨、燜等多種加工的現(xiàn)代化炊具。它不但能夠把食物做

3、熟,而且能夠保溫,使用起來清潔衛(wèi)生,沒有污染,省時(shí)省力,是家務(wù)勞動(dòng)現(xiàn)代化不可缺少的用具之一。 隨著科技、經(jīng)濟(jì)的發(fā)展,人們生活水平的不斷提高,工作生活節(jié)奏亦加快,延時(shí)預(yù)制食品也成了人們?nèi)粘9ぷ魃钪械男枰?。目前,己有的智能電子電飯鍋在做?粥時(shí),是將米和水同時(shí)放入鍋中,接通電飯鍋的電源后,電飯鍋即自動(dòng)進(jìn)入做飯/粥程序,當(dāng)做飯/粥完成后,電飯鍋即進(jìn)入保溫狀態(tài)。這就需要我們用智能程序控制電飯鍋的煮飯保溫時(shí)間,本設(shè)計(jì)主要介紹MSC-51

4、系列單片機(jī)在電飯鍋的應(yīng)用及程序。本次設(shè)計(jì)過程中借鑒的一些智能家電書和設(shè)計(jì)手冊(cè),吸收書中自己本沒掌握的知識(shí),并得到徐祖華、肖金鳳老師的悉心幫助。對(duì)此深表謝忱。</p><p><b>  電飯鍋的原理及結(jié)構(gòu)</b></p><p><b>  1.1電飯鍋的原理</b></p><p>  電飯鍋是利用發(fā)熱板,在鋁質(zhì)鍋的底部

5、煮飯。發(fā)熱板內(nèi)藏電熱線,這電熱線是由自動(dòng)開關(guān)控制,發(fā)熱板的中央有一圓孔,孔內(nèi)有一感溫軟磁,它借著彈簧向上頂貼著鍋底。這是一種純鐵氧體。它在100℃或以下時(shí),可以被永久磁鐵吸引。但當(dāng)升至103℃時(shí),則失去磁性,不再受永久磁鐵吸引。 當(dāng)按下開關(guān)按鍵,開關(guān)橫桿把磁鐵向上頂貼著感溫軟磁;這時(shí),發(fā)熱線接通,開始加熱。當(dāng)鍋內(nèi)的飯沸騰后,鍋內(nèi)的水就漸漸減少,當(dāng)水開始蒸干,鍋內(nèi)的溫度就由100℃上升。當(dāng)升至103℃時(shí),感溫軟磁就不受磁鐵吸引,開

6、關(guān)的杠桿因彈簧的彈力及本身的重力而下降,壓使接觸點(diǎn)分開,發(fā)熱線就斷電,同時(shí),接通另一保溫電路,保持飯的溫度在70℃左右。</p><p>  智能電飯煲主要由電源部分和控制電路組成,主控電路與熱敏電阻形成反饋回路,主控電路實(shí)現(xiàn)兩種功能,一是采集熱敏電阻反饋回來的溫度值,二是依據(jù)用戶選用的工作方式,對(duì)繼電器的工作方式的改變來對(duì)電熱盤加熱的控制。控制方法大至為:當(dāng)電熱盤溫度達(dá)到當(dāng)前的要求后,繼電器的開關(guān)打開,以切斷電

7、熱盤的電源,當(dāng)下降到一定的溫度范圍后通電加熱,閉合繼電器,以使電熱盤始終保持在適合的溫度之內(nèi)。</p><p>  電飯鍋的主要由頂蓋溫度傳感器、底盤溫度傳感器、驅(qū)動(dòng)電路、加熱盤、繼電器和數(shù)碼管等組成。通過控制溫度傳感器來控制煮飯時(shí)間,利用這些資源完成的電飯煲具有以下功能:1、精煮,2、超快煮,3、冷飯加熱,4、小米量,5、45分稀飯,6、2小時(shí)粥,7、1小時(shí)湯,8、2小時(shí)湯。并且具有人性化的操作界面,使用者很容

8、易掌握。電飯煲的功能不再只是簡簡單單的煮飯了,它可以完成許許多多的功能,它是人們?nèi)粘I钪胁豢扇鄙俚募彝ズ脦褪郑怯捎谥悄艿目刂?,人們的生活才變得越來越簡單?lt;/p><p>  1.2電飯煲煮飯過程介紹</p><p>  要想煮出高質(zhì)量的米飯,就要掌握各種大米的吸水量,加溫時(shí)間,控溫過程,維持沸騰時(shí)間,停止升溫過程,燜飯過程等規(guī)律。煮飯的過程實(shí)質(zhì)上就是使大米由難以為人體所消化吸收的β

9、淀粉轉(zhuǎn)化成為人體較易吸收的α淀粉的過程,經(jīng)過大量的實(shí)踐和探索,一次理想的煮飯過程可以抽象成以下幾個(gè)過程:</p><p><b>  吸水過程</b></p><p>  在適合的溫度下,讓大米盡可能的吸收水分,這樣煮出來的米飯的更加的飽滿,口感更好。讓大米的含水量達(dá)到25%左右,溫度越高,吸水越快。但是溫度一旦超過60度,大米中含有的β淀粉就會(huì)轉(zhuǎn)化成α淀粉,會(huì)變成糊

10、狀,所以控制溫度在60度以下是非常有必要的,一般控制在35度左右為最佳溫度。</p><p><b>  升溫過程</b></p><p>  這一個(gè)過程必須使鍋內(nèi)的熱量充分對(duì)流,以至于不會(huì)造成夾生飯。一般說來,加熱值沸騰的時(shí)間最佳是10分鐘。</p><p><b>  維持沸騰</b></p><p

11、>  為了使β淀粉充分轉(zhuǎn)化成為α淀粉,需要在沸騰的狀態(tài)下,溫度大約控制在98度左右,維持20分鐘左右,可以通過控制繼電器的開與閉來實(shí)現(xiàn)溫度的控制。</p><p><b>  補(bǔ)炊過程</b></p><p>  斷電之后,溫度會(huì)慢慢下降,當(dāng)溫度降到100度左右的時(shí)候,在通電一段時(shí)間,將鍋內(nèi)的多余的水分蒸發(fā)掉,補(bǔ)炊的時(shí)間根據(jù)個(gè)人而定。</p>&l

12、t;p><b>  燜飯過程</b></p><p>  在補(bǔ)炊過程結(jié)束后,鍋內(nèi)基本上沒有太多的水分,應(yīng)停止加熱,利用余熱來進(jìn)行燜飯,促進(jìn)大米α淀粉的生成。一般的燜飯時(shí)間大約控制在12分鐘左右。</p><p><b>  保溫過程</b></p><p>  整個(gè)煮飯過程結(jié)束后,自動(dòng)進(jìn)入保溫模式,溫度低于65度左右

13、,加熱盤就會(huì)對(duì)鍋體進(jìn)行加熱。使用者在此種狀態(tài)下就可以享用美食了。</p><p><b>  3功能介紹</b></p><p>  利用凌陽8位單片機(jī)開發(fā)的智能電飯煲具有以下的兩大功能:</p><p><b>  3.1 煲煮功能</b></p><p><b>  1) 精煮<

14、/b></p><p>  選擇精煮功能,按下開始鍵,電飯煲開始加熱,大約45分鐘后電飯煲進(jìn)入燜飯狀態(tài),此時(shí)數(shù)碼顯示"n",10分鐘后,電飯煲進(jìn)入保溫狀態(tài),數(shù)碼顯示"b" ,這表明飯已經(jīng)煮好。</p><p><b>  2) 超快煮</b></p><p>  選擇超快煮功能,按下開始鍵,電飯煲開

15、始加熱,大約30分鐘后電飯煲進(jìn)入燜飯狀態(tài),此時(shí)數(shù)碼顯示"n",8分鐘后飯煮好,電飯煲進(jìn)入保溫狀態(tài),數(shù)碼顯示"b",這表明飯已經(jīng)煮好。</p><p><b>  3) 冷飯加熱</b></p><p>  選擇冷飯加熱功能,按下開始鍵,電飯煲開始加熱,大約15分鐘后電飯煲進(jìn)入保溫狀態(tài),數(shù)碼顯示"b" ,這表示

16、冷飯加熱完成。</p><p><b>  4) 小米量煮</b></p><p>  選擇小米量煮功能,按下開始鍵,電飯煲開始加熱,大約40分鐘后電飯煲進(jìn)入燜飯狀態(tài),此時(shí)數(shù)碼顯示"n",10分鐘后飯煮好,電飯煲進(jìn)入保溫狀態(tài),這表明小米量的飯已經(jīng)煮好。</p><p><b>  5)45分鐘稀飯</b>

17、;</p><p>  選擇45分鐘稀飯功能,按下開始鍵,電飯煲開始加熱,此時(shí)數(shù)碼顯示"-",45分鐘后粥已煮好。</p><p><b>  6)2小時(shí)粥</b></p><p>  選擇2小時(shí)粥功能,按下開始鍵,電飯煲開始加熱,此時(shí)數(shù)碼顯示"2",2小時(shí)后粥已經(jīng)煮好。</p><p

18、><b>  7)1小時(shí)湯</b></p><p>  選擇1小時(shí)湯功能,按下開始鍵,電飯煲開始加熱,此時(shí)數(shù)碼顯示"1",1小時(shí)后湯已經(jīng)熬好。</p><p><b>  8)2小時(shí)湯</b></p><p>  選擇2小時(shí)湯功能,按下開始鍵,電飯煲開始加熱,此時(shí)數(shù)碼顯示"2"

19、, 2小時(shí)后湯已經(jīng)熬好。</p><p>  注:以上4種功能模式中,每一種功能結(jié)束之后都自動(dòng)進(jìn)入保溫模式,數(shù)碼顯示"b"。</p><p><b>  1.3 定時(shí)功能</b></p><p>  選擇相應(yīng)功能后設(shè)置相應(yīng)的定時(shí)時(shí)間,按下開始鍵,定時(shí)開始,每過1小時(shí)顯示時(shí)間數(shù)減1。在定時(shí)時(shí)間內(nèi),根據(jù)定時(shí)的時(shí)間和所需過程的時(shí)間

20、差電飯鍋就能自動(dòng)啟動(dòng),自動(dòng)加熱,自動(dòng)保溫,完成選擇的功能,例如如果45分鐘稀飯定時(shí)2小時(shí)的話,電飯煲會(huì)在1小時(shí)15分鐘的時(shí)候開時(shí)啟動(dòng)加熱工作,并進(jìn)入45分鐘稀飯功能模式。</p><p>  MSC-51單片機(jī)在電飯鍋上的應(yīng)用</p><p>  美國INTEL公司生產(chǎn)的MCS一51系列單片機(jī)具有很強(qiáng)的功能,它被廣泛的應(yīng)用于各種自動(dòng)化的控制系統(tǒng)上。我們應(yīng)用其中8051單片機(jī)微機(jī)電腦控制器控

21、制的電飯鍋。</p><p>  用微電腦控制電飯鍋可根據(jù)煮制各種不同食品的需要,編制各種不同的程序,實(shí)現(xiàn)不同的控制,提高煮制食品的質(zhì)量,使其更可口,味道更美。另外還可以實(shí)現(xiàn)各種狀態(tài)的顯示和定時(shí)等功能,使用者可直觀地看到煮制食品的進(jìn)展情況,在操作上也能有一種輕松,新奇的感覺。相當(dāng)于分立元件電路來講,用電腦控制的電路簡單,可靠性高,成本低。所以。利用微電腦實(shí)現(xiàn)各種家電產(chǎn)品控制的自動(dòng)化,智能化是一個(gè)發(fā)展方向。<

22、/p><p><b>  2.1 控制要求</b></p><p>  我們參照了國外幾種不同的先進(jìn)產(chǎn)品,并結(jié)合我國的實(shí)際情況,制定了如下控制要求:</p><p>  一、煮制食品的控制曲線</p><p>  我們制定了六種煮制食品的控制曲線.它們分別如圖l所示:</p><p>  這六種控制

23、曲線被定義為六種菜單,使用者可根據(jù)煮制食品的需要任意選擇。</p><p><b>  二、顯示</b></p><p>  采用4位LFD數(shù)碼管顯示時(shí)間,顯示精度為l分鐘。用LED發(fā)光管指示定時(shí)、預(yù)煮、煮炯、保溫五種工作狀態(tài)和白米飯、糯米飯、什錦飯、糙米飯、粥五種菜單</p><p><b>  程序。</b></

24、p><p><b>  三、鳴響提示</b></p><p>  當(dāng)觸動(dòng)按鍵和飯煮熟時(shí)都由蜂鳴器發(fā)出鳴響提示。</p><p><b>  四、定時(shí)</b></p><p>  最大定時(shí)時(shí)間為12小時(shí)50分鐘,所設(shè)定的定時(shí)時(shí)間為飯煮熟時(shí)的時(shí)間,采用倒計(jì)時(shí)的計(jì)時(shí)方式,設(shè)定精度為10分鐘,直接用輕觸按鍵輸入

25、,時(shí)間設(shè)定可遞</p><p>  增和遞減,也可進(jìn)行單步和快速設(shè)定。</p><p><b>  五、自動(dòng)保護(hù)</b></p><p>  具有內(nèi)鍋不在鍋體內(nèi)時(shí)不能加電的自動(dòng)保護(hù)功能,具有軟件和硬件的超保護(hù)功能。</p><p><b>  2.2 硬件設(shè)計(jì)</b></p><

26、;p>  硬件電路原理圖如圖2所示,采用內(nèi)部帶R(>M的8051單片機(jī)做微處理器,它具有豐富的指令系統(tǒng)和很強(qiáng)的功能,可使控制電路結(jié)構(gòu)簡單體積小,可靠性高。8051芯片有四個(gè)八位輸入/輸出口PO,P1,P2,P3.選P1,P2口為時(shí)間、狀態(tài)和菜單的顯示輸出口,采用動(dòng)態(tài)掃描的顯示方式,P1口的輸出通過三極管送到數(shù)碼管的段和顯示狀態(tài)、菜單的發(fā)光二極管,P2口的輸出通過三極管分時(shí)選通數(shù)碼管的位和對(duì)應(yīng)的狀態(tài)、菜單發(fā)光二極管o PO口為

27、操作按鍵輸入口,低電平有效。P3. 0和P3. 1分別通過反向器G1:B,G1:F和三極管T17,T18驅(qū)動(dòng)主加熱盤和副加熱元件的可控硅TM1,TM2,接入反向器G1:B.G1:F可防止單片機(jī)復(fù)位時(shí)可控硅瞬間導(dǎo)通現(xiàn)象.P3. 2口經(jīng)三極管T16驅(qū)動(dòng)蜂鳴器BEo</p><p>  由干被控溫度是一個(gè)連續(xù)變化的模擬量信號(hào),而單片機(jī)只能處理數(shù)字量信號(hào),這就需要模/數(shù)轉(zhuǎn)換電路,現(xiàn)采用具有負(fù)溫度系數(shù)的測(cè)溫型熱敏電阻RT為

28、溫度傳感器,它和電位器W1、電容C2,施密特觸發(fā)器G1:A組成多諧振蕩器,RT的阻值隨被測(cè)溫度的變化而變化,因而振蕩器的輸出頻率也隨RT阻值的變化而變化,這樣就實(shí)現(xiàn)了把模擬量信號(hào)轉(zhuǎn)變成頻率變化的方波信號(hào),單片機(jī)記錄在單位時(shí)間內(nèi)的周期數(shù)就可得到被測(cè)的溫度值。這一信號(hào)經(jīng)過反向器G1:B輸入到P3. S口,單片機(jī)利用該信號(hào)進(jìn)行多點(diǎn)閉環(huán)溫度控制。電位器W1起溫度微調(diào)作用。溫度傳感器RT裝在鍋體底部,間接反映鍋內(nèi)的溫度。</p>&

29、lt;p>  T FUSE是熱保險(xiǎn)管,起超溫保護(hù)作用。</p><p>  SW為機(jī)電連鎖微動(dòng)開關(guān),當(dāng)內(nèi)鍋在鍋體內(nèi)時(shí),開關(guān)sw受壓閉合,電路接通,控制器正常工作,否則不能工作,這樣可避免發(fā)熱盤空載加熱的現(xiàn)象。</p><p>  H C()()K為主發(fā)熱盤。</p><p>  H一WARM為副發(fā)熱元件,裝在鍋體側(cè)面和頂部,主要起保溫作用。</p&g

30、t;<p>  電路可分別安裝在兩塊電路板上,一塊為顯示操作板,裝在溫度較低的鍋體頂部或側(cè)面。另一塊為可控硅和電源板,可裝在鍋體底部。</p><p><b>  程序設(shè)計(jì)</b></p><p>  主程序框圖如下圖3所示</p><p>  主程序判斷確有按鍵輸入時(shí),開啟蜂鳴器,鳴響0.25后由計(jì)時(shí)中斷服務(wù)程序來關(guān)閉蜂鳴器。由

31、按鍵輸入執(zhí)行保溫程序時(shí),必須是沒有菜單和定時(shí)輸入的情況下,且先執(zhí)行慢速加熱至73C的程序后才進(jìn)入保溫程序。保溫時(shí)間限制為10小時(shí)。</p><p>  溫度采樣子程序在保溫和加熱時(shí)調(diào)用,進(jìn)行溫度控制。CTI為采</p><p>  樣計(jì)數(shù)器,其流程圖見圖4。為提高測(cè)量的準(zhǔn)確性,應(yīng)用多次間隔時(shí)間采樣取其平均值的方法來減小測(cè)量誤差,在間隔采樣過程中如連續(xù)出現(xiàn)20次超出正常范圍的溫度值,則判斷為

32、測(cè)溫電路故障,停止執(zhí)行正常程序,并做出相應(yīng)的顯示和蜂鳴報(bào)警。</p><p>  CTO設(shè)置為計(jì)時(shí)器,每隔。.15發(fā)出一次中斷申請(qǐng),入口地址為。ooBH,中斷服務(wù)程序做相應(yīng)的各種計(jì)時(shí)操作處理,中斷服務(wù)流程圖見圖4。選用定時(shí)程序的判斷,如果沒有進(jìn)行過時(shí)間的設(shè)定,74H位為零,就判斷為沒有設(shè)置定時(shí),否則74H位由1,執(zhí)行定時(shí)煮制程序。</p><p><b>  3.2 操作說明&l

33、t;/b></p><p>  接通電源后時(shí)間顯示器閃爍顯示“o:00”為正常。</p><p>  程序選擇鍵:按該鍵可循環(huán)選擇五種設(shè)定的程序,分別由發(fā)光二極管進(jìn)行顯示。</p><p>  保溫鍵:如果沒有按過其它鍵,按該鍵可直接進(jìn)入保溫狀態(tài),保溫指示燈亮,否則無效。</p><p>  時(shí)間設(shè)定鍵:可設(shè)定定時(shí)煮制的時(shí)間,最大定時(shí)時(shí)

34、間為12小時(shí)50分鐘。</p><p><b>  啟動(dòng)鍵:</b></p><p>  按動(dòng)該鍵就確認(rèn)了所選擇的程序和定時(shí)時(shí)間,并開始執(zhí)行程序,相應(yīng)的工作狀態(tài)指示燈亮;2)如按動(dòng)該鍵前沒有選擇程序和設(shè)定時(shí)間,按動(dòng)該鍵后直接執(zhí)行白米飯程序;3)按動(dòng)該鍵并保持約2秒鐘則跳過預(yù)煮直接進(jìn)入煮制過程;4)當(dāng)選擇煮粥程序時(shí),第一次按動(dòng)該鍵后,時(shí)間顯示器閃爍顯示煮制的時(shí)間,該時(shí)間

35、可在1:30一4:00時(shí)間范圍內(nèi)設(shè)定,第二次按動(dòng)該鍵后,就確認(rèn)了所設(shè)定的輸入并開始執(zhí)行程序;5)執(zhí)行定時(shí)程序過程中,按該鍵則暫停正常的時(shí)間顯示,所顯示的是選擇程序的煮制時(shí)間,釋放該鍵后恢復(fù)正常的時(shí)間顯示。</p><p><b>  3.3 程序</b></p><p>  includehardware.inc</p><p>  .inc

36、ludeS480.inc</p><p>  .includeResource.inc</p><p>  define voice_start 00 //開始//</p><p>  define voice_cool 01 //煮飯//</p><p>  define voice_fcool 02 /

37、/快煮//</p><p>  define voice_bw 06 //保溫//</p><p>  define voice_down 07 //定時(shí)減//</p><p>  define voice_up 08 //定時(shí)加//</p><p>  define voice_off 0

38、9 //返回//</p><p>  define voice_alarm 10 //請(qǐng)放入內(nèi)鍋//</p><p>  .define voice_ok 11 //請(qǐng)享用//</p><p>  .define voice_set 12 //請(qǐng)?jiān)O(shè)定//</p><p>  .define voi

39、ce_high 13 //注意溫度過高//</p><p>  //*******************************************//</p><p>  // 系統(tǒng)初始化子程序 //</p><p>  //************************************

40、*******//</p><p>  .public _System_Initial</p><p>  _System_Initial:.proc</p><p><b>  r1=0x0002</b></p><p>  [P_SystemClock]=r1 //初始化系統(tǒng)時(shí)鐘//</p><

41、p><b>  r1=0xFF80</b></p><p>  [P_IOA_Dir]=r1</p><p><b>  r1=0xFFE0</b></p><p>  [P_IOA_Attrib]=r1</p><p><b>  r1=0xFFE0</b></p

42、><p>  [P_IOA_Data]=r1 //初始化A口//</p><p><b>  r1=0xFFFB</b></p><p>  [P_IOB_Dir]=r1</p><p><b>  r1=0xFFFF</b></p><p>  [P_IOB_Attri

43、b]=r1</p><p><b>  r1=0x0004</b></p><p>  [P_IOB_Data]=r1 //初始化B口//</p><p>  r1=0x0004 //時(shí)基選擇//</p><p>  [P_TimeBase_Setup]=r1</p><p>  int o

44、ff //關(guān)中斷//</p><p><b>  r1=0x0105</b></p><p>  [P_INT_Ctrl]=r1 //初始化中斷//</p><p>  int fiq,irq //開中斷//</p><p><b>  retf</b></p><p

45、><b>  .endp</b></p><p>  //*********************************************//</p><p>  // 段顯子程序 //</p><p>  //**************************

46、*******************//</p><p><b>  .DATA</b></p><p>  Show_tabble: .dw 0x003F,0x0006,0x005B,0x004F,0x0066</p><p>  .dw 0x006D,0x007D,0x0007,0x007F,0x006F</p><p

47、><b>  .code</b></p><p>  .public _Show</p><p>  _Show:.proc</p><p>  BP=Show_tabble</p><p>  r1+=BP //求顯示碼的地址//</p><p>  r1=[r1] //

48、求出顯示碼//</p><p>  r1=r1 lsl 4</p><p>  r1=r1 lsl 4 //移至高8位//</p><p>  r2=[P_IOA_Buffer]</p><p>  r2&=0x8000</p><p><b>  r1|=r2</b></p>

49、;<p>  [P_IOA_Data]=r1 //輸出顯示//</p><p><b>  retf</b></p><p><b>  .endp</b></p><p>  //******************************************//</p><p&g

50、t;  // 計(jì)時(shí)子程序 //</p><p>  //******************************************//</p><p><b>  .iram</b></p><p>  .public _end_120</p><p>

51、;  .var _end_120=0</p><p><b>  .code</b></p><p>  .public _Time_Count</p><p>  _Time_Count: .proc</p><p>  r1=[_STATUS]</p><p><b>  cmp r

52、1,0</b></p><p>  je Count_end</p><p>  r1=[T1_1] //取第一個(gè)數(shù)據(jù)//</p><p>  r1+=[T1_2] //第一個(gè)數(shù)據(jù)和第二個(gè)數(shù)據(jù)相加//</p><p>  r1+=[T1_3] //前三個(gè)數(shù)據(jù)相加//</p><p>  

53、r1+=[T1_4] //前四個(gè)數(shù)據(jù)相加//</p><p>  cmp r1,0 //和與0相比較//</p><p>  je Time2_Count //等于0轉(zhuǎn)到定時(shí)2的計(jì)數(shù)//</p><p>  r1=[_end_120]</p><p>  cmp r1,120 //是否到了120次//</p>

54、<p>  jne ADD_1 //不到轉(zhuǎn)向ADD_1繼續(xù)相加//</p><p><b>  r1=0x00</b></p><p>  [_end_120]=r1 //到了清0為下次中斷作準(zhǔn)備//</p><p>  call _Time_count_down1 //調(diào)用預(yù)置減子程序//</p>&

55、lt;p>  jmp Time_Count_Over</p><p>  ADD_1: r1=r1+1</p><p>  [_end_120]=r1</p><p>  Time_Count_Over:</p><p>  r1=[P_IOA_Buffer] //一次中斷計(jì)時(shí)后秒點(diǎn)反相//</p><

56、;p><b>  r2=0x8000</b></p><p><b>  r1^=r2</b></p><p>  [P_IOA_Data]=r1</p><p>  jmp Count_end</p><p>  Time2_Count:r1=[T2_1] //取第一個(gè)數(shù)據(jù)//<

57、;/p><p>  r1+=[T2_2] //第一個(gè)數(shù)據(jù)和第二個(gè)數(shù)據(jù)相加//</p><p>  r1+=[T2_3] //前三個(gè)數(shù)據(jù)相加//</p><p>  r1+=[T2_4] //前四個(gè)數(shù)據(jù)相加// </p><p><b>  cmp r1,0</b></p><p> 

58、 je Count_end</p><p>  r1=[_end_120]</p><p>  cmp r1,120</p><p><b>  jne ADD_2</b></p><p><b>  r1=0x00</b></p><p>  [_end_120]=r1&l

59、t;/p><p>  call _Time_count_down2</p><p>  jmp Count_end</p><p>  ADD_2: r1+=1</p><p>  [_end_120]=r1</p><p>  Count_end: retf</p><p><b

60、>  .endp</b></p><p>  // 過溫檢測(cè)子程序 //</p><p>  //**********************************************//</p><p>  .public _Over_Temp</p><p&g

61、t;  _Over_Temp:.proc</p><p>  r1=[_STATUS]</p><p><b>  cmp r1,1</b></p><p>  jne t_exit</p><p>  r1=[_Tempreature_value]</p><p><b>  cmp

62、r1,36</b></p><p>  jnb t_exit //與36即150度比較,溫度超過150度時(shí)報(bào)警并跳到程序的開始//</p><p>  r1=voice_high</p><p>  [_Announce_Buff]=r1</p><p>  call _PlayRespond</p>

63、<p><b>  r1=0</b></p><p>  [_STATUS]=r1</p><p><b>  pc=0x0000</b></p><p>  t_exit: retf</p><p><b>  .endp</b></p>&

64、lt;p>  // 溫度采集子程序 //</p><p>  //*********************************************//</p><p><b>  .ram</b></p><p>  .public _Tempreature_value&

65、lt;/p><p>  .var _Tempreature_value</p><p><b>  .code</b></p><p>  .public _ReadAD</p><p>  _ReadAD:.proc</p><p><b>  r3=900</b></p

66、><p>  [_Tempreature_value]=r3</p><p><b>  retf</b></p><p><b>  .endp</b></p><p>  // 計(jì)時(shí)加預(yù)置子程序 //</p><p

67、>  //***************************************************//</p><p>  .public _Time_up</p><p>  _Time_up:.proc</p><p>  r1=[_WHICH_TIME]</p><p>  cmp r1,0x01</p>

68、<p>  je timeup2</p><p>  call _Time_up1_sub</p><p>  jmp time_exit_up</p><p>  timeup2: call _Time_up2_sub</p><p>  time_exit_up:</p><p>  r1=voice

69、_up</p><p>  [_Announce_Buff]=r1</p><p>  call _PlayRespond</p><p><b>  retf</b></p><p><b>  .endp</b></p><p>  //

70、 計(jì)時(shí)減預(yù)置子程序 //</p><p>  //***************************************************//</p><p>  .public _Time_down</p><p>  _Time_down:.proc</p><p>  r1=[_WHICH_

71、TIME]</p><p>  cmp r1,0x01</p><p>  je timedown2</p><p>  call _Time_down1_sub</p><p>  jmp time_exit_down</p><p>  timedown2:</p><p>  call _

72、Time_down2_sub</p><p>  time_exit_down:</p><p>  r1=voice_down</p><p>  [_Announce_Buff]=r1</p><p>  call _PlayRespond</p><p><b>  retf</b><

73、/p><p><b>  .endp</b></p><p>  // 預(yù)置1設(shè)定減子程序 //</p><p>  //*******************************************************//</p><p>

74、  .public _Time_down1_sub</p><p>  _Time_down1_sub: .proc</p><p>  r1=[T1_1] //取第一個(gè)數(shù)據(jù)//</p><p>  r1+=[T1_2] //第一個(gè)數(shù)據(jù)和第二個(gè)數(shù)據(jù)相加//</p><p>  r1+=[T1_3] //前三個(gè)數(shù)據(jù)相加//&

75、lt;/p><p><b>  cmp r1,0</b></p><p>  je sub1_exit_down </p><p>  r1=[T1_3] //取第三個(gè)數(shù)據(jù)//</p><p>  cmp r1,0 //判斷是否到了0//</p><p>  jne sub1_exit

76、_05 //不到0跳轉(zhuǎn)//</p><p>  r2=5 //到5后寫0//</p><p><b>  [T1_3]=r2</b></p><p>  r1=[T1_2] //取第二個(gè)數(shù)據(jù)//</p><p>  cmp r1,0 //比較是否到了0//</p>&l

77、t;p>  jne sub1_exit_09 //不到0跳轉(zhuǎn)減1//</p><p>  r2=9 //到0后寫9//</p><p><b>  [T1_2]=r2</b></p><p><b>  r2=[T1_1]</b></p><p><b>  

78、r2-=1</b></p><p><b>  [T1_1]=r2</b></p><p>  jmp sub1_exit_down</p><p>  sub1_exit_09: r2=[T1_2]</p><p><b>  r2-=1</b></p><p&g

79、t;  [T1_2]=r2 //減1操作//</p><p>  jmp sub1_exit_down</p><p>  sub1_exit_05: r2=[T1_3]</p><p><b>  r2-=1</b></p><p>  [T1_3]=r2 //減1操作//</p>

80、<p>  sub1_exit_down: retf</p><p><b>  .endp</b></p><p>  // 煮飯子程序 //</p><p>  //********************************************//

81、</p><p>  .public _COOL</p><p>  _COOL:.proc</p><p><b>  r1=1</b></p><p>  [cool_status]=r1</p><p>  cool_test1:</p><p>  r1=[_Tem

82、preature_value]</p><p>  cmp r1,537 //是否到了50度//</p><p>  ja cool_test1 //大于537即小于50度時(shí)循環(huán)//</p><p><b>  r1=0</b></p><p>  [cool_status]=r1</p&

83、gt;<p>  cool_test2: </p><p>  r1=[_Tempreature_value]</p><p>  cmp r1,687 //是否到了40度//</p><p>  jbe cool_test2 //小于等于687即大于40度時(shí)循環(huán)//</p><p>  c

84、ool_test5: </p><p><b>  r1=1</b></p><p>  [cool_status]=r1</p><p>  cool_test3:</p><p>  r1=[_Tempreature_value]</p><p>  cmp r1,140</p

85、><p>  jae cool_test3 //大于140即小于98度時(shí)循環(huán)等待//</p><p><b>  r1=0</b></p><p>  [cool_status]=r1</p><p>  cool_test4:</p><p>  r1=[_Tempreature_val

86、ue]</p><p>  cmp r1,68 //小于68即大于等于125度時(shí)跳出//</p><p>  jbe cool_exit</p><p>  cmp r1,144 //大于97度時(shí)停止加熱等待,小于時(shí)循環(huán)加熱//</p><p>  jb cool_test4</p>

87、<p>  jmp cool_test5</p><p>  cool_exit:</p><p>  r1=[_Tempreature_value]</p><p>  cmp r1,132 //大于100度時(shí)停止加熱等待,否則繼續(xù)加熱//</p><p>  jbe cool_exit</p&g

88、t;<p><b>  r1=1</b></p><p>  [cool_status]=r1</p><p>  cool_test6:</p><p>  r1=[_Tempreature_value]</p><p>  cmp r1,77 //大于120度時(shí)加熱結(jié)束//&l

89、t;/p><p>  ja cool_test6</p><p><b>  r1=0</b></p><p>  [cool_status]=r1</p><p>  r1=voice_ok</p><p>  [_Announce_Buff]=r1</p><p>  ca

90、ll _PlayRespond</p><p><b>  r1=0x0105</b></p><p>  [P_INT_Ctrl]=r1 //初始化中斷//</p><p>  int fiq,irq //開中斷//</p><p><b>  retf</b></p><

91、;p><b>  .endp</b></p><p>  // 快煮子程序 //</p><p>  //********************************************//</p><p>  .public _FCOOL</p>&l

92、t;p>  _FCOOL:.proc</p><p>  fcool_test3:</p><p><b>  r1=1</b></p><p>  [cool_status]=r1</p><p>  fcool_test1:</p><p>  r1=[_Tempreature_valu

93、e]</p><p>  cmp r1,140</p><p>  ja fcool_test1</p><p><b>  r1=0</b></p><p>  [cool_status]=r1</p><p>  fcool_test2:</p><p>  r1=[_

94、Tempreature_value]</p><p><b>  cmp r1,68</b></p><p>  jbe fcool_exit</p><p>  jmp fcool_test3</p><p>  fcool_exit:</p><p><b>  r1=0</b

95、></p><p>  [cool_status]=r1</p><p>  r1=voice_ok</p><p>  [_Announce_Buff]=r1</p><p>  call _PlayRespond</p><p><b>  r1=0x0105</b></p>

96、<p>  [P_INT_Ctrl]=r1 //初始化中斷//</p><p>  int fiq,irq //開中斷//</p><p><b>  retf</b></p><p><b>  .endp</b></p><p>  // 保溫子

97、程序 //</p><p>  //********************************************//</p><p>  .public _BW</p><p><b>  _BW:.PROC</b></p><p>  r1=[P_IOB_Buffer]&l

98、t;/p><p>  r1&=0xF083</p><p>  r1|=0x0080</p><p>  [P_IOB_Data]=r1 //保溫功能指示燈常亮//</p><p><b>  bw_test1:</b></p><p>  r1=[_Tempreature_va

99、lue]</p><p>  cmp r1,370</p><p>  jbe bw_test1</p><p><b>  r1=1</b></p><p>  [cool_status]=r1</p><p><b>  bw_test2:</b></p>

100、<p>  r1=[_Tempreature_value]</p><p>  cmp r1,340</p><p>  jae bw_test2</p><p><b>  r1=0</b></p><p>  [cool_status]=r1</p><p>  jmp bw_tes

101、t1</p><p><b>  retf</b></p><p><b>  .endp</b></p><p>  // 主程序 //</p><p>  //*****************************

102、******************//</p><p><b>  .code</b></p><p>  .public _main</p><p><b>  _main:</b></p><p>  call _System_Initial</p><p>  loo

103、p: r1=0x0105</p><p>  [P_INT_Ctrl]=r1 //初始化中斷//</p><p>  int fiq,irq //開中斷//</p><p>  call _KeyScan</p><p>  cmp r1,0x0011</p><p><b>  je exit1<

104、;/b></p><p>  cmp r1,0x0012</p><p><b>  je exit2</b></p><p>  cmp r1,0x0014</p><p><b>  je exit3</b></p><p>  cmp r1,0x0018</

105、p><p><b>  je exit4</b></p><p>  test r1,0x0010</p><p><b>  jz exit5</b></p><p><b>  jmp exit</b></p><p>  exit1:call _Set

106、</p><p><b>  jmp exit</b></p><p>  exit2:call _Time_up</p><p><b>  jmp exit</b></p><p>  exit3:call _Time_down</p><p><b>  jm

107、p exit</b></p><p>  exit4:call _Start_cancle</p><p><b>  jmp exit</b></p><p>  exit5:call _Empty</p><p>  exit: jmp loop</p><p><b>

108、  End</b></p><p><b>  結(jié)束語</b></p><p>  課程設(shè)計(jì)過程是知識(shí)與實(shí)踐相結(jié)合的過程,是學(xué)習(xí)深化和提高的重要過程,是運(yùn)用學(xué)過的知識(shí)進(jìn)行一次全面總結(jié)和綜合訓(xùn)練,是素質(zhì)與工程實(shí)踐能力培養(yǎng)的全面檢驗(yàn)。</p><p>  通過這次設(shè)計(jì),使我對(duì)單片機(jī)知識(shí)有了更進(jìn)一步的了解。在這次設(shè)計(jì)中我翻閱了大量的資料,

109、了解許多關(guān)于單片機(jī)設(shè)計(jì)的知識(shí),進(jìn)一步的提高了我對(duì)單片機(jī)設(shè)計(jì)的思維方式。同時(shí)我也體會(huì)到要想設(shè)計(jì)好一個(gè)單片機(jī)必須要有求實(shí)的態(tài)度和豐富的專業(yè)知識(shí)。</p><p>  這次設(shè)計(jì)能夠順利完成,與指導(dǎo)老師徐祖華、肖金鳳的大力幫助是分不開的,同時(shí)也吸取了同學(xué)們的寶貴經(jīng)驗(yàn),在此向他們表示衷心的感謝。</p><p>  最后,感謝老師在百忙之中對(duì)我們進(jìn)行細(xì)心的輔導(dǎo),我們的設(shè)計(jì)才能順利的完成。</p

110、><p><b>  參考文獻(xiàn):</b></p><p>  [1]MCS-51系列單片機(jī)在電飯鍋上的應(yīng)用 李繼明</p><p>  [2]《INTEL單片機(jī)應(yīng)用技術(shù)》,陜西科學(xué)技術(shù)出版社</p><p>  [3]《電子技術(shù)基礎(chǔ)》,華中工學(xué)院工業(yè)電子教研室</p><p>  [4]《智能家

111、電的原理及維修》,機(jī)械工業(yè)出版社</p><p><b>  謝辭</b></p><p>  在這幾周的課程設(shè)計(jì)中,在xx老師的悉心指導(dǎo)和同學(xué)們的熱心幫助,我終于完成了這次設(shè)計(jì),所以很感謝老師對(duì)我的幫助和關(guān)心。</p><p>  在設(shè)計(jì)中,我學(xué)習(xí)了解了單片機(jī)的應(yīng)用和控制編程,鍛煉了我的自己設(shè)計(jì)能力,并學(xué)到很多在課堂上不能學(xué)到的東西,鞏固了上

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論