版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計任務(wù)書</b></p><p> 學(xué)生姓名: ×× 專業(yè)班級: ×× </p><p> 指導(dǎo)教師: ×× 工作單位: ×× </p><p> 題 目: 基于
2、單片機(jī)的溫度自動控制系統(tǒng)的設(shè)計 </p><p><b> 初始條件:</b></p><p> 具有扎實(shí)的電子科學(xué)與技術(shù)專業(yè)基本理論和系統(tǒng)的專業(yè)知識;具備初步的文獻(xiàn)查閱和專題調(diào)研技能;一定的中英文文獻(xiàn)閱讀與綜合能力。</p><p> 要求完成的主要任務(wù): <
3、;/p><p> 1.模擬電路設(shè)計與模擬仿真、數(shù)?;旌想娐吩O(shè)計與模擬仿真、數(shù)字電路邏輯設(shè)計與模擬仿真、CMOS集成電路設(shè)計與模擬仿真、TTL集成電路設(shè)計與模擬仿真、FPGA現(xiàn)場集成電路設(shè)計與模擬仿真等。</p><p> 2.集成電路芯片在實(shí)際電路系統(tǒng)中的應(yīng)用。</p><p> 3.利用集成電路芯片進(jìn)行電路設(shè)計,需對設(shè)計的系統(tǒng)或電路進(jìn)行結(jié)構(gòu)和原理進(jìn)行分析,對電路
4、進(jìn)行分析計算等方面的工作。</p><p><b> 時間安排:</b></p><p> 1.2012年1月1日分班集中,能力拓展訓(xùn)練任務(wù);講解訓(xùn)練具體實(shí)施計劃、報告格式的要求與答疑事項。</p><p> 2.2012年1月2日 至2011年1月11日完成選題的確定、資料查閱、能力拓展訓(xùn)練報告的撰寫。</p><p
5、> 3. 2012年1月12日提交能力拓展訓(xùn)練報告書,進(jìn)行驗(yàn)收和答辯。</p><p> 指導(dǎo)教師簽名: 年 月 日</p><p> 系主任(或責(zé)任教師)簽名: 年 月 日</p><p><b> 目錄</b></p>&
6、lt;p><b> 摘要I</b></p><p> AbstractII</p><p><b> 1 緒論1</b></p><p> 1.1 集成電路產(chǎn)業(yè)的發(fā)展1</p><p> 1.2 MCU在嵌入式系統(tǒng)中的廣泛應(yīng)用1</p><p>
7、1.3 水溫自動控制系統(tǒng)要求1</p><p> 2 總體設(shè)計方案2</p><p> 2.1 總體設(shè)計框圖2</p><p> 2.2 最小系統(tǒng)電路2</p><p> 2.3 溫度采集電路3</p><p> 2.4 溫度顯示電路4</p><p> 2.5 繼電器控
8、制電路5</p><p> 2.6 獨(dú)立按鍵電路5</p><p> 2.7 報警電路6</p><p> 3 程序設(shè)計與電路參數(shù)的計算7</p><p> 3.1 DS18B20基本參數(shù)及計算7</p><p> 3.2 溫度上下限的設(shè)計8</p><p> 3.3 溫
9、度轉(zhuǎn)換命令子程序8</p><p> 3.4 顯示數(shù)據(jù)刷新子程序8</p><p> 4仿真結(jié)果與總電路圖9</p><p><b> 5總結(jié)與體會10</b></p><p><b> 參考文獻(xiàn)11</b></p><p> 附錄 源程序12 <
10、/p><p><b> 摘要</b></p><p> 雖然第三次技術(shù)革命包含了新材料、新能源、生物工程、航空航天技術(shù)和電子信息技術(shù)等等,但影響最大、滲透性最強(qiáng)、最具有新技術(shù)革命代表性的乃是以微電子為核心的電子信息技術(shù)。集成電路是現(xiàn)代信息產(chǎn)業(yè)和信息社會的基礎(chǔ),是改造和提升傳統(tǒng)產(chǎn)業(yè)的核心技術(shù),目前集成電路產(chǎn)業(yè)的發(fā)展已成為全球經(jīng)濟(jì)發(fā)展的一個向?qū)?,成為世界第一大產(chǎn)業(yè)[1]。
11、自20世紀(jì)60年代集成電路誕生以來,其集成度始終以2年左右翻一番的速度發(fā)展。集成電路的發(fā)展經(jīng)歷了小規(guī)模、中規(guī)模、大規(guī)模和超大規(guī)模集成電路時代,而且集成電路產(chǎn)品的種類也日益增多,性能不斷提高,價格不斷降低,應(yīng)用領(lǐng)域不斷擴(kuò)大,以致已經(jīng)廣泛的應(yīng)用到生產(chǎn)和生活的各個方面。單片微型計算機(jī)簡稱單片機(jī),又稱為微控制器(MCU),它以體積小、功能全、性價比高等諸多優(yōu)點(diǎn)而獨(dú)具特色,在嵌入式應(yīng)用領(lǐng)域中獨(dú)占鰲頭。51系列單片機(jī)是國內(nèi)目前應(yīng)用最廣泛的一種8位單
12、片機(jī)之一。</p><p> 本文所介紹的水溫自動控制系統(tǒng),正是以基于單片機(jī)AT89S52的最小系統(tǒng)為控制核心,通過LCD1602顯示模塊、DS18B20溫度測量模塊、繼電器控制模塊、報警模塊等各部分組合而成。</p><p> 關(guān)鍵詞:集成電路;單片機(jī);DS18B20</p><p><b> Abstract</b></p>
13、;<p> Although the third technological revolution contains new material, new energy, biological engineering, aerospace technology and electronic information technology and so on, but the impact is the biggest, th
14、e strongest permeability, most of the new technology revolution of representative is in microelectronics at the core of electronic information technology. Integrated circuit is the modern information industry and informa
15、tion society, is to transform and upgrade traditional industry core techno</p><p> This paper introduces the automatic temperature control system, is a based on AT89S52 single-chip microcomputer minimum sys
16、tem for the control of the core, through the LCD1602 display module, DS18B20 temperature measurement module, a relay control module, alarm module and other parts assembly.</p><p> Key words: integrated circ
17、uit; MCU; DS18B20</p><p><b> 1 緒論</b></p><p> 1.1 集成電路產(chǎn)業(yè)的發(fā)展</p><p> 縱觀人類社會發(fā)展的文明史,一切生產(chǎn)方式的重大變革都是由新的科學(xué)發(fā)明而引起的,科學(xué)技術(shù)作為革命的力量,推動著社會向前發(fā)展。集成電路(Integrated Circuit,縮寫為IC)是指通過一系列特
18、定的加工工藝,將多個晶體管、二極管等有源器件和電阻電容等無源器件,按照一定的電路連接集成在一塊半導(dǎo)體單片或陶瓷等基片上,作為一個不可分割的整體執(zhí)行某一特定功能的電路器件。集成電路的出現(xiàn)打破了電子技術(shù)中器件與線路分離的傳統(tǒng),開辟了電子元器件與線路甚至整個系統(tǒng)向一體化發(fā)展的方向,為電子設(shè)備的性能提高、價格降低、體積縮小、能耗降低提供了新途徑,也為電子設(shè)備迅速普及、走向平民大眾奠定了基礎(chǔ)。</p><p> 1.2
19、MCU在嵌入式系統(tǒng)中的廣泛應(yīng)用</p><p> 單片機(jī)的出現(xiàn),是計算機(jī)發(fā)展史上的一個重要里程碑,它以體積小、功能全、性價比高等諸多優(yōu)點(diǎn)而獨(dú)具特色,在工業(yè)控制、尖端武器、通信設(shè)備、信息處理、家用電器等嵌入式系統(tǒng)廣泛應(yīng)用。經(jīng)過20多年的推廣與發(fā)展,51系列單片機(jī)形成了一個規(guī)模龐大、功能齊全、資源豐富的產(chǎn)品群。隨著嵌入式系統(tǒng)、片上系統(tǒng)等概念的提出和普遍接受及應(yīng)用,51系列單片機(jī)的發(fā)展又進(jìn)入了一個新的階段。許多專用功
20、能芯片的內(nèi)核集成了51單片機(jī),與51系列單片機(jī)兼容的微控制器以IP核的方式不斷出現(xiàn)在FPGA的片上系統(tǒng)中。</p><p> 1.3 水溫自動控制系統(tǒng)要求</p><p> ■基本范圍-50℃-110℃</p><p> ■精度誤差小于0.5℃</p><p> ■LCD液晶直讀顯示</p><p> ■可以
21、任意設(shè)定溫度的上下限報警功能</p><p> 溫度顯示用四位,當(dāng)溫度>=100度時,第四位才顯示。K1進(jìn)入查看溫度報警值狀態(tài),K2進(jìn)入設(shè)定溫度報警值狀態(tài),K3退出查看溫度報警值狀態(tài),K4確定并退出設(shè)定溫度報警值狀態(tài)。將設(shè)定的溫度報警值自動存入 DS18B20 的 EEROM 中,可永久保存,每次開機(jī)時自動從 DS18B20 的 EEROM 讀出溫度報警值。</p><p><
22、;b> 2 總體設(shè)計方案</b></p><p> 2.1 總體設(shè)計框圖</p><p> 根據(jù)設(shè)計要求,經(jīng)分析可得溫度控制系統(tǒng)應(yīng)有最小系統(tǒng)電路、獨(dú)立按鍵電路、報警電路、溫度采集電路、輸出顯示電路、繼電器控制等部分組成。如圖1所示</p><p> 圖1 總體設(shè)計方框圖</p><p> 2.2 最小系統(tǒng)電路<
23、;/p><p> 此次設(shè)計使用的單片機(jī)型號是AT89S52,該芯片是Atmel公司的一種低功耗、高性能CMOS 8位微控制器,屬于馮-諾依曼結(jié)構(gòu),具有8K在系統(tǒng)可編程Flash 存儲器。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。改型單片機(jī)具有低電壓供電和體積小
24、等特點(diǎn),四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。</p><p> 最小系統(tǒng)由AT89S52單片機(jī)、時鐘電路、復(fù)位電路、上拉電阻等部分組成。其中,時鐘電路的C7、C8兩個電容起快速起振和穩(wěn)定振蕩頻率的作用,復(fù)位電路采用上電自動復(fù)位和開關(guān)復(fù)位,復(fù)位操作完成單片機(jī)內(nèi)部電路的初始化,使單片機(jī)從一種確定的狀態(tài)開始運(yùn)行。P0口為數(shù)據(jù)/低8位地址復(fù)用總線端口,需外
25、接上拉電阻以提高驅(qū)動能力,具體電路如圖2所示。</p><p><b> 圖2最小系統(tǒng)電路</b></p><p> 2.3 溫度采集電路</p><p> 溫度采集電路可使用橋式結(jié)構(gòu):通過溫控電阻與運(yùn)算放大器組成溫度采集電路,結(jié)構(gòu)簡單,但缺點(diǎn)是轉(zhuǎn)化為數(shù)字信息較為麻煩,需要用到A/D轉(zhuǎn)化模塊,而且,溫控范圍的改變不夠靈活,需要改變電阻的阻
26、值,電路比較麻煩。也可以使用DS18B20芯片:,該芯片具有獨(dú)特的單線接口方式,DS18B20與微處理器連接時僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。在使用中不需要任何外圍元件??捎脭?shù)據(jù)線供電,電壓范圍:+3.0~+5.5 V。測溫范圍:-55 ~+125 ℃。固有測溫分辨率為0.5 ℃。通過編程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式。用戶可自設(shè)定非易失性的報警上下限值。支持多點(diǎn)組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線
27、上,實(shí)現(xiàn)多點(diǎn)測溫。而且其負(fù)壓特性很好,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作,安全性高。</p><p> 從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計也比較簡單,故采用了方案二。溫度傳感模塊電路如圖3所示:</p><p><b> 圖3 溫度傳感電路</b></p><p> 2.4 溫度顯示電路&l
28、t;/p><p> 由于顯示內(nèi)容較多,故數(shù)碼管不能滿足設(shè)計要求,本設(shè)計采用LCD1602模塊電路。顯示特性:單5V電源電壓,低功耗、長壽命、高可靠性;內(nèi)置192種字符(162個5×7點(diǎn)陣字符和32個5×10點(diǎn)陣字符;具有64個字節(jié)的自定義字符RAM;顯示方式:STN、半透、正顯;驅(qū)動方式:1/16DUTY,1/5BIAS;視角方向:6點(diǎn);背光方式:底部LED;通訊方式:4位或8位并口可選;標(biāo)準(zhǔn)的
29、接口特性,適配MC51和M6800系列MPU的操作時序。</p><p> 1602模塊組件內(nèi)部主要由LCD顯示屏(LCD panel)、控制器(controller)、列驅(qū)動器(segment driver)和偏壓產(chǎn)生電路組成。LCD顯示屏為common和segment交叉形成的點(diǎn)陣,以5×8點(diǎn)陣的字符結(jié)構(gòu)模式和設(shè)置的顯示字符數(shù)目,選擇適宜的行數(shù),分單屏、雙屏或者多屏顯示規(guī)定的字符。對于雙屏或者多屏
30、顯示結(jié)構(gòu)的LCD,每一顯示屏結(jié)構(gòu)部分,均由各自獨(dú)立的使能信號E控制。列驅(qū)動器與控制器配套使用,它接收來至控制器的振蕩、幀同步輸出、串行輸出的數(shù)據(jù)和移位及鎖存脈沖,產(chǎn)生列segment交流掃描驅(qū)動信號??刂破鹘邮諄碜訫PU的指令和數(shù)據(jù),控制著整個模塊的工作。控制器主要由指令寄存器IR、數(shù)據(jù)寄存器DR、忙碌標(biāo)志BF、地址計數(shù)器AC、DDRAM、CGROM、CGRAM以及時序發(fā)生電路組成。具體電路如圖4所示:</p><p
31、><b> 圖4 液晶電路圖</b></p><p> 2.5 繼電器控制電路</p><p> 由于單片機(jī)引腳的輸出電流十分有限,在控制大型用電器時無法正常工作,故采用單片機(jī)控制繼電器的方式來處理。當(dāng)P0.0口為高電平時,三極管導(dǎo)通,繼電器工作,外電路接通。如圖5所示</p><p> 圖5 繼電器控制電路</p>
32、<p> 2.6 獨(dú)立按鍵電路</p><p> 人機(jī)交互需要用到輸入電路模塊,本設(shè)計由于單片機(jī)擁有較為豐富的I/O口,故采用獨(dú)立按鍵,而不是矩陣鍵盤,因?yàn)榫仃囨I盤電路復(fù)雜,編程比獨(dú)立按鍵麻煩。具體電路如圖6所示,本設(shè)計還采用了LED燈以明確顯示按鍵狀態(tài)。</p><p><b> 圖6 獨(dú)立按鍵電路</b></p><p>
33、<b> 2.7 報警電路</b></p><p> 報警電路采用蜂鳴器電路,該電路具有結(jié)構(gòu)簡單、穩(wěn)定性能好的優(yōu)點(diǎn)。具體電路如圖7所示:</p><p><b> 圖7報警電路</b></p><p> 3 程序設(shè)計與電路參數(shù)的計算</p><p> 3.1 DS18B20基本參數(shù)及計算&
34、lt;/p><p> 表1 DS18B20參數(shù)</p><p> DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。后者用于存儲TH,TL值。數(shù)據(jù)先寫入RAM,經(jīng)校驗(yàn)后再傳給EERAM。而配置寄存器為高速暫存器中的第5個字節(jié),他的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率,DS18B20工作時按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值。</p
35、><p> 低5位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,不需要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來設(shè)置分辨率,如表1所示。</p><p> 由表1可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間就越長。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時間權(quán)衡考慮。</p><p><
36、b> 表2溫度與進(jìn)制轉(zhuǎn)換</b></p><p> 高速暫存存儲器除了配置寄存器外,還有其他8個字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第6~8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個字節(jié)的CRC碼,可用來保證通信正確。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫
37、存存儲器的第1,2字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。</p><p> 3.2 溫度上下限的設(shè)計</p><p> 由于DS18B20可以將溫度轉(zhuǎn)化為數(shù)字信號,分辨率為0.5度??梢圆槌鏊铚囟壬舷孪迣?yīng)的二進(jìn)制值,通過比較語句,可以判定繼電器的通斷。由于可以通過軟件設(shè)定溫度的上下限,因而十分靈活方便。</p><p> 3.3
38、溫度轉(zhuǎn)換命令子程序</p><p> 溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。</p><p> 3.4 顯示數(shù)據(jù)刷新子程序</p><p> 顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖
39、8所示</p><p> 圖8 顯示數(shù)據(jù)刷新流程圖</p><p> 4仿真結(jié)果與總電路圖</p><p> 本設(shè)計采用Proteus軟件進(jìn)行了仿真,仿真結(jié)果滿足設(shè)計要求。具體如下:</p><p> 當(dāng)實(shí)際溫度大于 TH 的設(shè)定值時,LCD1602 顯示:</p><p> DS18B20 OK</
40、p><p> TEMP: 88.8℃ > H</p><p> 關(guān)閉繼電器,蜂鳴器響,表示超溫。</p><p> 當(dāng)實(shí)際溫度小于 TL 的設(shè)定值時, LCD1602 顯示:</p><p> DS18B20 OK</p><p> TEMP: 18.8℃ < L</p><
41、p> 蜂鳴器響,表示加熱部分出現(xiàn)故障。</p><p> 當(dāng)實(shí)際溫度小于 TH 大于TL的設(shè)定值時,繼電器吸合,開始加熱, 加熱標(biāo)記為“!”。如圖9所示:</p><p> 圖9 Proteus仿真</p><p><b> 5總結(jié)與體會</b></p><p> 在這兩周里,在不斷學(xué)習(xí)增長知識、提高能力
42、的同時,我也產(chǎn)生了很深的感觸。從初步定下方案到編出程序,從不斷的運(yùn)行排錯到調(diào)試成功,在整個設(shè)計過程中,著實(shí)受益匪淺,不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的東西。</p><p> 我懂得了理論與實(shí)際相結(jié)合是很重要的,眼高手低的現(xiàn)象常常難以避免。只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能提高自己的實(shí)際動手能力和獨(dú)立思考的能力。</p><p>
43、 在設(shè)計的過程中難免會遇到各種各樣的問題,但是在這重重困難之中我了解到自己的真實(shí)水平,并努力提高自己。同時我明白,對于想要成功的人來說更重要的不是知識或技能,而是克服困難的信心。實(shí)踐證明看似“莫名其妙”的錯誤只要堅持嘗試必定有辦法解決,應(yīng)靈活地從各方面找原因而不是一味歸咎于實(shí)驗(yàn)儀器或軟件平臺。</p><p> 這次課程設(shè)計培養(yǎng)了很多方面的能力,學(xué)習(xí)軟件使用的能力,查詢資料的能力。在信息技術(shù)高速發(fā)展的這個時代
44、,這些能力對于個人以后的發(fā)展是十分必要的。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]周興華.手把手教你學(xué)單片機(jī)C語言.北京:北京航空航天大學(xué)出版社,2007</p><p> [2]康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分).北京:高等教育出版社,2007</p><p> [3]胡漢才.單片機(jī)
45、原理與接口技術(shù).北京:清華大學(xué)出版社,2003</p><p> [4]李廣第.單片機(jī)基礎(chǔ).北京: 北京航空航天大學(xué)出版社,2006.</p><p> [5]漢澤西.EDA技術(shù)及其應(yīng)用.北京:北京航空航天大學(xué)出版社,2004.5.</p><p> [6] 郭鎖利. 基于Multisim 9的電子系統(tǒng)設(shè)計.北京:人民郵電出版社,2008.</p>
46、<p><b> 附錄 源程序</b></p><p> TEMP_ZH DATA 24H ;實(shí)時溫度值存放單元</p><p> TEMPL DATA 25H ;</p><p> TEMPH DATA 26H ;</p><p> TEMP_T
47、H DATA 27H ;高溫報警值存放單元</p><p> TEMP_TL DATA 28H ;低溫報警值存放單元</p><p> TEMPHC DATA 29H ;</p><p> TEMPLC DATA 2AH</p><p> K1 EQU P1.4</p
48、><p> K2 EQU P1.5</p><p> K3 EQU P1.6</p><p> K4 EQU P1.7</p><p> BEEP EQU P3.7</p><p> RELAY EQU P1.3</p><p> LCD_X
49、 EQU 2FH ;LCD 地址變量</p><p> LCD_RS EQU P2.0</p><p> LCD_RW EQU P2.1</p><p> LCD_EN EQU P2.2</p><p> flag1 equ 20H.0 ;DS18B20是否存在標(biāo)記</p&g
50、t;<p> KEY_UD EQU 20H.1 ;設(shè)定 KEY 的UP與DOWN 標(biāo)記</p><p> date_line equ p3.3</p><p> ;=====================================================</p><p> ORG 0000H</p>
51、<p><b> JMP MAIN</b></p><p> MAIN: MOV SP,#60H</p><p> MOV A,#00H</p><p> MOV R0,#20H ;將 20H-2FH 單元清零</p><p> MOV R1,#10H</p>
52、;<p> CLEAR: MOV @R0,A</p><p><b> INC R0</b></p><p> DJNZ R1,CLEAR</p><p> CALL SET_LCD</p><p> CALL RE_18B20</p><p> star
53、t: CALL RESET ;18B20復(fù)位子程序</p><p> JNB FLAG1,START1 ;DS1820不存在</p><p> CALL MENU_OK</p><p> CALL READ_E2</p><p> CALL TEMP_BJ ;顯示溫度標(biāo)記</
54、p><p> JMP START2</p><p> START1: CALL MENU_ERROR</p><p> CALL TEMP_BJ ;顯示溫度標(biāo)記</p><p><b> JMP $</b></p><p><b> START2:<
55、;/b></p><p> CALL RESET</p><p> JNB FLAG1,START1 ;DS1820不存在</p><p> MOV A,#0CCH ; 跳過ROM匹配</p><p> CALL WRITE</p><p> MOV A,#44H
56、 ; 發(fā)出溫度轉(zhuǎn)換命令</p><p> CALL WRITE</p><p> CALL RESET</p><p> MOV A,#0CCH ; 跳過ROM匹配</p><p> CALL WRITE</p><p> MOV A,#0BEH ; 發(fā)出讀
57、溫度命令</p><p> CALL WRITE</p><p> CALL READ</p><p> call CONVTEMP</p><p> Call DISPBCD</p><p><b> CALL CONV</b></p><p> CALL
58、 TEMP_COMP</p><p> CALL PROC_KEY ; 鍵掃描</p><p> SJMPSTART2</p><p> ;-----------------------------------------------------</p><p><b> PROC_KEY:</b>
59、;</p><p> JB K1,PROC_K1 ; 按鍵K1處理</p><p> CALL BEEP_BL</p><p><b> JNB K1,$</b></p><p> MOV DPTR,#M_ALAX1</p><p><b> MOV A,#1&
60、lt;/b></p><p> CALL LCD_PRINT</p><p> CALL LOOK_ALARM</p><p><b> JB K3,$</b></p><p> CALL BEEP_BL</p><p> JMP PROC_K2</p>&
61、lt;p> PROC_K1: ; 按鍵K2處理</p><p> JB K2,PROC_END</p><p> CALL BEEP_BL</p><p><b> JNB K2,$</b></p><p> MOV DPTR,#RESET_A1</p>&
62、lt;p> MOV A,#1</p><p> CALL LCD_PRINT</p><p> CALL SET_ALARM</p><p> CALL RE_18B20 ;將設(shè)定的TH,TL值寫入DS18B20內(nèi)</p><p> CALL WRITE_E2</p><p&
63、gt;<b> PROC_K2:</b></p><p> CALL MENU_OK</p><p> CALL TEMP_BJ</p><p><b> PROC_END:</b></p><p><b> RET</b></p><p>
64、; ;============================================</p><p> ;設(shè)定報警值 TH、TL</p><p> ;============================================</p><p> SET_ALARM:</p><p> ;CALL RESET_
65、ALARM</p><p> CALL LOOK_ALARM</p><p><b> AS0:</b></p><p> JB K1,AS00</p><p> CALL BEEP_BL</p><p><b> JNB K1,$</b></p&g
66、t;<p> CPL 20H.1 ;UP/DOWN 標(biāo)記</p><p> AS00: JB 20H.1,ASZ01 ;20H.1=1,UP</p><p> JMP ASJ01 ;20H.1=0,DOWN</p><p> ASZ01: JB K2,ASZ02
67、 ;TH值調(diào)整(增加)</p><p> CALL BEEP_BL</p><p> INC TEMP_TH</p><p> MOV A,TEMP_TH</p><p> CJNE A,#120,ASZ011</p><p> MOV TEMP_TH,#0</p>&
68、lt;p> ASZ011: CALL LOOK_ALARM</p><p> MOV R5,#10</p><p> CALL DELAY</p><p> JMP ASZ01</p><p> ASZ02: JB K3,ASZ03 ;TL值調(diào)整(增加)</p><p&g
69、t; CALL BEEP_BL</p><p> INC TEMP_TL</p><p> MOV A,TEMP_TL</p><p> CJNE A,#99,ASZ021</p><p> MOV TEMP_TL,#00H</p><p> ASZ021: CALL LOOK_ALARM
70、 ;</p><p> MOV R5,#10</p><p> CALL DELAY</p><p> JMP ASZ02</p><p> ASZ03: JB K4,AS0 ;確定調(diào)整 OK</p><p> CALL BEEP_BL</p><p&
71、gt;<b> JNB K4,$</b></p><p><b> RET</b></p><p><b> ASJ01:</b></p><p> JB K2,ASJ02 ;TH值調(diào)整 (減少)</p><p> CALL BEEP_BL&l
72、t;/p><p> DEC TEMP_TH</p><p> MOV A,TEMP_TH</p><p> CJNE A,#0FFH,ASJ011</p><p> JMP ASJ022</p><p> ASJ011: CALL LOOK_ALARM</p><p> M
73、OV R5,#10</p><p> CALL DELAY</p><p><b> JMP AS0</b></p><p> ASJ02: JB K3,ASJ03 ;TL值調(diào)整(減少)</p><p> CALL BEEP_BL</p><p> DEC
74、 TEMP_TL</p><p> MOV A,TEMP_TL</p><p> CJNE A,#0FFH,ASJ021</p><p> JMP ASJ022</p><p> ASJ021: CALL LOOK_ALARM ;</p><p> MOV R5,#10</p>
75、<p> CALL DELAY</p><p><b> JMP AS0</b></p><p> ASJ022: CPL 20H.1</p><p> JMP ASZ01</p><p> ASJ03: JMP ASZ03</p><p><b>
76、; RET</b></p><p> RESET_ALARM:</p><p> MOV DPTR,#RESET_A1 ;指針指到顯示信息區(qū)</p><p> MOV A,#1 ;顯示在第一行</p><p> CALL LCD_PRINT</p><p><
77、;b> RET</b></p><p><b> RESET_A1:</b></p><p> DB "RESET ALERT CODE"</p><p> ;====================================================</p><p
78、> ;實(shí)際溫度值與標(biāo)記溫度值比較子程序</p><p> ;====================================================</p><p> TEMP_COMP:</p><p> MOV A,TEMP_TH </p><p> SUBB A,TEMP_ZH
79、 ;減數(shù)>被減數(shù),則</p><p> JC CHULI1 ;借位標(biāo)志位C=1,轉(zhuǎn)</p><p> MOV A,TEMP_ZH</p><p> SUBB A,TEMP_TL ;減數(shù)>被減數(shù),則</p><p> JC CHULI2 ;借位標(biāo)志位C=1
80、,轉(zhuǎn)</p><p> MOV DPTR,#BJ5</p><p> CALL TEMP_BJ3</p><p> CLR RELAY ;繼電器吸合</p><p><b> RET</b></p><p><b> CHULI1:</b&g
81、t;</p><p> MOV DPTR,#BJ3</p><p> CALL TEMP_BJ3</p><p> SETB RELAY ;繼電器關(guān)閉</p><p> CALL BEEP_BL</p><p><b> RET</b></p>
82、<p><b> CHULI2:</b></p><p> MOV DPTR,#BJ4</p><p> CALL TEMP_BJ3</p><p> CALL BEEP_BL</p><p><b> RET</b></p><p> ;---
83、--------------------------------------</p><p><b> TEMP_BJ3:</b></p><p> MOV A,#0CEH</p><p><b> CALL WCOM</b></p><p> MOV R1,#0</p>
84、<p> MOV R0,#2</p><p> BBJJ3: MOV A,R1</p><p> MOVC A,@A+DPTR</p><p> CALL WDATA</p><p><b> INC R1</b></p><p> DJNZ R0,BBJJ3&
85、lt;/p><p><b> RET</b></p><p><b> BJ3:</b></p><p><b> DB ">H"</b></p><p><b> BJ4:</b></p><p>
86、<b> DB "<L"</b></p><p><b> BJ5:</b></p><p><b> DB " !"</b></p><p> ;================================================
87、==</p><p> ;顯示溫度標(biāo)記子程序</p><p> ;==================================================</p><p><b> TEMP_BJ:</b></p><p> MOV A,#0CBH</p><p><b
88、> CALL WCOM</b></p><p> MOV DPTR,#BJ1 ;指針指到顯示消息</p><p> MOV R1,#0</p><p> MOV R0,#2</p><p> BBJJ1: MOV A,R1</p><p> MOVC A,@A+DPTR&l
89、t;/p><p> CALL WDATA</p><p><b> INC R1</b></p><p> DJNZ R0,BBJJ1</p><p><b> RET</b></p><p><b> BJ1:</b></p>
90、<p> DB 00H,"C"</p><p> ;=================================================</p><p><b> MENU_OK:</b></p><p> MOV DPTR,#M_OK1 ;指針指到顯示消息</p><
91、;p> MOV A,#1 ;顯示在第一行</p><p> CALL LCD_PRINT</p><p> MOV DPTR,#M_OK2 ;指針指到顯示消息</p><p> MOV A,#2 ;顯示在第一行</p><p> CALL LCD_PRINT</p>
92、;<p><b> RET</b></p><p><b> M_OK1:</b></p><p> DB " DS18B20 OK ",0</p><p><b> M_OK2:</b></p><p> DB &q
93、uot; TEMP: ",0</p><p> ;-----------------------------------------------</p><p> MENU_ERROR:</p><p> MOV DPTR,#M_ERROR1 ;指針指到顯示消息1</p><p> MOV A,#1
94、 ;顯示在第一行</p><p> CALL LCD_PRINT</p><p> MOV DPTR,#M_ERROR2 ;指針指到顯示消息1</p><p> MOV A,#2 ;顯示在第一行</p><p> CALL LCD_PRINT</p><
95、;p><b> RET</b></p><p><b> M_ERROR1:</b></p><p> DB " DS18B20 ERROR ",0</p><p><b> M_ERROR2:</b></p><p> DB &q
96、uot; TEMP: ---- ",0</p><p> ;====================================================</p><p> reset: setb date_line</p><p><b> nop</b></p><p> clr
97、 date_line</p><p> mov r0,#6bh ;主機(jī)發(fā)出延時復(fù)位低脈沖</p><p> mov r1,#04h</p><p> tsr1: djnz r0,$</p><p> mov r0,#6bh</p><p> djnz r1,tsr1</p>
98、<p> setb date_line ;然后拉高數(shù)據(jù)線</p><p><b> nop</b></p><p><b> nop</b></p><p><b> nop</b></p><p> mov r0,#32h</p>
99、<p> tsr2: jnb date_line,tsr3 ;等待DS18B20回應(yīng)</p><p> djnz r0,tsr2</p><p> jmp tsr4 ; 延時</p><p> tsr3: setb flag1 ; 置標(biāo)志位,表示DS1820存在</p>&l
100、t;p><b> jmp tsr5</b></p><p> tsr4: clr flag1 ; 清標(biāo)志位,表示DS1820不存在</p><p><b> jmp tsr7</b></p><p> tsr5: mov r0,#06bh</p><p>
101、 tsr6: djnz r0,$ ; 時序要求延時一段時間</p><p> tsr7: setb date_line</p><p><b> ret</b></p><p> ;=======================================================</p&g
102、t;<p><b> RE_18B20:</b></p><p> JB FLAG1,RE_18B20A</p><p><b> RET</b></p><p> RE_18B20A:</p><p> CALL RESET</p><p>
103、MOV A,#0CCH ;跳過ROM匹配</p><p> LCALL WRITE</p><p> MOV A,#4EH ;寫暫存寄存器</p><p> LCALL WRITE</p><p> MOV A,TEMP_TH ;TH(報警上限)</p><p>
104、; LCALL WRITE</p><p> MOV A,TEMP_TL ;TL(報警下限)</p><p> LCALL WRITE</p><p> MOV A,#7FH ;12位精確度</p><p> LCALL WRITE</p><p><b> RE
105、T</b></p><p> ;------------------------------------------------------------</p><p><b> WRITE_E2:</b></p><p> CALL RESET</p><p> MOV A,#0CCH
106、 ;跳過ROM匹配</p><p> LCALL WRITE</p><p> MOV A,#48H ;把暫存器里的溫度報警值拷貝到EEROM</p><p> LCALL WRITE</p><p><b> RET</b></p><p> ;------
107、--------------------------------------------------------</p><p><b> READ_E2:</b></p><p> CALL RESET</p><p> MOV A,#0CCH ;跳過ROM匹配</p><p> LCALL
108、 WRITE</p><p> MOV A,#0B8H ;把EEROM里的溫度報警值拷貝回暫存器</p><p> CALL WRITE</p><p><b> RET</b></p><p> ;------------------------------------------------
109、--------------</p><p> ;將自定義字符寫入LCD1602的CGRAM中</p><p> ;--------------------------------------------------------------</p><p> STORE_DATA:</p><p> MOV A,#40H</p
110、><p> CALL WCOM</p><p> MOV R2,#08H</p><p> MOV DPTR,#D_DATA</p><p> MOV R3,#00H</p><p><b> S_DATA:</b></p><p><b> MO
111、V A,R3</b></p><p> MOVC A,@A+DPTR</p><p> CALL WDATA ;寫入數(shù)據(jù)</p><p><b> INC R3</b></p><p> DJNZ R2,S_DATA</p><p><b> R
112、ET</b></p><p><b> D_DATA:</b></p><p> DB 0CH,12H,12H,0CH,00H,00H,00H,00H</p><p> ;==============================================================</p><
113、;p> write: mov r2,#8 ;一共8位數(shù)據(jù)</p><p><b> CLR C</b></p><p><b> wr1:</b></p><p> clr date_line ;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài)</p>
114、<p> mov r3,#07</p><p> djnz r3,$ ;總線復(fù)位保持16微妙以上</p><p> rrc a ;把一個字節(jié)DATA 分成8個BIT環(huán)移給C</p><p> mov date_line,c ;寫入一個BIT</p><p> m
115、ov r3,#3CH</p><p> djnz r3,$ ;等待100微妙</p><p> setb date_line ;重新釋放總線</p><p><b> nop</b></p><p> djnz r2,wr1 ;寫入下一個BIT</p&g
116、t;<p> setb date_line</p><p><b> ret</b></p><p> ;--------------------------------------------------------------------</p><p> read: mov r4,#4
117、 ; 將溫度低位、高位、TH、TL從DS18B20中讀出</p><p> mov r1,#TEMPL ; 存入25H、26H、27H、28H</p><p> re00: mov r2,#8</p><p> re01: clr cy</p><p> setb date_line</p>&
118、lt;p><b> nop</b></p><p><b> nop</b></p><p> clr date_line ;讀前總線保持為低</p><p><b> nop</b></p><p><b> nop</b
119、></p><p><b> nop</b></p><p> setb date_line ;開始讀總線釋放</p><p> mov r3,#09 ;延時18微妙</p><p><b> djnz r3,$</b></p>
120、<p> mov c,date_line ;從DS18B20總線讀得一個BIT</p><p> mov r3,#3CH</p><p> djnz r3,$ ;等待100微妙</p><p> rrc a ;把讀得的位值環(huán)移給A</p><p>
121、 djnz r2,re01 ;讀下一個BIT</p><p><b> mov @r1,a</b></p><p><b> inc r1</b></p><p> djnz r4,re00</p><p><b> ret</b></p&
122、gt;<p> ;*****************************************************</p><p> ; 處理溫度 BCD 碼子程序</p><p> ;****************************************************</p><p> CONVTEMP:
123、 MOV A,TEMPH ;判溫度是否零下</p><p> ANL A,#80H</p><p> JZ TEMPC1 ;溫度零上轉(zhuǎn)</p><p><b> CLR C</b></p><p> MOV A,TEMPL ;二進(jìn)制數(shù)求補(bǔ)(雙字節(jié))
124、</p><p> CPL A ;取反加1</p><p> ADD A,#01H</p><p> MOV TEMPL,A</p><p> MOV A,TEMPH</p><p><b> CPL A</b></p><p
125、> ADDC A,#00H</p><p> MOV TEMPH,A</p><p> SJMP TEMPC11</p><p> TEMPC1: MOV TEMPHC,#0AH ;+</p><p> TEMPC11: MOV A,TEMPHC</p><p&g
126、t;<b> SWAP A</b></p><p> MOV TEMPHC,A</p><p> MOV A,TEMPL</p><p> ANL A,#0FH ;乘0.0625</p><p> MOV DPTR,#TEMPDOTTAB</p><p
127、> MOVC A,@A+DPTR</p><p> MOV TEMPLC,A ;TEMPLC LOW=小數(shù)部分 BCD</p><p> MOV A,TEMPL ;整數(shù)部分</p><p> ANL A,#0F0H ;取出高四位</p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的溫度自動控制系統(tǒng)的課程設(shè)計
- 單片機(jī)室內(nèi)溫度自動控制系統(tǒng)的設(shè)計
- 溫度自動控制畢業(yè)設(shè)計--基于51單片機(jī)的溫度自動控制系統(tǒng)設(shè)計研究
- 溫度自動控制畢業(yè)設(shè)計--基于51單片機(jī)的溫度自動控制系統(tǒng)設(shè)計研究
- 基于單片機(jī)的溫室自動控制系統(tǒng)設(shè)計
- 基于avr單片機(jī)水溫自動控制系統(tǒng)設(shè)計
- 單片機(jī)原理與應(yīng)用技術(shù) 課程設(shè)計報告-基于單片機(jī)控制的電梯自動控制系統(tǒng)
- 基于單片機(jī)的染色自動控制系統(tǒng)設(shè)計.pdf
- 單片機(jī)課程設(shè)計--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 單片機(jī)課程設(shè)計——基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 單片機(jī)溫度自動控制系統(tǒng)外文文獻(xiàn)
- 單片機(jī)課程設(shè)計--基于51單片機(jī)的溫度控制系統(tǒng)設(shè)計
- 設(shè)計之基于單片機(jī)的溫室大棚自動控制系統(tǒng)
- 基于單片機(jī)的溫室自動控制系統(tǒng)
- 課程設(shè)計---基于單片機(jī)的溫度控制系統(tǒng)
- 單片機(jī)溫度控制系統(tǒng)課程設(shè)計
- 課程設(shè)計--單片機(jī)溫度控制系統(tǒng)
- 51單片機(jī)自動供料課程設(shè)計---基于單片機(jī)的自動控制供料系統(tǒng)
- 單片機(jī)課程設(shè)計--溫度控制系統(tǒng)設(shè)計
- 自動控制系統(tǒng)課程設(shè)計
評論
0/150
提交評論