豆?jié){機單片機課程設(shè)計.doc
《豆?jié){機單片機課程設(shè)計.doc》由會員分享,可在線閱讀,更多相關(guān)《豆?jié){機單片機課程設(shè)計.doc(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
《單片機原理及接口技術(shù)》 課 程 設(shè) 計 報 告 題目:智能小家電(全自動豆?jié){機)控制系統(tǒng)的設(shè)計 專業(yè):電氣工程及其自動化 班級: 32040901 學(xué)號:3204090124 姓名:何 玉 毛 授課教師:段晨東 時間: 2011.12 設(shè)計要求 題目4 智能小家電控制系統(tǒng)的設(shè)計(1) (一)功能介紹 全自動家用豆類和谷物處理機(即全自動豆?jié){機)具有按預(yù)設(shè)模式自動粉碎谷物、加熱功能、防止溢出、處理完畢報警等基本功能。一般可以處理如豆類、玉米、其他五谷雜糧、蔬菜等多種食品。全自動家用豆類和谷物處理機的處理食品的過程通常為:加熱——粉碎1——加熱——粉碎2——加熱——完成報警,整個加工過程的進(jìn)行按時間控制。由于食品原料的物理特性不同,在加工處理時采用不同的加工(過程)模式,其主要區(qū)別在于加熱和粉碎時間的長短不同。在工作過程中,被加工的食品液體被限定在某一個給定的液位范圍內(nèi),當(dāng)液體加熱時泡沫達(dá)到溢出液位時,停止加熱,待脫離溢出液位區(qū)時繼續(xù)加熱。 (二)設(shè)計參數(shù) (1)電機 5W,24VDC (2)加熱器 500W,220V AC (3)加熱容器 1.25升 (4)電力供應(yīng):220V AC (三)設(shè)計要求 (1)實現(xiàn)多模式選擇。被選中的模式用LED顯示器表明 (2)實現(xiàn)不同模式下的加工過程:加熱——粉碎1——加熱——粉碎2——加熱——完成報警,整個加工過程的進(jìn)行按時間控制,時間自定 (3)液位檢測和控制:使被加工的食品液體限定在某一個給定的液位范圍內(nèi),當(dāng)液體溢出容器或無液體時,報警并斷電。 (4)顯示工作模式、加工狀態(tài)和時間。 (5)每個動作完成時,通過聲光報警提示。 (6)測量并顯示液體溫度。 (四)擴充功能 (1)在加熱階段進(jìn)行恒溫控制 (2)PWM調(diào)節(jié)電機轉(zhuǎn)速 目錄 摘要 對于此次課程設(shè)計的要求,本設(shè)計采用STC89C52來實現(xiàn)全自動豆?jié){機的各個功能的控制。在本設(shè)計中,能實現(xiàn)一下功能: 1. 針對食品原料的物理特性不同,在加工處理時采用不同的加工(過程)模式,其主要區(qū)別在于加熱和粉碎時間的長短不同(其中我用不同顏色的LED燈來表示加熱和粉碎過程。) 2. 不同的共工作模式和加熱、粉碎時間用數(shù)碼管表示出來 3. 可以實現(xiàn)液位溢出和過低報警(用撥碼開關(guān)來模擬) 4. 每個模式完成后報警 在豆?jié){機工作過程中,全部用軟件控制。對不同物料的不同處理用處理時間來區(qū)分,用定時來完成。防液位溢出和過低用中斷方式來實現(xiàn)。但在設(shè)計過程中,對于PWM調(diào)速和恒溫控制沒能很好的實現(xiàn),在后面的學(xué)習(xí)中,我一定會更加認(rèn)真地學(xué)習(xí)理論知識,并與實踐相結(jié)合,進(jìn)一步提升自己的能力。 在此,感謝在此次課程設(shè)計過程中提供幫助的同學(xué),謝謝你們。 一,系統(tǒng)分析 此次課程設(shè)計的題目是:全自動豆?jié){機。我們采用STC89C52來完成其設(shè)計,用不同顏色的LED燈模擬加熱與粉碎功能,還有就是用蜂鳴器來完成其報警功能,以中斷方式采用撥碼開關(guān)來實現(xiàn)液位的控制等。 1.方案分析與論證 : (1)模式選擇模塊: 方案一:鍵盤選擇模式方法。通過按下鍵的鍵值判斷,來跳轉(zhuǎn)到不同的模式。鍵盤有九個鍵,最多可以設(shè)計九中模式,設(shè)計時設(shè)計三種模式即可。該方案可行。 方案二:定時計數(shù)模式方法。設(shè)計一個三循環(huán)的計數(shù)。通過按一下,外部給單片機一個低電平,計數(shù)一次。按兩下,計數(shù)加二,按三下計數(shù)加三。按四下后回到按一下的狀態(tài)。然后通過計數(shù)后的數(shù)值來選擇不同的模式。該方案可行。 方案選擇:總體來講,兩種方案都挺好。最后,選擇模塊選擇方案一,由于板上有鍵盤,可以加以運用,也方便實現(xiàn)。計數(shù)口可以留著擴展外部事件中斷用。 (2)加熱粉碎完成報警模塊: 方案一:加熱和粉碎時都有一定的時間,用延時實現(xiàn)。 方案二:加熱和粉碎需要的時間可以用定時實現(xiàn)。 方案選擇:選擇方案二,因為加熱和粉碎的時間需要用動態(tài)掃描的方式顯示出來,因此定時可以實現(xiàn)加熱和粉碎時的顯示,而延時方式不行。 (3)液位控制模塊: 液位控制模塊可用外部事件中斷方式實現(xiàn)。燒干,液體溢出容器功能采用外部事件中斷(INTO,P3.2)實現(xiàn),設(shè)為高優(yōu)先級的中斷。加熱液位控制功能也采用外部事件(INT1,P3.3)中斷實現(xiàn),設(shè)為低優(yōu)先級。 (4)擴展計時模塊: 計時用來動態(tài)計量在某種模式下工作了多久,以此來觀察還需要多久完成全過程。并且工作過程中有兩個報警的狀態(tài),由計時的時間大概可以判斷屬于那種情況。計時還可以檢測豆?jié){機工作的時間是否正常。 最后,我采用正計時的方式來實現(xiàn)。 二,設(shè)計框圖 1.矩陣式鍵盤實現(xiàn)的模式選擇框圖 開始 置P2為輸入 有按鍵按下? N Y 延時20ms消抖 Y 有按鍵按下? N 按鍵識別 按鍵釋放? N Y 延時20ms消抖 Y 按鍵釋放? N Y 選擇模式1 KEY1按下? Y N 選擇模式2 KEY2按下? Y N 選擇模式3 KEY3按下? Y N RET 2. 加熱粉碎完成報警及液位控制模塊框圖 開始 定時加熱 定時粉碎 定時加熱 定時粉碎 定時加熱 完成報警 RET RET RET RET 3.液位溢出或者過低報警框圖 加熱時是否超液位或者液位過低 N 返回繼續(xù)加熱 Y 中斷,停止加熱,延時適當(dāng)時間 RET 4.顯示程序框圖 開始 設(shè)置顯示起始位置 取顯示數(shù)據(jù) 查顯示數(shù)據(jù)字型碼 顯示 數(shù)據(jù)是否顯示完 N Y RET 5.定時程序框圖 開始 設(shè)置TMOD TH0,TL0置初值 0 允許定時器工作 等待,并調(diào)用正計時顯示程序及模式顯示程序 定時器是否溢出 N Y RET 5.主程序框圖 開始 主程序初始化 調(diào)用顯示程序,初始化顯示090124 調(diào)用鍵盤掃描程序,有鍵按下? N Y 選擇相應(yīng)模式,并顯示。同時顯示加熱和粉碎的時間及調(diào)用正計時程序 中斷返回 調(diào)用加熱粉碎程序,是否有中斷 執(zhí)行燒干和溢出容器中斷程序 執(zhí)行超液位中斷程序 Y Y N 完成報警,調(diào)用所有顯示程序 RET 三,軟件模擬 1. 初始化 其初始值為090124,上電復(fù)位后顯示 2. 模式1 其中第一個1表示工作在模式一,后面的09為加熱和粉碎各維持9s,后三位為計時部分 3. 模式二 其中和模式一相同,不同的是加熱和粉碎時間不同,還有就是模式三也是相同的方式。 4. 液位溢出報警和液位過低報警 其中用撥碼開關(guān)模擬液位的變化,進(jìn)行聲光報警,液位過低也是這種模式。 5. 溫度 當(dāng)按下4號鍵,就會顯示溫度 四,硬件調(diào)試: 1.調(diào)試圖詳相見附錄 2.問題歸納 ① 中斷時,返回的不是原來的狀態(tài)? 解決方案:因為中斷里面的程序改變了主程序里面的端口狀態(tài),所以返回時不時原來的狀態(tài)。需要對影響主程序的量進(jìn)行保護和還原就行了。 ②通過鍵盤選擇某模式,復(fù)位后,必須復(fù)位后的瞬間選擇其它模式,否則就無法選擇其他模式了? 解決方案:這是因為鍵盤掃描程序里沒有對無按鍵時的狀態(tài)進(jìn)行操作。只要讓無按鍵時,執(zhí)行重新掃描鍵盤即可。 ③在軟件里模擬沒有問題,但是下載板子里就不行了? 解決方案:軟件、硬件的靈敏度不同,軟件里都是理想的,和實際存在一定差距,要結(jié)合硬件來調(diào)試。在延時、端口方面應(yīng)該多注意。 ④數(shù)碼管顯示不要穩(wěn)定,一直在閃? 解決方案:改變延時長短,多調(diào)試幾次,直至穩(wěn)定。 ⑤溫度一直是85度? 解決方案:18b20在運行過程中,其第一次讀數(shù)就是85,應(yīng)該舍棄第一次讀數(shù),讓其循環(huán)調(diào)用。 3.總結(jié): 在此次課程設(shè)計過程中,讓我深刻認(rèn)識到把理論轉(zhuǎn)化為現(xiàn)實的不易,可謂是收益匪淺。通過這次的課設(shè),讓我也熟悉了 keil和protuse這兩個軟件,大大的提高了動手能力。過程中,遇到問題是在所難免的,最終那份通過尋求各種幫助將問題解決后的興奮是令人難忘的。特別是當(dāng)我看著自己辛苦兩周焊接出來的板子上的各種功能一一實現(xiàn),那份喜悅是無法代替的。在此感謝老師,感謝在此次課程設(shè)計過程中幫助我的同學(xué)。 五,參考文獻(xiàn) 《單片機原理及接口技術(shù)》段晨東主編,清華大學(xué)出版社 《手把手教你學(xué)單片機》周興華編著,北京航空航天大學(xué)出版社 附錄一:電路原理圖 軟件模擬原理圖 附錄二:原件明細(xì)表 元器件 數(shù)量 備注 電阻 3 1K 電阻 4 5.1K 電阻 2 8K 獨石電容 6 0.1uF 獨石電容 2 30PF 電解電容 1 10Uf 25V 51單片機實驗板 1 89C52芯片 1 MAX232芯片 1 74LS245芯片 2 74LS138芯片 1 DS18B20 1 三極管9012 2 PNP 二極管IN4001 1 數(shù)碼管 2 三位八段 共陰 繼電器 1 晶振 1 11.0592MHz 芯片座 6 電源座 1 三腳 5V 通信插座 1 CON232 電源適配器 1 通訊電纜 1 微型按鈕開關(guān) 10 實驗插板 1 單排插針 若干 雙排插針 若干 短路塊 若干 導(dǎo)線 若干 補充原件: 1. LED燈2個(一個紅色,一個綠色) 2. 排線:4根 3. 面包板:1快 4. 焊接線:若干 附錄三:程序清單 ORG 0000H LJMP MAIN ORG 0003H LJMP P_T0 ORG 0013H LJMP P_T1 ORG 0030H MAIN: MOV SP,#60H ;開辟棧區(qū) CLR IT0 ;INT0低電平觸發(fā) CLR IT1 ;INT1低電平觸發(fā) SETB EA ;開CPU中斷 SETB EX0 ;允許INT0中斷 SETB EX1 ;允許INT1中斷 SETB PX0 ;設(shè)置INT0為高優(yōu)先級 CLR PX1 ;設(shè)置INT1為低優(yōu)先級 CLR P3.6 ; 加熱指示燈清零 CLR P3.7 ;粉碎指示燈清零 MOV 20H,#0 ;賦初始值 MOV 21H,#9 MOV 22H,#0 MOV 25H,#1 MOV 26H,#2 MOV 27H,#4 LCALL DSPLY1 ;調(diào)顯示程序 LCALL DSPLY2 LCALL SCAN_KEYB ;點鍵盤掃描程序 MOV 25H,#00H ;高三位清零 MOV 26H,#00H MOV 27H,#00H MOV A,R5 ;鍵盤返回值在然中 NEXT: CJNE A,#01H,NEXT1 ;判斷是否為1鍵按下 LCALL FUNCTION_1 ;調(diào)1鍵處理程序 LCALL LOOP4 ;調(diào)用計時程序和完成之后的報警程序 LCALL LOOP6 RET NEXT1:CJNE A,#02H,NEXT2 ;判斷是否2鍵按下 LCALL FUNCTION_2 ;和第一種模式相同 LCALL LOOP6 LCALL LOOP4 RET NEXT2: CJNE A,#3,NEXT3 ;3鍵按下? LCALL FUNCTION_3 ;同前兩種 LCALL LOOP6 LCALL LOOP4 NEXT3: CJNE A,#4,NEXT4 ;4鍵按下否? LCALL PRO_18B20 ;調(diào)溫度處理程序 NEXT4:LJMP MIAN ;若無鍵按下,返回 ;#######中斷處理程序,液位溢出########## ORG 0100H P_T0:PUSH ACC ;保護現(xiàn)場 PUSH PSW CLR P3.6 ;停止加熱,粉碎 CLR P3.7 LCALL ALARM ;報警 POP PSW ;恢復(fù)現(xiàn)場 POP ACC RETI ;########液位過低處理程序############# ORG 0200H P_T1:CLR EA ;關(guān)中斷 PUSH ACC ;保護現(xiàn)場 PUSH PSW SETB EA ;開中斷 SETB RS0 ;將工作寄存器切換 CLR P3.6 ;停止加熱停止粉碎 CLR P3.7 LCALL A LARM ;報警 SETB P3.6 ;恢復(fù)中斷前狀態(tài) CLR EA ;關(guān)中斷 POP PSW ;恢復(fù)現(xiàn)場 POP ACC SETB EA ;開中斷 RETI ;按鍵處理程序 FUNCTION_1: MOV 20H,#01H ; MOV 21H,#0 MOV 22H,#9 MOV 30H,#03H MOV 31H,#03H LCALL DSPLY1 RET S2_PRESS: MOV 20H,#02H MOV 21H,#1 MOV 22H,#2 MOV 30H,#04H MOV 31H,#04H LCALL DSPLY1 RET S3_PRESS: MOV 20H,#03H MOV 21H,#1 MOV 22H,#5 MOV 30H,#05H MOV 31H,#05H LCALL DSPLY1 RET DSPLY1: MOV R0,#20H MOV R2,#00H REDO:ACALL DISP INC R2 MOV A, R2 INC R0 XRL A, #03H JNZ REDO RET DSPLY2: MOV R0,#25H MOV R2,#03H REDO2:ACALL DISP INC R2 MOV A, R2 INC R0 XRL A, #06H JNZ REDO2 RET DISP: MOV P1,R2 MOV DPTR,#LED_SEG MOV A ,@R0 MOVC A ,@A+DPTR MOV P0,A LCALL DL1MS RET LED_SEG:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH LOOP6: LCALL DL1S MOV A,27H CJNE A,#09H,GOON1 MOV 27H,#00H MOV A,26H CJNE A,#05H,GOON2 MOV 26H,#00H INC 25H RET GOON1: INC 27H RET GOON2: INC 26H RET DL20MS: MOV TMOD,#01H MOV TH0,#0DBH MOV TL0,#00H SETB TR0 CONT1:JBC TF0,OVERF1 SJMP CONT1 OVERF1:RET LOOP4: LCALL JIARE LCALL FENSUI LCALL JIARE LCALL FENSUI LCALL JIARE CLR P3.6 CLR P3.7 LCALL ALARM RET JIARE: MOV 23H,30H CLR P3.7 SETB P3.6 LOOP1: LCALL DL1MIN DJNZ 23H,LOOP1 RET FENSUI: MOV 24H,31H CLR P3.6 SETB P3.7 LOOP2: LCALL DL1MIN DJNZ 24H,LOOP2 RET ALARM: LOOP5: MOV R1,#20 MOV A,#06H MOV P1,A LCALL DL1MS LCALL DL1MS INC A MOV P1,A LCALL DL1MS LCALL DL1MS LCALL DSPLY1 LCALL DSPLY2 DJNZ R1, LOOP5 RET DL1MIN: MOV R7,#3 DL1: LCALL LOOP6 DJNZ R7,DL1 RET DL1MS: MOV R1,#200 DL2: NOP NOP NOP DJNZ R1,DL2 RET DL1S: MOV R6,#20 WAIT: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 CONT2: JBC TF0,OVERF2 LCALL DSPLY1 LCALL DSPLY2 SJMP CONT2 OVERF2: DJNZ R6,WAIT RET SCAN_KEYB: MOV P2,#0F0H MOV A,P2 ANL A,#0F0H XRL A,#0F0H JZ NO_KEY ACALL DL20MS ANL A,#0F0H XRL A,#0F0H JZ NO_KEY MOV R2,#11110111B SCAN:MOV A,R2 MOV P2,A MOV A,P2 ANL A,#11110000B MOV R3,A CJNE A,#0F0H,KEY_PRSD MOV A,R2 RR A MOV R2,A XRL A,#01111111B JNZ SCAN NO_KEY :LJMP MAIN KEY_PRSD:MOV A ,R2 ANL A ,#00001111B ORL A ,R3 MOV R4,A MOV R5,#01H MOV DPTR,#KEY_TAB CAL_VAL:MOV A ,R5 MOVC A,@A+DPTR XRL A,R4 JZ FIXED INC R5 SJMP CAL_VAL FIXED:MOV A ,P2 ANL A ,#0F0H XRL A,#0F0H JNZ FIXED ACALL DL20MS MOV A ,P2 ANL A ,#0F0H XRL A,#0F0H JNZ FIXED INC A RET KEY_TAB: DB 77H,77H,7BH,7DH,0B7H,0BEH,0BDH DB 0D7H,0DBH,0DDH RET ;WENDUXIANSHI FLAG1 BIT F0 ;DS18B20存在標(biāo)志位 DQ BIT P1.3 TEMPER_L EQU 27H TEMPER_H EQU 26H PRO_18B20: MOV 30H,#250 REPLY: LCALL INIT_18B20 LCALL RE_CONFIG LCALL GET_TEMPER LCALL CHANGE ;將18B20讀的16位溫度轉(zhuǎn)換8位數(shù)據(jù) LCALL DISPLAY ;調(diào)用數(shù)碼管顯示子程序 DJNZ 30H,REPLY ;**********DS18B20復(fù)位程序***************** INIT_18B20: SETB DQ NOP NOP CLR DQ NOP NOP MOV R0,#0FBH TSR1: DJNZ R0,TSR1 ;延時 SETB DQ MOV R0,#25H TSR2: JNB DQ ,TSR3 DJNZ R0,TSR2 TSR3: SETB FLAG1 ;置標(biāo)志位,表明DS18B20存在 CLR P2.0 ;二極管指示 AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7 TSR5: MOV R0,#06BH TSR6: DJNZ R0,TSR6 TSR7:SETB DQ ;表明不存在 RET ;********************設(shè)定DS18B20暫存器設(shè)定值************** RE_CONFIG: JB FLAG1,RE_CONFIG1 RET RE_CONFIG1: MOV A,#0CCH ;放跳過ROM命令 LCALL WRITE_18B20 MOV A,#4EH LCALL WRITE_18B20 ;寫暫存器命令 MOV A,#00H ;報警上限中寫入00H LCALL WRITE_18B20 MOV A,#00H ;報警下限中寫入00H LCALL WRITE_18B20 MOV A,#1FH ;選擇九位溫度分辨率 LCALL WRITE_18B20 RET ;*****************讀轉(zhuǎn)換后的溫度值**************** GET_TEMPER: SETB DQ LCALL INIT_18B20 JB FLAG1,TSS2 RET ;若不存在則返回 TSS2: MOV A,#0CCH ;跳過ROM LCALL WRITE_18B20 MOV A,#44H ;發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_18B20 ; LCALL DISPLAY ;延時 LCALL INIT_18B20 MOV A,#0CCH ;跳過ROM LCALL WRITE_18B20 MOV A,#0BEH ;發(fā)出讀溫度換命令 LCALL WRITE_18B20 LCALL READ2_18B20 ;讀兩個字節(jié)的溫度 RET ;***************寫ds18b20匯編程序************ WRITE_18B20:MOV R2,#8 CLR C WR1: CLR DQ MOV R3,#6 DJNZ R3,$ RRC A MOV DQ,C MOV R3,#23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET ;***********讀18B20程序,讀出兩個字節(jié)的溫度********* READ2_18B20:MOV R4,#2 ;低位存在29 H,高位存在28H MOV R1,#29H RE00: MOV R2,#8 RE01: CLR C SETB C NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,#7 DJNZ R3,$ MOV C,DQ MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 RET ;************讀出的溫度進(jìn)行數(shù)據(jù)轉(zhuǎn)換************** CHANGE: MOV A,29H MOV C,28H.0 ;將28H中的最低位移入C RRC A MOV C,28H.1 RRC A MOV C,28H.2 RRC A MOV C,28H.3 RRC A MOV 29H,A RET DISPLAY: mov a,29H;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成10進(jìn)制 mov b,#100 div ab mov 34H,A MOV A,B MOV B,#10 DIV AB MOV 35H,A MOV 36H,B mov DPTR,#TAB ;指定查表啟始地址 mov A,36H ;取個位數(shù) MOVC A,@A+DPTR ;查個位數(shù)的7段代碼 mov P0,A ;送出個位的7段代碼 MOV P1,#05;開個位顯示 NOP NOP LCALL DELAYNMS MOV P1,#0FFH NOP NOP mov A,35H ;取十位數(shù) MOVC A,@A+DPTR ;查十位數(shù)的7段代碼 mov P0,A;送出十位的7段代碼 MOV P1,#04;開十位顯示 NOP NOP LCALL DELAYNMS MOV P1,#0FFH NOP NOP RET DELAYNMS: MOV R6,#8 D11: MOV R7,#200 DJNZ R7,$ DJNZ R6,D11 RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 豆?jié){機 單片機 課程設(shè)計
鏈接地址:http://m.italysoccerbets.com/p-6659296.html