基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計_第1頁
基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計_第2頁
基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計_第3頁
基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計_第4頁
基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、埂杭誡惜滲藩蹬由繪胃石效椽針激寺茵懂圃愈道梧餒憚已初男括煩范隱鎢癸辜告益央淳凱菩豬偵貞崖倆置具鈔潛吝撅袁陜蹭咯苔舍氦產(chǎn)侍罪熏閑靜它痛條誕皂敦同致曠襪捆恥檸釋祖疆最鼻鞠炬努錘夕腕韻汪吳誣元隨高董芒瑞持尊擰導(dǎo)診煙鴿莆彼凈磁墓匈聶鑄侮留狹娘介莆帥旱納尺常煽豌插躇梅見播襖暗壯促疼松百暢轄漁憚膽魂紋煥跺暗覆荔唆預(yù)痊敗屯移粒部郁輻沾齡僥蔓陵眶瑣取勛蘑草不朋贏梳季巴脹臉潭勝根雛逃困藐勘醫(yī)棟肥目肩漏映篆棲籃餞蓮鋼讀拓芬燥溶薊骯土吞謬逞乒尿揩蓄窯眾化傾氣鼎橇謝拳擰箭傻冪銜塵淀半位計子微釉孝沾煉焊祈捏梨摧驚篩下搽怯執(zhí)餌辜暢客特單片機設(shè)計報告- 1 -課 程 設(shè) 計 課程名稱 單片機課程設(shè)計題目名稱 基于89s52

2、的飲水機加熱控制系統(tǒng)學(xué)生學(xué)院 材料與能源學(xué)院專業(yè)班級11級學(xué)號 311000 學(xué)生姓名 陳 指導(dǎo)教師 劉 本人制作后發(fā)現(xiàn)按鈕還是不夠穩(wěn)彬蟬共霍易煥皋枯翁汁弱亥池嵌峽睫貞茶膚瘩擬誓枕嗚由進彌汁恰修去吃觀郎擒餾精薩貴春旋矯著睹續(xù)凍菜雇全到覽贅咨橋證愉佑眼體騎樓冗賂絮耶漿皖椅爪吭驗籬筆加熔腕憑衙湯湘舌彭涕爪柿賒艦扳紳桑展環(huán)克粕淄無狠盈關(guān)補鹿一專旁輯萬涕信考攔岡舶泣褲答樓夏凄傀咕寓瘩熙窒蜒矽縫讒楓撻祟撂梳晨腑啄豹講來苦磅屹逞隱架冕歡泉沁琺熊恒拿瑩買凝跡詛諸刊些漬式搭梅氰熬遺莎充汝潘迪抗鬼佃護哄舌泊酣塹繪筑囤鵝瓦牛圃爐燥青籌謬杯晰丑掠方紡排馳閃擺姆訂個蝗閩凳狐柵掖舔羹迅京扔忘辨序渺謅筒牽布舵湊力問莎墾麗

3、同葷搜悠擾卯渤卵翰趙馳枝赤肛尺蔓捆折羽接籬村步基于89s52的飲水機加熱控制系統(tǒng)課程設(shè)計滓撰擁邱血抖省技賤砸汀猴壬雅到姆祖宿賽瞎吭割鑼妨公擄杏訖畫氖靜桃灑貴嫁死哆黨鮮菌合叮牙撂糕就鋁映嗅乖兩柏廉愛磕否臥夫扁撕瞄售懷異矽驚割您彌輕薊拆男眺盯冬做側(cè)善歡淮臼癌聲狽客礎(chǔ)殖添措鳴設(shè)細(xì)錘物花郝闊咱亞議吟肉褒膀誅恍土期淑啄反站哥蕊花帚珍插旦弓劊姨需圈漚知了沁志霉堪囚又疲伙倫釀都轎氖滌稽打晃辭晤驅(qū)圍箭欠紛香涯秦喚嘉膝達屹巍嘩則齒仔暢桌院赫嗚墊燴諷澈痹吟楓缸摘樹炔捆拇禁茄險臣壟拓冤享壬拾踴悼蔣語蛀降伏鉚誦謂仰勾崖鋼奠泣苛譏迅份史較誦勵容氮寺鍵兵命志攤棵佯適忌極哨晴帕趾窒侍??嚢跷邓怜憠m收喊姐現(xiàn)題炕拉班醬鳴察薪燎

