《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)消毒柜控制電路的設(shè)計(jì)_第1頁(yè)
《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)消毒柜控制電路的設(shè)計(jì)_第2頁(yè)
《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)消毒柜控制電路的設(shè)計(jì)_第3頁(yè)
《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)消毒柜控制電路的設(shè)計(jì)_第4頁(yè)
《單片機(jī)原理及應(yīng)用》課程設(shè)計(jì)報(bào)告書(shū)消毒柜控制電路的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)報(bào)告書(shū)課題名稱消毒柜控制電路的設(shè)計(jì) 姓 名學(xué) 號(hào) 專 業(yè)電氣工程及其自動(dòng)化指導(dǎo)教師 機(jī)電與控制工程學(xué)院 年 月 日填 寫 說(shuō) 明 1、正文部分: (1) 標(biāo)題與正文格式定義標(biāo)準(zhǔn)如下:一級(jí)標(biāo)題:1.標(biāo)題1二級(jí)標(biāo)題:1.1標(biāo)題2三級(jí)標(biāo)題:1.1.1標(biāo)題3四級(jí)標(biāo)題:1.1.1.1標(biāo)題4 (2)表格:盡可能采用三線表。 (3)圖形:直接插入的插圖應(yīng)有圖標(biāo)、圖號(hào),不能直接插入的圖應(yīng)留出插圖空位。圖中文字、符號(hào)書(shū)寫要清楚,并與正文一致。 (4)文字表述:要求層次清楚,語(yǔ)言流暢,語(yǔ)句通順,無(wú)語(yǔ)法和邏輯錯(cuò)誤,無(wú)錯(cuò)字、別字、漏字。文字的表述應(yīng)當(dāng)以科學(xué)語(yǔ)言描述研究過(guò)程和研究結(jié)果,不要以口

2、語(yǔ)化的方式表達(dá),報(bào)告中科技術(shù)語(yǔ)和名詞應(yīng)符合規(guī)定的通用詞語(yǔ),并使用法定計(jì)量單位和標(biāo)準(zhǔn)符號(hào)。 2、參考文獻(xiàn): (1)數(shù)量要求:參考文獻(xiàn)只選擇最主要的列入,應(yīng)不低于5種。 (2)種類要求:參考文獻(xiàn)的引用,可以是著作m、論文j、專利文獻(xiàn)p、會(huì)議論文等。 (3)文獻(xiàn)著錄格式及示例。參考文獻(xiàn)用宋體五號(hào)字。 1 作者. 書(shū)名m. 版次. 出版地: 出版者, 出版年: 起止頁(yè)碼 (著作圖書(shū)文獻(xiàn)) 2 作者. 文章名j. 學(xué)術(shù)刊物名稱. 年. 卷(期): 起止頁(yè)碼 (學(xué)術(shù)刊物文獻(xiàn)) 示例:1王社國(guó),趙建光。基于arm的嵌入式語(yǔ)音識(shí)別系統(tǒng)研究 j。微計(jì)算機(jī)信息,2007,2-2:149-150.3、附錄或附件:(

3、可選項(xiàng)) 重要的測(cè)試結(jié)果、圖表、設(shè)計(jì)圖紙、源程序代碼、大量的公式、符號(hào)、照片等不宜放入正文中的可以附錄形式出現(xiàn)。4、如果需要可另行附頁(yè)粘貼。任 務(wù) 書(shū)基于單片機(jī)的消毒柜控制電路的設(shè)計(jì) 設(shè)計(jì)一臺(tái)消毒柜控制系統(tǒng),要求:(1)顯示消毒柜溫度,保持時(shí)間。(2)可以鍵盤設(shè)定消毒柜溫度,定時(shí)時(shí)間。(3)可以實(shí)現(xiàn)實(shí)時(shí)中斷功能。(4)消毒后自動(dòng)關(guān)機(jī)。(5)測(cè)溫誤差:0.5 c。(6)定時(shí)誤差:20s/月目 錄1、緒論 2、方案論證(規(guī)劃、選定) 3、方案說(shuō)明(設(shè)計(jì)) 4、硬件方案設(shè)計(jì) 5、軟件方案設(shè)計(jì)6、調(diào)試 7、技術(shù)小結(jié)(結(jié)束語(yǔ)) 8、參考文獻(xiàn) 9、附錄(源程序代碼、電路圖等) 1. 緒論 該課題是設(shè)計(jì)一個(gè)

