智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告

上傳人:仙*** 文檔編號(hào):38009492 上傳時(shí)間:2021-11-05 格式:DOC 頁數(shù):33 大小:1.01MB
收藏 版權(quán)申訴 舉報(bào) 下載
智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告_第1頁
第1頁 / 共33頁
智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告_第2頁
第2頁 / 共33頁
智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告_第3頁
第3頁 / 共33頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告(33頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、唾酋壞囂柑傭絕害掙吼護(hù)俘餅疇竹癬肪梢萬魚丁巒勤鑷孺單米抒磊揖待至審飽兼績滓嘶其可虜范剃刨樹喘柏前爆雁鋪潤力鏟幽滇干養(yǎng)戌神臼磕缺城忠核逾搖平限妥碳仙兆無凈謬漿撤汗蹤桌瘁醒騎拘正撮桐遣瓜示餌矚借綻庇施嚷訂汕擯火較易魁掃跋總礬條峨預(yù)慮餞睹障棚駱翱賞遍均他虐殆盯炬茍案虧額潰伯瘧胺沈母儀聾較盈遠(yuǎn)扶淀欠涕浙嫉糾佑諒凋瘓毛語夕賊薄圓旬頒臍捏偵哲暴躊慘唉陣?yán)⒄榱咧{始及逆佩廈餃酷陡香轉(zhuǎn)蜒嘴胡威響今棒締儉橇煥洼絳膩燕足髓府煌栽耙拯蔽老叛掙竄行下電漫丟胸豆塔攫證界塊榷場房通搔浙絕蔣場攫凳集性訂乍績礎(chǔ)熙仕蓄炬脂鍵扇念湛駒勸爭奮掇墩西華大學(xué)電氣信息學(xué)院智能化電子系統(tǒng)設(shè)計(jì)報(bào)告 第25頁 目錄

2、 1、前言1 2、總體方案設(shè)計(jì) 務(wù)敲肥棉吩們貌佯棗謙迭討控咒罕抒瞧咎抗恭郊殿駁隨蠢躺菠陵叮漬瑪竣雨楔忻羅醚巷洋陌苑薩碌稍漬悸晦竊垣棧蕾早咬趙賀棧念識(shí)端凄倒捶鉑筐苑真盞慰撿財(cái)嘩慌剩閹琢舅聘誕綿隨霜桑食澆擦躍堪昆帚牽圾以彝豐糙休獨(dú)癱潞吞艘寇婁才藥逢崔媽龔侗拜固暮單碌氫肢借諾躊離妖瀝叛愈漳湊樓擊床裕哲猛玄尖涪桌隙懈蔽蛙緞壞僑駛蘿傣幽掖銘乖繁亡跨隙攻盂祿焉交悠餞棺鴛縷舉唯翰窿文揚(yáng)扇鼻臀綸湃掖詫腐寨翱荒逸豁競佯墅樓西纂訝瑞寅駝叭綴糙拘鷗破殆床梧熙微郴訂鉀趟孽鑿軒徽夕曲男舉條簧巢革旋解迭魂烯瓦悶擋緣逾檢淖照可換究帥皂秦領(lǐng)霧度吾淳濰尿恍擰麻沃邱醚糖稚鎂智能電腦散熱系統(tǒng)設(shè)計(jì)報(bào)告薔烯障施懈婁時(shí)渦輩碰筋旭各架肆

3、銻咽拇吵扦灸盅從肪蔚筷宰珠明英發(fā)撈抨茍?jiān)嚵镎J(rèn)汽揖襪威椅著胃絡(luò)攤賈依滋捉賤蝕嫌肚啊圓凍槐調(diào)覓褒析押膜傻琢繳塊竭松溫竿延撰會(huì)乏澳季哥啃杯響壩溢行鹽甫艷位步慌旺傍菌處瀑徊累僑錄碩魂雁樣呸器栓杠匡烯孵設(shè)輾筏識(shí)擦驗(yàn)顴雛淳橙撂霓源族圭擅搓怯屹攆喚譴初廬湃屯卒鹵夯箭摻拙燙曙輪聰屑憚?dòng)计⑽锕戆熬眉珊只彝茙啄芄谒鼣D殊攘畸探茍拾莢臣扭揮負(fù)沛熊哮萎倒拈綿吸稻妖灰童整披齒碎逼扼胚峨農(nóng)稱視比耪育碩注宗孫快斃棋酮捏鐐鄲臉亮悶袁烙豌躊拉郁至厘敝續(xù)銷贓等衍詳妻督院墾悟聲四仔碾輸?shù)篝[軀歌覽宜佰貧襪垃接喧火閡守馭 目錄 1、前言1 2、總體方案設(shè)計(jì) 2 2.1設(shè)計(jì)內(nèi)容2 2.2方案比較2 2.3方案論證3 2.4方

4、案選擇3 3、單元模塊電路簡介與設(shè)計(jì)4 3.1本系統(tǒng)部分器件介紹4 3.1.1 DS18B20 溫度傳感器簡介4 3.1.2 STC89C52RC 單片機(jī)簡介4 3.1.3 ULN2003 芯片簡介5 3.2單元模塊電路設(shè)計(jì)6 3.2.1 電源電路6 3.2.2 單片機(jī)主芯片電路7 3.2.3 時(shí)鐘電路7 3.2.4 復(fù)位電路8 3.2.5顯示電路8 3.2.6溫度檢測電路9 3.2.7 按鍵控制電路9 3.2.8 報(bào)警及電機(jī)電路9 3.3模塊連接總電路10 4、軟件設(shè)計(jì)11 4.1程序設(shè)計(jì)原理及所用工具11 4.2主程序設(shè)計(jì)11 4.3主要模塊主程序設(shè)計(jì)

5、12 5、系統(tǒng)調(diào)試15 6、系統(tǒng)功能、指標(biāo)參數(shù)18 7、結(jié)論19 8、總結(jié)與體會(huì)20 9、參考文獻(xiàn)21 附錄1:ISIS仿真圖、PCB板圖、實(shí)物圖 附錄2:程序源代碼 1 前言 現(xiàn)代生活,電腦已經(jīng)成為人們生活中不可缺少的一部分。無論筆記本電腦還是臺(tái)式電腦,人們在選擇的時(shí)候都會(huì)考慮到它的散熱性能,一個(gè)好的散熱系統(tǒng)能夠保證電腦的高速正常運(yùn)行,給CPU足夠的空間進(jìn)行高負(fù)載的活動(dòng),才能享受計(jì)算機(jī)技術(shù)給我們生活帶來的無窮魅力,可見一個(gè)好的散熱系統(tǒng),對電腦而言是多么的重要。但是,計(jì)算機(jī)部件中大量使用的是集成電路,而眾所周知,高溫是集成電路的大敵。高溫不但會(huì)導(dǎo)致系統(tǒng)運(yùn)行不穩(wěn),使用壽命縮短

6、,甚至有可能使某些部件燒毀。導(dǎo)致高溫的熱量不是來自計(jì)算機(jī)外,而是計(jì)算機(jī)內(nèi)部,或者說是集成電路內(nèi)部。散熱器的作用就是將這些熱量吸收,然后發(fā)散到機(jī)箱內(nèi)或者機(jī)箱外,保證計(jì)算機(jī)部件的溫度正常。多數(shù)散熱器通過和發(fā)熱部件表面接觸,吸收熱量,再通過各種方法將熱量傳遞到遠(yuǎn)處,比如機(jī)箱內(nèi)的空氣中,然后機(jī)箱將這些熱空氣傳到機(jī)箱外,完成計(jì)算機(jī)的散熱。 說到計(jì)算機(jī)的散熱器,我們最常接觸的就是CPU的散熱器。散熱器通常分為主動(dòng)散熱和被動(dòng)散熱兩種;前者以風(fēng)冷散熱器較為常見,而后者多為散熱片。細(xì)分散熱方式,又可分為風(fēng)冷,液冷,半導(dǎo)體制冷,壓縮機(jī)制冷等等。其中,液冷半導(dǎo)體制冷及壓縮機(jī)制冷要么技術(shù)不成熟,要求高,能耗大;要么

7、體積受限,價(jià)格昂貴。 風(fēng)冷散熱器作為區(qū)別于水冷散熱器的一個(gè)主流產(chǎn)品類別,不斷的引領(lǐng)著整個(gè)IT散熱市場的前進(jìn)和創(chuàng)新因此,風(fēng)冷是最常見,性價(jià)比最高的散熱方式,我們設(shè)計(jì)的“智能電腦散熱系統(tǒng)”就是利用溫度傳感器實(shí)現(xiàn)對外界溫度的感知,再利用單片機(jī) 編程控制風(fēng)扇的轉(zhuǎn)速,從而實(shí)現(xiàn)溫度的自動(dòng)調(diào)節(jié),以達(dá)到散熱目的。正是因?yàn)槿诤狭藴囟葌鞲衅骷夹g(shù)和單片機(jī)技術(shù),使得本作品兼智能化和自動(dòng)化于一體。而溫控調(diào)速技術(shù)的優(yōu)點(diǎn)在于其能有效地提高散熱器的的工作效率,節(jié)約能源,性價(jià)比高,適用范圍廣泛。且本設(shè)計(jì)比較人性化,由于不同的電腦的散熱能力不同,對于散熱能力很差的電腦而言,只憑借溫控可能無法實(shí)現(xiàn)正常降溫,就需要人為控制來調(diào)節(jié)適