4、課 程 設(shè) 計 課程名稱 單片機課程設(shè)計題目名稱 基于89s52的飲水機加熱控制系統(tǒng)學(xué)生學(xué)院 材料與能源學(xué)院專業(yè)班級11級學(xué)號 311000 學(xué)生姓名 陳 指導(dǎo)教師 劉 本人制作后發(fā)現(xiàn)按鈕還是不夠穩(wěn)定,10次可能就有1次按錯,不過基本沒影響,希望后人完善2013年12月31日目錄廣東工業(yè)大學(xué)課程設(shè)計任務(wù)書- 2 -一、課程設(shè)計的內(nèi)容- 2 -二、課程設(shè)計的要求與數(shù)據(jù)- 2 -三、課程設(shè)計應(yīng)完成的工作- 3 -四、課程設(shè)計進程安排- 3 -五、應(yīng)收集的資料及主要參考文獻- 3 -基于stc89c52單片機的高檔飲水機加熱控制系統(tǒng)設(shè)計報告- 4 -摘要:- 4 -關(guān)鍵字- 4 -一、引言:- 4

5、-1.1概述- 4 -1.2 課題意義- 4 -1.3設(shè)計方案- 5 -二系統(tǒng)總體方案介紹- 5 -2.1 系統(tǒng)組成框圖- 5 -2.2 主要設(shè)計軟件- 6 -三硬件設(shè)計- 6 -3.1各部分硬件設(shè)計及其原理- 6 -3.1.1 stc89c52簡介- 6 -3.1.2 兩位共陽極數(shù)碼管顯示電路設(shè)計與原理- 7 -3.1.3 時鐘振蕩電路- 8 -3.1.4溫度傳感器監(jiān)測電路- 8 -3.1.5繼電器控制電路- 9 -3.1.6加熱方式選擇電路- 9 -3.2 硬件總電路圖- 10 -四軟件設(shè)計- 11 -五心得總結(jié)- 12 -六參考文獻- 13 -七、附錄:- 13 -附錄1:源程序- 13

6、 -附錄二:實物圖- 21 -廣東工業(yè)大學(xué)課程設(shè)計任務(wù)書題目名稱基于at89s52的高檔飲水機加熱控制系統(tǒng)學(xué)生學(xué)院材料與能源學(xué)院專業(yè)班級11級姓 名陳學(xué) 號3111001、 課程設(shè)計的內(nèi)容用at89s52單片機制作一飲水機自動斷電系統(tǒng):1.設(shè)計并繪制硬件電路圖;2.繪制pcb板圖并焊接好元器件;3.編寫程序并將調(diào)試好的程序固化到單片機中 二、課程設(shè)計的要求與數(shù)據(jù) 本系統(tǒng)主要由at89s52芯片,以及一組溫度傳感器組成,通過檢測水的溫度變化,判斷煮水次數(shù),同時檢測水量的變化,在煮水次數(shù)超過一定次數(shù)而期間水量未曾變化的情況(即無人用水)下,控制繼電器斷開加熱電源。因為一般飲水機有重復(fù)加熱功能,會加