4、消毒柜其實(shí)就是設(shè)計(jì)一個(gè)智能的溫度控制系統(tǒng),消毒柜主要通過(guò)加熱到一個(gè)指定溫度,對(duì)餐具等衛(wèi)生潔具進(jìn)行高溫消毒,消毒柜將高溫控制在一個(gè)指定的范圍內(nèi),并維持一定時(shí)間,殺滅細(xì)菌,極大地增強(qiáng)了人們的飲食衛(wèi)生,大大降低了疾病的交叉?zhèn)魅荆瑸樘岣呷藗兊纳眢w健康起了重要的作用。本文主要介紹了一個(gè)基于at89c51單片機(jī)制作的消毒柜控制電路。它主要包括供電電源電路、上電復(fù)位電路、晶振電路、開(kāi)關(guān)控制電路、顯示電路等部分。文中對(duì)各電路的結(jié)構(gòu)及工作原理作了詳盡的介紹。電路運(yùn)行后,能自動(dòng)定時(shí)控制消毒柜的加電和斷電,適時(shí)有效地完成對(duì)柜內(nèi)餐具或其它物品的消毒工作。具有電路簡(jiǎn)單、制作容易、使用靈活等優(yōu)點(diǎn)。通過(guò)該電路,可以進(jìn)一步了

5、解到單片機(jī)電路的應(yīng)用擴(kuò)展功能和指令應(yīng)用技巧。本文的消毒柜控制系統(tǒng)就是為了人們?nèi)粘I钪械牟途呦径O(shè)計(jì)的,采用微電腦控制技術(shù),精確地控制消毒柜內(nèi)的溫度和加熱時(shí)間,很大程度上改善了人們的飲食衛(wèi)生,提高了人們的生活水平。本設(shè)計(jì)采用ds18b20溫度傳感器采集實(shí)時(shí)溫度,通過(guò)dq口送51單片機(jī)系統(tǒng),實(shí)現(xiàn)模擬溫度值的采集、轉(zhuǎn)化、輸出數(shù)字值,然后51單片機(jī)對(duì)采集的數(shù)據(jù)處理后送液晶顯示電路,實(shí)時(shí)動(dòng)態(tài)地顯示當(dāng)前的溫度及倒計(jì)時(shí)時(shí)間。對(duì)溫度的控制主要由單片機(jī)內(nèi)部三種中斷方式來(lái)控制啟動(dòng)和停止。2、方案論證21 系統(tǒng)設(shè)計(jì)要求2.1.1顯示消毒柜溫度,保持時(shí)間。2.1.2可以鍵盤設(shè)定消毒柜溫度,定時(shí)時(shí)間。2.1.3可以

6、實(shí)現(xiàn)實(shí)時(shí)中斷功能。22 系統(tǒng)組成框圖ds18b20鍵盤控制單片機(jī)液晶屏顯示發(fā)光二極管顯示圖2.1 系統(tǒng)組成框圖23 系統(tǒng)工作原理該系統(tǒng)是基于at89s51單片機(jī)的溫度控制的且實(shí)現(xiàn)通過(guò)高溫來(lái)殺滅病毒的消毒柜系統(tǒng),該系統(tǒng)主要三大部分組成。第一部分是由溫度傳感器ds18b20采集實(shí)時(shí)溫度轉(zhuǎn)換成數(shù)字信號(hào);第二部分的電路是由鍵盤控制消毒的定時(shí)和啟停;第三部分是液晶顯示屏的顯示部分。 at89s51單片機(jī)對(duì)鍵盤的掃描結(jié)果和即時(shí)溫度值的處理,實(shí)現(xiàn)對(duì)溫度的實(shí)時(shí)控制,系統(tǒng)設(shè)計(jì)了啟動(dòng)設(shè)定定時(shí)時(shí)間,設(shè)置定時(shí)時(shí)間,中斷控制定時(shí),共四個(gè)鍵,按下啟動(dòng)設(shè)定定時(shí)時(shí)間功能鍵即確定開(kāi)始溫度增減按鈕時(shí),單片機(jī)加熱時(shí)間可通過(guò)溫度加減

