溫度控制系統(tǒng)設(shè)計(jì) (2)
《溫度控制系統(tǒng)設(shè)計(jì) (2)》由會(huì)員分享,可在線閱讀,更多相關(guān)《溫度控制系統(tǒng)設(shè)計(jì) (2)(15頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、摘要: 3 溫度控制系統(tǒng)設(shè)計(jì) 題 目: 基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計(jì) 姓 名: 應(yīng)連兄 呂偉 學(xué) 院: 工學(xué)院 專 業(yè): 自動(dòng)化 班 級: 自動(dòng)化121、122 學(xué) 號: 32212110 32212206
2、 指導(dǎo)教師: 胡飛 呂成緒 職稱: 講師 2019年 10月 29 日 南京農(nóng)業(yè)大學(xué)教務(wù)處制 一、系統(tǒng)設(shè)計(jì) 4 1.1 項(xiàng)目概要 4 1.2設(shè)計(jì)任務(wù)和要求: 4 二、 硬件設(shè)計(jì) 5 2.1 硬件設(shè)計(jì)概要 5 2.2 信息處理模塊 5 2.3 溫度調(diào)節(jié)模塊 6 2.3.1傳感器DS18b20簡介 6 2.3.2實(shí)驗(yàn)?zāi)M電路圖 7 2.3.3程序流程圖 8 2.3.4仿真圖模型..............................................................
3、..... 8 2.4報(bào)警電路模塊 9 2.4.1信號燈 9 2.4.2蜂鳴器報(bào)警 10 2.5電機(jī)旋轉(zhuǎn)模塊 12 2.6 秒表和時(shí)模塊.............................................................................12 2.7顯示模塊.......................................................................................12 三、仿真后,部分顯示成果 13 四、兩周實(shí)習(xí)總結(jié) 15 五、參考文獻(xiàn) 17 六
4、、附錄 17 6.1原理圖 17 6.2參考程序………………………………………………………...17 摘要: 隨著社會(huì)發(fā)展的腳步,在各行各業(yè)追求經(jīng)濟(jì)效益已成為首要任務(wù)。在工農(nóng)業(yè)以原始的運(yùn)行方式逐步發(fā)展為自動(dòng)化的過程中,無論是在哪個(gè)階段對影響生產(chǎn)效率的某一因素如溫度,時(shí)間,濕度·······實(shí)現(xiàn)定量的控制,直觀的顯示會(huì)大大提高人類勞動(dòng)力的價(jià)值,增加經(jīng)濟(jì)效益。本次實(shí)習(xí)設(shè)計(jì)是基于51單片機(jī)控制,將DS18b20溫度傳感器實(shí)時(shí)溫度轉(zhuǎn)化,通過1602液晶對本程序設(shè)計(jì)的溫度——高溫40攝氏度,低溫30攝氏度實(shí)行實(shí)時(shí)顯示,由MP28GA步進(jìn)電機(jī)的順時(shí)針轉(zhuǎn)動(dòng)(溫度高于40攝氏度)與逆
5、時(shí)針旋轉(zhuǎn)(溫度低于30攝氏度)直觀的、動(dòng)態(tài)的顯示,并由高溫、低溫報(bào)警信號燈以和蜂鳴器對溫度實(shí)現(xiàn)進(jìn)一步的顯示,以達(dá)到對溫度的自動(dòng)控制。實(shí)驗(yàn)結(jié)果顯示,此設(shè)計(jì)能達(dá)到效果并將溫度作進(jìn)一步的精確。 關(guān)鍵字: 51單片機(jī);DS18b20傳感器;LCD1602液晶;MP28GA步進(jìn)電機(jī) Abstract: With?the pace of social development,?the pursuit of economic?benefits?in all walks of life?has become a task of top priority.?In industry and agricultu
6、re?to run?the original way of?the progressive development of?automation?in the process,whether it is?the stage at which?influence on the?production efficiency?of a certainfactors such as temperature,?time,?humidity control?- -?- - - - -?to achievequantitative,?intuitive display?will greatly enhance
7、the?value?of human?labor,increase economic benefits.?The?practice?of design?is based on 51 MCU control,DS18b20?temperature sensor?real time temperature?transformation,?through the 1602 liquid crystal?on?the program design?of temperature,?temperature 40 degrees Celsius,?low temperature?of 30 degrees
8、Celsius?to implement?real-time display,?by the?motor?torotate clockwise?(temperature above 40?degrees Celsius)and?counterclockwise?(temperature?below 30?degrees Celsius)?intuitive,?dynamic display,?and by the?high temperature,?low temperature alarm?signal?lamp andbuzzer?achieve further?display
9、?of?temperature,?in order to achieve?the automatic control of temperature.?Experimental results show that?this design?can achieve the result?and the temperature?further?precise. Key word: monolithic integrated circuit ; Sensors; DS18b20;LCD1602 LCD;MP28GA stepper motor 一、系統(tǒng)設(shè)計(jì) 1.1 項(xiàng)目概要 在工農(nóng)業(yè)生產(chǎn)過程
10、以和日常生活中溫度控制系統(tǒng)起著非常重要的作用。在構(gòu)建資源節(jié)約型,環(huán)境友好型的社會(huì)進(jìn)程中,保證資源的不浪費(fèi)是至關(guān)重要的,就溫度來說,溫度的過高過低不僅會(huì)影響生產(chǎn)效率,帶來資源的浪費(fèi),而且會(huì)給工作人員的安全帶來一定的隱患。為了在各方面收到令人滿意的效果,本次的基于AT89S52的單片機(jī)溫度控制系統(tǒng)具有很多優(yōu)點(diǎn),能通過步進(jìn)電機(jī)的正傳反轉(zhuǎn)直觀的顯示系統(tǒng)是處于高溫狀態(tài)還是低溫狀態(tài),能通過LCD液晶上的顯示時(shí)間知道溫度過高過低的持續(xù)時(shí)間,具有很好的應(yīng)用價(jià)值與應(yīng)用前景。 1.2設(shè)計(jì)任務(wù)和要求: (1) 采用DS18B20作為溫度傳感器進(jìn)行溫度檢測(本設(shè)計(jì)中采用手動(dòng)調(diào)節(jié)溫度的高低); (2) 在LCD上
11、顯示溫度; (3) 用步進(jìn)電機(jī)的正傳、反轉(zhuǎn)對應(yīng)所設(shè)計(jì)的高溫、低溫; (4) 在LCD上顯示秒表以檢測從系統(tǒng)開始時(shí)溫度達(dá)到高溫、低溫時(shí)所用時(shí)間,計(jì)算出系統(tǒng)超過高低溫的時(shí)間; (5) 在所設(shè)溫度上下限的前提下超過最高溫度或低于最低溫度時(shí)通過LED、蜂鳴器報(bào)警。 二、 硬件設(shè)計(jì) 2.1 硬件設(shè)計(jì)概要 根據(jù)應(yīng)用、設(shè)計(jì)、項(xiàng)目需求,將此系統(tǒng)分為以下幾個(gè)模塊,分別是信息處理模塊,溫度調(diào)節(jié)模塊、報(bào)警電路模塊、電機(jī)旋轉(zhuǎn)模塊、秒表計(jì)時(shí)模塊,顯示模塊。 2.2 信息處理模塊 AT89S52是ATMEL公司的以8031核構(gòu)成的8位Flash單片機(jī)系列。這個(gè)系列單片機(jī)的最大特點(diǎn)就是在片內(nèi)含有Fla
12、sh存儲(chǔ)器,AT89S52單片機(jī)是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線編程閃存。該器件采用Atmel公司的高密度非易失性存儲(chǔ)技術(shù)生產(chǎn),其指令與工業(yè)標(biāo)準(zhǔn)的80C51指令集兼容。片內(nèi)程序存儲(chǔ)器允許重復(fù)在線編程,允許程序存儲(chǔ)器在系統(tǒng)內(nèi)通過SPI串行口改寫或用同用的非易失性存儲(chǔ)器改寫。通過把通用的8位CPU與可在線下載的Flash集成在一個(gè)芯片上,AT89S52便成為一個(gè)高效的微型計(jì)算機(jī)。它的應(yīng)用范圍廣,可用于解決復(fù)雜的控制問題,且成本較低。單片機(jī)模塊如圖(1) 所示。 圖(1)單片機(jī)模塊 2.3 溫度調(diào)節(jié)模塊 2.
13、3.1傳感器DS18b20簡介 DALLAS最新單線數(shù)字溫度傳感器DS18b20簡介新的“一線器件”,體積更小、適用電壓更寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18b20是世界上第一片支持“一線總線”接口溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新的概念。DS18b20、DS1822“一線總線”數(shù)字化溫度傳感器同DS1820一樣,DS18b20也支持“一線總線”接口,測量溫度范圍為-55℃ ~ +125℃,在-10℃~ +85℃范圍內(nèi),精度為0.5℃。DS18b20的精度較差為2℃?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,
14、大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測量類消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~ 5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。DS18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18b20的實(shí)驗(yàn)板原理接線圖如圖(2): 圖(2) DS18b20的實(shí)驗(yàn)板接線圖 其中:DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地) 2.3.2實(shí)驗(yàn)?zāi)M電路圖 溫度檢測控制模擬電路圖ds18b2
15、0原件和其連線如圖(3)溫度此傳感器上顯示的溫度同步顯示到LED顯示器上,并有加溫,減溫按鈕。 圖(3)溫度檢測控制模擬電路圖 2.3.3程序流程圖 圖(4)主程序流程圖 2.3.4仿真圖模型化: 圖(5)仿真模型圖 2.4報(bào)警電路模塊 2.4.1.信號燈: 根據(jù)所設(shè)溫度的不同,當(dāng)LCD顯示的溫度超過所設(shè)的最高溫度40攝氏度時(shí)led燈D1閃爍,當(dāng)LCD顯示的溫度低于所設(shè)的最低溫度30攝氏度時(shí)led燈D2閃爍,已達(dá)到警示溫度的效果。
16、 圖(6) LED報(bào)警燈 2.4.2.蜂鳴器報(bào)警 根據(jù)所設(shè)溫度,當(dāng)LCD顯示的溫度超過所設(shè)的最高溫度40攝氏度或低于最低溫度30攝氏度時(shí),蜂鳴器都會(huì)響,以達(dá)到高溫或低溫的報(bào)警效果,有助于保護(hù)工作人員的人身安全,保護(hù)機(jī)器設(shè)備,減少不必要的損失。 圖(7) 蜂鳴器 2.5電機(jī)旋轉(zhuǎn)模塊 根據(jù)所設(shè)溫度的不同,當(dāng)LCD顯示的溫度超過所設(shè)的最高溫度40攝氏度時(shí),步進(jìn)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)(程序里所設(shè));當(dāng)LCD顯示的溫度低于所設(shè)的最低溫度30攝氏度時(shí),步進(jìn)電機(jī)逆時(shí)針旋轉(zhuǎn),當(dāng)LCD顯示的溫度在30至40攝氏度(程序所設(shè))時(shí)
17、,步進(jìn)電機(jī)停止轉(zhuǎn)動(dòng)。 圖(8)電機(jī)旋轉(zhuǎn)圖 2.6秒表計(jì)時(shí)模塊 程序開始執(zhí)行后,LCD先顯示組員的學(xué)號與姓名,隨后在LCD的第一行顯示溫度,第二行顯示時(shí)間,程序所設(shè)初始時(shí)間是23:59:56,由此時(shí)間開始秒表的顯示,目的是知道程序開始運(yùn)行后經(jīng)過多長時(shí)間溫度達(dá)到了最高值,并計(jì)算出達(dá)到最高溫度后所經(jīng)過的時(shí)間,以提示相關(guān)工作人員注意溫度的調(diào)節(jié),節(jié)省電,從而達(dá)到節(jié)約資源與能源的效果。 圖(9)秒表顯示圖 2.7顯示模塊。 通過采集ds18b20的溫度,以和程序所設(shè)的溫度值,將采集到的溫度同步顯示到LED顯示器上,精確到小數(shù)點(diǎn)
18、后第一位。如下圖 圖(10)顯示電路 三、仿真后,部分顯示成果 圖(11) 啟動(dòng)時(shí)顯示學(xué)號和姓名拼音的縮寫 圖(12) 隨后顯示溫度(精確到小數(shù)點(diǎn)后一位)以和時(shí)鐘功能 圖(13)溫度達(dá)到40度時(shí),高溫報(bào)警啟動(dòng),D1亮,蜂鳴器鳴叫,同時(shí)步進(jìn)電機(jī)正轉(zhuǎn) 圖(14)溫度達(dá)到30度時(shí),低溫報(bào)警啟動(dòng),D2亮,蜂鳴器鳴叫,同時(shí)步進(jìn)電機(jī)反轉(zhuǎn) 圖(15)當(dāng)溫度在30與40度之間時(shí),僅僅顯示溫度與時(shí)間,報(bào)警燈不亮,步進(jìn)電機(jī)不轉(zhuǎn),蜂鳴器也不響 四、兩周實(shí)習(xí)總結(jié) 這次單片機(jī)
19、實(shí)習(xí)我們的題目是溫度檢測。老師一共給出了三個(gè)題目,我們通過抽簽抽到了這個(gè)題目。起初剛拿到這個(gè)題目時(shí)真的是一點(diǎn)兒頭緒都沒有,雖然上學(xué)期學(xué)了單片機(jī),但這個(gè)溫度傳感器DS18B20卻是一點(diǎn)都不了解,感覺無從下手。好在老師給了很多資料,無奈之下,只有一點(diǎn)一點(diǎn)的看,一點(diǎn)一點(diǎn)的學(xué),還有不會(huì)的就去網(wǎng)上找視頻看。前兩三天幾乎都沒動(dòng)手開始做,等到弄得差不多懂了的時(shí)候才開始動(dòng)手設(shè)計(jì)。我們剛開始是先做最簡單的功能即顯示溫度。雖然簡單但也遇到了一些問題,但都是一些變量定義的問題,所以還是解決掉了。接著我們就開始往上加功能,我們加了一個(gè)時(shí)鐘和電機(jī),顯示溫度時(shí)顯示時(shí)間,高溫報(bào)警時(shí),電機(jī)正傳,低溫報(bào)警時(shí),電機(jī)反轉(zhuǎn)。其中讓我
20、印象最深刻的就是畫仿真圖時(shí),把兩個(gè)芯片的引腳直接接在了一起,在仿真時(shí)不管怎么弄電機(jī)就是不轉(zhuǎn),我們也是很困惑。后來發(fā)現(xiàn)引腳端的電平?jīng)]變化,一直是灰的,才意識到兩個(gè)芯片根本沒有連好。另一個(gè)問題就是時(shí)鐘模塊時(shí)間總是走不準(zhǔn),通過向大神的請教才知道是電機(jī)程序的循環(huán)占了一定的執(zhí)行時(shí)間導(dǎo)致定時(shí)器的定時(shí)不準(zhǔn)。通過整個(gè)實(shí)習(xí),我們遇到過很多問題,但通過我們的努力我們還是一個(gè)個(gè)的解決掉了,整個(gè)項(xiàng)目完成時(shí),沒有感覺到累,反而是特別的激動(dòng),感覺很有成就感。通過這個(gè)實(shí)習(xí),學(xué)到了很多,也收獲了很多。 雖然說單片機(jī)實(shí)習(xí)結(jié)束了,但覺得它對我們以后的就業(yè)確實(shí)有很大幫助,就這次實(shí)習(xí)過程中所了解的,雖然上位機(jī)沒有做成功,但的的確
21、確感受到了單片機(jī)的強(qiáng)大,也感受到了單片機(jī)的作用,以前雖然學(xué)過單片機(jī)的課程但“上位機(jī)”三個(gè)字聽都沒聽過,別說自己揣摩著作,這次還是從別的同學(xué)那里聽到的,自己也著手做了一點(diǎn),但由于時(shí)間原因沒有做成功,這一點(diǎn)感到非常的遺憾,不過以后還是有時(shí)間的,可以在接下來的時(shí)間里好好琢磨單片機(jī)的相關(guān)知識,希望在以后的工作與學(xué)習(xí)中以和生活中用到,真真做到學(xué)以致用。 這次的實(shí)習(xí)相比以往有很多不同的地方,首先是分組的情況,以前一般都是和自己熟悉的或?qū)W號挨著比較近的學(xué)生一個(gè)小組,但這次我和二班的同學(xué)一組,雖然說我們都不是學(xué)霸,但我們沒有放棄,仍然以自己的進(jìn)度來完成本次實(shí)習(xí),雖然說在學(xué)習(xí)的過程中遇到了許多問題,如程序報(bào)錯(cuò)
22、,仿真電路圖有錯(cuò),步進(jìn)電機(jī)不轉(zhuǎn)等等,這些問題我們先解決,如果是在解決不了就找其他同學(xué)幫忙調(diào)解然后明白自己錯(cuò)在了哪里,這樣一步步的下來確實(shí)學(xué)到了不少東西。以前覺得非常難的單片機(jī)經(jīng)過這次的實(shí)習(xí)也沒覺得很難,即使單片機(jī)的只是很豐富??偟膩碚f自己對這次的實(shí)習(xí)還是可以的,獲得了許多書本上的知識,獲得了許多實(shí)踐的知識,獲得了許多無法在課堂上學(xué)到的東西。 本次實(shí)習(xí)也算是大學(xué)的最后一次是實(shí)習(xí),我們小組一起討論過,思考過,也為了一個(gè)小問題苦惱過,如LED燈不亮,蜂鳴器不響,步進(jìn)電機(jī)不轉(zhuǎn),LCD上溫度顯示不穩(wěn)定,秒表顯示不出來等等,兩周下來,看自己做的設(shè)計(jì)雖然說沒有達(dá)到自己非常想要的結(jié)果,但還是令人欣喜的,因?yàn)?/p>
23、我們解決了遇到的種種問題,雖然說有些問題不是我們自己解決的,但還是突破了障礙,做到了最后一步,還是非常感謝這次實(shí)習(xí)的機(jī)會(huì),能夠綜合的鍛煉我們的能力,提高自己的動(dòng)手能力,設(shè)計(jì)思維,總結(jié)能力,這給我們今后的工作帶來了一定的好處。 通過做上位機(jī)真切的感受到了單片機(jī),VC的強(qiáng)大,在知識的海洋里我們永遠(yuǎn)是渺小的,饑渴的,還有很多知識等待我們?nèi)W(xué)習(xí),還有很多驚喜等著我們自己去挖掘,學(xué)習(xí)才有收獲,實(shí)踐才能錘煉知識,多學(xué)習(xí),多實(shí)踐,多收獲。 五、參考文獻(xiàn) [1] 郭天祥.新概念51單片機(jī)C語音教程——入門提高開發(fā)拓展攻略 [M].北 京:北京:電子工業(yè)出版社,2009. [2] 韓廣興.電子元器件與
24、實(shí)用電路基礎(chǔ)[M].北京:電子工業(yè)出版社,2019. [3] 方大千,朱麗.電子控制系統(tǒng)裝置制作入門[M].北京:國防出版社,2019. [4] 劉向舉,劉麗娜. 基于單片機(jī)的智能溫度測控系統(tǒng)的設(shè)計(jì)[J]. 齊齊哈爾大 學(xué)學(xué)報(bào)(自然科學(xué)版). 2019(03) [5] 黃文力,鄧小磊. DS18B20數(shù)字溫度傳感器接口程序的時(shí)序[J]. 儀器儀表 用戶. 2019(06) [6] 黃曉林. 一種實(shí)用型智能恒溫控制系統(tǒng)設(shè)計(jì)[J]. 自動(dòng)化技術(shù)與應(yīng)用. 2019(11) [7] 王文,王直. 基于ARM和DS18B20的溫度監(jiān)測系統(tǒng)[J]. 電子設(shè)計(jì)工程. 2
25、019(20)
[8] 陳錫華,賈磊磊. 溫度傳感器DS18B20序列號批量搜索算法[J]. 單片機(jī)與 嵌入式系統(tǒng)應(yīng)用. 2019(09)
六、附錄
6.1原理圖
6.2參考程序
6.2.1 main.c:
#include
26、d int unsigned char date[]="32212206 lvwei"; unsigned char date1[]="32212110 ylx"; unsigned char time[]=" TIME 23:59:55 "; uchar DateTime[7]; unsigned char int_time; unsigned char second=55,minute=59,hour=23; uint tvalue; uchar i=0; sbit SPK=P1^7; 設(shè)置LCD位置 void SET_LCD
27、_POS(uchar p) Write_LCD_com(p|0x80); LCD寫程序 void LCD_string(uchar p,uchar *s) uchar i; SET_LCD_POS(p); for(i=0;i<16;i++) { Write_LCD_Data(s[i]); DelayMs(5); void format_datetime(uchar d,uchar *a) a[0]=d/10+'0';a[1]=d%10+'0'; void display2(int temp) form
28、at_datetime(DateTime[3],LCD_DSY_BUFFER1+10); TEM_BCD(GET_TEMP()); LCD_string(0x00,LCD_DSY_BUFFER1); 設(shè)置電機(jī) unsigned char code FFW[8]= { 0xf1, 0xf3, 0xf2, 0xf6, 0xf4, 0xfc, 0xf8, 0xf9 }; unsigned char code REV[8]= { 0xf9, 0xf8, 0xfc, 0xf4, 0xf6, 0xf2, 0xf3, 0xf1 }; char
29、 code reserve[3]_at_ 0x3b; //保留0x3b開始的3個(gè)字節(jié) 電機(jī)正傳 void motor_ffw(unsigned int n) unsigned char i; unsigned int j; for (i = 0; i < 8; i++) //一個(gè)周期轉(zhuǎn)30度 P1 = FFW[i]; //取數(shù)據(jù) DelayMs(8); //調(diào)節(jié)轉(zhuǎn)速 P1 = 0xf0; //使步進(jìn)電機(jī)掉電 步進(jìn)電機(jī)反轉(zhuǎn)(轉(zhuǎn)n*30度) voi
30、d motor_rev(unsigned int n) unsigned char i; unsigned int j; for (j = 0; j < n; j++) //轉(zhuǎn)n*30度 for (i = 0; i < 8; i++) //一個(gè)周期轉(zhuǎn)30度 P1 = REV[i]; //取數(shù)據(jù) DelayMs(8); //調(diào)節(jié)轉(zhuǎn)速 P1 = 0xf0; //使步進(jìn)電機(jī)掉電 鐘表顯示 void clock_write(unsigned int s,unsigned int m
31、,unsigned int h) write_sfm(0x48,h); write_sfm(0x4b,m); write_sfm(0x4e,s); 主函數(shù) void main() LCD_Init(); write_string(0x80,date); write_string(0xC0,date1); DelayMs(500); TMOD = 0x10; TH1 = 0x4C; TL1 = 0x00; EA = 1; ET1 = 1; TR1
32、= 1; int_time=0; while(1) if(i==0) Write_LCD_com(0x01); while(i==0) display2(); if(htvaluetemp==1) motor_ffw(12); //電機(jī)正轉(zhuǎn)360度 HT=0; SPK=1; else HT=1; SPK=0; if(ltvaluetemp==1) motor_rev(6); //電機(jī)反轉(zhuǎn)180
33、度 LT=0; SPK=1; else LT=1; SPK=0; void T0_interserve(void) interrupt 3 int_time++; if(int_time==20) int_time=0; second++; clock_write(second,minute,hour); if(second==60) second=0; minute++; if(minute==60) minute=0; hour++; if(hour==24
34、)
hour=0;
TH1 = 0x4C;
TL1 = 0x00;
6.2.2 LCD.h
#include
35、; for(x=z;x>0;x--) for(y=110;y>0;y--); /** LCD1602程序模塊 **/ void DelayMs(uint t) uint i,j; for(i=t;i>0;i--) for(j=246;j>0;j--); 讀LCD狀態(tài) uchar Read_LCD_State() { uchar state; RS=0; RW=1; EN=1; DelayMs(1); state=P0
36、; EN=0; DelayMs(1); return state; 忙則等待 void LCD_Busy_Wait() { while((Read_LCD_State()&0x80)==0x80); DelayMs(5); LCD寫數(shù)據(jù) void Write_LCD_Data(uchar dat) { LCD_Busy_Wait(); RS=1; RW=0; EN=0; P2=dat; EN=1;
37、 DelayMs(1); EN=0; LCD寫指令 void Write_LCD_com(uchar i) { LCD_Busy_Wait(); RS=0; RW=0; EN=0; P2=i; EN=1; DelayMs(1); EN=0; LCD初始化 void LCD_Init(void) Write_LCD_com(0x38); //顯示模式設(shè)置 DelayMs(1);
38、 Write_LCD_com(0x38); DelayMs(1); Write_LCD_com(0x38); DelayMs(1); Write_LCD_com(0x38); Write_LCD_com(0x08); //顯示關(guān)閉 Write_LCD_com(0x01); //顯示清屏 Write_LCD_com(0x06); //顯示光標(biāo)移動(dòng)設(shè)置 DelayMs(1); Write_LCD_com(0x0C); //顯示開和光標(biāo)設(shè)置 void
39、write_string(uchar addr,uchar *p)//采用指針的方法輸入字符,n為字符數(shù)目 Write_LCD_com(addr); while(*p!='\0') Write_LCD_Data(*p++); void write_sfm(uchar addr,uchar dat)//向指定地址寫入數(shù)據(jù) uchar shi,ge; shi=dat/10; ge=dat%10; Write_LCD_com(0x80+addr); Write_LCD_Data('0'+shi); Write_LCD_Data('0'+ge);
40、6.2.3 TEMP.H sbit DQ =P3^7; //DS18B20溫度 sbit HT=P0^3; //高溫報(bào)警 sbit LT=P0^4; //低溫報(bào)警 #define uchar unsigned char #define uint unsigned int bit flag; uint tvalue; extern uchar htvaluetemp=0,ltvaluetemp=0; extern uchar LCD_DSY_BUFFER1[]={"temperature: "}; //LCD顯示緩沖 void DelayUs(u
41、char us) while(us--); ds1820復(fù)位 uchar ds1820rst() unsigned char x=0; DQ = 1; //DQ復(fù)位 DelayUs(8); //延時(shí) DQ = 0; //DQ拉低 DelayUs(100); //精確延時(shí)大于480us DQ = 1; //拉高 DelayUs(8); x=DQ; DelayUs(100); DQ=1; return x; 18B20讀數(shù)據(jù)
42、uchar ds1820rd() unsigned char i; unsigned char dat = 0; for (i=8;i>0;i--) DQ = 0; //給脈沖信號 dat>>=1; DQ = 1; //給脈沖信號 _nop_(); _nop_(); if(DQ) dat|=0x80; DelayUs(30); DQ=1; return(dat); 18B20寫指令 void ds1820wr(uchar wdata)
43、 uchar i; for (i=8; i>0; i--) DQ = 0; DQ = wdata&0x01; DelayUs(5); DQ = 1; wdata>>=1; /*讀取溫度值并轉(zhuǎn)換*/ uint GET_TEMP() uchar a,b; if(ds1820rst()==0) { ds1820wr(0xCC); //跳過讀序列號 ds1820wr(0x44); //啟動(dòng)溫度轉(zhuǎn)換 ds1820rst(); ds1820wr(0xCC); //跳過讀序列號 ds1820wr(0xBE); /
44、/讀取溫度 a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0FFF) flag=0; else tvalue=~tvalue+1; flag=1; tvalue=tvalue*(0.625)+0.5; //溫度值擴(kuò)大10倍,精確到1位小數(shù) htvaluetemp=0; ltvaluetemp=0; if(tvalue>=400) htvaluetemp=1; if(tvalue<=300) ltvaluetemp=1; return(tvalue); 溫度BCD轉(zhuǎn)換 void TEM_BCD(uint i) uint a,b,c; a=i/100; b=i%100/10; c=i%10; LCD_DSY_BUFFER1[11]=a+'0'; LCD_DSY_BUFFER1[12]=b+'0'; LCD_DSY_BUFFER1[13]='.'; LCD_DSY_BUFFER1[14]=c+'0'; LCD_DSY_BUFFER1[15]='C'; 第 15 頁
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案