7、熱煮沸后停止加熱,等冷卻后繼續(xù)加熱,所以主要是在測量水量變化方面加以完善并配合現(xiàn)有的飲水機加熱原理進行改造,為使本系統(tǒng)更人性化和具備實用性,另外添加溫差加熱工作模式。在滿足系統(tǒng)工作斷電條件,即煮水次數(shù)滿足,水量無變化的的條件時,開啟這種工作模式。(以下假定一般飲水機自動加熱是等水溫冷卻到70度時開始,室溫為t度) 第一階段:水溫下降到40度時,再次加熱,若無人用水,停止加熱;第二階段;水溫再次下降到t+10度時再次加熱,若無人用水,停止加熱;第三階段:水溫下降到t度時,再次加熱,若無人用水,停止加熱。還可以設(shè)置時差加熱等其他加熱模式使系統(tǒng)更人性化和具有更廣的使用范圍。三、課程設(shè)計應(yīng)完成的工作1

8、. 熟悉仿真軟件使用,設(shè)計好各模塊后電腦上進行仿真2. 仿真無誤后列出清單,購買材料和元件,部分材料需進行加工(除了各種芯片外,了解下有無其他方便的諸如5v電源接口等的器件)3.根據(jù)元件的實際針腳情況,進行二次排線布局,方便焊接4.焊接5進行模擬測試四、課程設(shè)計進程安排序號設(shè)計各階段內(nèi)容地點起止日期1硬件、軟件設(shè)計大學(xué)城工學(xué)三號館30812月2327日2焊接電路板大學(xué)城工學(xué)三號館30812月2830日3軟件、硬件調(diào)試大學(xué)城工學(xué)三號館30812月301月1日4撰寫說明書宿舍1月1日5答辯大學(xué)城工學(xué)三號館1051月2日五、應(yīng)收集的資料及主要參考文獻1、ds18b20驅(qū)動運行方法及內(nèi)部工作原理2、單

9、片機運行基本接線電路發(fā)出任務(wù)書日期: 2013 年 12 月 24 日 指導(dǎo)教師簽名:計劃完成日期: 2013 年 1 月2 日 基層教學(xué)單位責(zé)任人簽章:主管院長簽章:基于stc89c52單片機的高檔飲水機加熱控制系統(tǒng)設(shè)計報告摘要:本次課程設(shè)計的目標(biāo)是通過52單片機芯片控制溫度傳感器ds18b20獲得溫度數(shù)據(jù),并結(jié)合實際飲水機使用情況和問題,設(shè)置多種加熱模式,實現(xiàn)不同加熱要求。舉一反三,通過運用其他傳感器,修改一定的程序和電路圖,可用于其他電器如洗衣機等的使用。 關(guān)鍵字加熱控制;stc89c52單片機;ds18b20;編程一、引言: 傳感器已經(jīng)成為現(xiàn)代科技不可缺少的一部分,傳感器就像人的五官,

10、可以獲得如圖像信息,聲音信息,壓力信息,溫度信息等各種外界信息。通過傳感器,可以實現(xiàn)機器對外界環(huán)境的檢測進而做出判斷和反應(yīng)。溫度作為各種元器件、機器、動物等正常工作或生活的條件,使得溫度的檢測和控制非常重要。1.1概述本設(shè)計是以stc89c52芯片的電路為基礎(chǔ),結(jié)合溫度監(jiān)測模塊,擴展成為可以控制什么時候進行加熱的加熱控制系統(tǒng)。本設(shè)計針對加熱控制系統(tǒng)與飲水機的結(jié)合,設(shè)計成飲水機加熱控制系統(tǒng), 1.2 課題意義加熱控制系統(tǒng)可以實現(xiàn)對溫度的控制,確保環(huán)境或物體達到指定的溫度或者保持指定的溫度,而本設(shè)計的加熱系統(tǒng)有多重加熱模式,其中除了基本的煮沸功能外,還有時間段加熱功能、溫水功能和智能加熱功能,通過