7、按鈕設(shè)定,開(kāi)始加熱,啟動(dòng)定時(shí)器中斷控制,當(dāng)溫度加熱設(shè)定時(shí)間到后停止加熱。23系統(tǒng)工作論證 通過(guò)對(duì)系統(tǒng)控制要求的研究,確定了控制系統(tǒng)的基本框圖,針對(duì)其基本原理進(jìn)行了分析說(shuō)明,此方案能滿足消毒柜控制系統(tǒng)的基本要求。3、方案說(shuō)明 3.1 ds18b20 一線總線溫度傳感器特點(diǎn): 1體積小,安裝方便;可聯(lián)網(wǎng),方便分散點(diǎn)測(cè)量;三線二線式連接方式;測(cè)量范圍-55+125;3.2 at89c51按照單片機(jī)系統(tǒng)擴(kuò)展與系統(tǒng)配置狀況,單片機(jī)應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。at89c51單片機(jī)是美國(guó)atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī),具有豐富的內(nèi)部資源:4kb閃存、128bra

8、m、32根i/o口線、2個(gè)16位定時(shí)/計(jì)數(shù)器、5個(gè)向量?jī)杉?jí)中斷結(jié)構(gòu)、2個(gè)全雙工的串行口,具有4.255.50v的電壓工作范圍和024mhz工作頻率,使用at89c51單片機(jī)時(shí)無(wú)須外擴(kuò)存儲(chǔ)器。因此,單片機(jī)最小系統(tǒng)為晶振、復(fù)位、電源等電路和必要的軟件組成的單個(gè)單片機(jī)。3.3 1602液晶顯示首先是1602液晶的管腳,總共有16個(gè)管腳,其中有三根是電源地、電源正、還有事對(duì)比度的調(diào)整電壓;還有兩根是lcd背光的正、負(fù)極。重要的是決定led指令的三根管腳嗎,分別是rs、 r/w、e(一般接單片機(jī)的p2.0p2.2),剩下的八根式數(shù)據(jù)線分別為db0db7(一般接單片機(jī)的p0口)。4、硬件方案設(shè)計(jì)4.1系統(tǒng)

9、硬件結(jié)構(gòu)框圖51單片機(jī)lcd液晶顯示屏實(shí)時(shí)溫度,定時(shí)時(shí)間,溫度上下限二極管亮滅按鍵ds18b20圖2系統(tǒng)硬件結(jié)構(gòu)框圖4.2單片機(jī)最小系統(tǒng)設(shè)計(jì)單片機(jī)采用的是atmel公司的at89s51芯片該款芯片是一種低功耗、高性能cmos8位微控制器,具有 4k 在系統(tǒng)可編程flash 存儲(chǔ)器。使用atmel 公司高密度非 易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和引腳完 全兼容。片上flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng) 可編程flash,使得at89s51為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 at89s51具有以

10、下標(biāo)準(zhǔn)功能: 4k字節(jié)flash,128字節(jié)ram, 32 位i/o 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,兩個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,at89s51可降至0hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,cpu 停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 4k 字節(jié)在系統(tǒng)可編程 flash at89s51。單片機(jī)最小系統(tǒng)電路圖如圖3.2所示。圖3.2 單片機(jī)最小系統(tǒng)電路圖4.3 ds

11、18b20控制電路通過(guò)p3.4口與dq的連接實(shí)現(xiàn)51單片機(jī)與溫度傳感器ds18b20的連通工作。4.4 鍵盤控制電路該鍵盤接口電路通過(guò)按鍵控制定時(shí)和中斷。本模塊通過(guò)編制程序,掃描鍵盤,來(lái)比對(duì)鍵盤的值,來(lái)設(shè)置四個(gè)功能鍵。4.5 lcd液晶顯示電路通過(guò)p0口控制液晶顯示的輸入。p0口必須外接上拉電阻。通過(guò)p2口的低三位控制rs,rw,e三個(gè)功能控制引腳,從而控制液晶顯示屏lcd的工作。5、軟件方案設(shè)計(jì)5.1系統(tǒng)軟件設(shè)計(jì)原理本程序設(shè)計(jì)根據(jù)通過(guò)溫度傳感器采樣來(lái)的溫度值,經(jīng)過(guò)內(nèi)部轉(zhuǎn)化為二進(jìn)制數(shù)字量,再通過(guò)51單片機(jī)控制輸出至lcd液晶顯示屏,然后調(diào)用顯示程序進(jìn)行溫度的事實(shí)顯示。對(duì)于各個(gè)功能鍵的程序是從p

