版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計</b></p><p> 題目: 基于單片機(jī)的電阻爐的設(shè)計與實(shí)現(xiàn) </p><p> 2012年12月25日</p><p><b> 目錄</b></p><p><b> 摘 要2</b></p><
2、p><b> 一、序言4</b></p><p> 二 、電阻爐簡介5</p><p> 三、AT89C526</p><p> 1 、AT89C52系列主要性能參數(shù)6</p><p> 2 、AT89C52具有以下主要功能特性6</p><p> 四、DS18B20
3、 簡介9</p><p> 五、LCD LM01611</p><p> 六、步進(jìn)電動機(jī)13</p><p> 七、MOC302114</p><p> 八、系統(tǒng)硬件電路圖16</p><p> 2、數(shù)據(jù)處理模塊18</p><p> 3、溫度顯示模塊19</p
4、><p> 4、控制模塊電路圖20</p><p> 九、加載程序仿真21</p><p><b> 總結(jié)23</b></p><p><b> 參考文獻(xiàn)24</b></p><p> 程序代碼-----25</p><p><b
5、> 摘 要</b></p><p> 在工業(yè)生產(chǎn)過程中,往往需要對各類加熱爐、熱處理爐、反應(yīng)爐的溫度進(jìn)行檢測和調(diào)節(jié),因此需要一種合適的系統(tǒng)對其溫度進(jìn)行精確控制,由于單片機(jī)具有低功耗、高性能、可靠性好、易于產(chǎn)品化等特點(diǎn),因此采用單片機(jī)對溫度進(jìn)行控制不僅節(jié)約成本,控制方法靈活多樣,并且可以達(dá)到較高的控制精度,從而能夠大大提高產(chǎn)品的質(zhì)量,因此單片機(jī)被廣泛應(yīng)用在中小型控制系統(tǒng)中。</p>
6、;<p> 設(shè)計過程中,首先進(jìn)行軟件</p><p> 設(shè)計和開發(fā),使系統(tǒng)功能模塊化并分別通過Proteus軟件進(jìn)行仿真,實(shí)現(xiàn)功能后對硬件進(jìn)行了綜合設(shè)計,并且反復(fù)論證、測試各器件參數(shù)以使其穩(wěn)定運(yùn)行,最終使得此系統(tǒng)實(shí)現(xiàn)了溫度的恒溫控制。</p><p> 關(guān)鍵詞:單片機(jī);溫度傳感器;可控硅;溫度控制</p><p><b> Abstr
7、act</b></p><p> In the industrial production process, often require various types of furnace, heat treatment furnace, reactor temperature detection and regulation, so it needs a proper system of preci
8、se control of its temperature, as low power consumption single chip, high performance, reliability, easy-to-market commodity and so on, so to control the temperature using SCM not only save on cost, control method of fle
9、xible and diverse, and can achieve higher precision, which can greatly enhance the quality of th</p><p> The design process, first of all the software design and development, making the system functional mo
10、dule and through the Proteus software simulation, respectively, to achieve feature an integrated design of the hardware, and repeated demonstration, testing the device parameters to make it stable operation, and ultimate
11、ly make This system has realized the constant temperature control. </p><p> Keywords: MCS-51, temperature sensor, SCR,temperature control</p><p><b> 一、序言</b></p><p>
12、及時準(zhǔn)確地得到溫度信息并對其進(jìn)行適時的控制,在許多工業(yè)場合中都是重要的環(huán)節(jié).水溫的變化影響各種系統(tǒng)的自動運(yùn)作,例如冶金、機(jī)械、食品、化工各類工業(yè)中,廣泛使用的各種加熱爐、熱處理爐、反應(yīng)爐等,對工件的水處理溫度要求嚴(yán)格控制。對于不同控制系統(tǒng),其適宜的水質(zhì)溫度總是在一個范圍。超過這個范圍,系統(tǒng)或許會停止運(yùn)行或遭受破壞,所以我們必須能實(shí)時獲取水溫變化。對于,超過適宜范圍的溫度能夠報警。同時,我們也希望在適宜溫度范圍內(nèi)可以由檢測人員根據(jù)實(shí)際情況
13、加以改變</p><p> 單片機(jī)對溫度的控制是工業(yè)生產(chǎn)中經(jīng)常使用的控制方法。從1976年Intel公司推出第一批單片機(jī)以來,80年代單片機(jī)技術(shù)進(jìn)入快速發(fā)展時期,近年來,隨著大規(guī)模集成電路的發(fā)展,單片機(jī)繼續(xù)朝快速、高性能方向發(fā)展。單片機(jī)主要用于控制,它的應(yīng)用領(lǐng)域遍及各行各業(yè),大到航天飛機(jī),小至日常生活中的冰箱、彩電,單片機(jī)都可以大顯其能。單片機(jī)將微處理器、存儲器、定時/計數(shù)器、I/O接口電路等集成在一個芯片上的
14、大規(guī)模集成電路,本身即是一個小型化的微機(jī)系統(tǒng)。單片機(jī)技術(shù)與傳感與測量技術(shù)、信號與系統(tǒng)分析技術(shù)、電路設(shè)計技術(shù)、可編程邏輯應(yīng)用技術(shù)、微機(jī)接口技術(shù)、數(shù)據(jù)庫技術(shù)以及數(shù)據(jù)結(jié)構(gòu)、計算機(jī)操作系統(tǒng)、匯編語言程序設(shè)計、高級語言程序設(shè)計、軟件工程、數(shù)據(jù)網(wǎng)絡(luò)通信、數(shù)字信號處理、自動控制、誤差分析、儀器儀表結(jié)構(gòu)設(shè)計和制造工藝等的結(jié)合,使得單片機(jī)的應(yīng)用非常廣泛。同時,單片機(jī)具有較強(qiáng)的管理功能。采用單片機(jī)對整個測量電路進(jìn)行管理和控制,使得整個系統(tǒng)智能化、功耗低、使
15、用電子元件較少、內(nèi)部配線少、成本低,制造、安裝、調(diào)試及維修方便</p><p> 目前,我國在溫度測控儀表業(yè)與國外的差距主要表現(xiàn)在如下幾個方面、</p><p> ?。?) 行業(yè)內(nèi)企業(yè)規(guī)模小,且較為分散,造成技術(shù)力量不集中,導(dǎo)致研發(fā)能力不強(qiáng),制約技術(shù)發(fā)展。</p><p> (2) 商品化產(chǎn)品以PID控制器為主,智能化儀表少,這方面同國外差距較大。目前,國內(nèi)企業(yè)
16、復(fù)雜的及精度要求高的溫度控制系統(tǒng)大多采用進(jìn)口溫度控制儀表</p><p> ?。?) 儀表控制用關(guān)鍵技術(shù)、相關(guān)算法及控制軟件方面的研究較國外滯后。例如:在儀表控制參數(shù)的自整定方面,國外己有較多的成熟產(chǎn)品,但由于我國開發(fā)上的滯后,還沒有開發(fā)出性能可靠的自整定軟件,控制參數(shù)大多靠人工經(jīng)驗(yàn)及現(xiàn)場調(diào)試來確定。這些差距我們必須努力克服。</p><p> 隨著我國經(jīng)濟(jì)的發(fā)展及加入WTO帶來的契機(jī),
17、政府及企業(yè)對于高新技術(shù)的發(fā)展都非常重視,對相關(guān)企業(yè)資源進(jìn)行了重組,相繼建立了一些國家、企業(yè)的研發(fā)中心,并通過合資、技術(shù)合作等方式,組建了一批合資、合作及獨(dú)資企業(yè),使我國溫度等測試儀表行業(yè)得到迅速的發(fā)展。</p><p><b> 其優(yōu)點(diǎn)有:</b></p><p> 1)運(yùn)轉(zhuǎn)平穩(wěn),工作可靠;</p><p> 2)布局合理,安裝操作維護(hù)方
18、便;</p><p> 3)滿足加熱和溫度控制精度要求;</p><p> 4)設(shè)置定時起停、時鐘、報警等人性化功能。</p><p> 5)要從節(jié)能、省材、高效率、自動化、安全的角度出發(fā),對電阻爐的工作效率增加,減少技術(shù)人員,操作和維修更方便安全,大大減小勞動強(qiáng)度,節(jié)約成本,提高勞動生產(chǎn)率。</p><p><b> 二
19、、電阻爐簡介</b></p><p> 1、電阻爐是利用電流通過電熱體元件將電能轉(zhuǎn)化為熱能來加熱或者熔化工件和物料的熱加工設(shè)備。</p><p> 電阻爐由爐體、電氣控制系統(tǒng)和輔助系統(tǒng)組成。爐體由爐殼、加熱器、爐襯(包括隔熱屏)等部件組成。電氣控制系統(tǒng)包括電子線路、微機(jī)控制、儀表顯示及電氣部件等。輔助系統(tǒng)通常指傳動系統(tǒng)、真空系統(tǒng)、冷卻系統(tǒng)等,雖爐種的不同而已</p&g
20、t;<p><b> 2、電阻爐的優(yōu)點(diǎn)</b></p><p> 熱效率高。電阻爐不需要燃燒氣體,沒有派出因燃燒氣體而產(chǎn)生的廢氣造成的熱損失。爐膛室內(nèi)熱強(qiáng)度高,能達(dá)到較高的溫度,是高熔點(diǎn)金屬得熔化。</p><p> 能夠滿足工作空間溫度場均勻分布和恒溫的精度要求。比如在48小時內(nèi)溫度漂移±0.5℃。</p><p&g
21、t; 操作簡單,壽命長,安全有保障。 場所利用率大,噪聲較穩(wěn)定。</p><p><b> 3電阻爐加熱原理</b></p><p> 當(dāng)電流在導(dǎo)體中流過時,因?yàn)槿魏螌?dǎo)體均存在電阻,電能即在導(dǎo)體中形成損耗,轉(zhuǎn)換為熱能,按焦耳楞次定律:</p><p> Q=0.2412 Rt Q—熱能</p><p> I一電
22、流,安培 , </p><p> R一電阻,歐姆, </p><p><b> t一時間,秒</b></p><p> 按上式推算,當(dāng)1千瓦小時的電能,全部轉(zhuǎn)換為熱能時Q=(0.24×1000×36000)/1000=864千卡</p><p> 在電熱技術(shù)上按l千瓦小時=860千卡計
23、算。電阻爐在結(jié)構(gòu)上是使電能轉(zhuǎn)換為熱能的設(shè)備,它能有效地 用來加熱指定的工件,并保持高的效率。</p><p><b> 三、AT89C52</b></p><p> 1 、AT89C52系列主要性能參數(shù)</p><p> AT89C52是一種低電壓,高性能CMOS8位微處理器,片內(nèi)含8K可反復(fù)擦寫的Flash只讀程序存儲器。器件采用Atm
24、el公司的高密度、非易失性存儲器技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)。在單芯片上內(nèi)置通用的8位CPU和Flash存儲單元,能給很多嵌入式控制應(yīng)用系統(tǒng)提供非常靈活且高效的解決方案,從而使得AT89C52廣泛應(yīng)用于許多此類系統(tǒng)中。</p><p> 2 、AT89C52具有以下主要功能特性</p><p> 8K字節(jié)Flash ROM,256字節(jié)內(nèi)部RAM,32個雙向I/O口,3個16
25、位可編程定時/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時AT89C5可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM定時/計數(shù)器串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。</p><p><b> P0口</b></p&
26、gt;<p> P0口為一個8位漏極開路雙向I/O口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路。對端口P0寫1時,可作為高阻輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址低8位和數(shù)據(jù)總線復(fù)用。在FLASH編程時P0 接收指令字節(jié)而在程序校驗(yàn)時輸出指令字節(jié),校驗(yàn)時要求外接上拉電阻。</p><p><b> P1口</b></p
27、><p> P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動吸收或輸出電流,4個TTL邏輯門電路。對端口寫“1”通過內(nèi)部上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。 </p><p><b> P2口</b></p><p> P2口是一個帶有
28、內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動吸收或輸出電流,4個TTL邏輯門電路。對端口P2寫“1”時,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作為輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器。例如執(zhí)行MOVX @DPTR指令時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器。如執(zhí)行MOVX @RI時,P2口輸出P2鎖存器的內(nèi)
29、容。Flash編程或校驗(yàn)時P2也接收高位地址和一些控制信號。 </p><p><b> P3口</b></p><p> P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3輸出緩沖級可驅(qū)動吸收或輸出電流,4個TTL邏輯門電路。對P3口寫入“1”時,他們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流。</p>
30、<p><b> RST復(fù)位輸入:</b></p><p> 當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位。 </p><p> ALE/ PROG : </p><p> 當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE地址鎖存允許輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/
31、6輸出固定脈沖信號,因此它可對外輸出時鐘或用于定時目的。但要注意的是,每當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖。如有必要,可通過對特殊功能寄存器,SFR區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。</p><p> PS
32、EN 程序儲存允許</p><p> PSEN輸出是外部程序存儲器的讀選通信號。當(dāng)AT89C52由外部程序存儲器取指令或數(shù)據(jù)時,每個機(jī)器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器時,將跳過兩次PSEN信號。 EA /VPP外部訪問允許。欲使CPU僅訪問外部程序存儲器地址為0000H-FFFFH,EA端必須保持低電平接地。需注意的是如果加密位LB1被編成復(fù)位時內(nèi)部會所存EA端狀態(tài)。
33、如EA端為高電平接Vcc端,CPU則執(zhí)行內(nèi)部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 </p><p> XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。 </p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 四、DS18B20 簡介<
34、;/p><p> DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625℃,被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理
35、器的端口較少,可節(jié)省大量的引線和邏輯電路。以上特點(diǎn)使DS18B20非常適用于遠(yuǎn)距離多點(diǎn)溫度檢測系統(tǒng)。 </p><p> DS18B20的內(nèi)部結(jié)構(gòu)</p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列,DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端</p&
36、gt;<p> DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。</p><p> 五、LCD LM016</p><p>
37、1 顯示質(zhì)量高 由于液晶顯示器每一個點(diǎn)在收到信號后就一直保持那種色彩和亮度,恒定發(fā)光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點(diǎn)。因此,液晶顯示器畫質(zhì)高且不會閃爍。</p><p><b> 數(shù)字式接口</b></p><p> 液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡單可靠,操作更加方便</p><p><b
38、> 體積小、重量輕</b></p><p> 液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多 </p><p> 2 1602LCD基本參數(shù)及引腳功能</p><p> 1602LCD主要技術(shù)參數(shù):</p><p> 顯示容量:16×2
39、個字符 </p><p> 芯片工作電壓:4.5—5.5V </p><p> 工作電流:2.0mA(5.0V) </p><p> 模塊最佳工作電壓:5.0V </p><p> 字符尺寸:2.95×4.35(W×H)mm</p><p><b> 引腳功能說明</b&g
40、t;</p><p> 第1腳:VSS為地電源。 </p><p> 第2腳:VDD接5V正電源。 </p><p> 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</p><p> 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存
41、器、低電平時選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。 </p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p&g
42、t; 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。 </p><p><b> 六、步進(jìn)電動機(jī)</b></p><p> 1 相步進(jìn)電機(jī)。 定子的通電方式 稱為勵磁方式。</p><p> 1. 1相勵磁方式 A相通電; B相通電; C相通電; 當(dāng)脈沖一個一個發(fā)來時,如果按A->B->C->A...的順序通電,則電機(jī)轉(zhuǎn)
43、子便按逆時針轉(zhuǎn)動,這種通電方式成為1相勵磁方式。 如果按A->C->B>A...的順序通電,則電機(jī)轉(zhuǎn)子便按逆時針轉(zhuǎn)動</p><p> 2. 2相勵磁方式順時針輪回 AB→BC→CA→AB 逆時針輪回 BA→AC→CB→BA</p><p> 2步進(jìn)電機(jī)的驅(qū)動發(fā)來的脈沖信號轉(zhuǎn)化為步進(jìn)電機(jī)的角位移,電機(jī)的轉(zhuǎn)速與脈沖率 成正比,所以控制脈沖頻率可以精確調(diào)速,控制脈
44、沖數(shù)就可以精確定位</p><p><b> 七、MOC3021</b></p><p> MOC3021/MOC3021M是一款光隔離三端雙向可控硅驅(qū)動器芯片。MOC3021/MOC3021M包含一個砷化鎵紅外發(fā)光二極管和一個光敏硅雙向開關(guān),該開關(guān)具備跟三端雙向可控硅一樣的功能。 MOC3021/MOC3021M設(shè)計用于為電子控制裝置和電源雙向控制裝置提供接
45、口,以便對115 VAC操作電壓下的電阻和電感負(fù)載進(jìn)行有效控制</p><p> MOC3021 特性特性特性特性 </p><p> ?出色的 IFT(LED觸發(fā)電流) 穩(wěn)定性 - 紅外發(fā)光二極管不易退化 </p><p> ? 高隔離電壓 - 最小5300 VAC RMS </p><p> ? UL認(rèn)證 - File #E9
46、0700 </p><p><b> ? 峰值閉鎖電壓 </b></p><p> MOC3021 應(yīng)用應(yīng)用應(yīng)用應(yīng)用 </p><p><b> ? 工業(yè)控制 </b></p><p><b> ? 紅綠燈 </b></p><p> ?
47、 自動售貨機(jī) 固態(tài)繼電器 </p><p><b> ? 鎮(zhèn)流器 </b></p><p> ? 電磁閥/閥控制 </p><p> ? 靜態(tài)AC電源開關(guān) </p><p> ? 白熾燈調(diào)光器 </p><p> ? 電機(jī)控制器 </p><p>&
48、lt;b> 八、系統(tǒng)硬件電路圖</b></p><p> 系統(tǒng)硬件連接圖如下圖所示:系統(tǒng)集成了數(shù)據(jù)處理模塊、溫度傳感器模塊、溫度顯示/設(shè)定模塊、溫度控制模塊。</p><p><b> 1、溫度傳感器模塊</b></p><p><b> 2、數(shù)據(jù)處理模塊 </b></p><
49、p><b> 3、溫度顯示模塊</b></p><p><b> 4、控制模塊電路圖</b></p><p><b> 九、加載程序仿真</b></p><p><b> 總結(jié) </b></p><p> 設(shè)計敘述了基于單片機(jī)的電阻爐溫度的
50、控制與設(shè)計,包括硬件組成和軟件,介紹了基于AT89C51單片機(jī)的溫度采集控制系統(tǒng)設(shè)計,該系統(tǒng)在硬件設(shè)計上主要是通過熱電偶對溫度進(jìn)行采集,把溫度轉(zhuǎn)換成變的電壓,將模擬溫度電壓信號轉(zhuǎn)化為對應(yīng)的數(shù)字溫度信號電壓,用LCD 對當(dāng)前溫度信號值進(jìn)行顯示,并且根據(jù)數(shù)據(jù)處理的結(jié)果,使用單片機(jī)控制繼電器,實(shí)現(xiàn)對電機(jī)的控制,最終達(dá)到溫度調(diào)節(jié)的目的。其硬件設(shè)計中最為核心的器件是單片機(jī)AT89C51,整個系統(tǒng)結(jié)構(gòu)緊湊,簡單可靠,操作靈活,功能強(qiáng)大,性能價格比高
51、,較好的滿足了現(xiàn)代生產(chǎn)和科研的需要</p><p> 長達(dá)兩個月的學(xué)習(xí) 、研究,看了不少文獻(xiàn),問過不少同學(xué) ,曾經(jīng)根本沒有一點(diǎn)頭緒的我感覺好難,根本不知道什么是keil 和protues ,更不知道元件庫中原件的應(yīng)用,但是由于壓力的條件下,終于有了自己的報告,更多的了解單片機(jī)的功能,特別是對引腳的功能的接法,p0口能做數(shù)據(jù)總線有能做地址總線的意義,還有LCD14引腳顯示器的接法 ,溫度傳感器的應(yīng)用。</p
52、><p> 最后 ,我很高興我能成功做出這篇報告,同時也真心的感謝幫助過我的同學(xué) 、朋友,謝謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 楊世興.郭秀才監(jiān)測監(jiān)控系統(tǒng).中國電力出版社,2007</p><p> [2] 丁鎮(zhèn)生.傳感器及傳感技術(shù)應(yīng)用.電子工業(yè)出版社,</p>
53、<p> 2002 [3] 陳良光.劉劍亮.DS18X20在多點(diǎn)測溫中的編碼優(yōu)化技術(shù).電子工業(yè)出版社,</p><p> 2001 [4] 陳潤泰、許琨編.檢測技術(shù)與智能儀表.長沙:中南工業(yè)大學(xué)出版社,1998 </p><p> [5] 蔡美琴等.MCS一51系列單片機(jī)系統(tǒng)及其應(yīng)用.北京:高等教育出版社,1999 </p><p> [6] 劉迎
54、春、葉湘濱.傳感器原理設(shè)計與應(yīng)用(第三版).長沙:國防科技大學(xué)出版社,199</p><p><b> 程序代碼-----</b></p><p> #include<REG52.H></p><p> #include<math.h></p><p> #include<INTRI
55、NS.H></p><p> #include<string.h> </p><p> #define CIRCLE 100</p><p> #define uchar unsigned char</p><p> #define uint unsigned int;</p><p>
56、 struct PID { </p><p> unsigned int SetPoint; // 設(shè)定目標(biāo) Desired Value </p><p> unsigned int Proportion; // 比例常數(shù) Proportional Const </p><p> unsigned int Integral; // 積分常數(shù) Integral
57、Const </p><p> unsigned int Derivative; // 微分常數(shù) Derivative Const </p><p> unsigned int LastError; // Error[-1] </p><p> unsigned int PrevError; // Error[-2] </p><p>
58、 unsigned int SumError; // Sums of Errors </p><p><b> }; </b></p><p> struct PID spid; // PID Control Structure </p><p> unsigned int rout; // PID Response (Output)
59、</p><p> unsigned int rin; // PID Feedback (Input) </p><p> typedef unsigned char BYTE;</p><p> typedef unsigned int WORD;</p><p> typedef bit BOOL ;</p><
60、;p> sbit key1=P3^2; //定義按鍵位置</p><p> sbit key2=P3^3;</p><p> sbit key3=P3^4;</p><p> sbit key4=P3^5;</p><p> sbit key5=P3^6;</p><p> sbit key6=P
61、3^7;</p><p> sbit rs = P1^0;</p><p> sbit rw = P1^1;</p><p> sbit ep = P1^2;</p><p> sbit pwm=P1^5; //PWM輸出端設(shè)置為P3.7輸出</p><p> sbit DQ=P1^3;//ds18b20 信
62、號引腳即DQ</p><p> sfr dataled=0x80;//顯示數(shù)據(jù)端口 即P2口為段選碼輸入口</p><p> uchar temp;//溫度變量</p><p> unsigned char set_temper=30; </p><p> unsigned char high_time;</p><
63、;p> unsigned int s; </p><p> uchar flag_get,count,num,counter; //溫度讀取標(biāo)志位、中斷次數(shù)變量,t0中斷次數(shù)以讀取溫度值, t1中斷次數(shù)以控制周期和pwm的占空比。</p><p> char const table[]={100,80,70,60,50,40,30,20,0};//高電平時間查表</p
64、><p><b> uchar</b></p><p> code tab[]={0x28,0xEB,0x32,0xA2,0xE1,0xA4,0x24,0xEA,0x20,0xA0,0x60,0x25,0x3C,0x23,0x34,0x74,0xF7,0xFF};//,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共陽led顯示段碼1~15段碼表&
65、lt;/p><p> uchar shi,ge,danwei,dang,dang_dis; // 定義溫度十位、個位、攝氏度單位、及檔位變量名稱,及顯示檔位的查表變量</p><p> void delay1(uchar MS);// 延時函數(shù)</p><p> unsigned char ReadTemperature(void);//讀溫度子函數(shù)</
66、p><p> void Init_DS18B20(void);// DS18B20初始化</p><p> unsigned char ReadOneChar(void);//讀字節(jié)子函數(shù)</p><p> void WriteOneChar(unsigned char dat);//寫字節(jié)子函數(shù)</p><p> void delay(
67、unsigned int i);//延時</p><p> //void del(unsigned int);</p><p> void drive_moto();//由P1低四位輸出控制信號</p><p> void initial();</p><p> unsigned int TempBuffer[5];</p>
68、;<p> BYTE code dis1[] = {"Temperature:"};</p><p> BYTE code dis2[] = {"Set_Temper:"};</p><p> BYTE code dis3[] = {"0123456789"};</p><p> BY
69、TE code dis4[] = 0xdf;</p><p> BYTE code dis5[] = {"C"};</p><p> delay2(BYTE ms)</p><p><b> { </b></p><p><b> BYTE i;</b></p>
70、;<p> while(ms--)</p><p><b> {</b></p><p> for(i = 0; i< 250; i++)</p><p><b> {</b></p><p><b> _nop_();</b></p>
71、<p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p><b> }<
72、/b></p><p><b> }</b></p><p> BOOL lcd_bz()</p><p> { // 測試LCD忙碌狀態(tài)</p><p> BOOL result;</p><p><b> rs = 0;</b></p&g
73、t;<p><b> rw = 1;</b></p><p><b> ep = 1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b>
74、 _nop_();</b></p><p><b> _nop_();</b></p><p> result = (BOOL)(P0 & 0x80);</p><p><b> ep = 0;</b></p><p> return result; </p>
75、;<p><b> }</b></p><p> lcd_wcmd(BYTE cmd)</p><p> { // 寫入指令數(shù)據(jù)到LCD</p><p> while(lcd_bz());</p><p><b> rs = 0;</b></p>&
76、lt;p><b> rw = 0;</b></p><p><b> ep = 0;</b></p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><p><b> P0
77、 = cmd;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b><
78、;/p><p><b> ep = 1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><
79、;b> _nop_();</b></p><p><b> ep = 0; </b></p><p><b> }</b></p><p> lcd_pos(BYTE pos)</p><p> { //設(shè)定顯示位置</p><p>
80、 lcd_wcmd(pos | 0x80);</p><p><b> }</b></p><p> lcd_wdat(BYTE dat) </p><p> { //寫入字符顯示數(shù)據(jù)到LCD</p><p> while(lcd_bz());</p><p><b&g
81、t; rs = 1;</b></p><p><b> rw = 0;</b></p><p><b> ep = 0;</b></p><p><b> P0 = dat;</b></p><p><b> _nop_();</b>
82、</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> ep = 1;</b></p><p>
83、<b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> ep = 0; &
84、lt;/b></p><p><b> }</b></p><p> lcd_init()</p><p> { //LCD初始化設(shè)定</p><p> lcd_wcmd(0x38); //</p><p> delay2(1);</p><p&
85、gt; lcd_wcmd(0x0c); //</p><p> delay2(1);</p><p> lcd_wcmd(0x06); //</p><p> delay2(1);</p><p> lcd_wcmd(0x01); //清除LCD的顯示內(nèi)容</p><p> delay2(1);
86、</p><p><b> }</b></p><p> void initial()</p><p><b> {</b></p><p><b> EA=1;</b></p><p> TMOD=0x11;//定時器設(shè)置皆工作在16定時計數(shù)
87、器模式</p><p> TH0=0xef;//T0賦初值</p><p><b> TL0=0xf0;</b></p><p> TH1=(65536-1000)/256;//T1賦初值</p><p> TL1=(65536-1000)%256;</p><p><b>
88、ET1=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b> TR1=1;</b></p><p> P2=0xff; </p><p><b&
89、gt; count=0;</b></p><p> counter=0;//pwm占空比控制變量</p><p> //IP=0x08; //T1優(yōu)先級高于T0 ,后來證明此語句是多余的,因?yàn)楫?dāng)加入此句后反/////而pwm調(diào)速和溫度檢測都變得有點(diǎn)不穩(wěn)定。</p><p><b> }</b></p><
90、p> void delay(unsigned int i)//延時函數(shù)</p><p><b> {</b></p><p> while(i--); </p><p><b> }</b></p><p> //18b20初始化函數(shù),檢測總線上是否有從屬器件DS的存在,若存在則通訊
91、成功</p><p> void Init_DS18B20(void)</p><p><b> {</b></p><p> unsigned char x=0;</p><p> DQ = 1; //DQ復(fù)位</p><p> delay(8); //稍做延時</p&g
92、t;<p> DQ = 0; //單片機(jī)將DQ拉低</p><p> delay(80); //延時 大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay(10);</p><p> x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗,
93、因?yàn)镈Q復(fù)位成功的回答信號即存在信號是低電平</p><p><b> delay(5);</b></p><p><b> }</b></p><p> //讀一個字節(jié)ROM</p><p> unsigned char ReadOneChar(void)</p><p
94、><b> {</b></p><p> unsigned char i=0;</p><p> unsigned char dat = 0;</p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p>
95、 DQ = 0; // 給脈沖信號</p><p><b> dat>>=1;</b></p><p> DQ = 1; // 給脈沖信號</p><p><b> if(DQ)</b></p><p> dat|=0x80;//</p><p><
96、b> delay(5);</b></p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p><b> //寫一個字節(jié)</b></p><p> v
97、oid WriteOneChar(unsigned char dat)</p><p><b> {</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p><b> {</b></p>&
98、lt;p><b> DQ = 0;</b></p><p> DQ = dat&0x01;</p><p><b> delay(5);</b></p><p><b> DQ = 1;</b></p><p><b> dat>>
99、=1;</b></p><p><b> }</b></p><p><b> delay(5);</b></p><p><b> }</b></p><p><b> //讀取溫度</b></p><p>
100、 unsigned char ReadTemperature(void)</p><p><b> {</b></p><p> unsigned char a=0;</p><p> unsigned char b=0;</p><p> unsigned char t=0;</p><p&
101、gt; Init_DS18B20();// 復(fù)位</p><p> WriteOneChar(0xCC); // 跳過讀序號列號的操作</p><p> WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換</p><p> delay(100);</p><p> Init_DS18B20(); //每次操作前都要進(jìn)行復(fù)位
102、</p><p> WriteOneChar(0xCC); //跳過讀序號列號的操作 </p><p> WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度</p><p> a=ReadOneChar();</p><p> b=ReadOneChar();</p><
103、;p> s=(unsigned int)(a&0x0f); </p><p> b<<=4;//取高字節(jié)的第四位,因?yàn)楦咚奈粸榉栁唬?111為負(fù),0000為正,</p><p> b+=(a&0xf0)>>4;//忽略小數(shù)位,取a的高四位,與b的相加就是此時所測得到整數(shù)溫度值</p><p><b>
104、 t=b;</b></p><p> return(t);//返回溫度值給這個函數(shù)</p><p><b> }</b></p><p> void printf()</p><p><b> {</b></p><p><b> BYTE i
105、;</b></p><p> delay2(10);</p><p> lcd_pos(0x00); // 設(shè)置顯示位置為第一行的第5個字符</p><p><b> i = 0;</b></p><p> while(dis1[i] != '\0')</p>&l
106、t;p> { // 顯示字符"welcome!"</p><p> lcd_wdat(dis1[i]);</p><p><b> i++;</b></p><p><b> }</b></p><p> lcd_pos(0x40); // 設(shè)置顯示
107、位置為第二行第二個字符</p><p><b> i = 0;</b></p><p> while(dis2[i] != '\0')</p><p><b> {</b></p><p> lcd_wdat(dis2[i]); // 顯示字符</p><
108、p><b> i++;</b></p><p><b> }</b></p><p> TempBuffer[0]=temp/10; //十位</p><p> TempBuffer[1]=temp%10; //個位</p><p> lcd_pos(0x0c); </p&
109、gt;<p> lcd_wdat(dis3[TempBuffer[0]]); //測試溫度十位</p><p> lcd_pos(0x0d); </p><p> lcd_wdat(dis3[TempBuffer[1]]); //測試溫度個位</p><p> lcd_pos(0x0e);</p><p> lcd_w
110、dat(dis4[0]); </p><p> lcd_pos(0x0f);</p><p> lcd_wdat(dis5[0]);</p><p> TempBuffer[2]=set_temper/10; //十位</p><p> TempBuffer[3]=set_temper%10; //個位</p>&l
111、t;p> lcd_pos(0x4c); </p><p> lcd_wdat(dis3[TempBuffer[2]]); //設(shè)置溫度十位</p><p> lcd_pos(0x4d); </p><p> lcd_wdat(dis3[TempBuffer[3]]); //設(shè)置溫度個位</p><p> lcd_pos(0x4
112、e);</p><p> lcd_wdat(dis4[0]); </p><p> lcd_pos(0x4f);</p><p> lcd_wdat(dis5[0]);</p><p><b> }</b></p><p> void keyscan()</p><p
113、><b> {</b></p><p> if(key1==0)</p><p><b> {</b></p><p> delay(200);</p><p> if(key1==0)</p><p><b> {</b></p
114、><p> set_temper++;</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b> {</b></p><p> dela
115、y(200);</p><p> if(key2==0)</p><p><b> {</b></p><p> set_temper--;</p><p><b> }</b></p><p><b> }</b></p>&l
116、t;p><b> }</b></p><p> void tim(void) interrupt 1 using 1//中斷,用于數(shù)碼管掃描和溫度檢測間隔</p><p><b> {</b></p><p> //TH0=0xef;//定時器重裝值</p><p> //TL0
117、=0xf0;</p><p><b> //num++;</b></p><p> //if (num==100)</p><p><b> //{</b></p><p> //num=0;</p><p> //flag_get=1;//標(biāo)志位有效
118、</p><p><b> //}</b></p><p><b> }</b></p><p> void into(void) interrupt 3 //T1定時中斷服務(wù)程序 </p><p><b> { </b></p><p>
119、 TH1=(65536-1000)/256;//初值重裝</p><p> TL1=(65536-1000)%256;</p><p> counter++;</p><p> if(counter>CIRCLE) </p><p><b> {</b></p><p> coun
120、ter=0;////限定周期為T=100X0.01ms=10ms</p><p><b> } </b></p><p> if(counter<=high_time)//取得查表參數(shù),以調(diào)節(jié)pwm的占空比</p><p> pwm=1;//PWM高電平</p><p><b> else &l
121、t;/b></p><p><b> pwm=0;</b></p><p><b> }</b></p><p> compare_temper() </p><p><b> { </b></p><p> //unsigned ch
122、ar i; </p><p> if(set_temper>temp) </p><p><b> { </b></p><p> if(set_temper-temp>=10) </p><p><b> { </b></p><p> high_ti
123、me=100; </p><p><b> } </b></p><p><b> else </b></p><p><b> { </b></p><p> //for(i=0;i<10;i++) </p><p><b&g
124、t; //{ </b></p><p> //rin = s; // Read Input </p><p> //rout = PIDCalc ( &spid,rin ); // Perform PID Interation </p><p><b> //} </b></p>
125、;<p> if (set_temper-temp==9) </p><p> high_time=90; </p><p> if (set_temper-temp==8) </p><p> high_time=80; </p><p> if (set_temper-temp==7)
126、 </p><p> high_time=70; </p><p> if (set_temper-temp==6) </p><p> high_time=60; </p><p> if (set_temper-temp==5) </p><p> high_time=50;
127、 </p><p> if (set_temper-temp==4) </p><p> high_time=40; </p><p> if (set_temper-temp==3) </p><p> high_time=30; </p><p> if (set_tempe
128、r-temp==2) </p><p> high_time=20; </p><p> if (set_temper-temp==1) </p><p> high_time=10; </p><p><b> } </b></p><p><b>
129、; } </b></p><p> else if(set_temper<temp) </p><p><b> {</b></p><p> // if(temp-set_temper>0)</p><p><b> // { </b></p
130、><p> high_time=0; </p><p><b> // } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> main()</b><
131、;/p><p><b> { </b></p><p> initial();// 初始化個變量及定時器的初值,開中斷等 </p><p> lcd_init(); // 初始化LCD </p><p> while(1) </p><p><b> { &l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 箱式電阻爐課程設(shè)計
- 箱式電阻爐課程設(shè)計
- 箱式電阻爐課程設(shè)計
- 箱式電阻爐課程設(shè)計
- 課程設(shè)計---基于單片機(jī)的電阻爐溫度控制系統(tǒng)設(shè)計
- 基于單片機(jī)的電阻爐爐溫控制系統(tǒng)
- 基于單片機(jī)的電阻爐爐溫控制系統(tǒng)
- 箱式電阻爐課程設(shè)計
- 基于單片機(jī)的工業(yè)電阻爐智能溫度控制系統(tǒng)設(shè)計
- 45基于單片機(jī)的電阻爐爐溫控制系統(tǒng)
- 45基于單片機(jī)的電阻爐爐溫控制系統(tǒng)
- 中溫箱式電阻爐-課程設(shè)計
- 課程設(shè)計---熱處理箱式電阻爐的設(shè)計
- 基于單片機(jī)的電阻爐爐溫控制系統(tǒng)譚金虎
- 課程設(shè)計---井式熱處理電阻爐
- 箱式電阻爐課程設(shè)計完整版
- 單片機(jī)課程設(shè)計--電容、電阻參數(shù)單片機(jī)測試系統(tǒng)的設(shè)計
- 課程設(shè)計---井式熱處理電阻爐
- 基于單片機(jī)的秒表設(shè)計單片機(jī)課程設(shè)計
- 課程設(shè)計--基于單片機(jī)的小電阻測試儀
評論
0/150
提交評論