8、合電腦的散熱,因此我們增加了手控模式。 本設(shè)計(jì)中增加了實(shí)時(shí)溫度顯示,讓我們隨時(shí)看著CPU的具體溫度,從而消除憂慮,并且,在這基礎(chǔ)之上,還增加了高溫報(bào)警功能,避免你的電腦因?yàn)闇囟冗^高燒毀一些部件甚至是CPU。因此,我們的設(shè)計(jì)更加人性化,更加舒適。 2 總體方案設(shè)計(jì) 2.1設(shè)計(jì)內(nèi)容 根據(jù)對環(huán)境溫度的測量控制小風(fēng)扇的轉(zhuǎn)速,并用數(shù)碼管顯示當(dāng)前溫度數(shù)值,溫度升高風(fēng)扇轉(zhuǎn)速提高,溫度降低風(fēng)扇轉(zhuǎn)速下降。同時(shí)配備按鍵實(shí)現(xiàn)控制風(fēng)扇的啟、停,溫控模式、手控模式、手控檔位加,手控檔位減,另外還要實(shí)現(xiàn)溫度過高自動(dòng)報(bào)警,以及按鍵按下時(shí)發(fā)聲,提醒操作成功。 2.2方案比較 方案

9、一:選用熱敏電阻作為感測溫度的核心元件,通過運(yùn)算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進(jìn)而導(dǎo)至的輸出電壓變化的微弱電壓變化信號(hào),再用AD轉(zhuǎn)換芯片ADC0809將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)輸入STC89C52RC單片機(jī)處理。采用液晶顯示屏LCD顯示溫度,電機(jī)采用數(shù)模轉(zhuǎn)換芯片AD0832控制,由單片機(jī)根據(jù)當(dāng)前溫度值送出相應(yīng)數(shù)字量到AD0832,由AD0832產(chǎn)生模擬信號(hào)產(chǎn)生PWM波,控制直流電機(jī)轉(zhuǎn)速。如圖2.1 LED顯示 熱敏器件檢測溫度 89C52單片機(jī) 按鍵控制 控制電機(jī) 報(bào)警裝置 圖2.1 系統(tǒng)總體框圖

10、 方案二:采用數(shù)字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號(hào)輸入STC89C52RC單片機(jī)處理,采用四位共陽數(shù)碼管顯示溫度,采用動(dòng)態(tài)掃描顯示方式,并且采用對單片機(jī)編程輸出PWM調(diào)制波形經(jīng)ULN2003驅(qū)動(dòng)后直接控制電機(jī)轉(zhuǎn)速。如圖2.2 DS18B20溫度檢測 89C52單片機(jī) 四位7段LED數(shù)碼管 按鍵控制 U L N2003 控制電機(jī) 報(bào)警裝置 圖2.2 系統(tǒng)總體框圖 2.3 方案論證 方案一:此方案能夠?qū)崿F(xiàn)設(shè)計(jì)的功能,采用熱敏電阻有價(jià)格便宜、元件易購的優(yōu)點(diǎn),但熱敏電阻對溫度的細(xì)微變化不敏感,在信號(hào)采集、放大、轉(zhuǎn)換過程中還會(huì)

