版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)原理及應(yīng)用
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)io口的應(yīng)用
- 單片機(jī)課程設(shè)計(jì)-- 單片機(jī)原理及應(yīng)用
- 單片機(jī)應(yīng)用課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)串行通訊
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 課程設(shè)計(jì)-單片機(jī)基于單片機(jī)的數(shù)字時(shí)鐘設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)控制步進(jìn)電機(jī)
評(píng)論
0/150
提交評(píng)論