版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 題 目 基于單片機的數(shù)字溫度計的電路設計 </p><p><b> 目 錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p> 第一章 數(shù)字溫度計和DS18B201<
2、/p><p> 1.1 數(shù)字溫度計的優(yōu)越性1</p><p> 1.2 數(shù)字溫度計的內(nèi)部結構和性能1</p><p> 第二章 系統(tǒng)總體設計方法2</p><p> 硬件系統(tǒng)設計方案 2</p><p><b> 電路系統(tǒng)組成 2</b></p>
3、<p> 2.1 硬件電路設計 3</p><p> 2.2 系統(tǒng)元器件的選擇4</p><p> 2.3 溫度傳感器與單片機的接口電路7</p><p> 2.4 單片機與溫度報警8</p><p><b> 2.5 小結8</b></p><p> 第
4、三章 部分硬件組成9</p><p> 3.1 80C51單片機的中斷系統(tǒng)9</p><p> 3.2 單片機的工作時鐘9</p><p> 3.3 數(shù)值溫度計DS18B209</p><p> 3.4 字符液晶顯示器簡介10</p><p> 3.5 字符液晶顯示部分與微處理機的接口12<
5、/p><p> 第四章 數(shù)字溫度計軟件13</p><p> 4.1 主程序模塊13</p><p> 4.2 主程序流程圖13</p><p> 4.3 DS18B20初始化14</p><p> 4.4仿真結果15</p><p><b> 4.5小結16<
6、;/b></p><p><b> 總 結17</b></p><p> 參考文獻(References)18</p><p><b> 致 謝19</b></p><p> 附錄一:源程序20</p><p> 附錄二:實物圖26</p>
7、;<p> 基于單片機的數(shù)字溫度計的電路設計</p><p> 摘要:電路系統(tǒng)的設計是主控制芯片微控制器,包括硬件電路設計和系統(tǒng)程序設計,通過數(shù)字溫度計實現(xiàn)溫度的測量,并通過測量溫度的LCD1602液晶顯示器。單片機系統(tǒng)的硬件電路包括采用STC89C51單片機,數(shù)字溫度計采用美國公司的數(shù)字DALLAS半導體公司的芯片DS18B20,液晶顯示電路采用字符液晶LCD1602的單片機的溫度采集電路,液
8、晶顯示電路和過溫報警電路,系統(tǒng)主處理器。</p><p> 相較于傳統(tǒng)的數(shù)字溫度計,其讀數(shù)方便,控溫精度和溫度范圍寬等優(yōu)點。本文介紹了一種基于單片機STC89C51單片機溫度測量電路和超溫報警電路,該系統(tǒng)用作溫度檢測DS18B20的貼片元件,其溫度控制范圍為-50℃?+110℃,采用字符型液晶顯示模塊,可設定溫度報警限值。</p><p> 關鍵字:DS18B20,STC89C51,數(shù)
9、字溫度計,單片機,溫度傳感器,LCD1602</p><p> Circuit design based on single chip microcomputer digital thermometer</p><p> Abstract:The design of the circuit system is the main control chip microcontroller,
10、 including the design of hardware circuit design and system procedures, realize the measurement of the temperature through digital thermometer, and through LCD1602 display of the measured temperature. SCM system hardware
11、 circuit includes a microcontroller, temperature acquisition circuits, liquid crystal display circuit and over-temperature alarm circuit, system host processor using SCM STC89C51, digital thermomet</p><p>
12、In contrast to the traditional thermometer digital thermometer with easy reading, temperature precision and wide temperature range and other strengths. This article describes a microcontroller based STC89C51 temperature
13、measurement circuit and over-temperature alarm, the system uses as the temperature detection DS18B20 chip components, temperature control range is -50 ℃~ +110 ℃, using a character LCD display module can be set temperatur
14、e alarm limit. </p><p> Keywords: DS18B20, STC89C51, digital thermometer,MicroController Unit, temperature sensor,LCD1602</p><p> 第一章 數(shù)字溫度計和DS18B20</p><p> 1.1數(shù)字溫度計的優(yōu)越性<
15、;/p><p> 由于普通的監(jiān)控現(xiàn)場電磁環(huán)境都非常不理想,電磁干擾信號錯綜復雜,傳統(tǒng)的模擬溫度信號更容易受到電磁干擾而產(chǎn)生很大的測量誤差,這嚴重影響測量的精確度。</p><p> 加上傳統(tǒng)的溫度計設計繁雜,設計成本高,使用的環(huán)境條件要求較高,對于實時溫度的測量不精確。</p><p> 所以,數(shù)字溫度計就在這種情況下應運而生,獨特3引腳結構以及抗電磁干擾能力強的
16、新型數(shù)字溫度計能很好的解決電磁環(huán)境的各種信號干擾。</p><p> 1.2 數(shù)字溫度計的內(nèi)部結構和性能</p><p> 美國達拉斯半導體公司生產(chǎn)的數(shù)字溫度計DS18B20使用單根總線通信,數(shù)字溫度計DS18B20的特點是可在沒有外部電源供電的情況下正常工作,當總線處在高電平狀態(tài)時,DQ與上拉電阻連接通過數(shù)字溫度計單總線對器件進行供電。同時讓高電平狀態(tài)的總線對電路內(nèi)部瓷片電容(Cpp
17、)進行充電,一旦總線變?yōu)榈碗娖綘顟B(tài)時,該瓷片電容能持續(xù)不斷提供能量給系統(tǒng)元器件。數(shù)字溫度計這種提供能量的形式被稱做“寄生電源”。作為替代選擇,數(shù)字溫度計DS18B20同樣可以通過VDD引腳連接外部電源進行供電。</p><p> 數(shù)字溫度計簡單的結構、靈活的使用范圍和低廉的價格,使它被大量應用各種工業(yè)生活場所。</p><p> 圖1.1 數(shù)字溫度計引腳封裝如圖</p>
18、<p> 第二章 系統(tǒng)總體設計方法</p><p> 該系統(tǒng)的電路組成主要有四部分分別是數(shù)據(jù)采集,溫度測量,溫度顯示和超溫報警,實現(xiàn)該電路的方法有如下兩種方法。</p><p><b> 方法一</b></p><p> 熱電偶溫差檢測法,該方法的基本原理是將兩種不同材料的導體或半導體焊接構成一個閉合回路,該方法的優(yōu)點是測溫范
19、圍較寬,但缺點是電路輸出電壓小且容易受到外部噪聲干擾。利用單片機與字符液晶顯示器接口進行數(shù)據(jù)A/D轉換,把被測實時環(huán)境溫度通過LCD1602液晶屏顯示出來。</p><p> 該電路系統(tǒng)示意圖如下</p><p> 圖2.1 熱電偶溫差測溫系統(tǒng)示意圖</p><p><b> 方法二</b></p><p> 用
20、數(shù)字溫度計DS18B20與STC89C51單片機實時檢測環(huán)境溫度,以達到環(huán)境溫度的功能快速準確的測量,并且可以根據(jù)需要來控制不同的上限和下限報警溫度,用AT24C16芯片存儲設備作為一種方法來存儲溫度數(shù)據(jù)。</p><p><b> 電路系統(tǒng)設計方案</b></p><p> DS18B20數(shù)字溫度計可以通過先將所測量的環(huán)境溫度進行處理,然后發(fā)送給單片機進行數(shù)據(jù)處
21、理,把處理后的溫度數(shù)據(jù)送給字符液晶顯示屏LCD1602進行顯示,若超過所設的溫度報警上下限值,則通過蜂蜜器進行揚聲警報。</p><p><b> 電路系統(tǒng)組成</b></p><p> 本次設計電路系統(tǒng)構成主體由微處理器模塊、復位電路模塊、時鐘電路模塊、超溫報警模塊、數(shù)字溫度計模塊、LCD1602液晶顯示模塊等組成。</p><p>&l
22、t;b> 2.1硬件電路設計</b></p><p> 數(shù)字溫度計電路系統(tǒng)總體設計框架圖如下圖所示。</p><p> 圖2.2 溫度計總體設計框圖</p><p><b> 主控制器</b></p><p> 微控制器STC89C51具有低電壓供電和電路系統(tǒng)占用體積小、低功耗等優(yōu)點,該電路系
23、統(tǒng)只需兩節(jié)5號干電池就能提供系統(tǒng)所需的電源電壓需求,四個輸入輸出口只需兩個I/O口就能提供本電路系統(tǒng)的設計需要。</p><p><b> 顯示電路</b></p><p> 本次設計顯示電路采用字符液晶LCD1602,從P2口向字符液晶寫入實時溫度數(shù)據(jù)。字符液晶LCD1602顯示實時溫度的最大特點是減少對I/O口資源的使用,操作時序簡單,顯示溫度準確清楚。<
24、;/p><p><b> 溫度傳感器</b></p><p> 本次設計的數(shù)字溫度計具有工作穩(wěn)定性好,靈明度高,單總線的數(shù)據(jù)傳輸協(xié)議,可直接與計算機串口連接,體積小,電路簡單等特點。</p><p> 微處理機與數(shù)字溫度計進行實時溫度數(shù)據(jù)傳送處理,測量到的實時環(huán)境溫度通過字符液晶顯示屏進行實時顯示。</p><p>
25、 2.2系統(tǒng)元器件的選擇</p><p> 2.2.1 51單片機 </p><p> 本次畢業(yè)設計的運用功能是實時對數(shù)字溫度計的數(shù)據(jù)進行實時采樣處理,并通過字符液晶進行顯示,功能運用相對簡單,運算量相對不是很大??紤]到各種電路設計因素,選用國產(chǎn)宏晶科技公司生產(chǎn)的STC89C51單片機。</p><p> 80C51單片機系統(tǒng)包括4K字節(jié)的程序存儲器
26、(ROM)和128字節(jié)的數(shù)據(jù)存儲器(RAM)的組成,與四組工作寄存器和特殊功能寄存器(SFR)組成。MCU(微控制器)是基于哈佛結構的系統(tǒng),在ROM和RAM的哈佛架構下單獨處理與單獨存放,也就是說程序和數(shù)據(jù)可以對不同的指令訪問地址進行區(qū)分,并同時接入的這樣的系統(tǒng)結構有利于提高下的各種操作指令微控制器的執(zhí)行速度。</p><p> 80C51單片機結構圖如下</p><p> 圖2.3
27、單片機結構</p><p> 微控制器由以下幾部分組成:</p><p> 1個8位的微處理器,可由自身的內(nèi)部晶振電路提供工作時鐘,也可外接外部時鐘震蕩源,外部時鐘頻率根據(jù)電路應用的功能不同提供多種選擇,單片機內(nèi)部有數(shù)據(jù)總線,地址總線,控制總線,三種總線協(xié)調(diào)工作于單片機的各種指令操作。</p><p> 本次設計使用的51單片機是一個擁有4K字節(jié)ROM,128
28、字節(jié)RAM的存儲器系統(tǒng),</p><p> 特殊功能寄存器SFR在P3口上,它使得單片機具有不同的操作功能。</p><p> 本次設計電路使用的單片機是雙列直插式的,其擁有4組8位的I/O口,51單片機可工作與內(nèi)部定時或者外部計數(shù),這由它的兩組16位定時計數(shù)器決定。</p><p> 它還擁有一個RXD和一個TXD,即一個串行接收和發(fā)送口。</p>
29、;<p> 單品機的中斷系統(tǒng)可以給各個不同的中斷源分配不同的優(yōu)先級去響應中斷請求。</p><p> 圖2.4 80C51單片機管腳圖</p><p> 2.2.2單片機部分引腳功能說明:</p><p> 微處理器的時鐘電路引腳:</p><p> XTAL2(18 腳):單片機的第18腳是反相放大器的輸出端,如果
30、單片機應用電路使用外部時鐘,那么應該向該引腳輸入外部時鐘脈沖,使得單片機獲得穩(wěn)定的起振頻率。</p><p> XTAL1(19 腳):如果單片機使用的是外部時鐘時,那么此微處理器的第19引腳引腳必須接GND。</p><p> 微處理器的控制信號引腳:</p><p> RST/VPD(9 腳):單片機的自動復位引腳,當單片機上電后,可以自動復位,也可以對單
31、片機進行手動復位,手動復位只需按一下復位電路上相應的復位按鈕單片機即可實現(xiàn)復位。</p><p> ALE/PROG(30 腳):如若程序執(zhí)行的操作地址指向外部地址時,單片機的第30引腳將輸出脈沖鎖存外部地址的低8位。</p><p> 該位置位后, MOVX和MOVC指令可以用于激活ALE。</p><p> PSEN(29 腳):當程序執(zhí)行的是外部地址空間
32、的程序存儲器時,此單片機的第29引腳將定時輸出負脈沖使得片外存儲器被選通。</p><p> EA/Vpp(31 腳):EA 引腳始終高電平,即該引腳始終被拉高,單片機只對片內(nèi)EPROM/ROM進行操作,當程序計數(shù)器的值超過0FFFH時,處理器將自動跳轉到片外地址空間相應程序。</p><p> 4組通用并行I/O口:</p><p> 4組通用I/O口都有輸
33、入和輸出功能,但是P0口在作輸出時要外接上拉電阻,這四組I/O口都可以驅(qū)動一定數(shù)量的TTL型負載,當單片機訪問外部程序存儲器時,P0口作為高8位地址,P2口作為低8位地址供單片機使用,另外P3口與其它幾個I/O 端口功能也有區(qū)別,P3口不同與其他I/O口的地方在于它的特殊第二功能,各個通信口的功能如,P3.0口用不串行接收,P3.1口用于串行發(fā)送,這是一組串口。而P3.2、P3.3口是單片機的外部中斷0和1的輸入口,P3.4和P3.5口
34、分別是定時計數(shù)器0和1的輸入端口,微處理器的P3.6口用于寫選通,P3.7口用與數(shù)據(jù)存儲器的讀選通。</p><p> 表2.1 單片機P3口引腳說明</p><p> 2.3 溫度傳感器與單片機的接口電路</p><p> 數(shù)字溫度計若使用寄生電源供電方式時第三引腳必須接地, 數(shù)字溫度計DS18B20可以采用兩種方式供電,即數(shù)字溫度計可以使用外接電源供電也可
35、以使用寄生電源供電,這兩種電路的選擇各有優(yōu)缺點,具體電路的選擇還得看與單片機接口電路的功能作用。</p><p> 圖2.5 數(shù)字溫度計與單片機的接口電路</p><p> 2.4 單片機與溫度報警</p><p> 系統(tǒng)中的報警電路是由蜂鳴器和發(fā)光二極管組成,系統(tǒng)正常工作時,P1.0口控制發(fā)光二極管綠燈亮,超溫時,紅燈亮,系統(tǒng)中的蜂鳴器實現(xiàn)超溫鳴叫報警功能。
36、</p><p> 圖2.6 發(fā)光二極管與蜂鳴器報警</p><p><b> 2.5小結</b></p><p> 本章節(jié)主要講解了單片機與數(shù)字溫度計之間的功能控制,并簡單介紹了數(shù)字溫度傳感器DS18B20在工業(yè)控制中的優(yōu)缺點,以及在此次設計中是如何有效利用的。通過結合框圖形式更直觀、更形象地介紹了系統(tǒng)的整體組成以及各個模塊之間的協(xié)調(diào)工
37、作。</p><p> 第三章 部分硬件組成</p><p> 3.1 微控制器的中斷系統(tǒng)</p><p> 微處理機能在程序設計時進行中斷服務程序嵌套,中斷允許寄存器IE決定是否響應中斷請求;中斷優(yōu)先級寄存器IP給各個中斷請求提供先后順序;同一優(yōu)先級內(nèi)若出現(xiàn)不同的中斷請求,由微控制器按照從上到下的自然順序響應中斷。</p><p>
38、 3.2單片機的工作時鐘</p><p> 單片機在一定的時鐘頻率下工作,如圖3.1所示。Crystal為晶振,為單片機提供工作所需的振蕩頻率。XTAL1為單片機內(nèi)部時鐘振蕩器的輸入端,XTAL2為單片機內(nèi)部時鐘的輸出端。本次設計使用的是12MHZ晶振。C1、C2為振蕩補償瓷片電容,起到放寬起振頻率,可讓時鐘更容易起振。</p><p><b> 圖3.1 時鐘頻率</
39、b></p><p> 3.3 數(shù)字溫度計DS18B20</p><p> 數(shù)字溫度計只有三個引腳,1腳接GND,2腳與單片機通信口相連,3腳接VCC。單片機與數(shù)字溫度計DS18B20僅需一條線連接,如下圖所示。</p><p> 圖3.2 數(shù)字溫度計管腳圖</p><p><b> 字符液晶顯示器簡介</b&g
40、t;</p><p> 字符液晶顯示器是通過自身對光的反應,改變其透明度或者由于外部電磁場的電磁效應,改變其顯示顏色,使得液晶顯示器上顯示出各種不同的字符。</p><p> 顯示部分用來顯示所測的實時環(huán)境溫度數(shù)據(jù),本次畢業(yè)設計電路顯示模塊用的是字符液晶LCD1602,它是一個16列×2行的字符型液晶顯示模塊,即該液晶屏可顯示2行,每行可顯示16個字符,每屏總共可顯示32個字
41、符。</p><p> 圖3.3 字符液晶顯示地址</p><p> 3.4.1液晶屏的結構以及功能:</p><p> 液晶屏是一種有機化合物,它內(nèi)部有兩個核心芯片HD44780,它的操作時序簡單易懂,但指令功能強大,它可以與單片機進行通信,單片機可通過I/O口把各種要顯示的數(shù)據(jù)傳送到字符液晶顯示屏上進行顯示,擁有背光功能的液晶顯示屏,在晚上可以發(fā)揮出像白天
42、一樣的顯示各種數(shù)據(jù)的功能,但不具有背光功能的字符液晶顯示屏只能在白天進行數(shù)據(jù)顯示。液晶顯示模塊是一個慢顯示器件,在液晶顯示屏初始化完成后,在執(zhí)行每條指令之前,要確保模塊的忙標志為低電平,即先判斷表示不忙,否則此指令失效,無法執(zhí)行相關的讀寫命令操作。</p><p> 液晶顯示屏引腳功能如下;</p><p> 圖3.4 1602引腳圖</p><p> 液晶顯
43、示屏引腳的功能講解:液晶器件VSS引腳,即數(shù)字溫度計的第一引腳一般接地,液晶器件VDD引腳,即數(shù)字溫度計的第二引腳一般外接電源,液晶器件VEE腳,此第三引腳是液晶顯示器的對比度調(diào)節(jié)端,液晶器件RS腳,此第四引腳又叫數(shù)據(jù)命令選擇端,液晶器件R/W腳,該第五引腳是讀寫信號選擇線,當該引腳被寫入高電平1時程序?qū)⑦M行讀操作,若該引腳被寫入低電平0時則程序?qū)⑦M行寫操作,液晶器件第6腳是E(或EN)端,該引腳為字符液晶LCD1602的使能(enab
44、le)端,DB0~DB7為字符液晶LCD1602與單片機進行傳輸數(shù)據(jù)的數(shù)據(jù)口,通過這八個口,溫度數(shù)據(jù)將被穩(wěn)定精確的顯示在字符液晶上。</p><p> 寄存器選擇控制如下圖所示;</p><p> 表3.1 各引腳使用說明</p><p> 表3.2 操作時序說明</p><p> 3.5字符液晶顯示部分與微處理機的接口</p&
45、gt;<p> 單片機的的P2口作為數(shù)據(jù)傳輸口,液晶顯示器LCD的E、R/W、RS端分別位定義為P3.2、P3.1、P3.0。通過軟硬件設計,把所側到的實時環(huán)境溫度通過字符液晶顯示屏進行實時溫度控制。</p><p><b> 如下圖所示。</b></p><p> 圖3.5 液晶與89C51的接口</p><p> 溫度
46、報警控制電路的工作過程為:單片機定時采集DS18B20溫度傳感器所測得到的被測對象的實時表面溫度,并將采集的溫度數(shù)據(jù)通過單片機I/O口通信顯示在字符液晶上,同時將采集到的實時溫度數(shù)據(jù)與單片機內(nèi)設定的溫度上下限進行比較,如在正常的溫度范圍,則正常顯示綠燈,若高出或低于設定的值,則發(fā)出蜂鳴器警告。</p><p> 第四章 數(shù)字溫度計軟件</p><p> 4.1主程序模塊 </p
47、><p> 通過keil軟件編寫程序,軟件仿真通過后,使用protues硬件仿真軟件實現(xiàn)聯(lián)調(diào),測試各個功能模塊的作用是否能夠在硬件電路上一一實現(xiàn)。</p><p><b> 4.2主程序流程圖</b></p><p> 圖4.1 主程序流程圖</p><p> 4.3 DS18B20初始化</p>&l
48、t;p> 圖4.2 DS18B20初始化流程圖</p><p><b> 4.4仿真結果</b></p><p> 本次程序上限超溫報警溫度為30度,下限低溫報警溫度為0度。</p><p> 由下圖仿真一中數(shù)據(jù)可看出,當實時溫度為零上31度時,超出程序設定的上限報警溫度,則電路中紅燈亮,繼而蜂鳴器鳴叫報警。</p>
49、<p><b> 圖4.3 仿真圖一</b></p><p> 由下圖仿真二中數(shù)據(jù)可看出,當實時溫度為零下負一度時,低于程序設定的下限報警溫度,則電路中紅燈也亮,繼而蜂鳴器也實現(xiàn)鳴叫報警。</p><p><b> 圖4.4 仿真圖二</b></p><p> 如下圖仿真三所示溫度數(shù)據(jù)。此時實時溫度數(shù)據(jù)
50、為零上25度,該被測溫度值在程序所允許的溫度范圍內(nèi),所以綠燈亮,表明一切工作正常,溫度正常。</p><p><b> 圖4.5 仿真圖三</b></p><p><b> 4.5小結</b></p><p> 通過本章節(jié)的學習,我們學習了如何從開始的硬件電路設計,再到結合軟件的編寫,讓硬件電路通過軟件代碼實現(xiàn)真正的
51、功能應用,這也讓我們學習了51單片機的編程方式,以及如何正確使用protues軟件實現(xiàn)硬件的仿真。</p><p><b> 總結</b></p><p> 通過本次畢業(yè)設計使我對電路系統(tǒng)中的一些基本原理有了簡單的理解 ,從選題到硬件電路的完成,感覺自己的收獲很大。首先,我在確定選題后查找和閱讀了很多相關的理論知識,尤其是對DS18B20這個器件做了很多的了解。其
52、次,也提高了我使用 proteus 軟件做軟件仿真的能力和技巧。</p><p> 本次畢業(yè)設計的硬件電路設計與實物制作讓我更是深深體會到這一點,只有自己親自動手操作,自己動手制作的作品才是真正意義上屬于自己的成果,才能真正體會到理論聯(lián)系實踐的總要性,在結合keil編程軟件編寫程序過程中,進一步加強了我對整體硬件電路的理解。最后,完成硬件作品也是很關鍵的步驟,再多的理論知識也只有通過其產(chǎn)生的實物應用才能體現(xiàn)它的
53、價值。因而制作出完美的實物作品是必不可少的,經(jīng)過自己幾個月的努力,通過焊接、調(diào)試、檢修,我最終制作出了設計作品,驗證了自己在本次設計中學習到的知識和設計的正確性。 </p><p> 參考文獻(References)</p><p> 《電工電子實踐指導》.王港元.江西科學技術出版社,2009.3.</p><p> 《電子元器件應用手冊》.黃繼昌.人民郵電出
54、榜社,2004.7.</p><p> 《電路》第5版.邱關源.羅先覺.高等教育出版社 ,2006. 5.</p><p> 《數(shù)字電子技術基礎 》.張申科.電子工業(yè)出版社,2005.5.</p><p> 《模電數(shù)電基礎實驗及Multisim7仿真》.黃培根.浙江大學出版社,2007.3.</p><p> 《微型計算機系統(tǒng)原理及應
55、用》.楊素行.清華大學出版社,2004. 2.</p><p> 《綜合電子設計與實踐》.王振紅.張常年.清華大學出版社 ,2005. 3.</p><p> 《單片機原理及應用教程》第2版.趙金利.肖興達.機械工業(yè)出版社,2007.7.</p><p> 《電子技術基礎》模擬部分(第四版).康華光.高等教育出版社, 1999.</p><
56、p> 《電子技術實驗與課程設計》.蔡忠法.浙江大學出版社,2003.</p><p><b> 致謝</b></p><p> 通過這幾個月的研究學習以及在導師的幫助下,我成功的完成了自己畢業(yè)設計實物的制作以及論文的編寫。回首自己這四年大學生活,有笑有淚,有花有果,想感謝的人很多,多到自己都無從說起。</p><p> 從去年的基
57、本理論知識整理,到最近幾個月的電路設計,從剛開始的源程序編寫,接著仿真成功,再到最后的畫PCB板,焊板子,在我們電子系指導老師*老師的耐心指導下,我完成了本次畢業(yè)設計的全部工作。這次設計不僅涉及到對單片機系統(tǒng)基本原理的理解,也涉及到如何對電路中出現(xiàn)的問題的分析和解決能力。</p><p> **老師多次詢問畢業(yè)設計的進程,并為我指點迷津,陳老師一絲不茍的作風,嚴謹求實的態(tài)度,不僅授我以文,幫助我開拓電路設計思路
58、,而且教我做人,給我以終生受益無窮之道。正是在*老師的指點下,我才能如此順利地完成本次畢業(yè)設計。</p><p> 所以,再一次表達我對學科部領導以及無論是在學習上還是在生活中幫助過我的老師最衷心的感謝,是你們在我前進的道路上給我以正確的人生引導,并無私的教授予我專業(yè)知識以及各種為人處世之道。</p><p><b> 附錄一:源程序</b></p>
59、<p><b> 全部程序清單</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned int </p>&
60、lt;p><b> uchar i;</b></p><p> sbit lcdrs=P3^0;</p><p> sbit lcdrw=P3^1;</p><p> sbit lcden=P3^2;</p><p> sbit d1=P1^0;</p><p> sbit
61、d2=P1^1;</p><p> uchar code table1[]="wendu:" ;</p><p> uchar code table2[]="H: L:";</p><p> uchar code wendu[]="0123456789"; //利用一個溫度表解決溫度顯
62、示亂碼</p><p> sbit DQ = P3^7;//定義ds18B20總線IO</p><p> sbit beep=P3^5;</p><p> uchar fuhao=0;//;標記溫度正負 1為負數(shù) 0為正數(shù)</p><p> int HIGH_temp=0,LOW_temp=0,temp,l; </p>
63、<p> uint num=0; </p><p> uchar bai,shi,ge,xiaoshu,k=0;</p><p><b> //延時模塊</b></p><p> void delay(uint z)</p><p><b> {&
64、lt;/b></p><p><b> uint x,y;</b></p><p> for(x=100;x>1;x--)</p><p> for(y=z;y>1;y--);</p><p><b> }</b></p><p><b>
65、 //液晶顯示模塊</b></p><p> void write_com(uchar com)</p><p><b> {</b></p><p> lcdrs=0;//寫命令</p><p><b> P2=com;</b></p><p>&l
66、t;b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b&g
67、t;</p><p> void write_data(uchar date)</p><p><b> {</b></p><p><b> lcdrs=1;</b></p><p><b> P2=date;</b></p><p><
68、b> delay(5);</b></p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b>
69、</p><p> void init_lcd() //初始化液顯</p><p><b> {</b></p><p><b> uchar i;</b></p><p> lcden=0;//en開始時拉低</p><p> lcdrw=0;//寫</p&
70、gt;<p> write_com(0x38);</p><p> write_com(0x01);</p><p> write_com(0x0c);//開顯示,顯示光標</p><p> write_com(0x06);</p><p> write_com(0x80);</p><p>
71、 for(i=0;table1[i]!='\0';i++)</p><p> write_data(table1[i]);</p><p> write_com(0xC0);</p><p> for(i=0;table2[i]!='\0';i++)</p><p> write_data(table2
72、[i]);</p><p><b> }</b></p><p><b> //溫度采集模塊</b></p><p> void tmpDelay(int num)//延時函數(shù)</p><p><b> {</b></p><p> whil
73、e(num--) ;</p><p><b> }</b></p><p> /*************************************************************************/</p><p> void Init_DS18B20()//初始化ds1820</p><
74、;p><b> {</b></p><p> uchar x=0;</p><p> DQ = 1; //DQ復位</p><p> tmpDelay(8); //稍做延時</p><p> DQ = 0; //單片機將DQ拉低</p><p> tmpDelay(
75、80); //精確延時 大于 480us</p><p> DQ = 1; //拉高總線</p><p> tmpDelay(14);</p><p> x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗</p><p> tmpDelay(20);</p><p><
76、b> }</b></p><p> uchar ReadOneChar()//讀一個字節(jié)</p><p><b> {</b></p><p> uchar i=0;</p><p> uchar dat=0;</p><p> for (i=8;i>0;i--
77、)</p><p><b> {</b></p><p> DQ = 0; // 給脈沖信號</p><p><b> dat>>=1;</b></p><p> DQ = 1; // 給脈沖信號</p><p><b> if(DQ)<
78、/b></p><p> dat|=0x80;</p><p> tmpDelay(4);</p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> vo
79、id WriteOneChar(unsigned char dat)//寫一個字節(jié)</p><p><b> {</b></p><p> uchar i=0;</p><p> for (i=8; i>0; i--)</p><p><b> {</b></p><
80、;p><b> DQ = 0;</b></p><p> DQ = dat&0x01;</p><p> tmpDelay(5);</p><p><b> DQ = 1;</b></p><p><b> dat>>=1;</b></
81、p><p><b> }</b></p><p><b> }</b></p><p> unsigned int Readtemp()//讀取溫度</p><p><b> {</b></p><p> uchar a=0;</p>
82、<p> uchar b=0;</p><p><b> uint t=0;</b></p><p> float tt=0;</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); // 跳過讀序號列號的操作</p><p&
83、gt; WriteOneChar(0x44); // 啟動溫度轉換</p><p> delay(750);</p><p> Init_DS18B20();</p><p> WriteOneChar(0xCC); //跳過讀序號列號的操作</p><p> WriteOneChar(0xBE); //讀取溫度寄存器</p&
84、gt;<p> a=ReadOneChar(); //連續(xù)讀兩個字節(jié)數(shù)據(jù) //讀低8位 </p><p> b=ReadOneChar(); //讀高8位</p><p><b> t=b;</b></p><p><b> t<<=8;<
85、;/b></p><p> t=t|a; //兩字節(jié)合成一個整型變量。</p><p> if(t&0x8000)</p><p><b> {</b></p><p><b> fuhao=1;</b></p><p> t=(~t)+1; <
86、/p><p><b> }</b></p><p> t=t*10/16;//屏蔽低四位</p><p> return(t);</p><p><b> }</b></p><p><b> //報警模塊</b></p><p
87、> void Alarm(uchar t)</p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=0;i<200;i++)</p><p><b> {</b></p><p> beep = ~b
88、eep;</p><p> for(j=0;j<t;j++);</p><p><b> }</b></p><p><b> } </b></p><p> void dis(uchar a,int b)</p><p><b> {</b&
89、gt;</p><p><b> if(a==1)</b></p><p><b> {</b></p><p> write_com(0xC0+2);</p><p><b> if(b<0) </b></p><p><b>
90、 {</b></p><p><b> b=0-b;</b></p><p> write_data('-');</p><p><b> }</b></p><p> else if(b>0)</p><p><b>
91、 {</b></p><p> write_data('+');</p><p><b> }</b></p><p><b> }</b></p><p> else if(a==2)</p><p><b> {</
92、b></p><p> write_com(0xC0+10);</p><p><b> if(b<0) </b></p><p><b> {</b></p><p><b> b=0-b;</b></p><p> write_
93、data('-');</p><p><b> }</b></p><p> else if(b>0)</p><p><b> {</b></p><p> write_data('+');</p><p><b>
94、 }</b></p><p><b> }</b></p><p> bai=b/1000;</p><p> shi=b/100%10;</p><p> ge=b/10%10;</p><p> xiaoshu=b%10;</p><p&g
95、t; write_data(wendu[bai]);</p><p> write_data(wendu[shi]);</p><p> write_data(wendu[ge]);</p><p> write_data(0x2e);</p><p> write_data(wendu[xiaoshu]);</p>
96、<p><b> }</b></p><p> void display()</p><p><b> { </b></p><p> num=Readtemp();</p><p> bai=num/1000;</p><p> shi=n
97、um/100%10;</p><p> ge=num/10%10;</p><p> xiaoshu=num%10;</p><p> write_com(0x80+6);</p><p> if(fuhao) write_data('-');</p><p> else write_data
98、('+');</p><p> write_data(wendu[bai]);</p><p> write_data(wendu[shi]);</p><p> write_data(wendu[ge]);</p><p> write_data(0x2e);</p><p> write_
99、data(wendu[xiaoshu]);</p><p> if((fuhao==0)&&(shi>=3))</p><p><b> {</b></p><p><b> if(ge>0)</b></p><p><b> {</b>&l
100、t;/p><p> d1=1;d2=0;Alarm(90);Alarm(120);delay(500);</p><p><b> }</b></p><p><b> else</b></p><p> {d1=0;d2=1;}</p><p><b> }
101、</b></p><p> else if((fuhao==1)&&(shi>=0))</p><p><b> {</b></p><p><b> if(ge>0)</b></p><p><b> {</b></p&g
102、t;<p> d1=1;d2=0;Alarm(90);Alarm(120);delay(500);</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> {d1=0;d
103、2=1;}</p><p> if(fuhao) temp=0-num;</p><p> else temp=num;</p><p><b> if(k==0) </b></p><p><b> {</b></p><p> LOW_temp=temp;<
104、;/p><p> dis(2,LOW_temp); </p><p><b> k++;</b></p><p><b> }</b></p><p> else if(k==1) </p><p><b> {</b></p>&l
105、t;p> HIGH_temp=temp;</p><p> if(HIGH_temp<LOW_temp)</p><p><b> {</b></p><p> l=HIGH_temp;HIGH_temp=LOW_temp;LOW_temp=l;</p><p><b> }</b&
106、gt;</p><p> dis(1,HIGH_temp);</p><p><b> k++;</b></p><p><b> } </b></p><p> else if(k==2)</p><p><b> {</b></p&
107、gt;<p> if(temp>HIGH_temp) HIGH_temp=temp;</p><p> else if(temp<LOW_temp) LOW_temp=temp;</p><p> dis(1,HIGH_temp);</p><p> dis(2,LOW_temp);</p><p><
108、b> }</b></p><p><b> fuhao=0;</b></p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> init_lcd(
109、);</p><p><b> while(1)</b></p><p><b> {</b></p><p> display();</p><p> delay(100);</p><p><b> }</b></p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 基于單片機的數(shù)字溫度計畢業(yè)設計
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 畢業(yè)設計——基于單片機的數(shù)字溫度計設計
- 基于單片機的數(shù)字溫度計畢業(yè)設計
- 畢業(yè)設計--基于單片機數(shù)字溫度計
- 基于單片機的數(shù)字溫度計設計 畢業(yè)設計
- 單片機的數(shù)字溫度計畢業(yè)設計
- 基于單片機的數(shù)字溫度計的設計 畢業(yè)設計
- 基于單片機控制的數(shù)字溫度計----畢業(yè)設計
- 基于5單片機的數(shù)字溫度計畢業(yè)設計
- 基于51單片機的數(shù)字溫度計-畢業(yè)設計
- 畢業(yè)設計(論文)-基于單片機的數(shù)字溫度計設計
- 畢業(yè)設計(論文)基于單片機的數(shù)字溫度計設計
- 基于單片機的數(shù)字溫度計畢業(yè)設計論文
- 單片機畢業(yè)設計--單片機設計數(shù)字溫度計
- 畢業(yè)設計(論文)基于單片機的數(shù)字語音溫度計
- 基于單片機的溫度計的設計畢業(yè)設計
- 畢業(yè)設計(論文)單片機的數(shù)字溫度計控制
評論
0/150
提交評論