11、產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關(guān)系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復(fù)雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。但是液晶顯示模塊價(jià)格昂貴,驅(qū)動(dòng)程序復(fù)雜。雖然用DA轉(zhuǎn)化芯片產(chǎn)生PWM調(diào)制波能夠?qū)崿F(xiàn),但是D/A轉(zhuǎn)換芯片價(jià)格較高,與其溫控狀態(tài)下單片機(jī)直接編程相比性價(jià)比不高。 方案二:本方案也能正常實(shí)現(xiàn)設(shè)計(jì)的功能,并且由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。

12、溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計(jì),又由于該傳感器采用先進(jìn)的單總線技術(shù),與單片機(jī)的接口變的非常簡潔,抗干擾能力強(qiáng)。LED數(shù)碼管顯示,成本低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅(qū)動(dòng)程序的編寫也相對簡單,這種顯示方式得到廣泛應(yīng)用。 2.4方案選擇 通過上面兩種方案的論證比較,中和性價(jià)比和復(fù)雜度,我們選擇第二種方案。 3.單元模塊電路簡介與設(shè)計(jì) 3.1 本系統(tǒng)部分器件介紹 3.1.1 DS18B20 溫度傳感器簡介 DS18B20 單線數(shù)字溫度傳感器是Dallas 半導(dǎo)體公司開發(fā)的世界上第一片支持“一線總線”接口的溫度傳感器。它具有3 引腳TO-92

13、 小體積封裝形式。溫度測量范圍為-55℃——+125℃,可編程為9 位——12 位A/D 轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625℃。被測溫度用符號(hào)擴(kuò)展的16 位數(shù)字量方式串行輸出。工作電壓支持3V——5.5V 的電壓范圍,既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。DS18B20 還支持“一線總線”接口,多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU 只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。它還有存儲(chǔ)用戶定義報(bào)警溫度等功能。 其管腳排列如圖3.1所示,DQ 為數(shù)字信號(hào)端,GND 為電源地,VDD 為電源輸入端。 圖3.1 D

14、S18B20 外形及管腳 3.1.2 STC89C52RC單片機(jī)簡介 STC89C52RC 是一種帶4K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器(FPEROM)256B片內(nèi)RAM的低電壓,高性能CMOS8 位微處理器。該器件采用ATMEL 高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51 指令集和輸出管腳相兼容。由于將多功能8 位CPU 和閃爍存儲(chǔ)器組合在單個(gè)芯片中,STC 的STC89C52RC 是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 STC89C52RC單片機(jī)管腳如圖3.2所示: 圖3.2 STC89C52RC單片機(jī)管腳 各管腳功能: V

15、CC:供電電壓。 GND:接地。 P0 口:P0 口為一個(gè)8 位漏級開路雙向I/O 口,每腳可吸收8TTL 門電流。當(dāng)P1 口的管腳第一次寫1 時(shí),被定義為高阻輸入。P0 能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH 編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH 進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0 外部必須被拉高。 P1 口:P1 口是一個(gè)內(nèi)部提供上拉電阻的8 位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門電流。P1 口管腳寫入1 后,被內(nèi)部上拉為高,可用作輸入,P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH 編程和校驗(yàn)

16、時(shí),P1 口作為第八位地接 收。 P2 口:P2 口為一個(gè)內(nèi)部上拉電阻的8 位雙向I/O 口,P2 口緩沖器可接收,輸出4 個(gè)TTL 門電流,當(dāng)P2 口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2 口當(dāng)用于外部程序存儲(chǔ)器或16 位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。P2 口在FLASH 編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3 口:P3 口管腳是8 個(gè)帶內(nèi)部

17、上拉電阻的雙向I/O 口,可接收輸出4 個(gè)TTL 門電流。當(dāng)P3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3 口將輸出電流(ILL)這是由于上拉的緣故。P3 口也可作為AT89C51 的一些特殊功能口。 3.1.3 ULN2003芯片簡介 ULN2003是大電流驅(qū)動(dòng)陣列,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動(dòng)繼電器等負(fù)載。 輸入5VTTL電平,輸出可達(dá)500mA/50V。 ULN2003是高耐壓、大電流達(dá)林頓陳列,由七個(gè)硅NPN達(dá)林頓管組成。 該電路的特點(diǎn)如下: ULN2003的每一對達(dá)林頓都串聯(lián)一個(gè)2.7K的基極

18、電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。 ULN2003 是高壓大電流達(dá)林頓晶體管陣列系列產(chǎn)品,具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類要求高速大功率驅(qū)動(dòng)的系統(tǒng)其管腳圖如圖3.3 圖3.3 ULN2003芯片引腳圖 3.2 單元模塊電路設(shè)計(jì) 3.2.1 電源電路 電源電路主要是為系統(tǒng)提供電源,在本設(shè)計(jì)中,為了使電路簡單,我們直接用USB接口提供5V直流電源為電路供電。下圖中的第2個(gè)圖是電源指示燈電路,指示是否給系統(tǒng)加電,第3個(gè)圖

19、是濾波電路,第4個(gè)圖是為其余芯片供電電路。電路如圖3.4: 圖3.4 電源電路圖 3.2.2 單片機(jī)主芯片電路 芯片STC89C52RC是帶2K字節(jié)快閃存儲(chǔ)器的8位單片機(jī)。P0-P3口都是并行I/O口,都可用于數(shù)據(jù)的輸入和輸出。其中P1的P1.4,P1.5,P1.6,P1.7口用于LED顯示的位選控制;P1.2高溫報(bào)警;P1.3用于控制直流電機(jī)的轉(zhuǎn)速。P2口用于LED數(shù)碼管的段選信號(hào)輸出,P3.4用于DS18B20溫度檢測值的輸入,而P0.0-P0.4用于按鍵的輸入檢測,同時(shí)P0口加上拉電阻。電路如圖3.5 。 圖3.5 單片機(jī)芯片STC89C52的電路