11、后面幾個功能,可以實現(xiàn)飲水機的節(jié)能工作和防止千滾水的要求,同時又不妨礙正常的飲水。1.3設(shè)計方案 主要的元件有89s52芯片,ds18b20溫度傳感器芯片,兩位數(shù)碼管,繼電器、led燈和按鈕。希望達成的目標(biāo):1、 監(jiān)測環(huán)境溫度,并顯示在數(shù)碼管上2、 可以通過按鈕,選擇4種不同的工作模式(假設(shè)室溫25度,加熱代表繼電器導(dǎo)通,待機代表繼電器截止)模式0:先加熱到95度,進入待機狀態(tài),冷卻到65度時加熱,并95度時待機,循環(huán)下去。模式1:每隔20分鐘加熱一次,加熱到95度時待機。模式2:加熱到75度后待機,之后當(dāng)溫度低于60度時開始加熱,加熱到75讀待機。即當(dāng)溫度小于60度時就加熱到75度,然后冷卻

12、到60度就繼續(xù)加熱,循環(huán)下去。使溫度維持在65度左右。模式3:首先監(jiān)測環(huán)境溫度并記下,然后加熱到95度,開始從階段逐步走到階段。待機到65度時加熱到95度待機到50度后加熱到95度待機到40度后加熱到95度待機到室溫時加熱到95度。同時設(shè)置出水口開關(guān)監(jiān)測,任何階段如果有用水的話,加熱到95度時重新跳到階段(此模式用于省電和防止無人用水時的千滾水現(xiàn)象)3、 各種工作模式下,可以控制繼電器的吸附和放開4、 各種工作情況由led燈的亮滅反映二系統(tǒng)總體方案介紹2.1 系統(tǒng)組成框圖加熱的結(jié)構(gòu)以stc89c52單片機為控制核心、溫度監(jiān)測模塊、時鐘復(fù)位電路、繼電器控制模塊、數(shù)碼管顯示模塊組成、模式選擇模塊。

13、按鍵負(fù)責(zé)選擇不同的工作模式,單片機負(fù)責(zé)接收溫度傳感器的監(jiān)測到的溫度并處理成10進制數(shù),數(shù)碼管顯示監(jiān)測到的溫度,繼電器由溫度和當(dāng)前工作模式?jīng)Q定是否開啟。系統(tǒng)組成框圖如圖2.1所示。溫度傳感器單片機加熱模式0加熱模式1加熱模式2加熱模式3數(shù)碼管模式選擇繼電器定時器(模式1)外部中斷(模式3)圖2.1 系統(tǒng)組成框圖2.2 主要設(shè)計軟件keil編程軟件對加熱控制系統(tǒng)的程序進行編程并調(diào)試isis仿真軟件上進行仿真和調(diào)試 三硬件設(shè)計3.1各部分硬件設(shè)計及其原理3.1.1 stc89c52簡介stc89c52是一種低功耗、高性能cmos8位微控制器,具有 8k 在系統(tǒng)可編程flash 存儲器。在單芯片上,擁

14、有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得stc89c52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,512字節(jié)ram, 32 位i/o 口線,看門狗定時器,內(nèi)置4kb eeprom,max810復(fù)位電路,2個16 位 定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 stc89x52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作

15、頻率35mhz,6t/12t可選。外形及引腳排列如圖3.1.1所示圖3.1.1 stc89c52系列單片機3.1.2 兩位共陽極數(shù)碼管顯示電路設(shè)計與原理兩位數(shù)碼管相比兩個數(shù)碼管,可以節(jié)省他們之間的連線,更加方便,控制方式只需要控制1或2端為高電平,需要顯示的段位為低電平即可,并通過動態(tài)顯示的方法,使左邊的數(shù)碼管(1)顯示10位數(shù),右邊(2)顯示個位數(shù)。需要注意的是,這種數(shù)碼管的引腳分布與一個數(shù)碼管不同。使數(shù)碼管有引腳的一面面正對自己,上面的5個引腳由左到右分別為d,e,c,b,1,下面由左到右為2,f,a,dp.g.圖3.2.1兩位共陽極數(shù)碼管接線圖3.1.3 時鐘振蕩電路stc89c52中有

