




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 . . . 1 / 33設(shè) 計(jì) 報(bào) 告基于 51 單片機(jī)的溫度控制系統(tǒng)與應(yīng)用 學(xué) 校: 湘南學(xué)院 專 業(yè): 電氣工程與其自動(dòng)化 姓 名: 云燕、曾琳琳、許治豹、馬立強(qiáng) 指導(dǎo)教師: 曾曉華 日 期: 2013 年 5 月 9 日 . . . 2 / 33摘要摘要:在現(xiàn)代工業(yè)的生產(chǎn)生活中,溫度是常用的測(cè)量機(jī)被控參數(shù)。隨著微機(jī)測(cè)量和控制技術(shù)的迅速發(fā)展與廣泛應(yīng)用,以單片機(jī)為核心的溫度采集與控制系統(tǒng)的研發(fā)與應(yīng)用在很大程度上提高了生產(chǎn)生活中對(duì)溫度的控制水平。本水溫控制系統(tǒng)采用美國(guó) ATMEL 公司生產(chǎn)的AT89S51 單片機(jī)為核心控制器件,實(shí)現(xiàn)水溫 30 度到 100 度的自動(dòng)控制,以 DS18B20
2、為溫度傳感器的溫度控制系統(tǒng),光電耦合器 MOC3041 和雙向可控硅構(gòu)成主控制電路。該系統(tǒng)可以實(shí)時(shí)存儲(chǔ)相關(guān)的溫度數(shù)據(jù)并記錄顯示溫度。硬件控制電路主要包括 AT89S51 單片機(jī)最小系統(tǒng),測(cè)溫點(diǎn)路,時(shí)鐘電路,8 段數(shù)碼晶體管顯示電路。系統(tǒng)程序主要包括主程序,讀出溫度子程序,計(jì)算溫度子程序,按鍵處理程序,8 段數(shù)碼晶體管顯示程序以與數(shù)據(jù)存儲(chǔ)程序等等。關(guān)鍵詞關(guān)鍵詞:AT89C52 單片機(jī),DS18B20 溫度傳感器,BTA16-600B 雙向晶閘管,8 段數(shù)碼晶體管顯示電路,水溫自動(dòng)控制。Abstract: in modern industrial production and life, temp
3、erature is a common measuring machine was accused of parameters. With the rapid development of microcomputer measurement and control technology and widely used, with the single chip processor as the core temperature gathering and control system of research and application to a large extent, improve
4、the production control of the temperature level in the life. The water temperature control system adopts the ATMEL company produces the AT89S51 as the core control device to achieve the automatic control water temperature 30 degrees to 100 degrees, the temperature control system based on DS18B20 tem
5、perature sensor, photoelectric coupler MOC3041 and bidirectional thyristor constitute the main control circuit. The system can real-time temperature data storage and record according to temperature. Hardware control circuit mainly includes the AT89S51 minimum system, temperature measuring points, th
6、e clock circuit, section 8 of digital transistor display circuit. System program mainly includes the main program, read temperature subroutine, calculating temperature subroutine, button handler, section 8 of digital transistor display program and data storage and so on.Key words: single chip microc
7、omputer AT89C52, DS18B20 temperature sensor, two-way thyristor BTA16-600 - b, 8 period of digital display circuit, transistor water temperature automatic control. . . . 3 / 33一引言1.在現(xiàn)代的各種工業(yè)生產(chǎn)中,很多地方都需要用到溫度控制系統(tǒng)。而智能化的控制系統(tǒng)是一種發(fā)展的趨勢(shì)。本文所闡述的基于 AT89S51 單片機(jī)的溫度控制系統(tǒng)。本溫度控制系統(tǒng)適用于溫度-55 度到 125 度之間(傳感器的測(cè)溫圍) ,可以調(diào)整不同液體的
8、溫度自動(dòng)控制圍為其常溫到沸點(diǎn)之間;可以根據(jù)需求通過搭配不同配件實(shí)現(xiàn)不同的功能,既可以實(shí)現(xiàn)只加熱和只制冷,或者即可以加熱又可以制冷,廣泛應(yīng)用于生產(chǎn)生活中等,且該控制系統(tǒng)可移植性好,成本低,電路簡(jiǎn)單,方便使用。2.應(yīng)用領(lǐng)域:家電,生產(chǎn),化工,人工智能,食品加工,電力系統(tǒng)3.設(shè)計(jì)要求:(1) 利用數(shù)字溫度傳感器檢測(cè)溫度,要求線路盡可能簡(jiǎn)單 (2) 無(wú)競(jìng)爭(zhēng)冒險(xiǎn),無(wú)抖動(dòng) (3)實(shí)時(shí)顯示溫度和實(shí)時(shí)可調(diào) (4) 溫度可調(diào) (5)可移植性好,通用性強(qiáng),性價(jià)比高4.技術(shù)指標(biāo):溫度顯示誤差不超過 1 度5.優(yōu)點(diǎn):結(jié)構(gòu)簡(jiǎn)單,低成本,實(shí)用性強(qiáng),可移植性好,可方便的用于家電生產(chǎn)生活化工食品加工等等。具體應(yīng)用;(1)溫度
9、可調(diào)且保溫的熱得快(可與目前市面上的電熱得快兼容), (2)簡(jiǎn)易熱水器,控制模塊可用于目前電熱水器的控制模塊的維修與替換。 (3)電冰箱(主電路接壓縮機(jī)實(shí)現(xiàn)制冷) 。 (5)冷凍 (6)化工產(chǎn)品的恒溫水浴加熱(-30 度到 110 度之間) , (7)蒸餾分離沸點(diǎn)在-30 度-+110 度之間的多種液體,如分離酒精和水(用于作坊式谷物酒精生產(chǎn)等) 。 (8)電氣設(shè)備和工作平臺(tái)的散熱(主電路接風(fēng)扇)(9)通過修改程序和增加一個(gè)輸出引腳可以同時(shí)實(shí)現(xiàn)加熱和制冷,如用于飲水機(jī)的加熱和制冷(成本較目前市場(chǎng)上的飲水機(jī)的控制電路的制造成本要低且結(jié)構(gòu)簡(jiǎn)單,易于維護(hù)功能更強(qiáng)大) . . . 4 / 33二、系統(tǒng)
10、總體方案設(shè)計(jì)二、系統(tǒng)總體方案設(shè)計(jì)1.工作原理:以單片機(jī)為核心,通過溫度傳感器 DS18B20 對(duì)當(dāng)前溫度的檢測(cè)送到單片機(jī)進(jìn)行處理與系統(tǒng)設(shè)定溫度的比較控制主電路雙向晶閘管的導(dǎo)通與關(guān)斷,同時(shí)送顯示電路顯示當(dāng)前溫度。通過按鍵輸入電路復(fù)位控制電路和設(shè)定要達(dá)到的溫度并且送顯示電路顯示,電源電路提供控制電路所需要的工作電壓。 圖 1.系統(tǒng)方框圖2 2硬件選型硬件選型2.12.1 單片機(jī)單片機(jī)(AT89c52 和 AT89S51 無(wú)引腳和功能的區(qū)別,方便起見,后文中用 AT89S51 代替 AT89c52)圖 2.單片機(jī)的引腳圖2.2.2 2 溫度傳感器溫度傳感器1. .DS18B20 的性能特點(diǎn):(1)
11、單線結(jié)構(gòu),只需一根信號(hào)線和 CPU 相連。(2). 不需要外部元件,直接輸出串行數(shù)據(jù)。(3). 可不需要外部電源,直接通過信號(hào)線供電,電源電壓圍為 3.3V5V。(4) 測(cè)溫精度高,測(cè)溫圍為:一 55+125,在-10+85圍,精度為O.5。(5) 測(cè)溫分辨率高,當(dāng)選用 12 位轉(zhuǎn)換位數(shù)時(shí),溫度分辨率可達(dá) 00625。(6) 數(shù)字量的轉(zhuǎn)換精度與轉(zhuǎn)換時(shí)間可通過簡(jiǎn)單的編程來(lái)控制:9 位精度的轉(zhuǎn)換時(shí)間為9375 ms:10 位精度的轉(zhuǎn)換時(shí)間 187.5ms:12 位精度的轉(zhuǎn)換時(shí)間 750ms。 . . . 5 / 33(7).具有非易失性上、下限報(bào)警設(shè)定的功能,用戶可方便地通過編程修改上、下限的數(shù)值
12、。(8) 可通過報(bào)警搜索命令識(shí)別哪片 DS18820 采集的溫度超越上、下限。 2.DS18B20 引腳圖和簡(jiǎn)介(1) 各腳功能描述如下: DQ:數(shù)字信號(hào)輸入輸出端。GND:電源地端。VDD:外接供電電源輸入端(在寄生電源接線時(shí)此腳應(yīng)接地)(2) DS18820 中的溫度傳感器完成對(duì)溫度的測(cè)量,輸出格式為:16 位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼。當(dāng)測(cè)溫精度設(shè)置為 12 位時(shí),分辨率為 O0625,即 O0625LSB。其二進(jìn)制補(bǔ)碼格式: 表 1.其中,S 為符號(hào)位,S=1,表示溫度 為負(fù)值;S=0,表示溫度為正值。例如+125的數(shù)字輸出為 07D0H,-55的數(shù)字輸出為 FC90H。一些溫度值對(duì)應(yīng)的數(shù)字
13、輸出如圖 7 所示。DS18820 中的低溫觸發(fā)器 TL、高溫觸發(fā)器 TH,用于設(shè)置低溫、高溫的報(bào)警數(shù)值。DS18820 完成一個(gè)周期的溫度測(cè)量后,將測(cè)得的溫度值和 TL、TH 相比較,如果小于 TL,或大于 TH,則表示溫度越限,將該器件的告警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。需要修改上、下限溫度值時(shí),只需使用一個(gè)功能命令即可對(duì) TL、TH 寫入,十分方便。2.32.3 雙向晶閘管雙向晶閘管功能特性功能特性:高之突波電流能力變換:(dV / dt)c 10 V / ms 雙向可控硅家庭:類別:離散半導(dǎo)體產(chǎn)品。Triac 類型:標(biāo)準(zhǔn)。配置:單電壓-關(guān)閉狀態(tài):600 V目前國(guó)家(最
14、高):16觸發(fā)電壓-門(Vgt)從根本上(最高):1.3 V當(dāng)前-門觸發(fā)耐量減低(Igt)(最高):50個(gè)地圖目前持有(Ih)-(最高):50個(gè)地圖當(dāng)前-非代表增兵50、60赫茲(Itsm):160 A,168 A裝式:通過洞包裝/箱:- 220 - 3(垂直領(lǐng)導(dǎo))參數(shù)特性參數(shù)特性:控制方式:雙向極數(shù):三極封裝材料:金屬封裝封裝外形:平板形關(guān)斷速度:高頻(快速)散熱功能:帶散熱片溫度值得低字節(jié)D7D6D5D4D3D2D1D0溫度值的高字節(jié)SSSSSD10D9D8 . . . 6 / 33頻率特性:高頻功率特性:中功率 圖 3. TO-202AB(BTA16)圖 4.三、硬件模塊設(shè)計(jì)三、硬件模塊
15、設(shè)計(jì)1 1、電源電路、電源電路51 單片機(jī)的供電電壓為 4.0-5.5V,溫度傳感器的供電電壓為 3-5V,雙向晶閘管的供電電壓為 3-5V,所以選用 5V 電壓供電,主電路用 220V 家用電壓供電。2 2、單片機(jī)電路單片機(jī)電路2.1 AT89C51 為 40 腳雙列直插封裝的 8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51 核,在部功能與管腳排布上與通用的8xc52 一樣,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主 IC 部寄存器、數(shù)據(jù) RAM 與外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR 的接收解碼與與主板 CPU 通信等。主要管腳有:XTAL1(19 腳
16、)和 XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和 VSS(20 腳)為供電端口,分別接 +5V 電源的正負(fù)端。 P0P3 為可編程通用 I/O 腳,其功能用途由軟件定義,在本設(shè)計(jì)中, P0 端口(3239 腳)被定義為 N1 功能控制端口,分別與 N1 的相應(yīng)功能管腳相連接, 13 腳定義為 IR 輸入端,10 腳和11 腳定義為 I2C 總線控制端口,分別連接 N1 的 SDAS(18 腳)和 SCLS(19 腳)端口,12 腳、27 腳與 28 腳定義為握手信號(hào)功能端口,連接主板
17、CPU 的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)與會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。2 2. .2 2 P P0 0 口口P0 口是一組 8 位漏極開路型雙向 I/O 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng) 8 個(gè) TTL 邏輯門電路,對(duì)端口 P0 寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活部上拉電阻。在 Flash 編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻 。2 2. .3 3 P P1 1 口口 . . . 7 / 33P1 是一個(gè)帶部上
18、拉電阻的 8 位雙向 I/O 口, P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。與 AT89C51 不同之處是, P1.0 和 P1.1 還可分別作為定時(shí) /計(jì)數(shù)器 2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入( P1.1/T2EX)。2 2. .4 4 P P2 2 口口P2 是一個(gè)帶有部上拉電阻的 8 位雙向 I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門電路。對(duì)端口 P2 寫“1”,通過部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)椴看嬖谏侠娮?,某個(gè)引腳被外部信號(hào)拉
19、低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問外部程序存儲(chǔ)器或 16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR 指令)時(shí),P2 口送出高 8 位地址數(shù)據(jù)。在訪問 8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX RI 指令)時(shí), P2 口輸出 P2 鎖存器的容。Flash 編程或校驗(yàn)時(shí), P2 亦接收高位地址和一些控制信號(hào)。2 2. .5 5 P P3 3 口口 P3 口是一組帶有部上拉電阻的 8 位雙向 I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流) 4 個(gè) TTL 邏輯門電路。對(duì) P3 口寫入“1”時(shí),它們被部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(
20、 IIL)。P3 口還接收一些用于 Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。2 2. .6 6 R RS ST T復(fù)位輸入。當(dāng)振蕩器工作時(shí), RST 引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。2 2. .7 7 A AL LE E/ /P PR RO OG G當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí), ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。一般情況下, ALE 仍以時(shí)鐘振蕩頻率的 1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè) ALE 脈沖。對(duì) Flash 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PR
21、OG)。如有必要,可通過對(duì)特殊功能寄存器( SFR)區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條MOVX 和 MOVC 指令才能將 ALE 激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無(wú)效。2 2. .8 8 P PS SE EN N程序儲(chǔ)存允許( PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN 信號(hào)。2 2. .9 9 E EA A/ /V VP PP P . . . 8 / 3
22、3外部訪問允許。欲使 CPU 僅訪問外部程序存儲(chǔ)器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時(shí)部會(huì)鎖存EA 端狀態(tài)。如 EA 端為高電平(接 Vcc 端),CPU 則執(zhí)行部程序存儲(chǔ)器中的指令。 Flash 存儲(chǔ)器編程時(shí),該引腳加上 +12V 的編程允許電源 Vpp,當(dāng)然這必須是該器件是使用 12V 編程電壓 Vpp。2 2. .1 10 0 X XT TA AL L1 1振蕩器反相放大器的與部時(shí)鐘發(fā)生器的輸入端。2 2. .1 11 1 X XT TA AL L2 2振蕩器反相放大器的輸出端。 圖圖 5.5.3.3.溫度采集電路溫
23、度采集電路DS18B20工作原理:低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小1 ,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在 -55 所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將
24、加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。圖2中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測(cè)溫度值。 . . . 9 / 33表2.溫度值輸入輸出關(guān)系 圖6.DS18B20硬件連接4.4.顯示電路元件選擇顯示電路元件選擇 (1).數(shù)碼管的選擇: . . . 10 / 33 圖 7. CL5461AS a,b,c,d,e,f,g 為四位 7 段數(shù)碼管的段
25、選線 ,dp 為數(shù)碼管的小數(shù)點(diǎn)顯示位 ,A1,A2,A3,A4 為四位 7 段數(shù)碼管的位選線 5.5.按鍵輸入按鍵輸入設(shè)置獨(dú)立式按鍵,其功能分別是“設(shè)置” 、 “+” 、 “” 、 “負(fù)” 。 圖 8.按鍵電路6.6.蜂鳴電路蜂鳴電路接通電源后,當(dāng)溫度超過系統(tǒng)設(shè)定溫度的上限值或者系統(tǒng)出現(xiàn)故障時(shí),單片機(jī)給三極管發(fā)周期性的方波信號(hào),振蕩器產(chǎn)生的音頻信號(hào)電流通過電磁線圈,使電磁線圈產(chǎn)生磁場(chǎng),振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性振動(dòng)發(fā)生。圖 9.報(bào)警電路 . . . 11 / 337.7.主電路主電路當(dāng)溫度低于設(shè)定溫度是,單片機(jī)給主電路發(fā)高電平通過光電隔離開關(guān)控制雙向晶闡管的導(dǎo)通,是主電路接通
26、或關(guān)斷市電(220V 50HZ) ,從而控制加熱元件的加熱(制冷元件的制冷)圖 10.主電路圖四、系統(tǒng)軟件設(shè)計(jì)四、系統(tǒng)軟件設(shè)計(jì)1.1.程序流程圖程序流程圖 . . . 12 / 33圖 11.溫度采樣流程開始初始化DS18B20是否存在?ROM操作命令存儲(chǔ)操作命令讀溫度值計(jì)算整數(shù)位溫度BCD值,并進(jìn)行存儲(chǔ)錯(cuò)誤提示顯示8888NY結(jié)束返回圖 . . . 13 / 33圖 12.中斷中斷判斷有鍵按下?調(diào)用10ms延時(shí)子程序判斷是否有鍵按下檢測(cè)當(dāng)前溫度(假設(shè)為R2)調(diào)用顯示子程序顯示當(dāng)前溫度P1.4=1?(是否為加) P1.5=1?(是否為)P1.6=1?(確定鍵按下沒有) 默認(rèn)溫度=R2中斷結(jié)束返
27、回YYNNYNNR2=R2+1延時(shí)10msYR2=R2-1YN . . . 14 / 33圖 13.主流程設(shè)置默認(rèn)溫度和溫度上限值初始化(中斷和定時(shí))開始調(diào)用溫度檢測(cè)子程序 溫度顯示子程序當(dāng)前溫度溫度上限制?溫度默認(rèn)溫度?P1.0發(fā)高電平延時(shí)10msP1.0發(fā)低電平P1.0發(fā)低電平報(bào)警和錯(cuò)誤顯示8888 NYYN . . . 15 / 33五、系統(tǒng)調(diào)試仿真五、系統(tǒng)調(diào)試仿真 圖 14. 實(shí)時(shí)溫度顯示圖 15 . . . 16 / 33六、結(jié)束語(yǔ)六、結(jié)束語(yǔ) 經(jīng)過這次單片機(jī)的課程設(shè)計(jì),我們接觸到了更多平時(shí)沒有接觸到的儀器設(shè)備、元器件以與相關(guān)的使用高度經(jīng)驗(yàn),發(fā)現(xiàn)了自身許多不足之處,使我深刻體會(huì)到了所學(xué)
28、理論知識(shí)的重要性。另外在這次設(shè)計(jì)中,我體會(huì)到了 51 單片機(jī)的種種優(yōu)勢(shì),體積小,重量輕,抗干擾能力強(qiáng),對(duì)環(huán)境要求不高,價(jià)格低廉,可靠性高,靈活性好等特點(diǎn),即使是非電子計(jì)算機(jī)專業(yè)人員,通過學(xué)習(xí)一些專業(yè)基礎(chǔ)知識(shí)以后也能依靠自己的技術(shù)力量,來(lái)開發(fā)所希望的單片機(jī)應(yīng)用系統(tǒng)。本文的溫度控制系統(tǒng),只是單片機(jī)廣泛的應(yīng)用更加廣泛化。首先,通過這次應(yīng)用系統(tǒng)設(shè)計(jì),在很大程度上提高了自己的獨(dú)立思考能力和單片機(jī)的專業(yè)知識(shí),也深刻了解寫一篇應(yīng)用系統(tǒng)的步驟和格式,以與不可少的幾個(gè)階段。課程設(shè)計(jì)能夠從理論設(shè)計(jì)和工程實(shí)踐相結(jié)合、鞏固基礎(chǔ)知識(shí)與培養(yǎng)創(chuàng)新意識(shí)相結(jié)合、個(gè)人作用和集體協(xié)作結(jié)合等方面全方位的培養(yǎng)我們學(xué)生的素質(zhì)。我經(jīng)過這次
29、設(shè)計(jì),熟悉了對(duì)一項(xiàng)課題進(jìn)行研究、設(shè)計(jì)和實(shí)驗(yàn)的詳細(xì)過程。這些在我將來(lái)的工作和學(xué)習(xí)當(dāng)中都會(huì)有很大的幫助。有過這樣的一次訓(xùn)練,相信在接下來(lái)的日子我們都會(huì)了,而且會(huì)做得更多。 其次,我學(xué)會(huì)了怎么樣查閱資料和利用工具書。平時(shí)課堂上所學(xué)習(xí)的只是大多數(shù)比較舊,這就要求我們更加積極地查閱當(dāng)前最近的電子信息資料。一個(gè)人所學(xué)所了解的總是有限,因此,當(dāng)我在設(shè)計(jì)過程中需要一些我不曾學(xué)習(xí)過的知識(shí)時(shí),我就有針對(duì)性地去查找了相關(guān)材料,并加以理解和利用。這大大有助于我們提高自身的應(yīng)用能力,而且增長(zhǎng)了自己的見識(shí),最新的專業(yè)知識(shí)。 而且,課程設(shè)計(jì)對(duì)我以前學(xué)過的知識(shí)起到了回顧作用,并對(duì)其加以進(jìn)一步的消化和鞏固。更進(jìn)一步的,課程設(shè)計(jì)
30、培養(yǎng)了我嚴(yán)肅認(rèn)真,實(shí)事的科學(xué)態(tài)度。也讓我明白了吃苦耐相對(duì)應(yīng)的工程意識(shí)的重要。參考文獻(xiàn):參考文獻(xiàn):1 羅印升 單片微機(jī)原理與應(yīng)用 :機(jī)械工業(yè),2012,12 譚浩強(qiáng) C 程序設(shè)計(jì) :清華大學(xué),2010,63 康華光 電子技術(shù)基礎(chǔ)模擬部分 高等教育,2011,11,4 康華光 電子技術(shù)基礎(chǔ)數(shù)字部分 高等教育,2011,11,5 月飛,郭會(huì)平,胡仁喜 Protel 99se,:機(jī)械工業(yè),2009,126 紅艷,余成波 傳感器與現(xiàn)代檢測(cè)技術(shù) :清華大學(xué),2009,3 . . . 17 / 33附錄附錄 1 1:程序/* 程序名; 基于 DS18B20 的測(cè)溫系統(tǒng)* 功 能: 實(shí)時(shí)測(cè)量溫度,超過上下限報(bào)
31、警,報(bào)警溫度可手動(dòng)調(diào)整。K1 是用來(lái)* 進(jìn)入上下限調(diào)節(jié)模式的,當(dāng)按一下 K1 進(jìn)入上限調(diào)節(jié)模式,再按一下進(jìn)入下限* 調(diào)節(jié)模式。在正常模式下,按一下 K2 進(jìn)入查看上限溫度模式,顯示 1s 左右自動(dòng)* 退出;按一下 K3 進(jìn)入查看下限溫度模式,顯示 1s 左右自動(dòng)退出;按一下 K4 消除* 按鍵音,再按一下啟動(dòng)按鍵音。在調(diào)節(jié)上下限溫度模式下,K2 是實(shí)現(xiàn)加 1 功能,* K1 是實(shí)現(xiàn)減 1 功能,K3 是用來(lái)設(shè)定上下限溫度正負(fù)的。 */#include /將 AT89X52.h 頭文件包含到主程序#include/將 intrins.h 頭文件包含到主程序(調(diào)用其中的_nop_()空操作函數(shù)延時(shí)
32、)#define uint unsigned int /變量類型宏定義,用 uint 表示無(wú)符號(hào)整形(16 位)#define uchar unsigned char /變量類型宏定義,用 uchar 表示無(wú)符號(hào)字符型(8 位)uchar max=0 x00,min=0 x00; /max 是上限報(bào)警溫度,min 是下限報(bào)警溫度bit s=0; /s 是調(diào)整上下限溫度時(shí)溫度閃爍的標(biāo)志位,s=0 不顯示 200ms,s=1 顯示 1s左右bit s1=0; /s1 標(biāo)志位用于上下限查看時(shí)的顯示void display1(uint z); /聲明 display1()函數(shù)(display.h 頭文
33、件中的函數(shù),ds18b20.h 要用應(yīng)先聲明)#includeds18b20.h /將 ds18b20.h 頭文件包含到主程序#includekeyscan.h /將 keyscan.h 頭文件包含到主程序#includedisplay.h /將 display.h 頭文件包含到主程序/*主函數(shù)*/void main() beer=0; /關(guān)閉蜂鳴器 led=1; /關(guān)閉 LED 燈 timer1_init(0); /初始化定時(shí)器 1(未啟動(dòng)定時(shí)器 1) get_temperature(1); /首次啟動(dòng) DS18B20 獲取溫度(DS18B20 上點(diǎn)后自動(dòng)將 EEPROM 中的上下限溫度復(fù)制
34、到 TH 和 TL 寄存器) while(1) /主循環(huán) keyscan(); /按鍵掃面函數(shù) get_temperature(0); /獲取溫度函數(shù) /keyscan(); /按鍵掃面函數(shù) display(temp,temp_d*0.625);/顯示函數(shù) alarm(); /報(bào)警函數(shù) . . . 18 / 33 /keyscan(); /按鍵掃面函數(shù) /* 程序名; _ds18b20_h_* 功 能: DS18B20 的 c51 編程頭文件 */#include#ifndef _ds18b20_h_ /定義頭文件#define _ds18b20_h_#define uint unsigned
35、 int /變量類型宏定義,用 uint 表示無(wú)符號(hào)整形(16 位)#define uchar unsigned char /變量類型宏定義,用 uchar 表示無(wú)符號(hào)字符型(8 位)sbit DQ= P23; /可位尋址變量定義,用 DQ 表示 P2.3 口sbit beer=P17; /用 beer 表示 P1.0sbit led=P11; /用 led 表示 P1.1uchar temp=0; /測(cè)量溫度的整數(shù)部分uchar temp_d=0; /測(cè)量溫度的小數(shù)部bit f=0; /測(cè)量溫度的標(biāo)志位,0表示“正溫度” 1表示“負(fù)溫度”)bit f_max=0; /上限溫度的標(biāo)志位0表示“
36、正溫度” 1表示“負(fù)溫度” )bit f_min=0; /下限溫度的標(biāo)志位0表示“正溫度” 、 1表示“負(fù)溫度” )bit w=0; /報(bào)警標(biāo)志位1啟動(dòng)報(bào)警0關(guān)閉報(bào)警)sbit check=P10;/*延時(shí)子函數(shù)*/void ds18b20_delayus(uint t) /延時(shí)幾 s while(t-);void ds18b20_delayms(uint t) /延時(shí) 1ms 左右uint i,j;for(i=t;i0;i-) for(j=120;j0;j-);/*ds18b20 初始化函數(shù)*/void ds18b20_init() / DS18B20 初始化 uchar c=0; DQ=1
37、;DQ=0; /控制器向 DS18B20 發(fā)低電平脈沖 . . . 19 / 33ds18b20_delayus(80); /延時(shí) 15-80sDQ=1;/控制器拉高總線,while(DQ); /等待 DS18B20 拉低總線,在 60-240s 之間ds18b20_delayus(150);/延時(shí),等待上拉電阻拉高總線DQ=1; /拉高數(shù)據(jù)線,準(zhǔn)備數(shù)據(jù)傳輸;/*ds18b20 字節(jié)讀函數(shù)*/uchar ds18b20_read() /DS18B20 字節(jié)讀取uchar i;uchar d = 0;DQ = 1;/準(zhǔn)備讀;for(i=8;i0;i-) d = 1; /低位先發(fā);DQ = 0;_
38、nop_();_nop_();DQ = 1;/必須寫 1,否則讀出來(lái)的將是不預(yù)期的數(shù)據(jù);if(DQ)/在 12us 處讀取數(shù)據(jù);d |= 0 x80;ds18b20_delayus(10);return d; /返回讀取的值/*ds18b20 字節(jié)寫函數(shù)*/void ds18b20_write(uchar d) / ds18b20 字節(jié)寫 uchar i; for(i=8;i0;i-) DQ=0; DQ=d&0 x01; ds18b20_delayus(5); DQ=1; d = 1; /*獲取溫度函數(shù)*/ void get_temperature(bit flag) . . . 20
39、 / 33uchar a=0,b=0,c=0,d=0; uint i;ds18b20_init(); /DS18B20 初始化ds18b20_write(0 xcc);/向 DS18B20 發(fā)跳過讀 ROM 命令ds18b20_write(0 x44);/寫啟動(dòng) DS18B20 進(jìn)行溫度轉(zhuǎn)換命令,轉(zhuǎn)換結(jié)果存入部 RAMif(flag=1)/首次啟動(dòng) DS18B20 進(jìn)行溫度轉(zhuǎn)換需要 500ms,若轉(zhuǎn)換時(shí)間不夠就出錯(cuò),讀出的是 85 度的錯(cuò)誤值。 display1(1);/用開機(jī)動(dòng)畫耗時(shí)elseds18b20_delayms(1);ds18b20_init(); /DS18B20 初始化ds18
40、b20_write(0 xcc); /向 DS18B20 發(fā)跳過讀 ROM 命令ds18b20_write(0 xbe);/寫讀部 RAM 中 9 字節(jié)的容命令a=ds18b20_read();/讀部 RAM (LSB)b=ds18b20_read();/讀部 RAM (MSB)if(flag=1)/局部位變量 f=1 時(shí)讀上下線報(bào)警溫度 max=ds18b20_read(); /讀部 RAM (TH) min=ds18b20_read(); /讀部 RAM (Tl)if(max&0 x80)=0 x80) /若讀取的上限溫度的最高位(符號(hào)位)為1表明是負(fù)溫度f(wàn)_max=1;max=(
41、max-0 x80); /將上限溫度符號(hào)標(biāo)志位置1表示負(fù)溫度,將上限溫度裝換成無(wú)符號(hào)數(shù)。 if(min&0 x80)=0 x80) /若讀取的下限溫度的最高位(符號(hào)位)為1表明是負(fù)溫度f(wàn)_min=1;min=(min-0 x80); /將下限溫度符號(hào)標(biāo)志位置1表示負(fù)溫度,將下限溫度裝換成無(wú)符號(hào)數(shù)。i=b;i=4;if (i=0) f=0; /i 為 0,正溫度,設(shè)立正溫度標(biāo)記 temp=(a4)|(b4)|(b4);/整數(shù)部分 a=(a&0 x0f);/小數(shù)部分 . . . 21 / 33 temp_d=a; /*存儲(chǔ)極限溫度函數(shù)*/ void store_t() if(f_m
42、ax=1) /若上限溫度為負(fù),將上限溫度轉(zhuǎn)換成有符號(hào)數(shù)(最高位為1 是負(fù),為 0 是正)max=max+0 x80;if(f_min=1) /若下限溫度為負(fù),將上限溫度轉(zhuǎn)換成有符號(hào)數(shù)min=min+0 x80; ds18b20_init(); /DS18B20 初始化ds18b20_write(0 xcc); /向 DS18B20 發(fā)跳過讀 ROM 命令ds18b20_write(0 x4e); /向 DS18B20 發(fā)寫字節(jié)至?xí)捍嫫?2 和 3(TH 和 TL)命令ds18b20_write(max); /向暫存器 TH(上限溫度暫存器)寫溫度ds18b20_write(min); /向暫存
43、器 TL(下限溫度暫存器)寫溫度ds18b20_write(0 xff); /向配置寄存器寫命令,進(jìn)行溫度值分辨率設(shè)置ds18b20_init(); /DS18B20 初始化ds18b20_write(0 xcc); /向 DS18B20 發(fā)跳過讀 ROM 命令ds18b20_write(0 x48); /向 DS18B20 發(fā)將 RAM 中 2、3 字節(jié)的容寫入 EEPROM /DS18B20 上電后會(huì)自動(dòng)將 EEPROM 中的上下限溫度拷貝到 TH、TL 暫存器/*溫度超限報(bào)警函數(shù)*/ void alarm() /若上限值是正值 if(f_max=0) if(f_min=0) /若下限值是
44、正值 if(f=0) /若測(cè)量值是正值 if(temp=max) w=1;TR1=1; /當(dāng)測(cè)量值小于最小值或大于最大值時(shí)報(bào)警 if(tempmin) w=0; if(temp=max)check=0; if(f=1)w=1;TR1=1; /若測(cè)量值是負(fù)值時(shí)報(bào)警 if(f_min=1) /若下限值是負(fù)值 . . . 22 / 33 if(f=0) /若測(cè)量值是正值 if(temp=max)/當(dāng)測(cè)量值大于最大值時(shí)報(bào)警 w=1;TR1=1; if(temp=min)/當(dāng)測(cè)量值大于最小值時(shí)報(bào)警 w=1;TR1=1; if(tempmin)/當(dāng)測(cè)量值小于最小值時(shí)不報(bào)警 w=0; if(f_max=1)
45、 /若下限值是負(fù)值 if(f_min=1) /若下限值是負(fù)值 if(f=1) /若測(cè)量值是負(fù)值 if(temp=min) w=1;TR1=1; /當(dāng)測(cè)量值小于最大值或大于最小值時(shí)報(bào)警 if(tempmax) w=0; /當(dāng)測(cè)量值小于最小值且大于最大值時(shí)不報(bào)警 if(f=0)w=1;TR1=1; /若測(cè)量值是正值時(shí)報(bào)警 #endif/* 程序名; ds18b20 鍵盤頭文件* 功 能: 通過鍵盤設(shè)定設(shè)定上下限報(bào)警溫度 */#include#ifndef _keyscan_H_/定義頭文件#define _keyscan_H_sbit key1=P14; /可位尋址變量定義,用 key1 表示 P
46、2.2 口sbit key2=P15; /用 key2 表示 P2.1 口 . . . 23 / 33sbit key3=P16;/用 key3 表示 P2.0 口sbit key4=P33;/用 key4 表示 P3.3 口uchar i=0;/定義全局變量 i 用于不同功能模式的選擇, 0正常模式, 1上限調(diào)節(jié)模式, 2下限調(diào)節(jié)模式uchar a=0; /定義全局變量 a 用于不同模式下數(shù)碼管顯示的選擇bit k4=0;/K4 按鍵雙功能選擇位,k4=0 時(shí) K4 按鍵選擇消按鍵音的功能,k4=1 時(shí) K4 按鍵選擇正負(fù)溫度設(shè)定功能bit v=0;/K2、K3 按鍵雙功能選擇位,v=0 時(shí)
47、選擇上下限查看功能,v=1 時(shí)選擇上下限溫度加減功能bit v1=0;/v1=1 時(shí)定時(shí) 1250ms 時(shí)間到自動(dòng)關(guān)閉報(bào)警上下限查看功能bit v2=0; /消按鍵音功能調(diào)整位,為0時(shí)開按鍵音,為1時(shí)關(guān)按鍵音/*讀鍵盤延時(shí)子函數(shù)*/void keyscan_delay(uint z)/延時(shí) 1ms 左右 uint i,j; for(i=z;i0;i-)for(j=120;j0;j-);/*溫度調(diào)節(jié)函數(shù)*/int temp_change(int count,bit f) /上下限溫度調(diào)整 if(key2=0)/判斷 K2 是否按下 if(v2=0)beer=0;/v2=0 開按鍵音,否則消按鍵音
48、keyscan_delay(10);/延時(shí) 10msif(key2=0)/再次判斷 K2 是否按下(實(shí)現(xiàn)按按鍵時(shí)消抖) beer=1;/K2 按下關(guān)按鍵音 if(f=0)/若溫度為正 count+;/每按一下 K2 溫度上調(diào) 1 if(a=1)if(count125) count=125;/當(dāng)溫度值大于 125 時(shí)不上調(diào) if(a=2)if(count125) count=125; if(f!=0)/若溫度為負(fù) count+;/每按一下 K2 溫度下調(diào) 1 if(a=1)if(count55) count=55;/當(dāng)溫度值小于-55 時(shí)不再下調(diào) if(a=2)if(count55) count
49、=55; . . . 24 / 33while(key2=0);/K2 松開按鍵時(shí)消抖keyscan_delay(10);if(key3=0) if(v2=0)beer=0;keyscan_delay(10);if(key3=0) /K3 按按鍵時(shí)消抖 beer=1; count-;/每按一下 K3 溫度為正時(shí)下調(diào) 1,為負(fù)時(shí)上調(diào) 1if(a=1)if(count0) count=0;/當(dāng)溫度值達(dá)到 0 時(shí)不再調(diào)if(a=2)if(count2)/K1 按下三次后退出調(diào)節(jié)模式 i=0;/進(jìn)入正常模式 TR1=0;/關(guān)定時(shí)器 1 k4=0;/在正常模式下選擇 K4 的消按鍵音功能 v=0;/在正
50、常模式下選擇 K2、K3 的查看上下限報(bào)警溫度功能 store_t();/存儲(chǔ)調(diào)整后的上下限報(bào)警溫度 . . . 25 / 33 switch(i)/顯示選擇 case 0:a=0;break;/a=0 選擇顯示測(cè)得的溫度 case 1:a=1;break; /a=1 選擇顯示上限溫度 case 2:a=2;break; /a=2 選擇顯示下限溫度 default:break; while(key1=0);/K1 松按鍵時(shí)消抖keyscan_delay(10);if(a=1&v=1)/a=1 選擇顯示上限溫度且 v=1 時(shí)選擇上下限溫度加功能led=0;max=temp_change(
51、max,f_max);/顯示上限溫度else if(a=2&v=1)/a=2 選擇顯示下限溫度且 v=1 時(shí)選擇上下限溫度減功能led=1;min=temp_change(min,f_min);else;if(k4=1)/k4=1 時(shí) K4 按鍵選擇正負(fù)溫度設(shè)定功能if(key4=0) if(v2=0)beer=0;keyscan_delay(5);if(key4=0) beer=1; if(a=1) if(max55) f_max=0;else f_max=f_max;/當(dāng)溫度大于 55 度時(shí),只能設(shè)定為正溫度 if(a=2) if(min55) f_max=0;else f_min
52、=f_min;/當(dāng)溫度大于 55 度時(shí),只能設(shè)定為正溫度 while(key4=0);keyscan_delay(10);if(v=0) /v=0 時(shí)選擇上下限查看功能if(key2=0) if(v2=0)beer=0;keyscan_delay(10);if(key2=0) . . . 26 / 33 beer=1; a=1;/選擇上限顯示 TR1=1;/開定時(shí)器 1 開始定時(shí)一分鐘左右 s1=1; /上限顯示不閃爍,顯示一分鐘左右自動(dòng)退出while(key2=0);keyscan_delay(10);if(key3=0) if(v2=0)beer=0;keyscan_delay(10);i
53、f(key3=0) beer=1; a=2;/選擇下限顯示 TR1=1;/開定時(shí)器 1 開始定時(shí) 1s s1=1; /下限顯示不閃爍,顯示 1s 自動(dòng)退出 while(key3=0);keyscan_delay(10);if(v1=1) /v1=1 時(shí)定時(shí) 1s 時(shí)間到自動(dòng)關(guān)閉報(bào)警上下限查看功能a=0;v1=0;TR1=0; /a=0 顯示實(shí)測(cè)溫度,v1 清零,關(guān)定時(shí)器 1if(k4=0) /k4=0 時(shí) K4 按鍵選擇消按鍵音的功能 if(key4=0)if(v2=0)beer=0;keyscan_delay(10);if(key4=0) beer=1; v2=v2;/為0時(shí)開按鍵音,為1時(shí)
54、關(guān)按鍵音 while(key4=0);keyscan_delay(10); #endif . . . 27 / 33/* 程序名; ds18b20 數(shù)碼管動(dòng)態(tài)顯示頭文件* 功 能: 通過定時(shí)器 0 延時(shí)是數(shù)碼管動(dòng)態(tài)顯示*/#include#ifndef _ds18b20_display_H_ /定義頭文件#define _ds18b20_display_H_#define uint unsigned int /變量類型宏定義,用 uint 表示無(wú)符號(hào)整形(16 位)#define uchar unsigned char /變量類型宏定義,用 uchar 表示無(wú)符號(hào)字符型(8 位)sbit we
55、i1=P24; /可位尋址變量定義,用 wei1 表示 P2.4 口sbit wei2=P25; /用 wei2 表示 P2.5 口sbit wei3=P26; /用 wei3 表示 P2.6 口sbit wei4=P27; /用 wei4 表示 P2.7 口uchar num=0; /定義 num 為全局無(wú)符號(hào)字符型變量,賦初值為uchar code temperature1= 0 xc0,0 xf9,0 xa4,0 xb0,0 x99, 0 x92,0 x82,0 xf8,0 x80,0 x90;/定義顯示碼表 09uchar code temperature2= 0 x40,0 x79,
56、0 x24,0 x30,0 x19, 0 x12,0 x02,0 x78,0 x00,0 x10;/帶小數(shù)點(diǎn)的 0.9.uchar code temperature3= 0 xff,0 x7f,0 xbf,0 x89,0 xc7;/依次是不顯示 . -/*延時(shí)子函數(shù)*/void display_delay(uint t) /延時(shí) 1ms 左右uint i,j;for(i=t;i0;i-) for(j=120;j0;j-);/*定時(shí)器 1 初始化函數(shù)*/void timer1_init(bit t) TMOD=0 x10;/設(shè)定定時(shí)器 1 工作在方式 1,最大定時(shí) 65.53ms TH0=0 x
57、3c;/定時(shí)器賦初值,定時(shí) 50ms TL0=0 xb0; EA=1;/開總中斷 ET1=1;/開定時(shí)器 1 中斷 TR1=t;/ 局部變量 t 為 1 啟動(dòng)定時(shí)器 1,為 0 關(guān)閉定時(shí)器 1/*定時(shí)器 1 中斷函數(shù)*/void timer1() interrupt 3 TH0=0 x3c;/重新賦初值,定時(shí) 50ms TL0=0 xb0;num+;/每進(jìn)入一次定時(shí)器中斷 num 加 1(每 50ms 加 1 一次) . . . 28 / 33 if(num20)/進(jìn)入 20 次中斷,定時(shí) 1s num=0;/num 歸 0,重新定開始定時(shí) 1s s1=0;/定時(shí) 1s 時(shí)間到時(shí)自動(dòng)關(guān)閉報(bào)警上
58、下限顯示功能 v1=1;/定時(shí) 1s 時(shí)間到時(shí)自動(dòng)關(guān)閉報(bào)警上下限查看功能 /*調(diào)整報(bào)警上下限顯示選擇函數(shù)*/void selsct_1(uchar f,uchar k) /消除百位的 0 顯示,與正負(fù)溫度的顯示選擇 if(f=0)/若為正溫度,百位為 0 則不顯示百位,不為 0 則顯示 if(k/100=0) P0=temperature30; else P0=temperature1k/100; if(f=1)/若為負(fù)溫度,若十位為 0,百位不顯示,否則百位顯示- if(k%100/10=0) P0=temperature30; else P0=temperature32; void sel
59、sct_2(bit f,uchar k)/消除十位的 0 顯示,與正負(fù)溫度的顯示選擇 if(f=0) /若為正溫度,百位十位均為 0 則不顯示十位,否則顯示十位 if(k/100=0)&(k%100/10=0) P0=temperature30; . . . 29 / 33 else P0=temperature1k%100/10; if(f=1)/若為負(fù)溫度,若十位為 0,十位不顯示,否則十位顯示- if(k%100/10=0) P0=temperature32; else P0=temperature1k%100/10; /*主顯示函數(shù)*/void display(uchar t,
60、uchar t_d) /用于實(shí)測(cè)溫度、上限溫度的顯示 uchar i; for(i=0;i4;i+) /依次從左至右選通數(shù)碼管顯示,實(shí)現(xiàn)動(dòng)態(tài)顯示 switch(i) case 0: /選通第一個(gè)數(shù)碼管 wei2=0; /關(guān)第二個(gè)數(shù)碼管 wei3=0; /關(guān)第三個(gè)數(shù)碼管 wei4=0; /關(guān)第四個(gè)數(shù)碼管 wei1=1; /開第一個(gè)數(shù)碼管 if(a=0)selsct_1(f,t); /若 a=0 則在第一個(gè)數(shù)碼管上顯示測(cè)量溫度的百位或- if(a=1) P0=temperature33; /若 a=1 則在第一個(gè)數(shù)碼管上顯示H if(a=2) P0=temperature34; /若 a=2 則在第一個(gè)數(shù)碼管上顯示L break; case 1:
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黑龍江省伊春市單招職業(yè)適應(yīng)性測(cè)試題庫(kù)及答案一套
- 2024年山鋼資本控股(深圳)有限公司社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- 2024年安徽省綜合交通研究院股份有限公司招聘9人筆試參考題庫(kù)附帶答案詳解
- 2024年安徽省某國(guó)企單位(通信行業(yè))施工類招聘4人筆試參考題庫(kù)附帶答案詳解
- Unit 1 Back to School Reading 教學(xué)設(shè)計(jì)-2024-2025學(xué)年高一英語(yǔ)譯林版(2020)必修第一冊(cè)
- 2024年六安霍邱縣金源生態(tài)環(huán)境產(chǎn)業(yè)投資開發(fā)有限公司招募2人筆試參考題庫(kù)附帶答案詳解
- 第12課 近代戰(zhàn)爭(zhēng)與西方文化的擴(kuò)張 教學(xué)設(shè)計(jì)-2023-2024學(xué)年統(tǒng)編版(2019)高中歷史選擇性必修三文化交流與傳播
- 2025年耐侯鋼合作協(xié)議書
- 2025年廣西生態(tài)工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)審定版
- 2024年12月內(nèi)蒙古鄂爾多斯市委社會(huì)工作部所屬事業(yè)單位引進(jìn)高層次人才1人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 土力學(xué)與地基基礎(chǔ)(課件)
- 股票入門-k線圖基礎(chǔ)知識(shí)
- 全國(guó)大全身份證前六位、區(qū)號(hào)、郵編-編碼
- 種植林業(yè)可行性研究報(bào)告
- 金和物業(yè)公司簡(jiǎn)介
- 廣東省五年一貫制考試英語(yǔ)真題
- 2023年中央廣播電視總臺(tái)校園招聘筆試參考題庫(kù)附帶答案詳解
- 項(xiàng)目部崗位廉潔風(fēng)險(xiǎn)情景教育案例
- 小學(xué)英語(yǔ)-What a dream教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 消防栓定期檢查記錄表
- 員工面試登記表通用模板
評(píng)論
0/150
提交評(píng)論