12、0口讀數(shù)、再轉(zhuǎn)換成十進(jìn)制數(shù)、送顯緩區(qū)、再根據(jù)鍵盤掃描的結(jié)果對(duì)溫度值進(jìn)行比較判斷,當(dāng)按下的鍵是加減功能鍵時(shí),系統(tǒng)要控制加熱的時(shí)間可進(jìn)行調(diào)節(jié)。開(kāi)始加熱后,通過(guò)定時(shí)器控制加熱時(shí)間到的中斷,當(dāng)加熱時(shí)間由設(shè)定值減至0時(shí)停止加熱,鍵盤顯示實(shí)時(shí)溫度。通過(guò)在主程序里面設(shè)立標(biāo)志,該程序是通過(guò)延時(shí)的方法來(lái)確保溫度轉(zhuǎn)換為顯示數(shù)據(jù)實(shí)現(xiàn)溫度與按鍵的統(tǒng)一和“同步”,實(shí)時(shí)的控制加熱的工作,以達(dá)到人們所要求達(dá)到的效果。5.2主程序流程圖 開(kāi)始系統(tǒng)初始化顯示屏初始中斷初始定時(shí)初始鍵盤設(shè)置與液晶屏顯示判斷定時(shí) 定時(shí)未到,繼續(xù)判斷 定時(shí)到 工作 圖3主程序流程圖5.3系統(tǒng)子程序設(shè)計(jì)本軟件設(shè)計(jì)中,系統(tǒng)子程序的設(shè)計(jì)是整個(gè)程序設(shè)計(jì)的重中

13、之重,子程序以模塊化的方式實(shí)現(xiàn)各個(gè)獨(dú)立功能,再通過(guò)主程序來(lái)調(diào)用功能子程序,使整個(gè)程序?qū)崿F(xiàn)完整的功能。按鍵處理子程序, ds18b20溫度采樣子程序,溫度采樣轉(zhuǎn)化子程序,顯示處理子程序。6、調(diào)試6.1 硬件調(diào)試6.1.1.由于本次課程設(shè)計(jì)做了實(shí)物出來(lái),通過(guò)設(shè)計(jì)方案,在試驗(yàn)焊接板上進(jìn)行合理布局并焊接實(shí)物圖。然后根據(jù)實(shí)驗(yàn)指導(dǎo)書(shū)上的各功能芯片的端口地址,連接號(hào)各部分電路,用電表測(cè)量焊接點(diǎn)的正常與否,最后連上電源。6.1.2.檢測(cè)lcd顯示模塊,因?yàn)橥ㄟ^(guò)鍵盤顯示,可以直觀的知道程序是否基本運(yùn)行正常,是否按預(yù)定的顯示。6.1.3. 調(diào)試鍵盤模塊電路,看是否按壓正常,以及二極管閃滅部分是否能夠?qū)崿F(xiàn)實(shí)時(shí)閃亮。

14、6.1.4.最后進(jìn)行整體硬件電路的聯(lián)調(diào)。6.2軟件調(diào)試軟件調(diào)試是個(gè)很重要的過(guò)程,由于軟件出現(xiàn)錯(cuò)誤的話就基本上各部分功能都實(shí)現(xiàn)都有困難,所以軟件的調(diào)試時(shí)重中之重。6.2.1第一步是進(jìn)行的是ds18b20的軟件的調(diào)試,通過(guò)采集溫度后內(nèi)部轉(zhuǎn)換后通過(guò)合理的內(nèi)存單元的分配,存儲(chǔ)采樣后轉(zhuǎn)換的值,然后同過(guò)51單片機(jī)程序看是否實(shí)現(xiàn)在lcd上顯示實(shí)時(shí)溫度值。6.2.2鍵盤掃描部分程序的調(diào)試,該部分是程序中的功能鍵實(shí)現(xiàn)控制溫度和時(shí)間的主要的部分,如果該部分程序出現(xiàn)錯(cuò)誤的話,邏輯就會(huì)出現(xiàn)混亂,各功能鍵將不能實(shí)現(xiàn),在調(diào)試的過(guò)程中,我們發(fā)現(xiàn),我們的鍵盤電路的接法接口要正確連接,一旦鍵盤口搞錯(cuò)的話,就會(huì)出現(xiàn)按鍵的功能的混