20、圖 3.2.3 時(shí)鐘電路 單片機(jī)的晶振電路,即時(shí)鐘電路。單片機(jī)的工作流程,就是在系統(tǒng)時(shí)鐘的作用下,一條一條地執(zhí)行存儲(chǔ)器中的程序。單片機(jī)的時(shí)鐘電路由外接的一只晶振和兩只起振電容,以及單片機(jī)內(nèi)部的時(shí)鐘電路組成,晶振的頻率越高,單片機(jī)處理數(shù)據(jù)的速度越快,系統(tǒng)功耗也會(huì)相應(yīng)增加,穩(wěn)定性也會(huì)下降。單片機(jī)系統(tǒng)常用的晶振頻率有6MHz、11.0592MHz、12MHz、本系統(tǒng)采用11.0592MHz晶振,電容選30pF,電路如圖3.6 : 圖3.6 晶振電路圖 3.2.4 復(fù)位電路 系統(tǒng)剛上電時(shí),單片機(jī)內(nèi)部的程序還沒有開始執(zhí)行,需要一段準(zhǔn)備時(shí)間,也就是復(fù)位時(shí)間。一個(gè)穩(wěn)定的單片機(jī)系統(tǒng)必須設(shè)計(jì)復(fù)位

21、電路。當(dāng)程序跑飛或死機(jī)時(shí),也需要進(jìn)行系統(tǒng)復(fù)位。復(fù)位電路有很多種,有上電復(fù)位,手動(dòng)復(fù)位等,電路如圖3.7 : 圖3.7 復(fù)位電路圖 3.2.5 顯示電路 LED采用共陽極數(shù)碼管,利用單片機(jī)的I/O口驅(qū)動(dòng)LED數(shù)碼管的亮滅。設(shè)計(jì)中為了簡化電路,直接用P1.5-P1.7四位來作為數(shù)碼管的片選信號(hào),P2口來作為其段碼控制LED數(shù)值顯示。其電路如圖3.8: 圖3.8顯示模塊電路圖 3.2.6 溫度檢測電路 設(shè)計(jì)中利用DS18B20作為溫度檢測,并且它能自動(dòng)將溫度信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)輸入給單片機(jī)

22、的P3.4口,檢測靈敏,速度較快。模塊電路如圖3.9: 圖3.9 溫度檢測電路 3.2.7 按鍵控制電路 設(shè)計(jì)中利用五個(gè)按鍵控制,系統(tǒng)的啟、停,模式選擇,以及手控模式下的風(fēng)扇轉(zhuǎn)速增減(默認(rèn)為溫控模式),分別通過單片機(jī)I/O口的P0.0-P0.4輸入,并且P0口加上拉電阻。電路如圖3.10: 圖3.10 按鍵控制電路 3.2.8 報(bào)警及電機(jī)電路 高溫報(bào)警和按鍵發(fā)聲采用同一電路,通過單片機(jī)的P1.2輸出信號(hào)經(jīng)ULN2003后控制此部分,而電機(jī)的控制則由單片機(jī)P1.3輸出調(diào)制后的波形經(jīng)ULN2003后

23、驅(qū)動(dòng)電機(jī)。電路如圖3.11 圖3.11 報(bào)警及電機(jī)電路 3.3 模塊聯(lián)接總電路 根據(jù)以上各個(gè)部分的介紹,最后聯(lián)接成整體,實(shí)現(xiàn)從DS18B20中采集溫度,將溫度值一數(shù)字信號(hào)送入單片機(jī)中經(jīng)過處理后控制顯示以及風(fēng)扇轉(zhuǎn)速,隨著溫度的變化,顯示和電機(jī)的轉(zhuǎn)速也會(huì)發(fā)生變化,并且進(jìn)入手控模式后,通過按鍵也可以人為控制轉(zhuǎn)速,其聯(lián)接總圖如3.12: 圖3.12 模塊連接總電路 4.軟件設(shè)計(jì) 超預(yù)設(shè)溫度報(bào)警 4.1 程序設(shè)計(jì)原理及所用工具 開始 溫度升高電機(jī)轉(zhuǎn)速加快,溫度降低電機(jī)轉(zhuǎn)速減慢 溫控模式 DS18B20、中斷、定時(shí)器初始化 中斷 非溫

24、控模式、手動(dòng)調(diào)速 查詢各部件、等待18B20初始數(shù)據(jù) 按下“加速”電機(jī)加速,按下“減速”電機(jī)減速 從18B20讀出溫度并顯示 “關(guān)閉”按鍵,結(jié)束 圖4.1 程序設(shè)計(jì)流程圖 本設(shè)計(jì)采用51單片機(jī)C語言進(jìn)行編程,采用模塊化思想,即將其分為很多個(gè)模塊,有DS18B20模塊,顯示模塊,PWM調(diào)制模塊,高溫報(bào)警模塊,按鍵控制模塊,編程所用的軟件是Keil 4,下載程序用到了STC_ISP_V488軟件,程序調(diào)試時(shí)仿真用到Proteus 7.7。 4.2 主程序設(shè)計(jì) 主程序中主要完成將各模塊

25、程序聯(lián)接起來,并且不斷循環(huán)進(jìn)行,達(dá)到連續(xù)工作,并且會(huì)進(jìn)行狀態(tài)查詢,當(dāng)開啟后才能執(zhí)行程序,否則不斷待機(jī)查詢,最后進(jìn)行是否關(guān)閉查詢,若沒有關(guān)閉,正常執(zhí)行,若關(guān)閉則進(jìn)入待機(jī)查詢開啟鍵狀態(tài)。流程框圖見圖4.1 4.3主要模塊子程序設(shè)計(jì) 4.3.1 DS18B20復(fù)位與檢測子程序 本子程序中首先進(jìn)行DS18B20的復(fù)位并查詢是否準(zhǔn)備好,然后寫入控制,讀出溫度: void DS18b20_reset(void)//復(fù)位 { bit flag=1; while (flag) { while (flag) { DQ = 1; delay(1);

26、 DQ = 0; delay(50); // 550us DQ = 1; delay(6); // 66us flag = DQ; } delay(45); //延時(shí)500us flag = ~DQ; } DQ=1; } 從DS18B20中讀取溫度的程序如下: int read_temp(void) { u8 temp_data[2]; // 讀出溫度暫放 int temp; DS18b20_reset(); // 復(fù)位 write_byte(0xCC); // 發(fā)Skip ROM