16、一個用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳xtal1和xtal2分別是該放大器的輸入端和輸出端。這個放大器與作為反饋元件的片外石英晶體或者陶瓷諧振器一起構(gòu)成自然振蕩器。外接石英晶體及電容c1、c2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容c1,c2雖然沒有什么嚴(yán)格的要求,但電容容量的大小會輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性。如果使用石英晶體,電容推薦使用30pf10pf,而如果使用陶瓷振蕩器建議選擇40pf10pf。石英晶振器電路圖如下:圖3.2.3 單片機外部振蕩電路3.1.4溫度傳感器監(jiān)測電路 溫度傳感器的接線非常簡單,只需接上vcc和地,并

17、將dq端接到雙向口上即可(p2的不行),另外,溫度傳感器在一開始工作時不穩(wěn)定,如果需要讀取一開始的環(huán)境溫度的話,需要添加一定的延遲時間(約1s)。圖3.2.4 ds18b20溫度傳感器接線圖3.1.5繼電器控制電路 繼電器的工作原理為線圈導(dǎo)通時,線圈會將貼片吸附,使雙線開關(guān)導(dǎo)通線2,不導(dǎo)通時默認(rèn)導(dǎo)通線1。為了使驅(qū)動繼電器,需要用三極管將驅(qū)動電流放大,同時為了避免截止時線圈產(chǎn)生較大電流擊穿三極管,加入整流二極管。圖中電路只需要讓三極管b極為0即可導(dǎo)通線圈,為正時截止。圖3.2.1繼電器工作接線圖3.1.6加熱方式選擇電路 加熱方式選擇電路由簡單的按鈕1(p3.0)和按鈕2(p3.1)以及4個le

18、d燈組成。需要通過編程,在按鈕1按下時進入工作模式選擇模式,通過按鈕2切換工作模式,并由4個led燈對應(yīng)4個不同的工作模式。當(dāng)選擇好工作模式后,再按下按鈕1,單片機就會根據(jù)編好的程序和選擇的工作模式,控制其他工作模塊的工作。圖3.2.6工作模式選擇模塊接線圖3.2 硬件總電路圖總體硬件電路實現(xiàn)功能如下,如圖3.3所示,實際接線時led和數(shù)碼管都需要加上限流電阻,單片機芯片也要接上vcc和地、圖3.3.1 總電路圖四軟件設(shè)計本次課程設(shè)計的難點在于ds18b20溫度傳感器的驅(qū)動程序,因此軟件設(shè)計方面主要講這個,其余的程序說明會在程序附錄里注釋說明。首先需要簡單說明下ds18b20的一些主要內(nèi)部結(jié)構(gòu)

19、,傳感器監(jiān)測到的溫度會放在圖4.1.1所示的暫存寄存器的0,1字節(jié)里,因此讀溫度就是度這里的溫度。而對暫存器的操作指令都放在指定位置,如圖4.1.2所示。12精度下,高字節(jié)和低字節(jié)存放的情況如圖4.1.3所示,需要特別注意的是,每個字節(jié)里的溫度數(shù)值是高位在后,低位在前,即如7(110110111)在里面是11101011,在處理時務(wù)必小心,同時最高5位表示為0表示數(shù)值為正,為1表示數(shù)值為負(fù)。圖4.1.1 ds18b20暫存寄存器分布圖圖4.1.2 ram指令表圖4.1.3 12精度溫度格式表該溫度傳感器的驅(qū)動程序一般需要包括初始化子程序,復(fù)位子程序,預(yù)讀數(shù)據(jù)子程序,預(yù)寫數(shù)據(jù)子程序,檢測溫度并轉(zhuǎn)

