




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電子技術(shù)綜合設(shè)計(jì)設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 水溫自動(dòng)把握系統(tǒng) 組長(zhǎng)姓名: 學(xué) 號(hào): 專業(yè)與班級(jí): 工業(yè)自動(dòng)化14-16班 姓 名: 學(xué) 號(hào): 專業(yè)與班級(jí): 工業(yè)自動(dòng)化14-16班 姓 名: 學(xué) 號(hào): 專業(yè)與班級(jí): 工業(yè)自動(dòng)化14-16班 時(shí) 間: 2016 2017 學(xué)年第(1)學(xué)期 指導(dǎo)老師: 陳燁 成 績(jī): 評(píng)閱日期: 一、 課題任務(wù)設(shè)計(jì)并制作一個(gè)水溫自動(dòng)把握系統(tǒng),對(duì)1.5L凈水進(jìn)行加。水溫保持在肯定范圍內(nèi)且由人工設(shè)定。細(xì)節(jié)要求如下:1.溫度設(shè)定范圍為4090 ,最小辨別率為0.1,誤差1。2.可通過(guò)LCD顯示屏顯示溫度目標(biāo)值與實(shí)時(shí)溫度。3.可以通過(guò)鍵盤(pán)調(diào)整目標(biāo)溫度的數(shù)值。二、 方案比較1. 系統(tǒng)
2、模塊設(shè)計(jì)為完成任務(wù)目標(biāo),可以將系統(tǒng)分為如下幾個(gè)部分:5V直流電供電模塊、測(cè)溫模塊、80C52單片機(jī)把握系統(tǒng)、鍵盤(pán)把握電路、溫度顯示模塊、繼電器把握模塊、強(qiáng)電加熱電路。通過(guò)各模塊之間的相互協(xié)作,可以完成水溫檢測(cè)、液晶顯示、目標(biāo)值設(shè)置、水溫把握等功能。系統(tǒng)方框圖如下:2. 5V直流電供電模塊方案一:直接用GP品牌的9v電池,然后接通過(guò)三端穩(wěn)壓芯片7805穩(wěn)壓成5伏直流電源供應(yīng)應(yīng)單片機(jī)系統(tǒng)使用,接兩個(gè)5伏電源的濾波電容后輸出。方案二:通過(guò)變壓器,將220v的市電轉(zhuǎn)換成9v左右的溝通電,變壓器輸出端的9V電壓經(jīng)橋式整流并電容濾波。要得到一個(gè)比較穩(wěn)定的5v電壓,在這里接一個(gè)三端穩(wěn)壓器的元件7805。由于
3、需要給繼電器供應(yīng)穩(wěn)定的5V電壓,而方案一中導(dǎo)致電池的過(guò)度損耗,無(wú)法穩(wěn)定帶動(dòng)繼電器持續(xù)工作,所以我們選用能夠供應(yīng)更加穩(wěn)定5v電源的方案二。3. 測(cè)溫模塊經(jīng)查閱資料,IC式感溫器在市場(chǎng)上應(yīng)用比較廣泛的有以下幾種:AD590:電流輸出型的測(cè)溫組件,溫度每上升1 攝氏度,電流增加1A,溫度測(cè)量范圍在-55 150之間。其所采集到的數(shù)據(jù)需經(jīng)A/D 轉(zhuǎn)換,才能得到實(shí)際的溫度值。DS18B20:內(nèi)含AD轉(zhuǎn)換器,所以除了測(cè)量溫度外,它還可以把溫度值以數(shù)字的方式(9 B i t ) 送出,因此線路連接格外簡(jiǎn)潔,它無(wú)需其他外加電路,直接輸出數(shù)字量,可直接與單片機(jī)通信,讀取測(cè)溫?cái)?shù)據(jù)。它能夠達(dá)到0.5的固有辨別率,使
4、用讀取溫度暫存寄存器的方法還能達(dá)到0.0625以上精度,溫度測(cè)量范圍在-55125 之間,應(yīng)用便利。SMARTEC感溫組件:這是一只3個(gè)管腳感溫IC,溫度測(cè)量范圍在-45 13,誤差可以保持在0.7 以內(nèi)。max6225/6626:最大測(cè)溫范圍也是-55+125,帶有串行總線接口,測(cè)量溫度在可測(cè)范圍內(nèi)的的誤差在4以內(nèi),較大,故舍棄該方案。本設(shè)計(jì)選用DS18B20感溫IC,這是因其性能參數(shù)符合設(shè)計(jì)要求,接口簡(jiǎn)潔,內(nèi)部集成了A/D 轉(zhuǎn)換,測(cè)溫更簡(jiǎn)便,精度較高,反應(yīng)速度快,且經(jīng)過(guò)市場(chǎng)考察,該芯片易購(gòu)買(mǎi),使用便利。下面是DS18B20感溫IC的實(shí)物和接口圖片4. 80C52單片機(jī)把握系統(tǒng)AT89C52
5、是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件接受ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中心處理器和Flash存儲(chǔ)單元,AT89C52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。5. 鍵盤(pán)把握電路方案一:四鍵設(shè)定,一個(gè)十位把握鍵,一個(gè)個(gè)位把握鍵,一個(gè)位把握鍵,一個(gè)確認(rèn)鍵,通過(guò)四鍵的協(xié)作設(shè)定為度,該方案接線和程序簡(jiǎn)潔,但實(shí)際操作不太便捷。方案二:矩陣鍵盤(pán)設(shè)定,通過(guò)按鍵輸入不同數(shù)字實(shí)現(xiàn)溫度的設(shè)定,電路連接比較簡(jiǎn)潔,程序較方案一簡(jiǎn)單,但已經(jīng)在學(xué)習(xí)過(guò)
6、程中接觸過(guò)矩陣鍵盤(pán)的編程技巧,有肯定的可行性,且操作起來(lái)更加符合我們的日常習(xí)慣。本次設(shè)計(jì)暫定接受矩陣鍵盤(pán)來(lái)作為溫度設(shè)定電路的輸入。6. 溫度顯示模塊方案一:使用數(shù)碼管顯示,通過(guò)數(shù)碼管顯示被測(cè)溫度和設(shè)定溫度。該方案程序簡(jiǎn)潔,且已學(xué)習(xí)過(guò)其編程技巧,但硬件占用單片機(jī)I/O口較多,對(duì)于盡量節(jié)省端口,讓線路簡(jiǎn)潔來(lái)說(shuō)不是好方法,而且顯示也不夠直觀機(jī)敏,只能顯示數(shù)字,。方案二:使用液晶屏1602顯示。1602可顯示兩行字符及數(shù)字,可以用來(lái)顯示設(shè)定溫度及測(cè)量溫度,較之?dāng)?shù)碼管顯示更加清楚直觀,雖然此前沒(méi)有接觸過(guò)相關(guān)學(xué)問(wèn),但該器件上手比較簡(jiǎn)潔,可以在短期內(nèi)學(xué)會(huì)其使用方法。1602較之?dāng)?shù)碼管更加符合本次設(shè)計(jì)要求,因
7、此使用1602作為顯示器件。7. 繼電器把握模塊方案一:接受一般的把握方法,即水溫溫度到達(dá)臨界溫度時(shí),把握繼電器開(kāi)閉。但由于水溫變化快,且慣性大,不易把握精度。 方案二:接受PWM把握加PID算法,通過(guò)接受PWM可以產(chǎn)生一個(gè)波形,而PWM波形的占空比是通過(guò)PID算法調(diào)整,這樣就可以通過(guò)把握加熱電路的開(kāi)、斷時(shí)間比來(lái)把握加熱器功率進(jìn)而把握溫度的變化,從而使精度提高。此方法中硬件上可以使用固態(tài)繼電器或晶閘管把握加熱器工作。我們選擇方案二。三、 電路設(shè)計(jì)1. 電源電路整個(gè)系統(tǒng)需要使用5V直流電和220V溝通電。電源電路接受變壓器與穩(wěn)壓模塊,將工頻電壓降為5V直流電,為系統(tǒng)供電。首先用變壓器模塊20V溝
8、通電降為9V溝通電,接入整流電橋,變?yōu)橹绷麟娸敵?,再使用三端穩(wěn)壓芯片7805穩(wěn)壓為5V。L7805輸出端要聯(lián)上電解電容,濾除溝通電干擾,防止損壞單片機(jī)系統(tǒng)。LM7805最大可以輸出1A的電流,內(nèi)部有限流式短路愛(ài)護(hù),短時(shí)間內(nèi),例如幾秒鐘的時(shí)間,輸出端對(duì)地(2腳)短路并不會(huì)使7805燒壞。2. 溫度傳感器DS18B20溫度傳感器只有三根外引線:?jiǎn)尉€數(shù)據(jù)傳輸總線端口DQ ,外供電源線VDD,共用地線GND。外部供電方式(VDD接+5V,且數(shù)據(jù)傳輸總線接4.7k的上拉電阻,其接口電路如下圖(外接電源工作方式)所示。3. 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可
9、以工作的系統(tǒng).對(duì)51系列單片機(jī)來(lái)說(shuō),最小系統(tǒng)一般應(yīng)當(dāng)包括:單片機(jī)、晶振電路、復(fù)位電路4. 按鍵、顯示電路這部分實(shí)際上是一個(gè)單片機(jī)最小系統(tǒng)的基本電路,鍵盤(pán)選用矩陣鍵盤(pán)可滿足要求,通過(guò)按鍵輸入不同數(shù)字實(shí)現(xiàn)溫度的設(shè)定。 在顯示方面選用常用的1602液晶顯示模塊。通過(guò)相應(yīng)的程序,可以實(shí)現(xiàn)溫度的實(shí)時(shí)顯示,電路連接也比較簡(jiǎn)潔,只需連接數(shù)據(jù)總線,和三根把握線即可實(shí)現(xiàn)數(shù)據(jù)把握,實(shí)現(xiàn)顯示功能。1602顯示電路5. 繼電器溫控單片機(jī)驅(qū)動(dòng)繼電器的通斷,從而比較簡(jiǎn)潔的實(shí)現(xiàn)對(duì)小功率電熱棒的加熱。本系統(tǒng)利用繼電器的吸合與否來(lái)實(shí)現(xiàn)水溫的自動(dòng)化把握。本次設(shè)計(jì)接受型號(hào)為JRC-21F的繼電器。
10、其特點(diǎn)有: (1).超小型,低功耗; (2).觸點(diǎn)型式:1H,1Z(1A.AC); (3).觸點(diǎn)負(fù)載:2A,120VAC; (4).外型尺寸:15.7X10.4X11.4 如圖是驅(qū)動(dòng)較大功率繼電器的接口,當(dāng)p1.1(連接單片機(jī)的輸出口)輸出低電平常,Q1導(dǎo)通,繼電器吸合;當(dāng)p1.1輸出高電平常,Q1截止,繼電器斷開(kāi)。由于繼電器吸合時(shí)電流比較大,所以在單片機(jī)與繼電器之間增加了光電耦合器件作為隔離電路。R3是光電耦合輸出管的限流電阻,R4是驅(qū)動(dòng)管Q1基極泄放電阻。整體硬件電路見(jiàn)附錄四、 程序設(shè)計(jì)程序結(jié)構(gòu)包括:主程序、傳感器測(cè)溫程序、lcd1602顯
11、示程序、鍵盤(pán)掃描程序、PID計(jì)算程序、PWM波形發(fā)生程序。主程序流程圖如下所示:傳感器測(cè)溫程序流程圖:lcd1602顯示程序流程圖:鍵盤(pán)掃描程序流程圖:溫度比較與PID計(jì)算程序流程圖:PWM波形發(fā)生程序(定時(shí)器中斷)流程圖:五、 測(cè)試方案1.靜態(tài)測(cè)試:室溫狀態(tài)下,分別用溫度計(jì)與18B20傳感器檢測(cè)水溫,觀看兩者是否有誤差。2.動(dòng)態(tài)測(cè)試:用繼電器把握“熱得快”對(duì)1升水加熱,用鍵盤(pán)設(shè)定需加熱溫度值,觀看、記錄1602顯示屏上實(shí)時(shí)水溫值的變化過(guò)程和每次轉(zhuǎn)變溫度設(shè)定值后PID調(diào)整的超調(diào)量。多次調(diào)試并和修改PID參數(shù)來(lái)完善該系統(tǒng)。檢驗(yàn)水溫的穩(wěn)定值是否滿足設(shè)計(jì)目標(biāo)的要求。六、 系統(tǒng)調(diào)試1.加熱水量與加熱器
12、的功率確定加熱器水量與功率應(yīng)當(dāng)構(gòu)成匹配,加熱水量過(guò)多或功率過(guò)小會(huì)導(dǎo)致加熱時(shí)間過(guò)長(zhǎng),而加熱水量過(guò)少或功率過(guò)大會(huì)使超調(diào)增大,不利于把握。我們選擇1L的容器作為測(cè)試對(duì)象,估計(jì)將20攝氏度的水加熱到100攝氏度需要5分鐘。經(jīng)過(guò)計(jì)算這樣的加熱器功率至少為1120w,因此選擇1000w的加熱管。滿足1L的容器很多,但是廣口的盆水位較低,不利于加熱管的安放。經(jīng)過(guò)努力,找到了合適的容器(實(shí)物見(jiàn)附件),恰能使得加熱棒處于最為合適的水位深度。2.上下層溫差的優(yōu)化和電動(dòng)機(jī)電源的選擇電動(dòng)機(jī)本不在設(shè)計(jì)的范圍里面,但是隨著系統(tǒng)調(diào)試的進(jìn)行,發(fā)覺(jué)容器中的的水很難實(shí)現(xiàn)熱均勻。容器中上下層溫差過(guò)大,導(dǎo)致溫度傳感器所測(cè)數(shù)據(jù)極不精確
13、,滯后過(guò)大,格外不利于把握。所以又添加一個(gè)直流減速電機(jī)帶動(dòng)槳葉加速冷熱水對(duì)流,從而讓容器里面的水受熱均勻,便利測(cè)溫模塊對(duì)系統(tǒng)水溫的實(shí)時(shí)監(jiān)測(cè)。這一額外的電動(dòng)機(jī)沒(méi)有在事先考慮的器件電氣匹配范圍內(nèi),所以當(dāng)它與加熱模塊一同共用5v的直流電源時(shí),已超出了整流模塊所能供應(yīng)的最大電流,于是又添加了一個(gè)電源給電動(dòng)機(jī)供電。3. PID程序的修改調(diào)試當(dāng)實(shí)際水溫與目標(biāo)值差距過(guò)大時(shí),加熱器只需滿功率工作(或完全停止工作)即可滿足要求。此時(shí)接受PID把握意義不大,且PID把握范圍很大,參數(shù)很難整定,而微分環(huán)節(jié)也簡(jiǎn)潔受到干擾導(dǎo)致加熱器無(wú)法滿功率運(yùn)行。因此,在滿足把握精度的前提下,可將PID把握的范圍縮小到設(shè)定溫度的
14、77;1之內(nèi)。范圍縮小后,PID參數(shù)簡(jiǎn)潔調(diào)整,把握效果明顯增加。經(jīng)過(guò)調(diào)試后PID參數(shù)分別為Proportion = 10,Integral = 8,Derivative =6。4.PWM波周期的調(diào)試PWM波的周期越短,把握的精度越高。但PWM波形的輸出需要單片機(jī)中斷程序進(jìn)行把握,中斷頻率過(guò)高會(huì)干擾單片機(jī)中主程序的運(yùn)行。測(cè)溫模塊18B50對(duì)時(shí)間的要求格外嚴(yán)格,因此測(cè)溫模塊讀取數(shù)據(jù)期間會(huì)與中斷程序沖突。若18B20讀數(shù)期間允許中斷中斷會(huì)導(dǎo)致其溫度輸出消滅大量錯(cuò)誤;若不允許中斷會(huì)導(dǎo)致PWM波周期頻繁變化。經(jīng)過(guò)調(diào)試,將PWM波周期設(shè)為5s。七、 數(shù)據(jù)測(cè)試與處理1.靜態(tài)溫度的測(cè)試室溫狀態(tài)下,分別用溫度計(jì)
15、與18B20傳感器檢測(cè)水溫,得到結(jié)果分別為。溫度計(jì)顯示17.5,18B20傳感器顯示溫度17.9,在誤差允許的范圍內(nèi),滿足要求。2.動(dòng)態(tài)溫度的測(cè)試:令測(cè)溫系統(tǒng)工作,對(duì)1.5L凈水加熱,設(shè)定溫度分別為50,60, 80,每10s記錄一次顯示屏幕上的數(shù)據(jù),繪制其溫度變化曲線,并計(jì)算溫度把握的超調(diào)量,穩(wěn)態(tài)誤差。溫度數(shù)據(jù)及曲線如下:(1) 目標(biāo)溫度50度:時(shí)間(10s)01234567溫度()303030.130.531.13232.733.5時(shí)間(10s)89101112151718溫度()34.535.336.137.138.140.642.343.2時(shí)間(10s)1920212324252627
16、溫度()44.14545.847.648.449.149.750.8時(shí)間(10s)2829303132333435溫度()51.251.651.851.851.851.851.851.7時(shí)間(10s)3639404346515457溫度()51.651.351.150.850.650.550.350.1時(shí)間(10s)6063646668697072溫度()5049.849.950.150.550.750.750.7時(shí)間(10s)7578818487889091溫度()50.550.450.250.149.949.85050時(shí)間(10s)92溫度()50超調(diào)量為3.6%(2) 目標(biāo)溫度60度:時(shí)
17、間(10s)01234567溫度()5050.551.151.852.653.554.155時(shí)間(10s)89101112131415溫度()55.856.657.558.358.959.860.361.2時(shí)間(10s)1617181920212427溫度()61.561.661.661.661.561.461.160.8時(shí)間(10s)3032333436374041溫度()60.460.260.16059.86060.260.3時(shí)間(10s)4245474850525354溫度()60.360.2606059.859.960.160.3時(shí)間(10s)5657溫度()60.460.3超調(diào)量為2
18、.5%(3) 目標(biāo)溫度80度:時(shí)間(10s)01234567溫度()6060.861.462.162.863.764.565.3時(shí)間(10s)89101112131516.5溫度()66.166.867.668.369.170.371.372.4時(shí)間(10s)1819212223242526溫度()73.574.375.676.47777.778.478.9時(shí)間(10s)2728293031323334溫度()79.580.180.380.580.580.380.280.1時(shí)間(10s)35363738.539404142溫度()79.879.679.479.379.379.379.479.4
19、時(shí)間(10s)4344454647484950溫度()79.579.679.779.879.9808079.9時(shí)間(10s)5152535455565758溫度()79.779.679.679.679.779.779.880時(shí)間(10s)5960616263溫度()80.180808080超調(diào)量為0.6%由以上溫度曲線可以看出,水溫能夠保持在設(shè)定溫度上下,把握過(guò)程中超調(diào)量<4%,且穩(wěn)態(tài)時(shí)的誤差在為±0.3,滿足系統(tǒng)設(shè)計(jì)要求。八、 設(shè)計(jì)總結(jié)通過(guò)本次應(yīng)用系統(tǒng)設(shè)計(jì),在很大程度上提高了我們的獨(dú)立思考、分析推斷以及動(dòng)手實(shí)踐力量,也對(duì)系統(tǒng)設(shè)計(jì)過(guò)程以及設(shè)計(jì)過(guò)程中應(yīng)留意的問(wèn)題有了初步的生疏,加
20、深了我們對(duì)所學(xué)學(xué)問(wèn)的理解。出于對(duì)自身學(xué)問(wèn)及可獵取的學(xué)習(xí)資源的考慮,我組本次電子綜合設(shè)計(jì)的選題最終定為水溫自動(dòng)把握系統(tǒng)的設(shè)計(jì),該題目為往年電設(shè)題目,參考資料較易獵取且基本未超出我們現(xiàn)把握的學(xué)問(wèn)水平。在參考了書(shū)本及網(wǎng)絡(luò)上的設(shè)計(jì)思想之后,我們確定了該系統(tǒng)的設(shè)計(jì)方案初稿,并爭(zhēng)辯了設(shè)計(jì)方案的可行性。爭(zhēng)辯確定出試驗(yàn)所需器材以及組員的分工,由一名組員進(jìn)行程序的編寫(xiě),另外兩名組員進(jìn)行硬件電路的焊接及調(diào)試。經(jīng)過(guò)幾次檢查、調(diào)試以及修改之后,基本實(shí)現(xiàn)了本次設(shè)計(jì)的部分預(yù)期目標(biāo):可通過(guò)LCD顯示屏顯示溫度目標(biāo)值與實(shí)時(shí)溫度,可以通過(guò)鍵盤(pán)調(diào)整目標(biāo)溫度的數(shù)值等功能。在系統(tǒng)調(diào)試過(guò)程中,遇到一些問(wèn)題:1.由于一開(kāi)頭沒(méi)有估量好器件
21、占用的空間,所購(gòu)萬(wàn)用板太小,無(wú)法滿足試驗(yàn)要求,之后又換用了一個(gè)較大的萬(wàn)用板。在最小系統(tǒng)焊接完成后,由于沒(méi)有搞清楚按鍵的內(nèi)部接線,使單片機(jī)始終處于復(fù)位狀態(tài),無(wú)法正常工作,后用萬(wàn)用表排查出該錯(cuò)誤。2.在加熱把握器件的選擇上花費(fèi)了較多精力,開(kāi)頭的設(shè)計(jì)方案是用光電耦合器協(xié)作雙向晶閘管利用PWM波把握加熱功率來(lái)實(shí)現(xiàn)溫度的穩(wěn)定,但在硬件試驗(yàn)時(shí)發(fā)覺(jué)把握導(dǎo)通無(wú)法實(shí)現(xiàn),且電壓、電流余量有限,不能滿足設(shè)計(jì)要求。便換用了固態(tài)繼電器協(xié)作三極管來(lái)實(shí)現(xiàn)功率把握。3.在完成基本功能后,發(fā)覺(jué)由于水溫分布不均勻,溫度傳感器無(wú)法準(zhǔn)時(shí)檢測(cè)到水溫變化以轉(zhuǎn)變加熱功率,減小超調(diào)量,又在原系統(tǒng)中增加了電機(jī)攪拌器以使水溫分布均勻。4. 在P
22、ID參數(shù)整定中,發(fā)覺(jué)初始的PID算法過(guò)于簡(jiǎn)潔,造成被控變量誤差與穩(wěn)定性均較差。一般的位置PID算法很難滿足水溫把握系統(tǒng)的要求。查閱資料后,縮小了PID把握的范圍,在滿足把握精度的前提下,溫控范圍縮小到設(shè)定溫度的±1之內(nèi)。范圍縮小后,PID參數(shù)簡(jiǎn)潔調(diào)整,把握效果明顯增加。這些問(wèn)題的解決掛念我們?nèi)诤纤鶎W(xué)的學(xué)問(wèn),極大提高了我們動(dòng)手力量。通過(guò)對(duì)本設(shè)計(jì)的反思總結(jié),加深了對(duì)機(jī)械,單片機(jī),自動(dòng)把握等多方面學(xué)問(wèn)的理解,也激發(fā)了我們對(duì)電子設(shè)計(jì)的極大愛(ài)好,這對(duì)我們以后的學(xué)習(xí)生活有著格外重要的作用。 九、 參考文獻(xiàn)1.劉海成.AVR單片機(jī)原理及測(cè)控工程應(yīng)用 .北京航空航天高校出版社2.周潤(rùn)景 劉曉霞.單片
23、機(jī)有用系統(tǒng)設(shè)計(jì)與仿真經(jīng)典實(shí)例.電子工業(yè)出版社3.謝維成 楊加國(guó).單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì).清華高校出版社4.高校生電子設(shè)計(jì)競(jìng)賽組委會(huì).第五屆全國(guó)電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品選編.北京理工高校出版社5.黃志偉 全國(guó)高校生電子設(shè)計(jì)競(jìng)賽系統(tǒng)設(shè)計(jì)。北京航空航天出版社6.51黑電子論壇 十、 附錄1. 電路原理圖2.程序#include <REG52.H>#include<intrins.h>#include<math.h>#include<string.h>#define uchar unsigned char#define uint unsigned
24、intsbit DQ =P27; /定義端口sbit RS=P25;sbit RW=P24;sbit EN=P23;sbit output=P20;sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P03;uchar flag;/flag為溫度值的正負(fù)號(hào)標(biāo)志單元uchar c2;/18b20的直接輸出量 uint cc,cc2;/變量cc為18b20輸出量的直接計(jì)算值,cc2為放大100倍溫度值 float cc1;/cc1為溫度值uchar buff110="Set temp: "/1602屏顯示uchar buff2
25、10="Cur temp: "/1602屏顯示uchar set_c2='5','0'/用于溫度設(shè)置及1602屏顯示uchar buff36="+00.0 "/1602屏顯示uchar temper,set_temper=50;/temper用于PID的測(cè)量值(整數(shù)),set_temper用于PID參考值uint s;/PID的測(cè)量值(小數(shù))struct PID unsigned int SetPoint; / 設(shè)定目標(biāo) unsigned int Proportion; / 比例常數(shù) unsigned int Integr
26、al; / 積分常數(shù) unsigned int Derivative; / 微分常數(shù) unsigned int LastError; / Error-1unsigned int PrevError; / Error-2unsigned int SumError; / Sums of Errors;struct PID spid; / 創(chuàng)建PID結(jié)構(gòu)uint rout; / PID Outputuint rin; / PID Inputunsigned char high_time,low_time,count=0;/占空比調(diào)整參數(shù)void delay(uint useconds) /延時(shí)程序
27、for(;useconds>0;useconds-);uchar ow_reset(void) /復(fù)位(18B20) uchar presence; DQ = 0; / DQ 低電平 delay(50); / 480ms DQ = 1; / DQ 高電平 delay(3); / 等待 presence = DQ; / presence 信號(hào) delay(25); return(presence); / 0允許, 1禁止 uchar read_byte(void) /從單總線上讀取一個(gè)字節(jié)(18B20) uchar i; uchar value = 0; for (i=8;i>0;i
28、-) value>>=1; DQ = 0; DQ = 1; delay(1); if(DQ)value|=0x80; delay(6); return(value);void write_byte(uchar val) /向單總線上寫(xiě)一個(gè)字節(jié)(18B20) uchar i; for (i=8; i>0; i-) / 一次寫(xiě)一位 DQ = 0; DQ = val&0x01; delay(5); DQ = 1; val=val/2; delay(5);void Read_Temperature(void) /讀取溫度(18B20) ow_reset(); write_by
29、te(0xCC); / 跳過(guò) ROM write_byte(0xBE); / 讀 c1=read_byte();/低字節(jié) c0=read_byte();/高字節(jié) ow_reset(); write_byte(0xCC); write_byte(0x44); / 再次開(kāi)頭 cc=c0*256.0+c1;/ 18b20輸出量的直接計(jì)算值 if (c0>0xf8) flag=1;cc=cc+1;else flag=0; cc1=cc*0.0625; /計(jì)算出溫度值 cc2=cc1*100;/溫度值放大100倍,放在整型變量中便于取數(shù)字c0=(c0<<4)&0x7f; s=(
30、unsigned int)(c1&0x0f); s=(s*100)/16;/溫度值小數(shù)部分 c1=c1>>4; temper=c0|c1;/溫度值整數(shù)部分delay(1000);/用于PID的測(cè)量溫度值 return;void fbusy()/檢查忙函數(shù)(1602)P1 = 0xff;RS = 0;RW = 1;EN = 1;EN = 0;while(P1 & 0x80)EN = 0;EN = 1;void wc51r(uchar j)/寫(xiě)命令函數(shù)(1602) fbusy();EN = 0;RS = 0;RW = 0;EN = 1;P1 = j;EN = 0;voi
31、d wc51ddr(uchar j)/寫(xiě)數(shù)據(jù)函數(shù)(1602) fbusy();/讀狀態(tài);EN = 0;RS = 1;RW = 0;EN = 1;P1 = j;EN = 0;void init()/1602初始化wc51r(0x01); /清屏wc51r(0x38); /使用8位數(shù)據(jù),顯示兩行,使用5*7的字型wc51r(0x0c); /顯示器開(kāi),光標(biāo)開(kāi),字符不閃爍wc51r(0x06); /字符不動(dòng),光標(biāo)自動(dòng)右移一格void display(void) /1602顯示程序1(初始化顯示)uchar k;delay(10); init();wc51r(0x80); /寫(xiě)入顯示緩沖區(qū)起始地址為第1
32、行第1列for (k=0;k<10;k+)/第一行顯示提示信息"Set temp:" wc51ddr(buff1k);for (k=0;k<2;k+) wc51ddr(set_ck);/顯示設(shè)定的溫度wc51r(0xc0); /寫(xiě)入顯示緩沖區(qū)起始地址為第2行第1列for (k=0;k<10;k+) /其次行顯示提示信息"Cur temp:" wc51ddr(buff2k); buff31=cc2/1000+0x30; if ( buff31=0x30) buff31=0x20;/取出十位,轉(zhuǎn)換成字符,假如十位是0不顯示。 buff32=
33、cc2/100%10+0x30;/取出個(gè)位,轉(zhuǎn)換成字符 buff34=cc2/10%10+0x30;/取出小數(shù)點(diǎn)后一位,轉(zhuǎn)換成字符 if (flag=1) buff30='-'else buff30='+' for (k=0;k<6;k+)/其次行顯示溫度 wc51ddr(buff3k); void display2(void) /1602顯示程序2(循環(huán)顯示)uchar k;delay(10);wc51r(0xca);buff31=cc2/1000+0x30;if ( buff31=0x30) buff31=0x20;/取出十位,轉(zhuǎn)換成字符,假如十位是0
34、不顯示。 buff32=cc2/100%10+0x30;/取出個(gè)位,轉(zhuǎn)換成字符 buff34=cc2/10%10+0x30;/取出小數(shù)點(diǎn)后一位,轉(zhuǎn)換成字符 if (flag=1) buff30='-'else buff30='+' for (k=0;k<6;k+)/其次行顯示溫度 wc51ddr(buff3k);uchar scan_key()/鍵盤(pán)檢測(cè)程序,16個(gè)按鍵輸出序號(hào)116uchar set_num=0;uchar dushu,dushu1;P0=0xff;P0_0=0;/掃描第一行dushu=P0;dushu=dushu&0xf0;if
35、(dushu!=0xf0)delay(900);dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)dushu1=dushu;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;delay(900);dushu=P0;dushu=dushu&0xf0;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;if(dushu1=0xe0)set_num=1;else if(dushu1=0xd0)set_num=2;else if(dushu1=0xb0)set_nu
36、m=3;else if(dushu1=0x70)set_num=4;P0_0=1;delay(900);P0_1=0;/掃描其次行dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)delay(900);dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)dushu1=dushu;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;delay(900);dushu=P0;dushu=dushu&0xf0;while(dushu!=0xf0)dushu=P0;dushu
37、=dushu&0xf0;if(dushu1=0xe0)set_num=5;else if(dushu1=0xd0)set_num=6;else if(dushu1=0xb0)set_num=7;else if(dushu1=0x70)set_num=8;P0_1=1;P0_2=0;/掃描第三行dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)delay(900);dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)dushu1=dushu;while(dushu!=0xf0)dushu=P0;dushu=du
38、shu&0xf0;delay(900);dushu=P0;dushu=dushu&0xf0;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;if(dushu1=0xe0)set_num=9;else if(dushu1=0xd0)set_num=10;else if(dushu1=0xb0)set_num=11;else if(dushu1=0x70)set_num=12;P0_2=1;delay(900);P0_3=0;/掃描第四行dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)dela
39、y(900);dushu=P0;dushu=dushu&0xf0;if(dushu!=0xf0)dushu1=dushu;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;delay(900);dushu=P0;dushu=dushu&0xf0;while(dushu!=0xf0)dushu=P0;dushu=dushu&0xf0;if(dushu1=0xe0)set_num=13;else if(dushu1=0xd0)set_num=14;else if(dushu1=0xb0)set_num=15;else if(du
40、shu1=0x70)set_num=16;P0_3=1;delay(900);return set_num;void PIDInit (struct PID *pp)/PID結(jié)構(gòu)體空間安排 memset ( pp,0,sizeof(struct PID);unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )/PID計(jì)算部分unsigned int dError,Error;Error = pp->SetPoint - NextPoint; / 偏差pp->SumError += Error; / 積分dErro
41、r = pp->LastError - pp->PrevError; / 當(dāng)前微分pp->PrevError = pp->LastError;pp->LastError = Error;return (pp->Proportion * Error / 比例項(xiàng)+ pp->Integral * pp->SumError / 積分項(xiàng)+ pp->Derivative * dError); / 微分項(xiàng)compare_temper()/溫度比較處理程序 unsigned char i; if(set_temper>temper) if(set_temper-temper>1) high_time=100; low_time=0; else for(i=0;i<10;i+) Read_Temperature(); rin = s; / Read Input rout = PIDCalc ( &spid,rin ); / Perform PID Interation if (high_time<=100) high_time=(unsigned char)(rout/800); else high_time=100; low_time= (100-high_time); else if(set_temper&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- XX銀行會(huì)計(jì)主管年終總結(jié)報(bào)告-會(huì)計(jì)主管年終總結(jié)
- 2024-2025學(xué)年浙江省溫州市高二上冊(cè)10月月考數(shù)學(xué)質(zhì)量檢測(cè)試題合集2套(含解析)
- 2024-2025學(xué)年江蘇省南通市如皋市高一上冊(cè)第一次月考數(shù)學(xué)質(zhì)量檢測(cè)試題(含解析)
- 書(shū)籍制作合同范例
- 合同范例范例采購(gòu)方案
- 個(gè)人木工合同范例
- 保潔兼職用工合同范例
- 京東開(kāi)店商標(biāo)授權(quán)合同范例
- 公司生產(chǎn)崗位勞務(wù)合同范本
- 合同范例要規(guī)范
- 金蝶云星空操作手冊(cè)V3
- 醫(yī)療衛(wèi)生中心社會(huì)效益與經(jīng)濟(jì)效益分析
- 3月3號(hào)全國(guó)愛(ài)耳日-保護(hù)耳朵課件
- 2025年遼寧裝備制造職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)(網(wǎng)校專用)
- 2025國(guó)家電投集團(tuán)資本控股限公司本部招聘11人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 安全生產(chǎn)風(fēng)險(xiǎn)防控“六項(xiàng)機(jī)制”做法及經(jīng)驗(yàn)分享
- 2025年湖南中醫(yī)藥高等專科學(xué)校高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024新版人教PEP英語(yǔ)(2025春)七年級(jí)下冊(cè)教學(xué)課件:Unit2 Reading Plus
- 水利工程施工監(jiān)理規(guī)范(SL288-2014)用表填表說(shuō)明及示例
- 2025數(shù)學(xué)步步高大一輪復(fù)習(xí)講義人教A版復(fù)習(xí)講義含答案
- 《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》第1章計(jì)算機(jī)網(wǎng)絡(luò)概論
評(píng)論
0/150
提交評(píng)論