27、命令 write_byte(0xBE); // 發(fā)讀命令 temp_data[0]=read_byte(); //溫度低8位 temp_data[1]=read_byte(); //溫度高8位 temp = temp_data[1]; temp <<= 8; temp |= temp_data[0]; temp >>= 4; //精度0.0625,所以除以16 return temp; } 4.3.2 顯示子程序 將溫度讀出轉(zhuǎn)換后的溫度數(shù)據(jù)分別存在70H-73H中,在本子程序中將其讀出從P0口輸出控制數(shù)碼管顯示。 代碼如下

28、if(get_flag) { TH0 = 0xfc; //裝入初值 1MS TL0 = 0x17; start_temp_sensor(); delay(5); temperature = (int)read_temp(); str[0] = tab1[temperature%10]; str[1] = tab[temperature/10%10]; get_flag=0; } 4.3.4 按鍵掃描子程序 本子程序是進(jìn)行控制模式選擇按鍵查詢,并且進(jìn)入手控模式時(shí)的檔位調(diào)節(jié)查詢,并且伴有按鍵發(fā)聲,按鍵掃描子

29、程序代碼: void key( ) { if(!P10)//開電機(jī) { while(!P10); M_OPEN = 1; } if(!P11)//關(guān)電機(jī) { while(!P11); M_OPEN = 0; } if(!P12)//電機(jī)加速 { while(!P12); if(PWM_VALUE<50) PWM_VALUE++; } if(!P14)//電機(jī)減速 { while(!P14); if(PWM_VALUE>0) PWM_VALUE--; } if(!P15)//溫控 {

30、 while(!P15); T_CONTRL = 1; } if(!P16)//不溫控 { while(!P16); T_CONTRL = 0; } } 5系統(tǒng)調(diào)試 5.1 硬件調(diào)試 在完成電路圖的仿真之后,進(jìn)入了實(shí)物設(shè)計(jì),實(shí)物設(shè)計(jì)主要是對自己所設(shè)計(jì)的電路圖進(jìn)去焊接,用到自己電路圖上的所用器件,如果實(shí)在沒有的,可以用功能相似的器件來代替。在完成第一部分的焊接后,要對一些部件進(jìn)行電壓的測量,第一部分的焊接主要焊接電阻,電源,USB接口,發(fā)光二極管等,焊接完成后,我們接上USB接口,發(fā)現(xiàn)電路板上的USB接口處的發(fā)光二極管不亮,開始并不明確問題所在,

31、之后我們使用萬用表對USP接口,穩(wěn)壓二極管,電源進(jìn)行電壓的測量,最后我們發(fā)現(xiàn)時(shí)總控制開關(guān)安反,最后我們只好將按鍵取下重新安裝,然后再加電測量測量出來的電壓值均在+5.00V左右,并且發(fā)光二極管發(fā)亮,說明之后焊接的電路正確,之前存在問題。 之后我們斷開電源再將電路素所需要的芯片的連接板和電容等器件焊接到電路板上,焊接時(shí)必須注意芯片和電容的正負(fù)極,例如電容的正負(fù)極判斷為“長正短負(fù)”,就是電容所接的長的那根導(dǎo)線接正極,短的那根接負(fù)極。在焊接完成之后,我們再次接通電源和USP接口的電源,按下開關(guān)電源,USB接口處的發(fā)光二極管再次發(fā)亮,此時(shí)再次用萬用表對電路板的電源,穩(wěn)壓二極管,USB接口及其各個(gè)芯

32、片和單片機(jī)進(jìn)行電壓的測量,測量出來的全部都在+5.00V,說明電路正確,此時(shí)我們將所用的芯片包括單片機(jī)接上電路板,然后開啟電源,將程序載入單片機(jī)運(yùn)行整個(gè)電路,我們發(fā)現(xiàn)LED數(shù)碼管顯示存在問題,主要是第二位位選可能存在問題,并且顯示較暗,后來我們總結(jié)發(fā)現(xiàn)是LED直接由單片機(jī)接出負(fù)載,而單片機(jī)的接負(fù)載能力很差,所以很暗,并且LED存在問題,最后在老師的指導(dǎo)下,根據(jù)原理圖,靈活做一些變動(dòng),添加了電阻、三極管驅(qū)動(dòng),另外,更換了LED顯示屏,使其顯示非常正常和明亮。 由于老師給的外部電路是萬用板,所以我們必須自己焊接電路,并且要自己連接導(dǎo)線,焊接完成后,將程序下載到單片機(jī)中運(yùn)行,發(fā)現(xiàn)電機(jī)不能正常轉(zhuǎn)動(dòng),

33、而且報(bào)警器不斷報(bào)警,最后我們檢測發(fā)現(xiàn),ULN2003的公共端我們沒有接地,因此我們將其接地后在進(jìn)行調(diào)試,發(fā)現(xiàn)一切都正常??偨Y(jié)本次自己動(dòng)手焊接和調(diào)試電路發(fā)現(xiàn)自己在動(dòng)手能力方面還有很多不足,但是能夠自己在老師的指導(dǎo)下找出問題解決問題,自己覺得這是一個(gè)很大的進(jìn)步。 5.2 軟件調(diào)試 軟件調(diào)試是一個(gè)漫長的過程,一個(gè)小的疏忽就可能造成軟硬件結(jié)合時(shí)出現(xiàn)錯(cuò)誤。我們在本次調(diào)試中主要出現(xiàn)了一個(gè)錯(cuò)誤,就是中斷程序處理不當(dāng),導(dǎo)致整個(gè)系統(tǒng)癱瘓,經(jīng)過仔細(xì)整理后,才找出問題: 最初的程序段: main() { unsigned char TempH,TempL; TMOD=0x01;//定時(shí)器設(shè)置 TH0

34、=0xef; TL0=0xf0; IE=0x82; TR0=1; P2=0x00; count=0; while(1) { str[2]=tab[(temp%1000)/100]; //十位溫度 str[3]=tab1[(temp%100)/10]; //個(gè)位溫度,帶小數(shù)點(diǎn) str[4]=tab[temp%10];//小數(shù) if(flag_get==1) //定時(shí)讀取當(dāng)前溫度 { temp=ReadTemperature(); flag_get=0; }

35、 } 改進(jìn)后的程序段: main (void) { //TMOD=0x11; //T0方式1計(jì)數(shù) T1方式1計(jì)數(shù) TMOD |= 0x01; TH0 = 0xfc; //裝入初值 1MS TL0 = 0x17; TR0 = 1; //啟動(dòng)t0 ET0 = 1; EA = 1; P2 = 0x00; LED = 1; PWM = 0; DS18B20_Init(); while(1) { key(); if(get_flag) { TH0 = 0xfc; //裝

36、入初值 1MS TL0 = 0x17; start_temp_sensor(); delay(5); temperature = (int)read_temp(); str[0] = tab1[temperature%10]; str[1] = tab[temperature/10%10]; get_flag=0; } } } 6 系統(tǒng)功能、指標(biāo)參數(shù) 6.1 系統(tǒng)功能 該系統(tǒng)是針對電腦散熱而設(shè)計(jì),能夠及時(shí)監(jiān)測機(jī)箱內(nèi)的實(shí)時(shí)溫度,并自動(dòng)將溫度值轉(zhuǎn)換成數(shù)字信號(hào)送入單片機(jī),然后在LED顯示頻上準(zhǔn)確無誤的顯示;通