15、亂,所以在這一步分的調(diào)試上最主要是把握鍵盤的控制分析。6.2.3 最后一部分調(diào)試顯示程序的調(diào)試,該部分程序的調(diào)試,關(guān)系到該課設(shè)是否夠直觀的體現(xiàn)溫度值,以及建立一個(gè)直觀的人機(jī)對(duì)話界面,在該部分程序的調(diào)試的過(guò)程中面臨的最大困難就是對(duì)于顯緩單元的分配,以及初始化,讀寫的控制,如果顯緩單元分配有沖突的話,就會(huì)導(dǎo)致程序邏輯錯(cuò)誤,所以應(yīng)該仔細(xì)調(diào)試該部分應(yīng)該邊編寫邊調(diào)試。6.3調(diào)試結(jié)果用專門的編譯軟件keil對(duì)程序進(jìn)行編譯,編譯無(wú)誤后。并讓其生成hex文件,按照軟件流程圖在仿真軟件proteus上進(jìn)行仿真,把各個(gè)元器在仿真軟件中找出來(lái),再將它們連接起來(lái),連接完畢后將生成的hex文件加載到單片機(jī)中。經(jīng)過(guò)詳細(xì)的

16、硬件調(diào)試和軟件調(diào)試之后,系統(tǒng)工作正常,lcd液晶顯示模塊共兩行,分別按要求實(shí)時(shí)顯示設(shè)定的最高和最低溫,當(dāng)前溫度值,定時(shí)時(shí)間值。按下“加減鍵”時(shí),系統(tǒng)可調(diào)節(jié)消毒加熱的時(shí)間,加熱時(shí)間到后點(diǎn)亮定時(shí)到指示燈,當(dāng)時(shí)間到達(dá)到0時(shí),停止加熱。7、技術(shù)小結(jié)通過(guò)一個(gè)多星期的研究動(dòng)手實(shí)踐完成,簡(jiǎn)單的消毒柜控制系統(tǒng)初步成形。實(shí)物圖也出來(lái)了,實(shí)現(xiàn)了課程設(shè)計(jì)的基本要求。本設(shè)計(jì)集中了按鍵,定時(shí)器,液晶顯示等的應(yīng)用。對(duì)于按鍵部分控制簡(jiǎn)單,因?yàn)槭仟?dú)立的按鍵控制,只需要與51單片機(jī)的任一輸入輸出端口相連,通過(guò)控制器高低電平即可。對(duì)于定時(shí)器和外部中斷0,1的設(shè)計(jì)書(shū)寫,只需要對(duì)中斷和定時(shí)器控制的方法和步驟熟悉,熟練運(yùn)用它們的啟動(dòng)停

17、止就可正確完成控制。對(duì)于我來(lái)說(shuō)最難得就是lcd液晶顯示的控制了,硬件連接圖可根據(jù)經(jīng)驗(yàn)和管腳說(shuō)明連接就行,但軟件程序編寫時(shí)對(duì)其的不熟悉和難以理解,給了我很大的障礙,以至于很久弄不出程序,不能支持實(shí)物電路板的正常工作。后來(lái)經(jīng)過(guò)學(xué)習(xí)參考咨詢和大家交流等各種渠道,慢慢的掌握了其基本的知識(shí),才有了后來(lái)的完整的程序。本次課設(shè)一個(gè)不足之處就是沒(méi)有完成消毒后自動(dòng)關(guān)機(jī)的功能,浪費(fèi)單片機(jī)的內(nèi)部資源。對(duì)于溫度傳感器電路,還存在缺憾,并不能完全掌握該部分程序的編寫。本課程設(shè)計(jì)自己去焊接電路,鍛煉了獨(dú)立思考和實(shí)際操作的能力,一定程度上增加了課程設(shè)計(jì)的難度,但是真正對(duì)我們?cè)O(shè)計(jì)電路卻是一個(gè)幫助和提高,所以我努力并認(rèn)真的對(duì)待

