基于單片機(jī)的微波爐控制器_第1頁
基于單片機(jī)的微波爐控制器_第2頁
基于單片機(jī)的微波爐控制器_第3頁
基于單片機(jī)的微波爐控制器_第4頁
基于單片機(jī)的微波爐控制器_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于單片機(jī)的微波爐控制器摘要隨著社會(huì)的快速開展,人們的生活節(jié)奏逐漸加快,微波爐方便快捷的烹飪特點(diǎn)為現(xiàn)代人的生活提供了便利,在現(xiàn)代家庭中,微波爐已成為必備的烹飪工具之一。通過制作微波爐控制器,更充分了解微波爐的結(jié)構(gòu)特點(diǎn)和工作原理。本文介紹了微波爐控制器的設(shè)計(jì)、調(diào)試與實(shí)現(xiàn)。本設(shè)計(jì)中的微波爐控制器以AT89C52單片機(jī)為核心,由矩陣鍵盤、時(shí)間顯示、控制輸出等模塊組成。并且能夠?qū)崿F(xiàn)大、中、小火力選擇以及啟動(dòng)、停止和時(shí)間重設(shè)功能。其中初始時(shí)間由矩陣鍵盤輸入設(shè)置,火力大小通過發(fā)光二極管來表示、電機(jī)的轉(zhuǎn)速表示在加熱中。微波爐控制器工作時(shí),將按照設(shè)定的時(shí)間進(jìn)行加熱并倒計(jì)時(shí),等時(shí)間到后報(bào)警提示、火力指示燈熄滅、轉(zhuǎn)盤停止運(yùn)轉(zhuǎn)關(guān)鍵詞:微波爐;單片機(jī)AT89C52;控制器ThemicrowaveovencontrollerbasedonMCUAbstractWiththerapiddevelopmentofoursocietyandthegraduallyspeedingstepsofourlife,theconvenientandefficientcookingfeaturesofmicrowaveovenhaveprovidedusgreathelpandmakeitanindispensablecookingtoolinourmodernlife.Throughthemakingofthemicrowaveovencontroller,Ihaveabetterunderstandingofitsstructuralfeaturesandworkingprinciples.Thisarticleintroducesthedesign,debuggingandimplementationofmicrowaveovencontroller.WiththeSCMAT89C52atthecore,itismadeupofmodulesofmatrixkeyboard,timedisplayandcontroloutputsandetc.What’smore,youcanchooseamax,midorminpowerandmakeitworkorstoporeventimeresettingatyourwill.Andtheinitialtimeissetbymatrixkeyboard;thepowersizeisshownbylight-emittingdiodes;thespinningofthemotorshowsitsworking.Whenitworks,itheatsaccordingtothesettingtimeandcountdownsuntilthealarmingsystemringing,theKeyword:microwaveoven;SCMAT89c52;目錄1.緒論11.1微波爐的背景資料11.2微波爐的工作原理11.3使用微波爐時(shí)的考前須知21.4微波爐控制器總體設(shè)計(jì)思路22.系統(tǒng)總體方案….…..32.1系統(tǒng)總體設(shè)計(jì)32.2單片機(jī)的結(jié)構(gòu)和接口的根本介紹42.2.1單片機(jī)的根本組成42.2.2單片機(jī)的內(nèi)部結(jié)構(gòu)52.2.3局部關(guān)鍵的程序存儲(chǔ)單元62.2.4中斷62.3顯示驅(qū)動(dòng)芯片7447/7448的簡介72.3.1認(rèn)識(shí)7447/744882.3.2引腳說明82.4高耐壓、大電流達(dá)林頓陳列—ULN200392.4.1概述與特點(diǎn)92.4.2方框圖92.4.3極限值92.4.4電特性…………102.5LM7805穩(wěn)壓芯片介紹…….………….102.5.1概述……………102.5.2主要特點(diǎn)………………………102.5.3外形圖及引腳排列……………112.5.4功能框圖………………………112.6三極管9013……………123.硬件電路與實(shí)現(xiàn)133.1微波爐控制器的總體硬件設(shè)計(jì)133.2矩陣鍵盤及器應(yīng)用133.2.1矩陣鍵盤的結(jié)構(gòu)與工作原理133.2.2矩陣式鍵盤的按鍵識(shí)別方法143.2.3矩陣式鍵盤的按鍵的例子153.2.4去抖處理153.3四位數(shù)碼管原理及應(yīng)用163.4步進(jìn)電機(jī)控制電路173.4.1步進(jìn)電機(jī)工作原理173.4.2步進(jìn)電機(jī)控制系統(tǒng)原理183.5蜂鳴器控制電路………………………194.控制程序設(shè)計(jì)與仿真204.1鍵盤掃描及顯示程序設(shè)計(jì)204.1.1鍵盤掃描流程圖204.1.2鍵盤掃描仿真電路214.1.3鍵盤掃描和顯示輸出的程序214.2倒計(jì)時(shí)程序設(shè)計(jì)….234.2.1倒計(jì)時(shí)流程圖234.2.2倒計(jì)時(shí)仿真電路244.2.3倒計(jì)時(shí)程序244.3步進(jìn)電機(jī)控制程序設(shè)計(jì)264.3.1步進(jìn)電機(jī)流程圖264.3.2步進(jìn)電機(jī)仿真電路274.3.3步進(jìn)電機(jī)轉(zhuǎn)動(dòng)程序274.4總體程序設(shè)計(jì)294.4.1總體設(shè)計(jì)流程圖294.4.2總體設(shè)計(jì)仿真電路304.3.3總體設(shè)計(jì)程序305.電路制作與系統(tǒng)調(diào)試………………………356.總結(jié)與展望36致謝37參考文獻(xiàn)38附錄39附錄一:微波爐控制器實(shí)體圖片39附錄二:微波爐控制器硬件連接電路40附錄三:微波爐控制器PCB板……………411緒論1.1微波爐的背景資料微波爐已經(jīng)有50多年的開展歷史,時(shí)至今日,微波爐已實(shí)現(xiàn)了高度工業(yè)化規(guī)模的生產(chǎn)。主要生產(chǎn)為日本、韓國以及歐洲的一些興旺國家。我國自80年代開始小規(guī)模生產(chǎn)微波爐,開展至今,已具有相當(dāng)?shù)纳a(chǎn)能力,成為該行業(yè)不可小視的生力軍。微波爐在世界上興旺國家的家庭普及率很高。美國是微波爐最大的消費(fèi)市場。中國老百姓也已經(jīng)開始認(rèn)識(shí)和接受微波爐??梢灶A(yù)見,中國也將成為一個(gè)巨大的微波爐市場。隨著科技的開展,生活水平的提高,人們對(duì)微波爐的要求也越來越高。未來的開展趨勢將以智能、信息為主流,使微波爐的開展更人性化。因此基于單片機(jī)的微波爐控制系統(tǒng)的開發(fā)有利于推動(dòng)微波爐市場的開展,使老百姓能用上更優(yōu)秀的微波爐。1.2微波爐的工作原理微波爐,顧名思義,就是用微波來煮飯燒菜的。微波爐是一種用微波加熱食品的現(xiàn)代化烹調(diào)工具。微波是一種電磁波。這種電磁波的能量不僅比通常的無線電波大得多,而且還很有"個(gè)性",微波一碰到金屬就發(fā)生反射,金屬根本沒有方法吸收或傳導(dǎo)它;微波可以穿過玻璃、陶瓷、塑料等絕緣材料,但不會(huì)消耗能量;而含有水分的食物,微波不但不能透過,其能量反而會(huì)被吸收。微波是指波長為0.01~1米的無線電波,其對(duì)應(yīng)的頻率為30000兆赫到300兆赫。為了不干擾雷達(dá)和其他通信系統(tǒng),微波爐的工作頻率多項(xiàng)選擇用915兆赫或2450兆赫。微波爐由電源,磁控管,控制電路和烹調(diào)腔等局部組成。電源向磁控管提供大約4000伏高壓,磁控管在電源鼓勵(lì)下,連續(xù)產(chǎn)生微波,再經(jīng)過波導(dǎo)系統(tǒng),耦合到烹調(diào)腔內(nèi)。在烹調(diào)腔的進(jìn)口處附近,有一個(gè)可旋轉(zhuǎn)的攪拌器,因?yàn)閿嚢杵魇秋L(fēng)扇狀的金屬,旋轉(zhuǎn)起來以后對(duì)微波具有各個(gè)方向的反射,所以能夠把微波能量均勻地分布在烹調(diào)腔內(nèi)。微波爐的功率范圍一般為500~1000瓦。微波加熱的原理簡單說來是:當(dāng)微波輻射到食品上時(shí),食品中總是含有一定量的水分,而水是由極性分子〔分子的正負(fù)電荷中心,即使在外電場不存在時(shí)也是不重合的〕組成的,這種極性分子的取向?qū)㈦S微波場而變動(dòng)。由于食品中水的極性分子的這種運(yùn)動(dòng)。以及相鄰分子間的相互作用,產(chǎn)生了類似摩擦的現(xiàn)象,使水溫升高,因此,食品的溫度也就上升了。用微波加熱的食品,因其內(nèi)部也同時(shí)被加熱,使整個(gè)物體受熱均勻,升溫速度也快。1.3使用微波爐時(shí)的考前須知微波遇到金屬物體,如銀、銅、鋁等會(huì)像鏡子反射可見光一樣被反射。常用金屬隔離微波,不能使用金屬器皿加熱食物。金屬在微波加熱的情況下還會(huì)產(chǎn)生火花,特別是較鋒利的金屬制品﹝如:叉﹞。因此在使用微波烹調(diào)中,不得使用密閉的金屬容器或金屬網(wǎng)狀容器來裝載事物,以免發(fā)生意外事故。不要用一般普通塑料容器放入微波爐加熱。雖然塑料自身不被加熱,但熱的食物會(huì)使容器變得很燙。這些塑料容器在高溫下可能放出毒素,染污食物。使用微波爐時(shí),應(yīng)注意至少離爐0.5米以上,眼睛不要看著爐門,不可在爐前久站。食物從爐中取出后,最好先放幾分鐘再吃。1.4微波爐控制器總體設(shè)計(jì)思路通過對(duì)微波爐的了解,本設(shè)計(jì)采用89C52單片機(jī)作為設(shè)計(jì)的核心,由矩陣鍵盤、時(shí)間顯示、控制輸出等模塊組成。由矩陣鍵盤模塊來實(shí)現(xiàn)時(shí)間的設(shè)置,火力大、中、小的選擇以及啟動(dòng)、停止和時(shí)間重設(shè)功能;時(shí)間顯示模塊由七段數(shù)碼管來實(shí)現(xiàn),其中初始時(shí)間由矩陣鍵盤輸入;火力大小通過發(fā)光二極管來表示,紅、綠、黃三種燈分別表示大力大、中、小,默認(rèn)為中火力;啟動(dòng)加熱后,步進(jìn)電機(jī)開始轉(zhuǎn)動(dòng),七段數(shù)碼管按照設(shè)定的時(shí)間進(jìn)行倒計(jì)時(shí),等時(shí)間快到零時(shí)報(bào)警提示、等于零時(shí)火力指示燈熄滅、轉(zhuǎn)盤停止運(yùn)轉(zhuǎn)2系統(tǒng)總體方案2.1系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)采用AT89C52單片機(jī)作為設(shè)計(jì)的核心,由矩陣鍵盤、時(shí)間顯示、控制輸出等模塊組成。由矩陣鍵盤模塊來實(shí)現(xiàn)時(shí)間的設(shè)置,火力大、中、小的選擇以及啟動(dòng)、停止和時(shí)間重設(shè)功能;時(shí)間顯示模塊由七段數(shù)碼管來實(shí)現(xiàn),其中初始時(shí)間由矩陣鍵盤輸入;火力大小通過發(fā)光二極管表2-1元件清單元件清單:表2-1元件清單元件清單數(shù)量AT89C521ULN2003174LS481LM78051LED4三極管90135四位數(shù)碼管1步進(jìn)電機(jī)1蜂鳴器1自鎖開關(guān)1輕觸開關(guān)16220歐電阻1610千歐電阻110k*8排阻130p電容210u電容1100u電容212MHZ晶振1USB接口116p插槽240p插槽1排針102.2單片機(jī)的結(jié)構(gòu)和接口的根本介紹2.2.1單片機(jī)的根本組成1.CPU系統(tǒng)1個(gè)8位微處理器CPU內(nèi)部時(shí)鐘電路總線控制邏輯2.內(nèi)部存儲(chǔ)器4KB的片內(nèi)程序存儲(chǔ)器〔ROM/EPROM/Flash〕128B數(shù)據(jù)存儲(chǔ)器〔RAM〕和128B特殊功能存放器SFR〔80C51只用到其中21B〕3.I/O接口及中斷定時(shí)功能4個(gè)8位可編程的I/O〔輸入/輸出〕并行接口5個(gè)中斷源的中斷控制系統(tǒng),可編程為2個(gè)優(yōu)先級(jí)2個(gè)16位定時(shí)/計(jì)數(shù)器,既可以定時(shí),又可以對(duì)外部事件進(jìn)行計(jì)數(shù)1個(gè)全雙工的串行I/O接口,用于數(shù)據(jù)的串行通信所有這些都通過單片機(jī)內(nèi)部的總線相連接。下列圖所示為80C51單片機(jī)的根本組成,可以看出在該芯片上集成了一個(gè)微型計(jì)算機(jī)圖2-180C51單片機(jī)的根本組成2.2.2單片機(jī)的內(nèi)部結(jié)構(gòu)1.中央處理器CPUCPU是80C51內(nèi)部的1個(gè)字長為8位的中央處理單元,它由運(yùn)算器、控制器兩局部組成。實(shí)際上構(gòu)成了單片機(jī)的核心?!?〕運(yùn)算器以算術(shù)邏輯單元ALU〔ArithmeticLogicUnit〕為核心,還包括累加器A、程序狀態(tài)字存放器PSW〔ProgramStatusWord〕、B存放器、兩個(gè)8位暫存器TMP1和TMP2等部件??梢赃M(jìn)行加、減、乘、除、加1、減1、BCD數(shù)十進(jìn)制調(diào)整、比擬等算術(shù)運(yùn)算;也可以進(jìn)行與、或、非、異或等邏輯運(yùn)算;2.存儲(chǔ)器〔1〕片內(nèi)ROM是程序存儲(chǔ)器;〔2〕片內(nèi)RAM,可用于存放輸入、輸出數(shù)據(jù)和中間計(jì)算結(jié)果,或作為數(shù)據(jù)堆棧區(qū)。3.I/O口〔1〕并行口有4個(gè)8位并行I/O口P0~P3,均可并行輸入輸出8位數(shù)據(jù)?!?〕串行口有1個(gè)串行I/O口,用于數(shù)據(jù)的串行輸入輸出4.定時(shí)器/計(jì)數(shù)器〔1〕產(chǎn)生定時(shí)脈沖,實(shí)現(xiàn)單片機(jī)的定時(shí)控制;〔2〕用于計(jì)數(shù)方式,記錄外部事件的脈沖個(gè)數(shù)。圖2-2單片機(jī)的內(nèi)部結(jié)構(gòu)2.2.3局部關(guān)鍵的程序存儲(chǔ)單元在程序存儲(chǔ)器中,某些單元保存給系統(tǒng)使用,見下表:表2-2中斷入口存儲(chǔ)器單元保存單元的作用0000H~0002H復(fù)位后初始化引導(dǎo)程序入口0003H~000AH外部中斷0入口000BH~0012H定時(shí)器0溢出中斷入口0013H~001AH外部中斷1入口001BH~0022H定時(shí)器1溢出中斷入口0023H~002AH串行口中斷入口002BH定時(shí)器2溢出中斷入口注:標(biāo)注灰色背景的存儲(chǔ)空間為增強(qiáng)型芯片所獨(dú)有2.21、中斷源51單片機(jī)有5個(gè)中斷源:兩個(gè)外部中斷、兩個(gè)計(jì)數(shù)/定時(shí)器中斷和一個(gè)串行口中斷。2、中斷響應(yīng)步驟:(1)保護(hù)斷點(diǎn),即保存下一將要執(zhí)行的指令的地址,就是把這個(gè)地址送入堆棧。(2)尋找中斷入口,根據(jù)5個(gè)不同的中斷源所產(chǎn)生的中斷,查找5個(gè)不同的入口地址。(3)執(zhí)行中斷效勞程序,用中斷效勞程序處理需要改變的變量或者事件。(4)中斷返回,執(zhí)行完中斷效勞程序后,從中斷斷點(diǎn)處返回主程序,繼續(xù)執(zhí)行主程序。3、中斷的實(shí)現(xiàn)存放器IE、IP、TCON和SCON來控制中斷申請(qǐng)、中斷的開關(guān)和各種中斷源的優(yōu)先級(jí)確定。〔1〕中斷方式和標(biāo)志位單片機(jī)的中斷標(biāo)志位和方式的選擇是通過TCON到達(dá)低4位控制字實(shí)現(xiàn)的。TCON中的低4位用于外部中斷的控制,高4位是T0、T1控制字??刂谱秩缦拢罕?-3TCON中的控制字TCON.7TCON.6TCON.5TCON.4TCON.3TCON.2TCON.1TCON.0TF1TR1TF0TR0IE1IT1IE0IT0外部中斷請(qǐng)求源IT0INT0觸發(fā)方式控制位,可由軟件進(jìn)行置位和復(fù)位.IT0=0,INT0為低電平觸發(fā)方式;IT0=1,INT0為負(fù)跳變觸發(fā)方式.IE0INT0中斷請(qǐng)求標(biāo)志位.當(dāng)有外部的中斷請(qǐng)求時(shí),這位就會(huì)置1(這由軟件來完成),在CPU響應(yīng)中斷后,由硬件將IE0清0.內(nèi)部中斷請(qǐng)求源TF0定時(shí)器T0的溢出中斷標(biāo)記,當(dāng)T0計(jì)數(shù)產(chǎn)生溢出時(shí),由硬件置位TF0.當(dāng)CPU響應(yīng)中斷后,再由硬件TF0清0.TR0定時(shí)器T0的中斷允許.(2)中斷允許存放器IE表2-4中斷允許存放器IEIE.7IE.6IE.5IE.4IE.3IE.2IE.1IE.0EAXXESET1EX1ET0EX0其中: EA:總開關(guān),如果它等于0,那么所有中斷都不允許。 ES:串行口中斷允許。 ET1:定時(shí)器1中斷允許。 EX1:外中斷1中斷允許。 ET0:定時(shí)器0中斷允許。 EX0:外中斷0中斷允許。〔3〕5個(gè)中斷源的優(yōu)先級(jí)單片機(jī)的中斷效勞入口地址如下,它們的自然優(yōu)先級(jí)由高到低排列。外中斷0:0003H定時(shí)器0:000BH外中斷1:0013H定時(shí)器1:001BH串口:0023H開機(jī)時(shí),每個(gè)中斷都處于低優(yōu)先級(jí),我們可以用指令對(duì)優(yōu)先級(jí)進(jìn)行設(shè)置,中斷優(yōu)先級(jí)由中斷優(yōu)先級(jí)存放器IP來設(shè)置,IP中某位設(shè)為1,相應(yīng)的中斷就是高優(yōu)先級(jí),否那么就是低優(yōu)先級(jí)。表2-5中斷優(yōu)先級(jí)存放器IPIP.4IP.3IP.2IP.1IP.0EAXXPSPT1PX1PT0PX02.3顯示驅(qū)動(dòng)芯片7447/7448的簡介2.3.1認(rèn)識(shí)7447/7448BCD碼轉(zhuǎn)換成7段LED數(shù)碼管的譯碼驅(qū)動(dòng)IC,首推7447系列,包括7446、7447、7448、74LS49,其中7446及7447輸出低電平驅(qū)動(dòng)的顯示碼,用以推動(dòng)共陽極的7段LED數(shù)碼管;而7448及74LS49輸出高電平驅(qū)動(dòng)的顯示碼,用以推動(dòng)共陰極7段LED數(shù)碼管。7446、7447與7448的引角相同〔雙并排16Pins〕,74LS49為雙并排14Pins,如下圖。圖2-37446、7447、7448/74LS49引腳圖2.3.2引腳說明D、C、B、A:BCD碼輸入引腳。a、b、c…….g:7段LED數(shù)碼管輸出引腳。LampTest:本引腳為測試引腳,簡稱為LT引腳。當(dāng)本引腳輸入低電平時(shí),所連接的7段LED數(shù)碼管全亮。正常顯示下,本引腳應(yīng)輸入高電平。RBI:本引腳為漣波淹沒輸入引腳〔ripple-blankinginput〕,正常顯示下,本引腳應(yīng)輸入高電平。假設(shè)本引腳輸入低電平〔即0〕,且D、C、B、A引腳輸入為0,那么該位數(shù)不顯示,這項(xiàng)功能稱為消除前置0〔leadingzerosuppression〕或消除尾端0〔trailingzerosuppression〕BI/RBO:本引腳為淹沒輸入或漣波淹沒輸出引腳〔blankinginand/orripple-blankingoutput〕。正常顯示下,本引腳輸入高電平或空接。假設(shè)本引腳連接低電平〔0〕,那么該位數(shù)將不顯示。當(dāng)該位數(shù)不顯示時(shí),本引腳將輸出低電平,以串接到前一個(gè)位數(shù)的RBI引腳,作為消除前置0〔leadingzerosuppression〕或消除尾端0〔trailingzerosuppression〕之用。這4個(gè)IC都是開集極式輸出,對(duì)于開集極式輸出所連接的負(fù)載,其所連接的電源電壓也有些差異,如下表所示。表2-6最大負(fù)載電壓、最大吸入電流對(duì)照表最大負(fù)載電壓最大吸入電流744630V40mA744715V40mA74485.5V6.4mA74LS495.5V8mA2.4高耐壓、大電流達(dá)林頓陳列—ULN20032.4ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。該電路的特點(diǎn)如下:ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。ULN2003采用DIP—16或SOP—16塑料封裝。2.4.圖2-4圖2-4ULN2003內(nèi)部框圖表2-7ULM2003極限值2.表2-7ULM2003極限值表2-8ULM2003電特性2.4表2-8ULM2003電特性2.5LM7805穩(wěn)壓芯片介紹2.57805系列為3端正穩(wěn)壓電路,TO-220封裝,能提供多種固定的輸出電壓,應(yīng)用范圍廣。內(nèi)含過流,過熱和過載保護(hù)電路。帶散熱片時(shí),輸出電流可達(dá)1A,雖然時(shí)固定穩(wěn)壓電路,但使用外接元件,可獲得不同的電壓和電流。2.5輸出電流可達(dá)1A輸出電壓有:5V過熱保護(hù)短路保護(hù)輸出晶體管SOA保護(hù)2.5圖2-5圖2-5LM7805外形圖2.5圖2-6圖2-6LM7805功能框圖2.6三極管9013三極管90139013是一種NPN型硅小功率的三極管它是非常常見的晶體三極管,在收音機(jī)以及各種放大電路中經(jīng)??吹剿?,應(yīng)用范圍很廣,它是npn型小功率三極管。集電極電流Ic:Max500mA工作溫度:-55℃to+集電極-基極電壓Vcbo:40V主要用途:放大電路圖2-7圖2-79013管腳圖3硬件電路與實(shí)現(xiàn)3.1微波爐控制器的總體硬件設(shè)計(jì)圖3-1微波爐控制器硬件連接電路圖3-1微波爐控制器硬件連接電路3.2矩陣鍵盤及其應(yīng)用3.2.1矩陣鍵盤的結(jié)構(gòu)與工作原理在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如下列圖所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口〔如P1口〕就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比方再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線那么只能多出一鍵〔9鍵〕。由此可見,在需要的鍵數(shù)比擬多時(shí),采用矩陣法來做鍵盤是合理的。圖3-2矩陣鍵盤圖3-2矩陣鍵盤矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口那么作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,那么輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。3.2.2矩陣式鍵盤的按鍵識(shí)別方法確定矩陣式鍵盤上何鍵被按下,介紹一種“行掃描法〞。行掃描法行掃描法又稱為逐行〔或列〕掃描查詢法,是一種最常用的按鍵識(shí)別方法,如上圖所示鍵盤,介紹過程如下:判斷鍵盤中有無鍵按下將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,那么表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個(gè)按鍵之中。假設(shè)所有列線均為高電平,那么鍵盤中無鍵按下。判斷閉合鍵所在的位置在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時(shí),其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。假設(shè)某列為低,那么該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。3.2.3矩陣式鍵盤的按鍵的例子圖仍如上所示。AT89S52單片機(jī)的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線分別接有4個(gè)上拉電阻到正電源+5V,并把列線設(shè)置為輸入線,行線設(shè)置為輸出線。4根行線和4根列線形成16個(gè)相交點(diǎn)。檢測當(dāng)前是否有鍵被按下。檢測的方法是輸出全“0〞,讀取的狀態(tài),假設(shè)為全“1〞,那么無鍵閉合,否那么有鍵閉合。去除鍵抖動(dòng)。當(dāng)檢測到有鍵按下后,延時(shí)一段時(shí)間再做下一步的檢測判斷。假設(shè)有鍵被按下,應(yīng)識(shí)別出是哪一個(gè)鍵閉合。方法是對(duì)鍵盤的行線進(jìn)行掃描。按下述4種組合依次輸出:一二三四P1.71110P1.61101P1.51011P1.40111在每組行輸出時(shí)讀取,假設(shè)全為“1〞,那么表示為“0〞這一行沒有鍵閉合,否那么有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計(jì)算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時(shí)的抖動(dòng)。3.2.4去抖處理按鍵的抖動(dòng)時(shí)間一般為5-10ms,抖動(dòng)可能造成一次按鍵的屢次處理問題。當(dāng)采取措施消除抖動(dòng)的影響。消除的方法有多種,常采用軟件延時(shí)10ms的方法。在按鍵較少時(shí),常采用硬件去抖電路。當(dāng)按鍵較多時(shí),常采用軟件延時(shí)的方法。當(dāng)單片機(jī)檢測到有鍵按下時(shí),先延時(shí)10ms,然后再檢測按鍵的狀態(tài),假設(shè)仍是閉合狀態(tài),那么認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放時(shí),亦需要做同樣的處理。3.3四位數(shù)碼管原理及應(yīng)用單片機(jī)I/O的應(yīng)用最典型的是通過I/O口與7段LED數(shù)碼管構(gòu)成顯示電路。LED的發(fā)光原理,我們?cè)谶@里不做介紹。七段LED的數(shù)碼管,那么在一定形狀的絕緣材料上,利用單只LED組合排列成“8”將多只LED的陰極連在一起即為共陰式,而將多只LED的陽極連在一起即為共陽式。以共陽式為例,如把陰極接地,在相應(yīng)段的陽極接上正電源,該段即會(huì)發(fā)光。當(dāng)然。LED的電流通常較少,一般均需在回路中接上限流電阻。假設(shè)我們將“b〞和“c〞段接上正電源,其它端接地或懸空,那么“b〞和“c〞段發(fā)光,此時(shí),數(shù)碼管顯示將顯示數(shù)字“1〞。而將“a〞、“b、“d〞、“e〞和“g〞段都接上正電源,其他引腳懸空,此時(shí)數(shù)碼管將顯示“2〞,其他字符的顯示原理類同。圖3-3四位數(shù)碼管實(shí)物圖圖3-3四位數(shù)碼管實(shí)物圖圖3-5四位數(shù)碼管實(shí)物引腳圖圖3-4圖3-5四位數(shù)碼管實(shí)物引腳圖圖3-4四位數(shù)碼管內(nèi)部邏輯圖管腳順序:從數(shù)碼管的正面看,以第一腳位起點(diǎn),管腳的順序是逆時(shí)針方向排列:12-9-8-6公共端D5-3D6-3A-11B-7C-4D-2E-1F-10G四位數(shù)碼管連接圖圖3-6四位數(shù)碼管連接圖圖3-6四位數(shù)碼管連接圖3.4步進(jìn)電機(jī)控制電路3.圖3-7步進(jìn)電機(jī)原理圖圖3-7步進(jìn)電機(jī)原理圖1.步進(jìn)電機(jī)〔1〕是一個(gè)數(shù)字/角度轉(zhuǎn)換器,也是一個(gè)串行的數(shù)/模轉(zhuǎn)換器?!?〕是過程控制及儀表中的主要控制元件?!?〕廣泛用于定位系統(tǒng)2.概念:〔1〕步進(jìn)電機(jī)旋轉(zhuǎn)的根本原因:錯(cuò)齒;〔2〕術(shù)語:齒距角、步距角;〔3〕通電一周,轉(zhuǎn)子轉(zhuǎn)過一個(gè)齒距角,N為幾,一個(gè)齒距角分幾步走完。3.圖圖3-8步進(jìn)電機(jī)控制系統(tǒng)的組成用微型機(jī)控制步進(jìn)電機(jī)原理系統(tǒng)圖圖圖3-9用微型機(jī)控制步進(jìn)電機(jī)原理系統(tǒng)圖步進(jìn)電機(jī)連接圖圖3-10圖3-10步進(jìn)電機(jī)連接圖3.5蜂鳴器控制電路蜂鳴器分有源蜂鳴器和無源蜂鳴器,這里的“源〞不是指電源,而是指震蕩源。也就是說,有源蜂鳴器內(nèi)部帶震蕩源,所以只要一通電就會(huì)叫。而無源內(nèi)部不帶震蕩源,所以如果用直流信號(hào)無法令其鳴叫。必須用2K~5K的方波去驅(qū)動(dòng)它。圖3-12蜂鳴器驅(qū)動(dòng)電路圖圖3-12蜂鳴器驅(qū)動(dòng)電路圖3-11蜂鳴器實(shí)物圖4控制程序設(shè)計(jì)與仿真4.1鍵盤掃描及顯示程序設(shè)計(jì)鍵盤掃描流程圖鍵盤掃描鍵盤掃描有鍵閉合延時(shí)去抖動(dòng)掃描鍵盤找到閉合鍵計(jì)算鍵值建立有效標(biāo)志返回建立無效標(biāo)志閉合鍵釋放圖4-1微波爐控制器的鍵盤掃描方式流程圖矩陣鍵盤仿真電路圖4-圖4-2矩陣掃描顯示電路鍵盤掃描和顯示輸出的程序:#include<reg52.h>#include<intrins.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//數(shù)碼管控制顯示unsignedintdigit=1234; //按鍵輸入的數(shù)值chardig[4];//聲明led數(shù)碼管顯示的數(shù)字voiddebouncer(void); //聲明防抖動(dòng)函數(shù)voidscanner(void);//聲明掃描函數(shù)#defineTH_M1(65536-500)/256#defineTL_M1(65536-500)%256#definerowkey()(~P1)&0x0f//讀入p1低四位〔列按鍵值〕宏main(){ EA=1; ET1=1; TMOD=0X10; //定時(shí)器1,模式1 TH1=TH_M1;TL1=TL_M1; TR1=1; while(1)scanner(); }voiddebouncer(void) //延時(shí)程序{inti;for(i=0;i<3600;i++);//約30ms延時(shí)}voidscanner(void)//掃描函數(shù){charcol,row;//聲明行和列charscan,keyin,kcode;//聲明掃描信號(hào),列按鍵值,掃描碼scan=0xef;for(col=0;col<4;col++){P1=scan;//P1按鍵掃描 keyin=rowkey();//讀入第col行的列按鍵值 _nop_(); //三個(gè)_nop_();作用為讓P1口的狀態(tài)穩(wěn)定 _nop_(); _nop_();if(keyin!=0)//假設(shè)有按鍵按下{for(row=0;row<3;row++) {if(keyin==(0x01<<row)) {kcode=row+3*col;//計(jì)算出按鍵碼 digit=digit*10+kcode; //掃描碼寫入七段數(shù)碼管數(shù)組digit=digit%1000; //取輸入的后四位,輸入不夠四位高位為零 break; //離開第row列掃描 } } while(rowkey()!=0) //等按鍵放開 debouncer(); //防抖動(dòng)函數(shù) } scan=(scan<<1)|0x01; //產(chǎn)生左一位掃描信號(hào) }} charm=0;voidT1_100us(void)interrupt3 //T1中斷子程序開始,顯示四位數(shù)碼管{TH1=TH_M1;TL1=TL_M1;dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m]]&disp[m]; m=(m<3)?m+1:0;}4.2倒計(jì)時(shí)程序設(shè)計(jì)4.2.1圖4-圖4-3倒計(jì)時(shí)程序流程圖開始計(jì)數(shù)值初值計(jì)數(shù)值輸出延時(shí)1s上次計(jì)數(shù)值取出計(jì)數(shù)值減1判斷是否為0倒數(shù)結(jié)束4.2.圖4圖4-4倒計(jì)時(shí)顯示電路4.2.3#include<reg52.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//數(shù)碼管控制顯示unsignedintdigit=4321; //數(shù)值顯示chardig[4];#defineTH0_M0(65536-20000)/256#defineTL0_M0(65536-20000)%256#defineTH1_M1(65536-1000)/256#defineTL1_M1(65536-1000)%256main(){ TMOD=0x01;//定時(shí)器0,模式1 TH0=TH0_M0; TL0=TH0_M0; IE=0x82;//翻開中斷 TR0=1;//啟動(dòng)計(jì)數(shù)器TR0 EA=1; ET1=1; TMOD=0X10; //定時(shí)器1,模式1 TH1=TH1_M1;TL1=TL1_M1; TR1=1; while(1);}/********************************//*定時(shí)中斷*//********************************/intm0=50;voidt0_1s(void)interrupt1//定時(shí)中斷TR0{ TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit=(digit>0)?digit-1:4321; m0=50; }}charm1=0;voidT1_100us(void)interrupt3 //T1中斷子程序開始,顯示四位數(shù)碼管{TH1=TH1_M1;TL1=TL1_M1; dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m1]]&disp[m1]; m1=(m1<3)?m1+1:0;}4.3步進(jìn)電機(jī)控制程序設(shè)計(jì)4.3.1開始開始取第一個(gè)值延時(shí)取第二個(gè)值延時(shí)取第三個(gè)值延時(shí)取第四個(gè)值圖4-5步進(jìn)電機(jī)程序流程圖4.3.2圖圖4-6步進(jìn)電機(jī)轉(zhuǎn)動(dòng)電路步進(jìn)電機(jī)轉(zhuǎn)動(dòng)程序:#include<reg52.h>#defineOUTPUTP0charexcite[]={0x08,0x01,0x02,0x04};//1相驅(qū)動(dòng)鼓勵(lì)數(shù)組//charexcite[]={0x03,0x06,0x0c,0x09};//2相驅(qū)動(dòng)鼓勵(lì)數(shù)組unsignedchartimes=10;unsignedcharcount=10;#defineTH_M1(65536-500)/256#defineTL_M1(65536-500)%256unsignedchari=0;main(){OUTPUT=0;TMOD=0x10;IE=0x88;TH1=TH_M1;TR1=1; TL1=TL_M1;while(1);}voidtime1(void)interrupt3{TH1=TH_M1;TL1=TL_M1;if(--count==0){OUTPUT=excite[i];i=(i<4)?i+1:0;count=times;}}4.4總體程序設(shè)計(jì)開始4.4.1開始計(jì)算按鍵值計(jì)算按鍵值火力選擇電機(jī)運(yùn)轉(zhuǎn)結(jié)束鍵盤掃描按鍵值減一圖4-7總體設(shè)計(jì)流程圖按鍵值等于0啟動(dòng)刪除按鍵值4.4.2總體設(shè)計(jì)仿真圖圖4-8總體設(shè)計(jì)仿真電路4.4.3#include<reg52.h>#include<intrins.h>charTAB[10]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9};chardisp[4]={0x8f,0x4f,0x2f,0x1f};//數(shù)碼管控制顯示charexcite[]={0x08,0x01,0x02,0x04};//步進(jìn)電機(jī)1相驅(qū)動(dòng)鼓勵(lì)數(shù)組//charexcite[]={0x03,0x06,0x0c,0x09};//2相驅(qū)動(dòng)鼓勵(lì)數(shù)組unsignedchartimes=10;//聲明電機(jī)重復(fù)數(shù)(即電機(jī)的快慢〕unsignedcharcount=10;//聲明電機(jī)重復(fù)變量chardig[4];charc1=5; //蜂鳴器第5秒、3秒、1秒的時(shí)候發(fā)聲charc2=4;charqid=0; //啟動(dòng)的判斷chara1=0,a2=1,a3=0; //火力大中小的判斷intdigit=0; //按鍵輸入的初始數(shù)值sbitda=P3^0;//聲明火力大小的按鍵sbitzhong=P3^1;sbitxiao=P3^2;sbitqidong=P3^3;//聲明啟動(dòng)按鍵sbitchs=P3^4;//聲明重新輸入數(shù)值sbithli1=P0^5; //聲明火力的輸出端sbithli2=P0^6;sbithli3=P0^7;sbitbuzzer=P0^4; //蜂鳴器接口voiddebouncer(void); //聲明防抖動(dòng)函數(shù)voidscanner(void);//聲明掃描函數(shù)voidhuoli(void);//火力大小函數(shù)#definerowkey()(~P1)&0x0f//讀入p1低四位〔列按鍵值〕宏#defineOUTPUTP0//步進(jìn)電機(jī)輸出端低四位#defineTH0_M0(65536-20000)/256#defineTL0_M0(65536-20000)%256#defineTH1_M1(65536-500)/256#defineTL1_M1(65536-500)%256main(){ IE=0x8a; ET0=1; ET1=1; TMOD=0X11; //定時(shí)器0和1,模式1 TH1=TH1_M1;TL1=TL1_M1; TH0=TH0_M0;TL0=TH0_M0; TR1=1;//開啟定時(shí)器1 P3=0xff; P0=0xe0; while(qid==0) //鍵盤掃描 scanner(); while(qid==1) //啟動(dòng) {TR0=1; huoli(); if(a1==1) //啟動(dòng)加熱 {hli1=0;hli2=1;hli3=1;} if(a2==1) {hli1=1;hli2=0;hli3=1;} if(a3==1) {hli1=1;hli2=1;hli3=0;} if(digit==c1) {buzzer=1;//蜂鳴器每次發(fā)聲1s c1=c1-2;} if(digit==c2) {buzzer=0;c2=c2-2;} while(digit<=0)//加熱結(jié)束關(guān)閉系統(tǒng) {TR0=0; TR1=0; P0=0xe0; P1=0; P2=0; P3=0;} } }voidscanner(void)//掃描函數(shù){charcol,row;//聲明行和列charscan,keyin,kcode;//聲明掃描信號(hào),列按鍵值,掃描碼scan=0xef;for(col=0;col<4;col++){P1=scan;//P1按鍵掃描 keyin=rowkey();//讀入第col行的列按鍵值 _nop_(); //三個(gè)_nop_();作用為讓P1口的狀態(tài)穩(wěn)定 _nop_(); _nop_();if(keyin!=0)//假設(shè)有按鍵按下{for(row=0;row<3;row++) {if(keyin==(0x01<<row)) {kcode=row+3*col;//計(jì)算出按鍵碼 digit=digit*10+kcode; //掃描碼寫入七段數(shù)碼管數(shù)組 digit=digit%1000; //取輸入的后三位,輸入不夠三位高位為零 break; //離開第row列掃描 } } while(rowkey()!=0) //等按鍵放開 debouncer(); //防抖動(dòng)函數(shù) } if(qidong==0) //判斷啟動(dòng)按鍵是否按下 {qid=1; while(qidong==0); } if(chs==0) //重新輸入數(shù)值 {digit=0; while(chs==0); }huoli(); //火力大小的判斷 scan=(scan<<1)|0x01; //產(chǎn)生左一位掃描信號(hào) }} charm=0,n=0;voidT1_1ms(void)interrupt3 //T1中斷子程序開始,顯示四位數(shù)碼管{TH1=TH1_M1;TL1=TL1_M1;dig[0]=digit%10; dig[1]=(digit%100)/10; dig[2]=(digit%1000)/100; dig[3]=digit/1000; P2=TAB[dig[m]]&disp[m]; m=(m<3)?m+1:0; if(qid==1)//啟動(dòng)步進(jìn)電機(jī) if(--count==0) {OUTPUT=OUTPUT&0xf0;//P0口高四位不變 OUTPUT=excite[n]|OUTPUT; n=(n<4)?n+1:0; count=times;} }intm0=50;voidt0_1s(void)interrupt1//定時(shí)中斷TR0{ TH0=TH0_M0;TL0=TH0_M0; m0--; if(m0==0) {digit--; m0=50;}}voidhuoli(void)//火力大小函數(shù){ if(da==0) //判斷大火力是否按下{ a1=1;a2=0;a3=0; while(da==0); //等待按鍵放開 } if(zhong==0) /

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論