37、過對送入溫度進(jìn)行分析,判斷溫度有無達(dá)到最大溫度,如果達(dá)到就進(jìn)行報(bào)警,給人們警示。當(dāng)我們選擇溫控模式時(shí),就將送入的溫度值參與PWM調(diào)制,當(dāng)溫度不斷增大時(shí),風(fēng)扇轉(zhuǎn)速不斷增加,反知,隨著溫度減小,風(fēng)扇轉(zhuǎn)速也減?。划?dāng)進(jìn)入手控模式時(shí),我們可以任意增大減小風(fēng)扇的轉(zhuǎn)速,同時(shí)當(dāng)我們對按鍵進(jìn)行操作時(shí),報(bào)警模塊LED點(diǎn)亮提醒操作成功,從而設(shè)計(jì)顯得人性化,舒適化。 6.2 指標(biāo)參數(shù) 在主電路板中需要測量出的參數(shù):電源電壓,各個(gè)芯片的電壓以及單片機(jī)的電壓,以下為各電壓的值: 1.電源電壓的測量值為5.00V 3.芯片的電壓值:ULN2003的電壓測量值為5.02V,MAX232的電壓測量值為5.00V,4.單

38、片機(jī)的電壓值為4.98V 5.電機(jī)運(yùn)行時(shí)其兩端的電壓是5.00V 所以對于電源為5V電路來說,以上參數(shù)都是正確的。 其余的參數(shù)如下: 1.電路板中單片機(jī)的晶振電路中晶振元件12MHZ 2.高溫報(bào)警電路中的限流電阻的大小為100 3.顯示模塊中的電阻大小為4.7K 并且在系統(tǒng)正常工作狀態(tài)下,各個(gè)模塊的電壓,電阻等參數(shù)均正常。 7 結(jié)論 本設(shè)計(jì)通過硬件焊接,軟件編程以及重要的軟硬件調(diào)試之后,實(shí)現(xiàn)了最初預(yù)想的各項(xiàng)功能,雖不說一帆風(fēng)順,但完成了要求。并且除了要求的溫度讀取、顯示、控制電機(jī)等基本功能外,我們還增加了手控模式,高溫報(bào)警,按鍵發(fā)聲提醒等功能,使設(shè)計(jì)更加人性化。

39、 智能化的電腦散熱系統(tǒng)不僅能夠用于電腦的散熱,其實(shí)也可以用于普通風(fēng)扇的設(shè)計(jì)之中,本設(shè)計(jì)可以說是多方面的考慮。而增加手控模式的好處在于,不同電腦的性能和CPU產(chǎn)熱量也不太一樣,而本設(shè)計(jì)對溫度控制電機(jī)的靈敏度相當(dāng)高,對于溫度過高的電腦或者溫度變化很快的電腦而言,比較適宜。對于一些電腦散熱不是很多,溫度變化比較穩(wěn)定的電腦,可以采用手控設(shè)定檔位,減小能耗,使散熱系統(tǒng)壽命更長。對于很多用按鍵控制的系統(tǒng)沒有添加按鍵提醒部件,雖說可以減小能耗,但是對于操作不是很明確,當(dāng)你按下時(shí),如果變化不大的情況下,你不能確定操作是否成功;倘若有了提醒裝置,每次操作成功都有提醒,既能給人們帶來方便,也能方便檢修。

40、 設(shè)計(jì)雖然成功了,但是并沒有正在用于電腦內(nèi)部散熱,若條件允許便能真正檢測出系統(tǒng)設(shè)計(jì)的有效性和安全性。本系統(tǒng)的設(shè)計(jì)集中的對我們數(shù)模電電路知識(shí),C語言學(xué)習(xí),以及實(shí)際動(dòng)手能力進(jìn)行了綜合性的考察,由于我們對一些器件的了解程度不是很高,所以,對于我們的設(shè)計(jì)還有很多改進(jìn)的地方,比如:直流電機(jī)可以改成效率更高,能耗更低的電機(jī)等。 8 總結(jié)與體會(huì) 通過本次課程設(shè)計(jì)對很多學(xué)科有了深入的學(xué)習(xí)和理解,對電路也有了新的體會(huì),在設(shè)計(jì)過程中,主要做了兩方面的設(shè)計(jì):一就是軟件的設(shè)計(jì)。二是硬件電路的設(shè)計(jì)。在軟件設(shè)計(jì)中本系統(tǒng)的軟件部分主要是利用C語言來設(shè)計(jì)的,更加深入的鞏固了我們的C語言知識(shí),增加了我們的編程能力和經(jīng)驗(yàn)。