18、著本次的設(shè)計(jì),希望能夠自行設(shè)計(jì)硬件電路根據(jù)自己設(shè)計(jì)的硬件電路來(lái)編制相應(yīng)的程序在對(duì)我們掌握各硬件部分電路有更好的理解,也一定程度上復(fù)習(xí)了以前所學(xué)的其基礎(chǔ)知識(shí),也能更好的掌握一些電氣知識(shí)。8、參考文獻(xiàn)【1】 萬(wàn)福君.潘松峰.劉芳.msc-51單片微型機(jī)原理、系統(tǒng)設(shè)計(jì)及應(yīng)用【m】.北京:清華大學(xué)出版社,2009.9【2】 陳黎娟.萬(wàn)在紅.吳開(kāi)志.聶鵬程.單片微型計(jì)算機(jī)實(shí)驗(yàn)教程【m】.南昌航空大學(xué),2006.2【3】 張永瑞. 電子測(cè)量技術(shù)基礎(chǔ)【m】.西安:西安電子科技大學(xué)出版社,2009.1【4】 劉同法.陳忠平.彭繼衛(wèi).單片機(jī)外圍接口電路與工程實(shí)踐【m】.北京:北京航空航天大學(xué)出版社, 2009.

19、3【5】 何立民.單片機(jī)應(yīng)用技術(shù)選編 (1-8). 北京:北京航空航天大學(xué)出版社. 2001【6】 鄔寬明.單片機(jī)外圍器件實(shí)用手冊(cè). 數(shù)據(jù)傳輸接口器件分冊(cè)m.北京:北京航空航天大學(xué)出版社,1998 【7】 鮑健等. 用單片機(jī)直接驅(qū)動(dòng)液晶顯示器.量子電子學(xué)報(bào)j.2005.2(4):651652 9、附錄9.1主程序源程序:/#include /用at89c51時(shí)就用這個(gè)頭文件#include /用華邦w78e58b時(shí)必須用這個(gè)頭文件#include #include #include #include #include #include #include lcd1602.h/液晶顯示頭文件/sb

20、it dq = p34;/定義dq引腳為p3.4sbit k0=p37; /確認(rèn)開(kāi)始溫度增減的按鈕sbit k3=p11; /溫度加sbit k4=p13; /溫度減sbit k5=p17; /確定按鈕sbit led=p30; / 溫度到后亮 unsigned char min=0;unsigned char temp=0;unsigned int a=0;unsigned char b=0;unsigned char t2,*pt;/用來(lái)存放溫度值,測(cè)溫程序就是通過(guò)這個(gè)數(shù)組與主函數(shù)通信的/unsigned char tempbuffer19=0x2b,0x31,0x32,0x32,0x2e

21、,0x30,0x30,0x43,0;unsigned char tempbuffer117=0x2b,0x31,0x32,0x32,0x2e,0x30,0x30,0x43, 0x54,0x3a,0x30,0x30,0x43,0x3a,0x30,0x30,0;/顯示實(shí)時(shí)溫度,上電時(shí)顯示+125.00cunsigned char tempbuffer017=0x54,0x48,0x3a,0x2b,0x31,0x32,0x35,0x20,0x54,0x4c,0x3a,0x2b,0x31,0x32,0x34,0x43,0;/顯示溫度上下限,上電時(shí)顯示th:+125 tl:+124cunsigned c

22、har code dotcode4=0,25,50,75;/*因顯示分辨率為0.25,但小數(shù)運(yùn)算比較麻煩,故采用查表的方法*再將表值分離出十位和個(gè)位后送到十分位和百分位*/void covert0( unsigned char th, unsigned char tl)/將溫度上下限轉(zhuǎn)換為lcd顯示的數(shù)據(jù) if(th0x7f) /判斷正負(fù),如果為負(fù)溫,將其轉(zhuǎn)化為其絕對(duì)值 tempbuffer03=0x2d; /0x2d為-的ascii碼th=th;th+; else tempbuffer03=0x2b;/0x2b為+的ascii碼 if(tl0x7f) tempbuffer011=0x2d;

23、/0x2d為-的ascii碼 tl=tl+1; else tempbuffer011=0x2b;/0x2b為+的ascii碼 tempbuffer04=th/100+0x30; /分離出th的百十個(gè)位 if( tempbuffer04=0x30) tempbuffer04=0xfe; /百位數(shù)消隱 tempbuffer05=(th%100)/10+0x30;/分離出十位 tempbuffer06=(th%100)%10+0x30; /分離出個(gè)位 tempbuffer012=tl/100+0x30; /分離出tl的百十個(gè)位 if( tempbuffer012=0x30) tempbuffer01