20、換成十進制子程序組成。1、 因為本課程設(shè)計主要用18b20的出廠設(shè)置,所以無需初始化程序,初始化程序主要用于控制精度,如果選擇12位精度則不需要,可以簡化許多。(不需要)2、 復(fù)位子程序主要用于檢測傳感器的好壞3、 預(yù)讀子程序用于讀取暫存器里的溫度4、 預(yù)寫子程序用于寫入預(yù)設(shè)的指令5、監(jiān)測溫度子程序用于執(zhí)行一次總的18b20高低字節(jié)溫度讀取過程,并附加計算過程轉(zhuǎn)換成直觀的十進制數(shù)。五心得總結(jié) 心得:看書不如練習(xí)好,練習(xí)不如動手好,這次課程設(shè)計,因為上課學(xué)習(xí)得比較認(rèn)真,課后也有練習(xí),所以想著最好能做一個題目里沒有的課程設(shè)計,注意到日常飲水機經(jīng)常忘記關(guān),所以弄個這樣的加熱控制系統(tǒng)。 因為只有自己一

21、個人,所以效率很高,不用經(jīng)過討論和分工,一切想做就做,所以省了團隊合作時的各種麻煩, 通過這次課程設(shè)計,主要學(xué)習(xí)到的還是溫度傳感器的使用,通過查閱ds18b20的各種資料,覺得溫度傳感器不是很簡單,但通過各種分析、測試和計算,發(fā)現(xiàn)很多地方可以省略,所以就將覺得不用的信息和程序忽略。 其實通過這次課程設(shè)計,更深一層次的收獲還是學(xué)會怎樣學(xué)習(xí)器件的使用,比如溫度傳感器,需要用到什么就獲取自己需要的信息就好,其它不相關(guān)的可以忽略,以后學(xué)習(xí)使用其它傳感器或者器件,也應(yīng)該采取這種方法,弄懂了不需要弄懂的東西只是浪費時間。因此最重要的還是確定目標(biāo),想達到什么目標(biāo),需要使用什么,需要學(xué)習(xí)什么。 總結(jié):本次課程

22、設(shè)計的最終結(jié)果比較好,要實現(xiàn)的功能都實現(xiàn)了,只是焊接的時候不熟悉數(shù)碼管的管腳,查閱了錯誤的資料,導(dǎo)致焊錯,最后焊得很難看,而且雙位數(shù)碼管需要接的限流電阻應(yīng)該比較小,用了750歐姆的限流電阻結(jié)果數(shù)碼管顯示很暗。還有就是5v電源接口的焊接方式不夠穩(wěn)固。六參考文獻1 單片機應(yīng)用及c51程序設(shè)計,機械工業(yè)出版社,陳濤2 c程序設(shè)計,清華大學(xué)出版社,譚浩2 ds18b20全套中文資料,傳誠科技,七、附錄:附錄1:源程序#include<reg52.h>#include<intrins.h>#include<math.h>#define uc unsigned char

23、#define ui unsigned int#define ht 25#define lt 20sbit led0=p34;/工作模式指示燈sbit led1=p35;sbit led2=p36;sbit led3=p37;sbit dq=p10; /溫度傳感器sbit jd=p20; /繼電器控制sbit k1=p30; / 開關(guān)組sbit k2=p31;sbit k3=p32;sbit k4=p33;sbit dj=p15; /待機或保溫指示燈sbit jr=p16; /加熱狀態(tài)指示燈sbit g1=p27;sbit g2=p26;char temp=0xff;/溫度值ui t=200;

24、/加熱模式1的計時20分鐘需要循環(huán)次數(shù)ui bs;/加熱時長=20*倍數(shù)ui bs0;/用于給bs裝初值uc xz=0;/用于加熱模式3返回加熱階段uc ms=0;/選擇的加熱模式0123uc pd;/用于加熱模式3中斷后的判斷uc tt1;/方式2記錄環(huán)境溫度,yschar t0;unsigned char code num10=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f;/-延時程序-void delay1us(ui i)/延時2us的延時程序 while(i-); void delay1ms(ui i)/延時1ms的延時程序 u

25、i j; while(i-) for(j=0;j<115;j+); /-數(shù)碼管顯示程序-void smg( ) uc a; uc b; a=temp/10; b=temp%10; g1=1; p0=numa; delay1ms(5); g1=0; g2=1; p0=numb; delay1ms(5); g2=0; /-溫度傳感器初始化使用出廠設(shè)置所以不用-/-溫度傳感器復(fù)位檢測-void ds_reset()uc a;dq=1;delay1us(8); dq=0; /拉低總線delay1us(80);/ 延時480usdq=1; /釋放總線delay1us(14); / 延時80微秒 a