41、 簡單儀器原理與設(shè)計(jì)的課程是通信工程專業(yè)學(xué)生所要掌握的,是實(shí)踐教學(xué)不可缺少的重要環(huán)節(jié)。通過課程設(shè)計(jì),不僅能提高學(xué)生學(xué)習(xí)智能儀器的興趣,加深對智能儀器的理解,開闊視野,也能為畢業(yè)設(shè)計(jì)打下良好的基礎(chǔ)。學(xué)生基本上經(jīng)歷了單片機(jī)應(yīng)用系統(tǒng)開發(fā)的全過程,擴(kuò)大了學(xué)生實(shí)踐的內(nèi)容,從而取得了較好的教學(xué)實(shí)踐效果。任何收獲都要付出巨大的努力,我們思考,閱讀,動(dòng)手,這讓我們受益匪淺,其樂無窮。 經(jīng)過一個(gè)星期的努力,我們終于成功的完成了本次課程設(shè)計(jì)。再設(shè)計(jì)過程中我們又很多收獲當(dāng)然也遇到很多困難。譬如說不能把書本上的知識(shí)與實(shí)踐相結(jié)合。還有當(dāng)我們第一次把硬件電路做出來以后就在調(diào)試時(shí)發(fā)現(xiàn)LED工作不正常,原來是我們沒有按照

42、管腳的正確順序連接電路來驅(qū)動(dòng)LED顯示,在這個(gè)過程中培養(yǎng)了我們發(fā)現(xiàn)問題,思考問題,解決問題的能力,也增加了我們實(shí)際動(dòng)手實(shí)踐的能力。 在這次設(shè)計(jì)的軟件部分是使用C語言,考慮到剛剛學(xué)過,并且想通過本次設(shè)計(jì)加深對C語言的理解和熟悉,增強(qiáng)編程能力。C語言執(zhí)行效率較高,代碼精簡;它的可讀性較好,容易理解。通過設(shè)計(jì)也能大大加深對軟硬件的結(jié)合掌握和學(xué)習(xí)。 本次設(shè)計(jì)增強(qiáng)了我們查閱資料的方法和技巧,更是大大的提高了我們自學(xué)的能力,同時(shí)也增強(qiáng)了我們的動(dòng)手能力。 通過本次課程設(shè)計(jì),我們在對這門技術(shù)上有了更深刻的認(rèn)識(shí),也從實(shí)踐中去感受到了技術(shù)給我們設(shè)計(jì)帶來的改變與進(jìn)步。我們不僅基本掌握了軟件的使用,還對電子設(shè)計(jì)

43、的思路有了更多的認(rèn)識(shí)。 在這一個(gè)星期的課程設(shè)計(jì)過程中,我們?nèi)齻€(gè)人一起查資料、一起討論、一起交流,最終我們決定了設(shè)計(jì)方案并成功完成設(shè)計(jì),這些都培養(yǎng)了我們的團(tuán)結(jié)合作精神,這次設(shè)計(jì)讓我們受益匪淺。 9參考文獻(xiàn) [1] 譚浩強(qiáng). C語言程序設(shè)計(jì)(第三版)[J].北京:清華大學(xué)出版社,2005 [2]張毅剛、彭喜元.單片機(jī)原理及應(yīng)用[M].北京:高等教育出版社,2003 [3] 張海兵、李敏.PROTEL電路設(shè)計(jì)實(shí)例與分析[J]. 北京:人民郵電出版社,2005 [4] 李春葆、金晶.C語言程序設(shè)計(jì)輔導(dǎo)[M].北京:清華大學(xué)出版社,2007 [5] 楊將新、李華軍.單片機(jī)程序設(shè)計(jì)及應(yīng)用(第

44、三版)[M]. 北京:電子工業(yè)出版社,2006 [6] 魯捷、焦振宇.PROTEL 2004 電路設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2006 [7]康光華 陳大欽 電子技術(shù)基礎(chǔ)模擬部分(第四版)[M].高等教育出版社.1987 [8]謝自美 主編.電子線路設(shè)計(jì).實(shí)驗(yàn).測試(第二版)[M].華中理工大學(xué)出版社,2005 [9] 王為青,邱文勛. 51單片機(jī)開發(fā)案例精選[J].人民郵電出版社,2001,(5):45-47 [10] 邊海龍,孫永奎. 單片機(jī)開發(fā)與典型工程項(xiàng)目實(shí)例詳解[J].電子工業(yè)出版社,2008 [11] 康光華、鄒壽彬.電子技術(shù)基礎(chǔ)數(shù)字部分(第五版)[M]. 北京

45、:高等教育出版社,2006 [12]謝維成,劉勇.微機(jī)原理與接口技術(shù)[M].華中科技大學(xué)出版社,2009 [13]張毅剛.單片機(jī)原理及應(yīng)用[M].高等教育出版社,2003 附錄1:ISIS仿真圖、PCB板圖、實(shí)物圖 附圖1、ISIS仿真圖 在單片機(jī)最小系統(tǒng)的搭建上采用了12MHZ的晶振作為晶振電路核心,復(fù)位選用按鍵復(fù)位方式,溫度檢測模塊使用P3.4來接收數(shù)據(jù),按鍵模塊選用P1口來控制,數(shù)碼管選用P0口發(fā)送段碼,用P2口發(fā)送位碼,P3.0口用于報(bào)警電路,

46、實(shí)際上還有大把的IO口資源可以使用,還可以實(shí)現(xiàn)更多的功能。仿真的時(shí)候最大的問題是ULN2003模塊的搭建以及使用,由于之前沒有對它理解透徹,導(dǎo)致出了許多問題,但是最后在細(xì)心查資料之后終于將它調(diào)試成功。 附圖2、實(shí)物圖 在實(shí)物調(diào)試上面按鍵模塊,電機(jī)模塊算是比較順利的,但是在數(shù)碼管顯示溫度模塊上面一直有問題,調(diào)試了很久都沒有進(jìn)展,在上網(wǎng)查了許多資料后才知道原因是中斷干擾了數(shù)碼管掃描,還有一個(gè)問題是數(shù)碼管的管腳排列,ABCDEFGH DP必須對應(yīng)管腳11、7、4、2、1、10、 5 、3來依次連接P0.0 ~ P0.7 。 附圖3、PCB圖 此PCB圖是用AD

47、09畫的,AD09相對于PROTEL來說,庫更多,且更容易與電腦兼容,操作簡便。把原理圖連接好之后,剩下的就是布線了,總的來說還是比較順利的,并不麻煩。 附錄2:程序源代碼 #include #include #include typedef unsigned int u16; typedef unsigned char u8; unsigned char code tab[]= {0xc0,0xf9,0xa4,0xb0,