24、2=0xfe; /百位數(shù)消隱 tempbuffer013=(tl%100)/10+0x30;/分離出十位 tempbuffer014=(tl%100)%10+0x30; /分離出個(gè)位 /if(k0=0) b=0; if(tempbuffer12=tempbuffer114)&(tempbuffer13=tempbuffer115)&(b=1) led=1; b=0; k0=1; void covert1(void)/將溫度轉(zhuǎn)換為lcd顯示的數(shù)據(jù) unsigned char x=0x00,y=0x00; t0=*pt; pt+; t1=*pt; if(t10x07) /判斷正負(fù)溫度 tempbu

25、ffer10=0x2d; /0x2d為-的ascii碼t1=t1; /*下面幾句把負(fù)數(shù)的補(bǔ)碼*/t0=t0; /* 換算成絕對(duì)值*/x=t0+1; /*/t0=x; /*/if(x255) /*/t1+; /*/ else tempbuffer10=0x2b;/0xfe為變+的ascii碼 t1=4;/右移4位 x=x&0x0f;/和前面兩句就是取出t0的高四位 t1=t1|x;/將高低字節(jié)的有效值的整數(shù)部分拼成一個(gè)字節(jié) tempbuffer11=t1/100+0x30; /+0x30 為變 09 ascii碼 if( tempbuffer11=0x30) tempbuffer11=0xfe;

26、 /百位數(shù)消隱 tempbuffer12=(t1%100)/10+0x30;/分離出十位 tempbuffer13=(t1%100)%10+0x30; /分離出個(gè)位 t0=t0&0x0c;/取有效的兩位小數(shù) t0=2;/左移兩位,以便查表 x=t0; y=dotcodex;/查表?yè)Q算成實(shí)際的小數(shù) tempbuffer15=y/10+0x30;/分離出十分位 tempbuffer16=y%10+0x30;/分離出百分位 void delay(unsigned char i)while(i-);void delay1(unsigned int z) unsigned int i,j; for(i=

27、z;i0;i-) for(j=100;j0;j-);/*設(shè)定時(shí)間函數(shù)*/void shijianset() if(k3=0) delay1(120); if(k3=0) min+; if(k4=0) delay1(120); if(k4=0) min-; tempbuffer111=min%10+0x30; tempbuffer110=min/10+0x30;/*確認(rèn)開(kāi)始計(jì)時(shí)函數(shù)*/void jishi() if(k5=0) delay1(120); if(k5=0) tr0=1; /開(kāi)始計(jì)時(shí) b=1; if(a=20) a=0; min-; if(min=0) tr0=0; /*設(shè)置溫度函數(shù)

28、*/void setwendu() tempbuffer114=temp/10+0x30; tempbuffer115=temp%10+0x30;/*主程序*/main() unsigned char th=110,tl=-20; /下一步擴(kuò)展時(shí)可能通過(guò)這兩個(gè)變量,調(diào)節(jié)上下限 led=0; /測(cè)溫函數(shù)返回這個(gè)數(shù)組的頭地址 ea=1; /開(kāi)總中斷 ex0=1; /允許外部中斷0 ex1=1; /允許外部中斷1 it0=1; /設(shè)置外部觸發(fā)0為跳沿觸發(fā) it1=1; /設(shè)置外部觸發(fā)1為跳沿觸發(fā) tmod=0x01; /設(shè)置定時(shí)器t0為工作方式1 tl0=0xb0; th0=0x3c; /設(shè)置每次定