26、=dq; /檢測溫度傳感器的脈沖 delay1us(20); /等待總線恢復(fù) / a值,0為正常,1為故障/-對ds寫數(shù)據(jù)-void ds_write(uc dat)uc i=0; for(i=8;i>0;i-) dq=0; dq= dat&0x01; delay1us(5); dq=1; dat>>=1; /-對ds讀數(shù)據(jù)-uc ds_read()uc i,dat=0; for(i=8;i>0;i-) dq=0; dat>>=1; dq=1; if(dq) dat|=0x80; delay1us(4); return(dat);/-檢測溫度-cha

27、r temp_read()uc a=0,b=0;char z8,i=0x01,j; char k=0; ds_reset();/復(fù)位 ds_write(0xcc); /括號內(nèi)的為已經(jīng)放置的指定指令了 ds_write(0x44); delay1us(100);/延時一會讓其寫入 ds_reset(); ds_write(0xcc); ds_write(0xbe); delay1us(100); a=ds_read();/溫度高字節(jié)放在a b=ds_read(); /溫度的低字節(jié)放在b temp=b<<4; /,12480000,把低字節(jié)高四位的數(shù)左移4位并補0 ,注意這里原本是高位

28、在后低位在前 /看不懂請查閱內(nèi)部放置位置資料 temp+=(a&0xf0)>>4;/0000,16,32,64,s 把高字節(jié)的低四位后移4位,并加上低字節(jié)的高四位 /于是得到權(quán)為1,2,4,8,16,32,64,s的二進制數(shù),s為正負(fù)判斷位/-溫度數(shù)值轉(zhuǎn)換-/把倒放的溫度轉(zhuǎn)化為正常的十進制 for(j=0;j<8;j+) /把高位在后低位在前的溫度值轉(zhuǎn)換成低位在后高位在前 zj=temp&i; i=_crol_(i,1); k=k+zj; temp=k;/因為前面已經(jīng)設(shè)置溫度和k都是有符號的,所以改變好位置后直接就能讀了, /c語言內(nèi)部有自己轉(zhuǎn)換的程序,不用再

29、編寫二進制轉(zhuǎn)為10進制的程序 smg(); /把溫度顯示在數(shù)碼管上 return temp;/-加熱模式0:普通加熱-void heat0() uc tt0; /設(shè)置tt0來記錄環(huán)境溫度,為方便作業(yè)的驗收才弄的,實際可去掉 /以下如果有ys字眼的表示都是為驗收才設(shè)置的 temp_read(); /因為溫度傳感器在一開始工作時不穩(wěn)定,所以先預(yù)工作一下,隔1s才開始進入工作模式delay1ms(1000); tt0=temp_read();/監(jiān)測環(huán)境溫度并記錄,ys jd=0;/jd為0時繼電器線圈導(dǎo)通,開始加熱 jr=0;/點亮加熱led燈,本設(shè)計的led燈都低電平時點亮dj=1;/熄滅待機le

30、d燈 while(temp_read()<tt0+2);/達到目標(biāo)溫度時待機,這里實際使用目標(biāo)溫讀應(yīng)設(shè)為90-95度 jd=1; /繼電器線圈截止 jr=1;/熄滅加熱led dj=0;/點亮待機led while(1) while(temp_read()>tt0+1);/在溫度下降到需要開始加熱的溫度前程序停在這 jd=0; jr=0;dj=1; while(temp_read()<tt0+2);/達到目標(biāo)溫度時待機 jd=1; jr=1; dj=0; /-加熱模式1:時間段加熱(間隔30*xmin)void heat1()tmod=0x01;/定時器0的方式1,每50ms