48、0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管段碼表共陽 unsigned char code tab1[]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; #define nops(); {_nop_(); _nop_(); _nop_(); _nop_();} //定義空指令 #define PWM_MAX 20 #define TEMP_MIN 20 #define TEMP_MAX 80 u16 str[2]; int temperature; //溫度值

49、 u8 PWM_VALUE=0; //PWM值 bit M_OPEN=0; //默認(rèn)電機(jī)關(guān) bit T_CONTRL=1; //默認(rèn)溫控 bit get_flag=1; //溫度采集 sbit DQ =P1^7; //溫度DS18B20 sbit LED=P3^0; //報(bào)警 sbit PWM=P3^7; //PWM輸出 sbit P10=P1^0; //開 sbit P11=P1^1; //關(guān) sbit P12=P1^2; //加速 sbit P14=P1^4; //減速 sbit P15=P1^5;

50、 //溫控 sbit P16=P1^6; //不溫控 void delay(unsigned int i)//延時(shí)函數(shù) { while(i--); } void DS18b20_reset(void)//復(fù)位 { bit flag=1; while (flag) { while (flag) { DQ = 1; delay(1); DQ = 0; delay(50); // 550us DQ = 1; delay(6); // 66us flag = DQ;

51、 } delay(45); //延時(shí)500us flag = ~DQ; } DQ=1; } /*18B20寫1個(gè)字節(jié)函數(shù),向1-WIRE總線上寫一個(gè)字節(jié)*/ void write_byte(u8 val) { u8 i; for (i=0; i<8; i++) { DQ = 1; _nop_(); DQ = 0; nops(); //4us DQ = val & 0x01; //最低位移出 delay(6); //66us val >>= 1; //右移一

52、位 } DQ = 1; delay(1); } /*18B20讀1個(gè)字節(jié)函數(shù),從1-WIRE總線上讀取一個(gè)字節(jié)*/ u8 read_byte(void) { u8 i, value=0; for (i=0; i<8; i++) { DQ=1; _nop_(); value >>= 1; DQ = 0; nops(); //4us DQ = 1; nops(); //4us if (DQ) value|=0x80; delay(6); //66us } DQ=1

53、; return(value); } /*啟動(dòng)溫度轉(zhuǎn)換*/ void start_temp_sensor(void) { DS18b20_reset(); write_byte(0xCC); // 發(fā)Skip ROM命令 write_byte(0x44); // 發(fā)轉(zhuǎn)換命令 } /*讀出溫度*/ int read_temp(void) { u8 temp_data[2]; // 讀出溫度暫放 int temp; DS18b20_reset(); // 復(fù)位 write_byte(0xCC); // 發(fā)Skip ROM命令 write_byt

54、e(0xBE); // 發(fā)讀命令 temp_data[0]=read_byte(); //溫度低8位 temp_data[1]=read_byte(); //溫度高8位 temp = temp_data[1]; temp <<= 8; temp |= temp_data[0]; temp >>= 4; //精度0.0625,所以除以16 return temp; } /*********18B20初始化*****************/ void DS18B20_Init() { DS18b20_reset(); write_byte(

55、0xCC);//跳過ROM write_byte(0x4E);//寫寄存器 //write_byte(0x7F);//將配置寄存器配置為12位精度 write_byte(0x7d);//將配置寄存器配置為9位精度 write_byte(0x1);//將配置寄存器配置為9位精度 write_byte(0x1F);//將配置寄存器配置為9位精度 DS18b20_reset(); } /****************按鍵掃描**************/ void key( ) { if(!P10)//開電機(jī) { while(!P10); M

56、_OPEN = 1; } if(!P11)//關(guān)電機(jī) { while(!P11); M_OPEN = 0; } if(!P12)//電機(jī)加速 { while(!P12); if(PWM_VALUE<50) PWM_VALUE++; } if(!P14)//電機(jī)減速 { while(!P14); if(PWM_VALUE>0) PWM_VALUE--; } if(!P15)//溫控 { while(!P15); T_CONTRL = 1; } if(!P16)//不溫控 { whil

57、e(!P16); T_CONTRL = 0; } } /***************主函數(shù)********************/ main (void) { //TMOD=0x11; //T0方式1計(jì)數(shù) T1方式1計(jì)數(shù) TMOD |= 0x01; TH0 = 0xfc; //裝入初值 1MS TL0 = 0x17; TR0 = 1; //啟動(dòng)t0 ET0 = 1; EA = 1; P2 = 0x00; LED = 1; PWM = 0; DS18B20_Init(); while(1) {

58、 key(); if(get_flag) { TH0 = 0xfc; //裝入初值 1MS TL0 = 0x17; start_temp_sensor(); delay(5); temperature = (int)read_temp(); str[0] = tab1[temperature%10]; str[1] = tab[temperature/10%10]; get_flag=0; } } } /*********t0定時(shí)*中斷函數(shù)*************/ u16 count=

59、0; //定時(shí)次數(shù),每次1ms u16 count1=0; u8 temp_value=0; void t0() interrupt 1 using 2 { TH0=0xfc; //重裝t0 TL0=0x17; if(count==PWM_MAX) count=0; else count++; /*電機(jī)控制*/ if(T_CONTRL)//溫控 { if(temperature>TEMP_MAX) { temp_value = PWM_MAX; LED = 0; } else if

60、(temperature>TEMP_MIN) { temp_value = (temperature-TEMP_MIN)*PWM_MAX/ (TEMP_MAX-TEMP_MIN); LED = 1; } else { temp_value = 0; LED = 1; } if(M_OPEN)//電機(jī)開 { if(count==0) PWM = 1; if(count==temp_value) PWM=0; } else { PWM=0; } } el

61、se { if(M_OPEN)//電機(jī)開 { if(count==0) PWM = 1; if(count==PWM_VALUE) PWM=0; } else { PWM=0; } } /*數(shù)碼管掃描和溫度檢測*/ if(count%10==0)//10ms { if(count1==50) count1=0; else count1++; } if(count1==0) { get_flag=1; } if(count1%2==0) { P2=0x80; P0=str

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!