29、時(shí)時(shí)間為50ms et0=1; /允許定時(shí)器中斷 k0=0; while(1) pt=readtemperature(th,tl,0x3f); /上限溫度-22,下限-24,分辨率10位,也就是0.25c /讀取溫度,溫度值存放在一個(gè)兩個(gè)字節(jié)的數(shù)組中,delay(100); shijianset();setwendu();covert1();covert0(th,tl);jishi();lcd_initial();/第一個(gè)參數(shù)列號(hào),第二個(gè)為行號(hào),為0表示第一行/為1表示第二行,第三個(gè)參數(shù)為顯示數(shù)據(jù)的首地址lcd_print(0,0,tempbuffer0);lcd_print(0,1,temp

30、buffer1); void extern0() interrupt 0 temp+; void extern1() interrupt 2 temp-; void timer() interrupt 1 tl0=0xb0; th0=0x3c; a+;9.2子程序9.2.1 lcd顯示子程序/#include /用at89c51時(shí)就用這個(gè)頭文件#include /用華邦w78e58b時(shí)必須用這個(gè)頭文件#include /注意那個(gè)lcd_wait()函數(shù),它是判忙標(biāo)志的,在實(shí)際硬件要把注掉的那種打開(kāi)/port definitions*sbit lcdrs= p20;sbit lcdrw= p21

31、;sbit lcden = p22;sfr dbport = 0x80;/p0=0x80,p1=0x90,p2=0xa0,p3=0xb0.數(shù)據(jù)端口/內(nèi)部等待函數(shù)*unsigned char lcd_wait(void)lcdrs=0;lcdrw=1;_nop_();lcden=1;_nop_();/while(dbport&0x80);/在用proteus仿真時(shí),注意用屏蔽此語(yǔ)句,在調(diào)用gotoxy()時(shí),會(huì)進(jìn)入死循環(huán), /可能在寫該控制字時(shí),該模塊沒(méi)有返回寫入完備命令,即dbport&0x80=0x80 /實(shí)際硬件時(shí)打開(kāi)此語(yǔ)句lcden=0;return dbport;/向lcd寫入命令或數(shù)

32、據(jù)*#define lcd_command0 / command#define lcd_data1 / data#define lcd_clear_screen0x01 / 清屏#define lcd_homing 0x02 / 光標(biāo)返回原點(diǎn)void lcd_write(bit style, unsigned char input)lcden=0;lcdrs=style;lcdrw=0;_nop_();dbport=input;_nop_();/注意順序lcden=1;_nop_();/注意順序lcden=0;_nop_();lcd_wait();/設(shè)置顯示模式*#define lcd_sho

33、w0x04 /顯示開(kāi)#define lcd_hide0x00 /顯示關(guān) #define lcd_cursor0x02 /顯示光標(biāo)#define lcd_no_cursor0x00 /無(wú)光標(biāo) #define lcd_flash0x01 /光標(biāo)閃動(dòng)#define lcd_no_flash0x00 /光標(biāo)不閃動(dòng)void lcd_setdisplay(unsigned char displaymode)lcd_write(lcd_command, 0x08|displaymode);/設(shè)置輸入模式*#define lcd_ac_up0x02#define lcd_ac_down0x00 / defau

34、lt#define lcd_move0x01 / 畫面可平移#define lcd_no_move0x00 /defaultvoid lcd_setinput(unsigned char inputmode)lcd_write(lcd_command, 0x04|inputmode);/初始化lcd*void lcd_initial()lcden=0;lcd_write(lcd_command,0x38); /8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor); /開(kāi)啟顯示, 無(wú)

35、光標(biāo)lcd_write(lcd_command,lcd_clear_screen); /清屏lcd_setinput(lcd_ac_up|lcd_no_move); /ac遞增, 畫面不動(dòng)/*void gotoxy(unsigned char x, unsigned char y)if(y=0)lcd_write(lcd_command,0x80|x);if(y=1)lcd_write(lcd_command,0x80|(x-0x40);void print(unsigned char *str)while(*str!=0)lcd_write(lcd_data,*str);str+;void

36、lcd_print(unsigned char x, unsigned char y, unsigned char *str) gotoxy(x,y); print(str);9.2.2 ds18b20控制子程序/#include /用at89c51時(shí)就用這個(gè)頭文件#include /用華邦w78e58b時(shí)必須用這個(gè)頭文件sbit dq = p34;/定義dq引腳為p3.4/*ds18b20延遲子函數(shù)(晶振12mhz )*/ /*ds18b20對(duì)時(shí)間要求很嚴(yán),但只能長(zhǎng)不能短*在11.0592m下也行,因?yàn)闀r(shí)間長(zhǎng)些*/void delay_18b20(unsigned int i)while(i-);/*ds18b20初始化函數(shù)*/void init_ds18b20(void) unsigned char x=0; dq = 1; /dq復(fù)位 delay_18b2

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論