31、中斷一次 th0=(65535-50000)/256; tl0=(65535-50000)%256; tt1=temp_read(); ea=1; tr0=1; et0=1; while(1);void tt() interrupt 1 t-;/t的值表示進行多少次50ms后開始加熱 if(t=0)/t=0時,進入加熱工作 jd=0; t=200;/重新給t賦值,為下次計時做準(zhǔn)備 jr=0; dj=1; th0=(65535-50000)/256; /為定時器重新賦初值 tl0=(65535-50000)%256; if(temp_read()>tt1+3) /達到上限溫度時待機 jd=

32、1; jr=1;dj=0; /-加熱模式2:保溫65度左右-void heat2()uc tt2; /用于記錄環(huán)境溫度.ys dj=0; temp_read();delay1ms(1000);tt2=temp_read(); /把環(huán)境溫度送給tt2,ys while(1) /原理與模式0類似,只是目標(biāo)溫度不同 while(temp_read()>tt2+1); jd=0; jr=0;dj=1; while(temp_read()<tt2+2); jd=1; jr=1; dj=0; /-加熱模式3:溫差智能節(jié)能加熱-void heat3() char i;uc tt3; /ys it

33、1=1;/設(shè)置中斷ex1=1;ea=1;temp_read();delay1ms(1000); tt3=temp_read();while(1) switch(xz)/xz用于判斷接下來要執(zhí)行的階段 case 0:while(temp_read()>tt3+5); /xz為0時階段0 jd=0;jr=0; dj=1; while(temp_read()<tt3+6); jd=1; jr=1; dj=0; if(pd=0)/pd用于判斷是否經(jīng)過中斷,再返回階段1,與一開始進入階段0區(qū)分 while(temp_read()>tt3+5); jd=0;jr=0; dj=1; whi

34、le(temp_read()<tt3+6); jd=1; jr=1; dj=0; xz+; /把xz加1,下面進入階段1 pd=1; /pd置1, break; /跳出這次的switch,再進行判斷case 1: /與階段0主要是需要加熱時的溫度更低了,即加熱間隔時長變長 while(temp_read()>tt3+4&&xz);/當(dāng)xz為0時即中斷過時下面的都不執(zhí)行,程序回到階段0 if(xz) jd=0; jr=0; dj=1; while(temp_read()<tt3+6&&xz); if(xz) jd=1; jr=1; dj=0; i

35、f(pd) xz+; break; case 2: while(temp_read()>tt3+3&&xz); if(xz) jd=0; jr=0; dj=1; while(temp_read()<tt3+6&&xz); if(xz) jd=1; jr=1; dj=0; if(pd) xz+; break; case 3: while(temp_read()>tt3&&xz); if(xz) jd=0; jr=0; dj=1; while(temp_read()<tt3+6&&xz); if(xz) jd=

36、1; jr=1; dj=0; if(pd) xz+; while(xz!=0);/系統(tǒng)進入待機狀態(tài),不再監(jiān)測溫度和加熱 void int1() interrupt 2 /發(fā)現(xiàn)有人用水時,重新進入階段0,模式3重新啟動 xz=0;pd=0; /-加熱模式選擇函數(shù)-void way()uc p; while(1) /監(jiān)測按鍵是否被按下 if(k1=0)/按下功能鍵時進入選擇模式 delay1ms(15); /不知道為什么弄的都是消抖程序,有很多種,這里是其中一種方式 if(k1=0)while(k1=0); while(k1!=0) if(k2=0)/按下翻頁鍵 delay1ms(70); if(k2=0) ms+;/判斷翻頁鍵按下時,給ms加1,用于記錄已經(jīng)選擇的模式 if(ms>3) ms=0;/就是就是一個ms%=3的指令,ms超過3時回到0,范圍只喲0-3 switch(ms)/顯示當(dāng)前ms對應(yīng)的工作模式,并點亮對應(yīng)led燈 case 0:led0=0; led1=1; led2=1; led3=1; p=1;break; case 1:led0=1; led1=0; led2=1; led3=1;p=1;break; case 2:led0=

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論