基于單片機的水浴溫度檢測系統(tǒng)的軟件設(shè)計
基于單片機的水浴溫度檢測系統(tǒng)的軟件設(shè)計,基于,單片機,水浴,溫度,檢測,系統(tǒng),軟件設(shè)計
畢業(yè)設(shè)計(論文)中英文文獻
題 目 S T C 8 9 C 5 2 芯 片 介 紹
專 業(yè) 名 稱 電 子 信 息 工 程
班 級 學(xué) 號 0 7 8 2 0 5 3 3 3
學(xué) 生 姓 名 羅 東 祥
指 導(dǎo) 教 師 葉 愛 華
2011 年 3 月 9 日
STC89C52芯片介紹
(譯文)特點:
*與MCS-51產(chǎn)品指令和引腳完全兼容
*8K字節(jié)可重擦寫Flash閃速存儲器
*壽命:1000次擦寫周期
*全靜態(tài)操作:0HZ-24MHZ
*三級加密程序存儲器
*256*8字節(jié)內(nèi)部RAM
*32個可編程I/O口線
*3個16位定時/計數(shù)器
*8個中斷源
*可編程串行UART通道
*低功耗空閑和掉電模式
功能特性描述:
STC89C52是一種低電壓,高性能CMOS8位單片機,片內(nèi)含8K BYTES的可反復(fù)擦寫的只讀程序存儲器(EPROM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),與標(biāo)準(zhǔn)的80C51和80C52產(chǎn)品的指令系統(tǒng)和引腳兼容,芯片擦寫允許程序存儲器在系統(tǒng)內(nèi)部或一個普通的非易失存儲器的程序員所改寫。片內(nèi)置通用8位中央處理器(CPU)和FLASH存儲單元,功能強大的STC89C52單片機適用于許多較為復(fù)雜控制應(yīng)用場合。
STC89C52提供以下標(biāo)準(zhǔn)功能:8K字節(jié)FLASH閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時時鐘電路:同時,STC89C52可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。
引腳功能說明
*VCC:電源電壓
*GND:地
*P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用。
在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。
在FLASH編程時,P0口接收指令字節(jié),而在程序校檢時,輸出指令字節(jié),校檢時,要求外接上拉電阻。
*P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉倒高電平,此時可作輸入口。作輸入口使用,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(I)。
與STC89C51不同之處是,P1.0和P1.1還可分別作為定時/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),參見表1。
FLASH編程和程序校檢期間,P1接收8位地址.
表0 P1.0和P1.1的第二功能
*P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路.對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻。某個引腳被外部信號拉低時會輸出一個電流(I)。
在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR指令)時,P2口輸出P2鎖存器的內(nèi)容。
FLASH編程或校檢時,P2亦接收高位地址和一些控制信號。
*P3口: P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流(I)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下圖所示:
P3口還接收一些用于FLASH閃速存儲器編程和程序校驗的控制信號。
*RST: 復(fù)位輸入.當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。
*ALE/[PSEN]: 注:[]表示反信號
當(dāng)外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存。
地址的底8位字節(jié).一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的,要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。
對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖([PROG])。
如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱抬高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。
*[PSEN]:程序存儲允許[PSEN]輸出是外部程序存儲器(地址為0000H-FFFFH),[EA]端必須保持低電平(接地)。須注意的是:如果加密位LBI被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。
如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。
FLASH存儲器編程時,該引腳加上+12V編程允許電源VPP,當(dāng)然這必須是該器件是使用12V的編程電壓VPP。
*XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。
*XTAL2:振蕩器反相放大器的輸出端.。
特殊功能寄存器:
表1 STC89C52 SFR 映像及復(fù)位狀態(tài)。
在STC89C52片內(nèi)存儲器中,80H-FFH共128單元為特殊功能寄存器(SFE),SFR的地址空間映像如表2所示:
并非所有的地址都被定義,從80H-FFH共128字節(jié)只有一部分被定義,還有一部分沒有定義。對沒有定義的單元讀寫將是無效的,讀出的數(shù)據(jù)將部確定,而寫入的數(shù)據(jù)也將丟失。
不應(yīng)將數(shù)據(jù)“1”寫入未定義的單元,由于這些單元在將來的產(chǎn)品中可能賦予新的功能,在這種情況下,復(fù)位后這些單元數(shù)值總是“0”。
STC89C52除了與STC89C51所有的定時/計數(shù)器0和定時/計數(shù)器1外,還增加了一個定時/計數(shù)器2。定時/計數(shù)器2的控制和狀態(tài)位位于T2CON(參見表2)T2MOD(參見表3),寄存器對(RCA02H,RCAP2L)是定時器2在16位捕獲方式或16位自動重裝載方式下的捕獲/自動重裝載寄存器。
表2 定時/計數(shù)器2控制寄存器T2CON
中斷寄存器
STC89C52有6個中斷源,2個中斷優(yōu)先級,IE寄存器控制各中斷位,IP寄存器中6個中斷源的每一個可定為2個優(yōu)先級。
數(shù)據(jù)寄存器
STC89C52有256個字節(jié)的內(nèi)部RAM,80H-FFH高128個字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM和特殊功能的地址是相同的,但物理上它們是分開的。
當(dāng)一條指令訪問7FH以上的內(nèi)部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)RAM還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。
例如,下面的直接尋址指令訪問特殊功能寄存器0A0H(即P2口)地址單元。
MOV 0A0H,#DATA
間接尋址指令訪問高128字節(jié)RAM,例如,下面的間接尋址指令中,R0的內(nèi)容為0A0H,則訪問數(shù)據(jù)字節(jié)地址為0A0H,而不是P2口(0A0H)。
MOV @R0,#DATA
堆棧操作也是間接尋址方式,所以高128位數(shù)據(jù)亦可作為堆棧區(qū)使用。
定時器0和定時器1:
STC89C52的定時器0和定時器1的工作方式與AT89C51相同。
定時器2:
定時器2是一個16位定時/計數(shù)器.它既可當(dāng)定時器使用,也可作為外部事件計數(shù)器使用,其工作方式由特殊功能寄存器T2CON(如表2)的C/T2位選擇。定時器2有三種工作方式:
捕獲方式:自動重裝載(向上或向下計數(shù))方式和波特率發(fā)生器方式,工作方式由T2CON的控制位來選擇,參見表3。
表3 定時器2工作方式
定時器2由兩個8位寄存器TH2和TL2組成,在定時器工作方式中,每個機器周期TL2寄存器的值加1,由于一個機器周期由12個振蕩時鐘構(gòu)成,因此計數(shù)速率為振蕩頻率的1/12。
在計數(shù)工作方式時,當(dāng)T2引腳上外部輸入信號產(chǎn)生由1至0的下降沿時,寄存器的值加1。在這種工作方式下,每個機器周期的5SP2期間,對外部輸入信號進行采樣。若在第一個機器周期中采到的值為1,而在下一個機器周期中采道德值為0,則在緊跟著的下一個周期的S3P1期間寄存器加1。由于識別1至0的跳變需要2個機器周期(24個振蕩周期),因此最高計數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個完整周期的時間,以保證輸入信號至少被采樣一次。
The introduction of STC89C52
Features
? Compatible with MCS-51? Products
? 8K Bytes of In-System Reprogrammable Flash Memory
? Endurance: 1,000 Write/Erase Cycles
? Fully Static Operation: 0 Hz to 24 MHz
? Three-level Program Memory Lock
? 256 x 8-bit Internal RAM
? 32 Programmable I/O Lines
? Three 16-bit Timer/Counters
? Eight Interrupt Sources
? Programmable Serial Channel
? Low-power Idle and Power-down Modes
Description
The STC89C52 is a low-power, high-performance CMOS 8-bit microcomputer with 8K bytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the industry-standard 80C51 and 80C52 instruction set and pin out. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel STC89C52 is a powerful microcomputer which provides a highly-flexible and cost-effective solution to many embedded control applications.
The STC89C52 provides the following standard features: 8K bytes of Flash, 256 bytes of RAM, 32 I/O lines, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full-duplex serial port, on-chip oscillator, and clock circuitry. In addition, the STC89C52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power-down mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next hardware reset.
Pin Description
VCC
Supply voltage.
GND
Ground.
Port 0
Port 0 is an 8-bit open drain bi-directional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as highimpedance inputs.
Port 0 can also be configured to be the multiplexed loworder address/data bus during accesses to external program and data memory. In this mode, P0 has internal pullups.
Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pullups are required during program verification.
Port 1
Port 1 is an 8-bit bi-directional I/O port with internal pullups.
The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs,
Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups.
In addition, P1.0 and P1.1 can be configured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX), respectively, as shown in the following table.
Port 1 also receives the low-order address bytes during
Flash programming and verification.
Port 2
Port 2 is an 8-bit bi-directional I/O port with internal pull ups. The Port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins, they are pulled high by the internal pull ups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal pull ups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @DPTR). In this application, Port 2 uses strong internal pull-ups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification.
Port 3
Port 3 is an 8-bit bi-directional I/O port with internal pull ups. The Port 3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins, they are pulled high by the internal pull ups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pull ups. Port 3 also serves the functions of various special features of the STC89C52, as shown in the following table. Port 3 also receives some control signals for Flash programming and verification.
RST
Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device.
ALE/PROG
Address Latch Enable is an output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming.
In normal operation, ALE is emitted at a constant rate of 1/6 the oscillator frequency and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external data memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller is in external execution mode.
PSEN
Program Store Enable is the read strobe to external program memory. When the STC89C52 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory.
EA/VPP
External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset. EA should be strapped to VCC for internal program
executions. This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming when 12-volt programming is selected.
XTAL1
Input to the inverting oscillator amplifier and input to the internal clock operating circuit.
XTAL2
Output from the inverting oscillator amplifier.
Table 1. STC89C52 SFR Map and Reset Values
Special Function Registers
A map of the on-chip memory area called the Special Function Register (SFR) space is shown in Table 1. Note that not all of the addresses are occupied, and unoccupied addresses may not be implemented on the chip. Read accesses to these addresses will in general return random data, and write accesses will have an indeterminate effect. User software should not write 1s to these unlisted locations, since they may be used in future products to invoke new features. In that case, the reset or inactive values of the new bits will always be 0.
Timer 2 Registers Control and status bits are contained in registers T2CON (shown in Table 2) and T2MOD (shown in Table 4) for Timer 2. The register pair (RCAP2H, RCAP2L) are the Capture/Reload registers for Timer 2 in 16-bit capture mode or 16-bit auto-reload mode.
Interrupt Registers The individual interrupt enable bits are in the IE register. Two priorities can be set for each of the six interrupt sources in the IP register.
Data Memory
The STC89C52 implements 256 bytes of on-chip RAM. The upper 128 bytes occupy a parallel address space to the Special Function Registers. That means the upper 128 bytes have the same addresses as the SFR space but are physically separate from SFR space. When an instruction accesses an internal location above address 7FH, the address mode used in the instruction specifies whether the CPU accesses the upper 128 bytes of RAM or the SFR space. Instructions that use direct addressing access SFR space. For example, the following direct addressing instruction accesses the SFR at location 0A0H (which is P2). MOV 0A0H, #data Instructions that use indirect addressing access the upper 128 bytes of RAM. For example, the following indirect addressing instruction, where R0 contains 0A0H, accessesthe data byte at address 0A0H, rather than P2 (whose address is 0A0H). MOV @R0, #data Note that stack operations are examples of indirect addressing, so the upper 128 bytes of data RAM are availableas stack space.
Timer 0 and 1
Timer 0 and Timer 1 in the STC89C52 operate the same way as Timer 0 and Timer 1 in the STC89C52.
Timer 2
Timer 2 is a 16-bit Timer/Counter that can operate as either a timer or an event counter. The type of operation is selected by bit C/T2 in the SFR T2CON (shown in Table 2). Timer 2 has three operating modes: capture, auto-reload (up or down counting), and baud rate generator. The modes are selected by bits in T2CON, as shown in Table 3. Timer 2 consists of two 8-bit registers, TH2 and TL2. In the
Timer function, the TL2 register is incremented every machine cycle. Since a machine cycle consists of 12 oscillator periods, the count rate is 1/12 of the oscillator frequency.
In the Counter function, the register is incremented in response to a 1-to-0 transition at its corresponding external input pin, T2. In this function, the external input is sampled during S5P2 of every machine cycle. When the samples show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3P1 of the cycle following the one in which the transition was detected. Since two machine cycles (24 oscillator periods) are required to recognize a 1-to-0 transition, the maximum count rate is 1/24 of the oscillator frequency. To ensure that a given level is sampled at least once before it changes, the level should be held for at least one full machine cycle.
南昌航空大學(xué)科技學(xué)院學(xué)士學(xué)位論文
基于單片機的水浴溫度檢測系統(tǒng)的軟件設(shè)計
1 前 言
當(dāng)今社會是一個高速發(fā)展的信息社會。單片機具有集成度高,通用性好,功能強,特別是體積小,重量輕,耗能低,可靠性高,抗干擾能力強和使用方便等獨特優(yōu)點,在數(shù)字、智能化方面有廣泛的用途。單片機主要應(yīng)用于各檢測領(lǐng)域,用來實現(xiàn)對信號的檢測、數(shù)據(jù)的采集以及對應(yīng)用對象的檢測。由于單片機擴展了各種檢測功能,如A/D、PWM、計數(shù)器的捕獲/比較邏輯、高速I/O口、WDT等,已突破了微型計算機傳統(tǒng)的內(nèi)容,所以對水浴溫度能更好的檢測。
溫度、壓力,流量和液位是四種最常見的過程變量。其中溫度是一個非常重要的過程變量,因為它直接影響燃燒、化學(xué)反應(yīng)、發(fā)酵、烘烤、煅燒、蒸餾、濃度、擠壓成形,結(jié)晶以及空氣流動等物理和化學(xué)過程。尤其本設(shè)計,溫度是用戶沐浴時最關(guān)心的,水浴溫度高了用戶受不了,低了容易感冒。溫度檢測不好就可能引起生產(chǎn)安全,產(chǎn)品質(zhì)量和產(chǎn)量等一系列問題。目前,在很多場合下,水浴溫度檢測已成為非常關(guān)鍵的因素,許多物理特性的變化都直接反映在溫度的升降上,因此對水浴溫度的監(jiān)測的意義越來越大。
隨著社會的發(fā)展,水浴溫度檢測系統(tǒng)對各設(shè)備的要求越來越高,水浴溫度檢測設(shè)備受到人們的重視,其可靠性、穩(wěn)定性受到用戶的關(guān)注。
水浴作為一種溫度校核設(shè)備,廣泛地應(yīng)用在溫度傳感器、溫度測量器具的檢測及校核中,是化工、航天、生產(chǎn)等領(lǐng)域中有關(guān)計量單位的主要設(shè)備。國產(chǎn)的水浴一般采用傳統(tǒng)的PID 檢測方法,存在以下主要缺陷:一是達到設(shè)定溫度并且進入穩(wěn)定狀態(tài)所需的時間長,一般情況下,從開機到進入穩(wěn)定狀態(tài)需要1-2小時,環(huán)境條件有變化時過渡過程時間會更長。造成了時間和能源的浪費,降低了工作效率。二是檢測精度低,往往不能滿足高精度檢測的要求。三是由于沒有制冷設(shè)備,所以不能進行0℃至室溫范圍內(nèi)的溫度校核。目前國外的同類設(shè)備,性能較好,但價格十分昂貴,不能滿足廣大用戶的需求。針對上述存在的問題,應(yīng)該采用STC89C52單片機作為核心部件,實現(xiàn)對水浴溫度的檢測。
2 系統(tǒng)的組成及功能
§2.1 系統(tǒng)的組成
本系統(tǒng)是基于單片機的水浴溫度檢測系統(tǒng)的研究,主要實現(xiàn)的系統(tǒng)功能和技術(shù)指標(biāo)有:能實時檢測顯示水浴溫度;測溫范圍25℃~100℃,精度為 ±1℃;檢測檢測的同時能實現(xiàn)自動聲光報警。
本次設(shè)計的水浴溫度檢測系統(tǒng)由單片機檢測模塊、溫度采集模塊、溫度檢測模塊、聲光報警模塊以及鍵盤顯示模塊構(gòu)成,其總的水浴溫度檢測系統(tǒng)原理圖如圖2.1所示。
§2.2 系統(tǒng)的功能
本系統(tǒng)的主要功能是通過單片機檢測實現(xiàn)了溫度的顯示,從而完成了對溫度的采集,實現(xiàn)了水浴溫度的檢測。各部分功能如下:
1)單片機檢測電路:是整個系統(tǒng)的核心部分。通過中央處理器CPU及本身接口,能夠?qū)崿F(xiàn)對外部數(shù)據(jù)的讀出、處理、寫入。
2)溫度采集電路:利用ICL7650把鉑熱電阻的電壓進行放大,然后通過AD0804進行采樣,再采集到的數(shù)據(jù)進行處理。
3)溫度檢測電路:主要是由升溫裝置、降溫裝置,通過單片機檢測構(gòu)成。
4)鍵盤顯示電路:由HD7279來驅(qū)動8個數(shù)碼管和16個鍵盤。
5)聲光報警電路:由發(fā)光二極管和蜂鳴器來完成聲光報警的。
圖2.1 水浴溫度檢測系統(tǒng)原理圖
3 硬件電路設(shè)計
本次研究的是一種以STC89C52芯片為核心的水浴溫度檢測裝置,該裝置不但能對水浴溫度進行測量,根據(jù)其溫度值與設(shè)定值進行對比給出調(diào)節(jié)量,實現(xiàn)水浴溫度檢測的目的,而且能夠?qū)λ囟冗M行監(jiān)控,水浴溫度過高時就會聲光報警。
在研究過程中采用STC89C52單片機,完成水浴溫度檢測系統(tǒng)的檢測,實現(xiàn)設(shè)定溫度的上限值,下限值,并對水浴溫度進行實時采集。測溫系統(tǒng)中鉑熱電阻輸出的電壓信號由運放器ICL7650進行放大。本系統(tǒng)借助于電橋電路、放大電路、A/D轉(zhuǎn)換電路、單片機。在溫度檢測中,過程的實時參數(shù)由電橋電路、ILC7650運算放大器和A/D轉(zhuǎn)換器實時采集,并由微型計算機記錄在內(nèi)存單元,然后再通過D/A轉(zhuǎn)換器輸出檢測信號,檢測執(zhí)行機構(gòu)動作,進行調(diào)節(jié)和檢測。并通過7279對溫度值進行設(shè)定和LED顯示,這樣能更清楚的看到當(dāng)水浴溫度發(fā)生的變化。
硬件部分主要包括單片機檢測模塊、溫度采集模塊、溫度檢測模塊、聲光報警模塊以及鍵盤顯示模塊。
§3.1 單片機模塊
單片機模塊是以STC89C52為核心的水浴溫度檢測裝置,STC89C52單片機屬8051系列的FLASH型單片機。內(nèi)有面向檢測的8位CPU;4K字節(jié)的ROM程序存儲器;128字節(jié)的內(nèi)部RAM數(shù)據(jù)存儲器;2個16位定時器/計數(shù)器;1個全雙工的異步串行口;5個中斷源、2個中斷優(yōu)先級的中斷檢測器;時鐘電路,時鐘頻率在1.2MHz~12MHz。STC89C52單片機引腳圖如圖3.1所示。
圖3.1 STC89C52引腳圖
§3.2 溫度采集模塊
溫度采集電路的工作原理:由鉑熱電阻組成的電橋輸出的較小的電壓信號經(jīng)過ICL7650芯片進行放大后傳到AD0804進行模數(shù)轉(zhuǎn)換,最終傳入到單片機。其中ICL7650是高精度運算放大器,它具有輸入偏置電流小、失調(diào)小、增益高、共模抑制能力強、響應(yīng)快、漂移低、性能穩(wěn)定及價格低廉等優(yōu)點。
溫度采集電路的原理圖如圖3.2所示。
圖3.2 溫度采集電路原理圖
§3.3 溫度檢測模塊
系統(tǒng)所要檢測的電路,主要是當(dāng)采集的水溫不等于設(shè)定的溫度時,單片機檢測被控對象去執(zhí)行相應(yīng)的處理。此部分電路主要由STC89C52單片機來檢測加熱水閥和加冷水閥。
系統(tǒng)用單片機STC89C52的P1.6和P1.7做為檢測口,P1.6檢測加冷水的加水電磁閥,P1.7檢測加熱水的加水電磁閥。采集的溫度與設(shè)定的溫度相比較,當(dāng)采溫大于設(shè)定溫度時,這時通過軟件編程來檢測P1.6,給予其低電平,經(jīng)反向驅(qū)動后光敏二極管截止,三極管導(dǎo)通繼電器吸合,繼電器接通降溫設(shè)備,將溫度檢測在規(guī)定的范圍內(nèi),達到了檢測加冷水閥的目的。同理,P1.7是檢測加熱水的加水電磁閥的,不再熬述。本系統(tǒng)的溫度檢測模塊電路如圖3.3所示。
圖3.3 溫度檢測電路原理圖
§3.4 鍵盤顯示模塊
系統(tǒng)需要將用戶想要達到的溫度和采樣的溫度同時顯示出來,通過分析可由8個數(shù)碼管來完成。前四個數(shù)碼管是用來顯示采集的溫度,其中第三個顯示個位而且為小數(shù)點位,后四個數(shù)碼管是用來顯示設(shè)定的溫度。另外還要設(shè)定6個按鍵,其具體功能如下:KEY1、KEY2:設(shè)定 ;KEY3: 確認;KEY4:啟動;KEY5:清除;KEY6:結(jié)束。當(dāng)按下設(shè)定鍵時,人工可以在默認的25℃(軟件編程一上電就顯示25℃)基礎(chǔ)上設(shè)定溫度值,KEY1為加1鍵,KEY2為減1鍵;當(dāng)按下確認鍵時,設(shè)定溫度可以保存(在斷電后仍將其設(shè)定的值存在存貯器中不會丟失);當(dāng)按下啟動鍵時,AD0804開始進行采樣;當(dāng)按下清除鍵時,會將設(shè)定的溫度值清除掉,以便重新設(shè)定溫度值;當(dāng)按下結(jié)束鍵時,整個系統(tǒng)全部停止工作。本設(shè)計所需的數(shù)碼管和鍵盤不多,這些功能的實現(xiàn)完全可由HD7279來驅(qū)動完成。
HD7279是一片具有串行接口的,可同時驅(qū)動8個共陰極的數(shù)碼管(或64只獨立的LED)智能顯示驅(qū)動芯片,該芯片還可以同時連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能。HD7279具有片選信號,可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。如圖3.4所示。
圖3.4 鍵盤顯示電路
§3.5 聲光報警模塊
根據(jù)系統(tǒng)所要達到的要求,在檢測溫度的同時,當(dāng)溫度超標(biāo)時要警報。經(jīng)過從硬件電路的總體來考慮,采用一個7407來驅(qū)動一個發(fā)光二極管和蜂鳴器實現(xiàn),以減少硬件電路。目的主要是靜態(tài)顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度大,系統(tǒng)在運行過程中,僅僅在需要更新顯示內(nèi)容時,CPU才執(zhí)行一次顯示更新子程序,這樣大大節(jié)省了CPU的時間,提高了CPU的工作效率。聲光報警模擬電路如圖3.5所示。
圖3.5 聲光報警模擬電路
用P1口來檢測這部分電路,當(dāng)選中的P1口為低電平時,經(jīng)過7407正向驅(qū)動,發(fā)光二極管正向?qū)?,相?yīng)的二極管點亮,實現(xiàn)了光報警;同時蜂鳴器這一路導(dǎo)通,蜂鳴器中有電流流過就會發(fā)出蜂鳴聲,實現(xiàn)了聲音報警。
4 系統(tǒng)軟件設(shè)計
§4.1 軟件系統(tǒng)概述
整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個檢測系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實質(zhì)性的功能如測量、顯示等。每一個執(zhí)行軟件也就是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。
本課題是基于STC89C52單片機為核心的水浴溫度檢測系統(tǒng),采用溫度采集。對于溫度的測量,顯示電路都已經(jīng)是很成熟的技術(shù)。在設(shè)計時,有以下需要加以說明:
(1)入口地址0000H,顯緩區(qū)地址50H~54H。
(2)內(nèi)存單元定義,如表4.1所示:
表4.1 內(nèi)存單元分配表
地址
內(nèi)存單元功能說明
50H
存放顯示溫度位(個位)
51H
存放顯示溫度位(十位)
52H
存放顯示溫度位(百位)
53H
存放顯示存儲單元
54H
存放顯示存儲單元
58H
鍵值暫存單元
5AH
存放數(shù)字濾波后的存儲單元
40H
存放采樣數(shù)據(jù)首地
41H
十進制轉(zhuǎn)換的百位
42H
十進制轉(zhuǎn)換的十位
43H
十進制轉(zhuǎn)換的個位
34H
存放溫度限的單元
03H
按鍵按下標(biāo)志位
§4.2 系統(tǒng)軟件設(shè)計
系統(tǒng)主要負責(zé)對水浴溫度的采集和顯示,并把所測得的溫度數(shù)據(jù)通過HD7279驅(qū)動數(shù)碼管顯示。在具體設(shè)計中,主要實現(xiàn)溫度的顯示、溫度的采集和溫度的檢測。因此程序應(yīng)由主程序、顯示子程序、溫度采集子程序和溫度檢測子程序組成。各個程序完成各自的功能。
§4.2.1 主程序流程圖
主程序作為軟件設(shè)計的核心,其主要作用是能及時的響應(yīng)來自系統(tǒng)或儀器內(nèi)部的各種服務(wù)請求,有效的管理自身軟硬件及人---機聯(lián)系設(shè)備等。在編主程序時,考慮到系統(tǒng)功能中有設(shè)置溫度(默認值為25℃存在34單元中)和確認設(shè)置值的需要,所以主程序中應(yīng)有鍵掃部分,當(dāng)有鍵按下時,先調(diào)讀鍵子程序,再根據(jù)不同的鍵值,去執(zhí)行各功能模塊,實現(xiàn)系統(tǒng)功能和要求。主程序入口地址為0000H,它的主要功能是設(shè)置溫度和檢測水溫:設(shè)置溫度有兩個鍵,對34H單元加一的溫度加1鍵(鍵值為00H),還有對34H單元減一的溫度減1鍵(鍵值01H),一個水溫檢測鍵也即確認鍵(鍵值為02H)。
主程序主要的功能是完成溫度采集和顯示。把鉑熱電阻組成的電橋采集到的電壓信號通過ICL7650放大傳到ADC0804進行模數(shù)轉(zhuǎn)換,把數(shù)字化的溫度在數(shù)碼管上顯示,并與設(shè)定的溫度值比較,從而決定升溫或降溫。
水浴溫度檢測系統(tǒng)的主程序流程圖如圖4.1所示。
圖4.1 主程序流程圖
§4.2.2 溫度采樣流程圖
在設(shè)計采樣程序時,考慮到系統(tǒng)對精度和穩(wěn)定性的要求,所以要對采樣值進行濾波處理,本設(shè)計采用中位值平均濾波,先連續(xù)采樣十次,去掉最大值和最小值,然后求平均值,這個濾波值就是采樣值。R6為采樣次數(shù)計數(shù)器,在啟動采樣后,延時100 us。再存放到十個固定40H-4A單元中,再加以濾波。ADC0804的入口地址是7FFFH。溫度采樣流程圖如圖4.2所示。
圖4.2 溫度采樣流程圖
§4.2.3 A/D轉(zhuǎn)換子程序流程圖
ADC0804芯片是一塊將模擬量轉(zhuǎn)換為數(shù)字量的芯片,它的CS引腳接到單片機STC89C52發(fā)過來的“0”信號后開始工作,A/D轉(zhuǎn)換后把數(shù)據(jù)進行使十進制調(diào)整后送到單片機的存儲單元進行顯示。
A/D轉(zhuǎn)換子程序流程圖如圖4.3所示。
圖4.3 A/D轉(zhuǎn)換子程序流程圖
§4.2.4 鍵盤顯示流程圖
由于顯示的數(shù)碼管和7279相連,所以在設(shè)程序時,還要考慮到7279的功能,在本系統(tǒng)中,有采樣溫度的實時顯示,采樣值存在5AH單元中,還有設(shè)置溫度的鍵盤顯示 ,設(shè)置值存在34H單元中,顯緩區(qū)為50H-56H。鍵盤顯示流程圖如圖4.4所示。
圖4.4 鍵盤顯示流程圖
其中顯示子程序的編寫是由于數(shù)碼管的顯示要經(jīng)過HD7279的驅(qū)動,從而實現(xiàn)對溫度數(shù)據(jù)的顯示。
顯示子程序流程圖如圖4.5所示。
Y
N
返回
關(guān)閉HD7279
R5-1=0?
延時8us
查表
顯示的位數(shù)—>R5
調(diào)用發(fā)送數(shù)據(jù)子程序
設(shè)置查表參數(shù)
延時8us
調(diào)用發(fā)送數(shù)據(jù)子程序
延時25us
選中HD7279
開始
圖4.5 顯示子程序流程圖
§4.2.5 溫度檢測子程序流程圖
入口
讀入設(shè)定值
設(shè)置值=采樣值?
設(shè)置值>采樣值?
升溫
返回
溫度檢測子程序主要是根據(jù)設(shè)定溫度與當(dāng)前環(huán)境溫度的差值來檢測升溫裝置或降溫裝置的運行。若當(dāng)前溫度高于設(shè)定溫度且差值大于設(shè)定的溫控范圍,則啟動降溫裝置;若當(dāng)前溫度低于設(shè)定溫度且差值大于設(shè)定的溫控范圍,則啟動升溫裝置;在當(dāng)前溫度達到設(shè)定溫度后,關(guān)閉升溫裝置或降溫裝置。圖4.6為溫度檢測子程序流程圖。
Y
N
N
Y
降溫
圖4.6 溫度檢測子程序流程圖
5 軟硬件調(diào)試
§5.1 硬件調(diào)試
在完成了本設(shè)計的硬件組裝和軟件設(shè)計之后,便進入系統(tǒng)的調(diào)試階段。這個階段的任務(wù)是排除設(shè)計中的硬件故障和糾正軟件設(shè)計的錯誤,并解決硬件和軟件之間的不協(xié)調(diào)問題。本次調(diào)試分為兩個部分:硬件調(diào)試和軟件調(diào)試。
在硬件上電之前,先用萬用表等工具,根據(jù)硬件邏輯設(shè)計詳細檢查硬件電路的正確性。最重要的是注意電源系統(tǒng)檢查,防止電源短路和極性錯誤,并重點檢查了系統(tǒng)總線是否存在相互之間短路或與其他信號線短路。檢查完硬件電路連接準(zhǔn)確無誤之后,結(jié)合軟件進行調(diào)試。開始將整個調(diào)試過程分成幾個小部分,分別進行調(diào)試。本次調(diào)試分成以下幾個部分調(diào)試:單片機系統(tǒng)調(diào)試、A/D采樣電路調(diào)試、鍵盤顯示電路調(diào)試。
§5.1.1 單片機系統(tǒng)調(diào)試
最小系統(tǒng)板是系統(tǒng)的核心,必須保證它的正常工作。首先得保證線路連接正確和導(dǎo)通,有時系統(tǒng)板工作不正常往往是這方面的原因;另外STC89C52的P口必須得正常工作,其調(diào)試方法是:將STC89C52的P口與調(diào)試好的顯示電路連接起來,再利用仿真器編寫簡單的程序,比如說讓P1口的某一位輸出方波,然后用示波器去檢查波形是否正確;或者讓P1口的某一位置高電平/低電平,然后用萬用表去檢查引腳上的電平。還可以測試外部中斷口和內(nèi)部定時器的工作情況,測試方法是:在P口正常工作的情況下,可以通過改變外部中斷和定時中斷到來前后P口的電平來檢測外部中斷和定時中斷的工作情況。
§5.1.2 A/D采樣電路調(diào)試
A/D采樣部分,主要是看基準(zhǔn)電壓和選通信號線,讀寫信號線是否正常工作。也可以通過調(diào)節(jié)其輸入的變化,用萬用表測量其最低位,看看表的值是否會有高低電平的交替變化,如果有的話,表示ADC是正常工作的。通常情況下,ADC0804的基準(zhǔn)電壓為+5V。經(jīng)過用軟件編程來檢測P2.7來選通片選信號,給它一低電平或高電平,如果用萬用表測得ADC0804的1腳是低電平或高電平,說明這塊芯片是好的。
§5.1.3 鍵盤顯示電路調(diào)試
顯示部分的調(diào)試相對于其他電路的調(diào)試要簡單一些,首先要檢查數(shù)碼管是否能被點亮,上電前,用萬用表測量,簡單的方法:把萬用表的紅表筆接到數(shù)碼管的3或8腳上(系統(tǒng)采用共陰極數(shù)碼管),黑表筆接到其余的腳,如果每一段都被點亮,則說明數(shù)碼管功能正常。
再編寫一個小程序使每個數(shù)碼管都顯示“8”,如果每個數(shù)碼管的各段都點亮后,證明顯示電路工作正常。源程序如下:
org 0000h
loop:
mov po,#0ffh; 關(guān)顯示
mov p1,#offh; 關(guān)顯示
clr p0.2; 選擇第一個數(shù)碼管
mov p1,7fh; 顯示“8”
lcall delay; 調(diào)延時子程序
mov po,#0ffh
mov p1,#offh
clr p0.1
mov p1,7fh
lcall delay
mov po,#0ffh
mov p1,#offh
clr p0.0
mov p1,7fh
lcall delay
ajmp loop
delay: mov r1,#250;延時子程序
L1: djnz r1,L1
Ret
§5.2 軟件調(diào)試
在軟件調(diào)試過程中,首先要有清晰的軟件結(jié)構(gòu)流程圖,采用子程序調(diào)用的形式,分塊調(diào)試,如調(diào)試顯示子程序,鍵掃子程序,求鍵號子程序,數(shù)字鍵處理,功能鍵處理,狀態(tài)顯示子程序,清狀態(tài)顯示子程序,A/D采樣子程序。模塊化設(shè)計有利于程序的調(diào)試和擴展。硬件電路檢查無誤后,就開始對軟件進行調(diào)試,軟件調(diào)試是按照子程序及主程序的順序進行的。
§5.3 聯(lián)合調(diào)試
此過程是建立在硬件與軟件單獨調(diào)試成功基礎(chǔ)上的,如硬件調(diào)試應(yīng)達到的要求:鍵盤顯示電路能夠正確顯示初始話設(shè)定值以及個按鍵功能實現(xiàn)。在以上的前提下,將軟硬件結(jié)合調(diào)試,首先將采溫,鍵盤顯示程序結(jié)合在一起,通過傳輸線傳送至單片機系統(tǒng),硬件電路先是將溫度采集電路與單片機以及鍵盤顯示電路聯(lián)合在一起進行采溫與顯示調(diào)試,剛開始由于軟件設(shè)置的邏輯與地址跟硬件電路不相符,結(jié)果顯而易見。而后根據(jù)硬件電路的連接,對軟件進行更改主要是對地址與邏輯上的修正。再次結(jié)合調(diào)試,功能鍵的實現(xiàn)仍有問題,再更改程序直到所有功能的以實現(xiàn)。接著進行單片機系統(tǒng)的調(diào)試。對此,采用了分步調(diào)試:第一步,先匯編程序使系統(tǒng)能有數(shù)據(jù)傳送,并且使得單片機能夠得到所設(shè)定的初值,也就是要求能夠通過按鍵來接收數(shù)據(jù);第二步,再進行命令發(fā)送調(diào)試;第三步,再一步一步的實現(xiàn)各種要求以及功能。
6 結(jié) 論
本系統(tǒng)實現(xiàn)了利用鍵盤設(shè)定溫度值,能實時顯示采集溫度和設(shè)定溫度,測量溫度過高時還能控制加冷水閥,測量溫度過低時控制加熱水閥,同時還可以進行報警,完成了全部任務(wù),實現(xiàn)了所要實現(xiàn)的全部功能。不過在設(shè)計中還有一些不完善的地方,有待于今后來改進該系統(tǒng)具有測量精度高、硬件電路簡單、可測試多點溫濕度等特點,可以應(yīng)用在大型工業(yè)及民用常溫多點監(jiān)測場合。如塑料(蔬菜)大棚、恒溫廠房、大中型糧倉、庫房等場合。
通過近四個月的努力, 圓滿完成了從方案的構(gòu)思到調(diào)試以及各個子程序的調(diào)試,再到整體軟硬件的調(diào)試的各個過程。通過本次對水浴溫度檢測系統(tǒng)的軟件設(shè)計,掌握了水浴溫度檢測系統(tǒng)的工作原理,了解各個模塊的功能,同時也學(xué)到了很多東西,歸納為以下幾點:
1、在進行方案設(shè)計前,應(yīng)對相關(guān)原理有著相當(dāng)?shù)睦斫夂驼莆眨瑫r要查閱相關(guān)資料,以選擇出最佳方案。另一方面也要注意到與硬件電路的密切結(jié)合。
2、各部分模塊在編譯通過后,便進入了調(diào)試。在調(diào)試中,應(yīng)注意到各方面的問題。語法錯誤相對易于檢查和修改。如果是邏輯上的錯誤,則需要相當(dāng)仔細的分析和調(diào)試。
3、本次畢業(yè)設(shè)計從原理圖設(shè)計到實踐的過程是從理論知識到工程實踐的過程,在這個過程中鞏固了基礎(chǔ)知識,并培養(yǎng)創(chuàng)新意識,發(fā)現(xiàn)配合在設(shè)計中起著非常重要的作用。一個設(shè)計產(chǎn)品的最終實現(xiàn),需要有效的配合。
參 考 文 獻
[1].A.P.Goutzoulis and D.R.Pape, Design and Fabrication of Acousto-optic devices, Marcel Dekker, New York, 1994
[2].Distri buted Control Modules Databook Intel Corporation,1988
[3].RS-422 and RS-485 Application Note , B&Belectronic –Revised October 1997
[4].王福瑞.單片微機測控系統(tǒng)設(shè)計大全.北京:北京航空航天大學(xué)出,1998
[5].周月霞,孫傳友.DS18B20 硬件連接及軟件編程[J]. 傳感器世界,2001.12
[6].涂時亮編.單片機微機檢測技術(shù).上海:復(fù)旦大學(xué)出版社,1994
[7].馬宏杰. 微機通信原理與實用技術(shù).北京:清華大學(xué)出版社,1994
[8].張友德、趙志英、涂時亮.單片微型機原理、應(yīng)用與實驗. 上海:復(fù)旦大學(xué)出版社,2000
[9].楊光友等.單片微型計算機原理及接口技術(shù).北京:中國水利水電出版社,2002
[10].羅文廣、蘭紅莉、陸子杰.基于單總線的多點溫度測量技術(shù)[J].傳感器技術(shù),2002.21(3):47-50
[11].王震、王敏亮、魏長軍.RS-232/485串行通訊轉(zhuǎn)換器電路.電子世界,2003.1
[12].余祖俊.微機檢測與檢測應(yīng)用系統(tǒng)設(shè)計.北京:北京交通大學(xué)出版社,2001
[13].關(guān)振海、孫繼紅.傳感器及其接口技術(shù).北京:中國石化出版社,1998
[14].李朝青.單片機原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,1999
[15].陳有卿、謝剛等.新穎電子模塊應(yīng)用手冊.北京:機械工業(yè)出版社,2000
[16].張友德、趙志英.單片微型機原理、應(yīng)用與實驗.上海:復(fù)旦大學(xué)出版社,1999
致 謝
在本次畢業(yè)設(shè)計中,特別感謝葉愛華老師的指導(dǎo),她在百忙之中抽出寶貴的休息時間,仔細耐心為學(xué)生們指導(dǎo)。設(shè)計過程中,指導(dǎo)老師幫忙分析遇到的種種困難。一直支持,鼓勵學(xué)生要有解決問題的信心,使設(shè)計得以順利的完成。在開發(fā)的同時,和同學(xué)們之間的相互探討也使本人獲益匪淺。在此,對葉老師表示由衷的感謝!
還要感謝電子信息工程學(xué)院的其他老師。感謝老師們?yōu)閷W(xué)生提供了畢設(shè)的場地及必要的元器件和設(shè)備,給了本人在大學(xué)畢業(yè)之前的一次很好的鍛煉機會。在此還要感謝在設(shè)計中幫助過同學(xué),尤其是同組搭檔同學(xué)。畢設(shè)中,兩人密切合作,共同參與了兩部分的設(shè)計和調(diào)試。在此對同組搭檔給予的幫助表示衷心的感謝!
電子信息技術(shù)日新月異地飛速發(fā)展,人們總是處在不斷學(xué)習(xí)階段,再加上水平有限,所以本次設(shè)計肯定存在許多不盡如人意的地方,歡迎廣大老師和同學(xué)批評指正。
最后,要感謝電子信息工程學(xué)院所有老師,老師們的精心栽培為學(xué)生以后的學(xué)習(xí)工作打下了堅實的基礎(chǔ)。
附錄A: 電路原理圖
附錄B: 最小系統(tǒng)原理圖
附錄C: 程序清單
ORG 0000H ;入口地址
AJMP MAIN ;跳轉(zhuǎn)到主程序
ORG 001BH ;定事器T1中斷源服務(wù)程序入口地址
AJMP INT_T1
INT_T1:PUSH PSW ;中斷模塊
PUSH ACC ;現(xiàn)場保護
PUSH DPL
PUSH DPH
PUSH B
MOV PSW,#08H
MOV TH1,#80H ;定時器初始化
MOV TL1,#00H
MOV IE,#80H ;關(guān)中斷
LACALL CAIYANG ;調(diào)用采樣子程序
LACALL MA ;調(diào)用濾波子程序
MOV A,5A ;溫度值送累加器A
CJNE A,64H,AAA2 ;超過100度報警
CLR P1.4
POP B ;恢復(fù)現(xiàn)場
POP DPH
POP DPL
POP ACC
POP PSW
RETI ;中斷返回
CAIYANG:
MOV R0,#40H ;賦數(shù)據(jù)顯緩區(qū)首址
MOV R6,#0AH ;采集十次
CAI: MOV DPTR,#7FFFH ;選通0804
MOVX @DPTR,A ;啟動0804
MOV R2,#100 ;延時200us
HERE: DJNZ R2,HERE
MOVX A,@DPTR
MOV @R0,A ;采樣值送數(shù)據(jù)顯緩區(qū)
INC R0 ;數(shù)據(jù)顯緩區(qū)加一
DJNZ R6,CAI ;減一不會零轉(zhuǎn)
RET
MA: LCALL FMAX ;求最大值
LCALL FMIN ;求最小值
LCALL AVG ;求平均值
RET
QR: MOV A,34H ;檢測模塊
CJNE A,5AH,ZSS5 ;溫度相等停止加熱
SETB P1.4
CLR P1.5
SETB P1.6
SETB P1.7
RET
ZSS5: SUBB A,5AH
JC ZSS ;小于采樣值加熱水
CLR P1.5
SETB P1.6
CLR P1.4
CLR P1.7
RET
ZSS: CLR P1.5 ;大于采樣值加冷水
CLR P1.4
CLR P1.6
SETB P1.7
RET
FMAX: MOV R7,#09H ;求最大值
MOV R0,#50H
LDP: MOV A,@R0
INC R0
CLR C
SUBB A,@R0
JC DONE
MOV A,@R0
DEC R0
XCH A,@R0
INC R0
MOV @R0,A
DONE: DJNZ R7,LDP
RET
FMIN: MOV R7,#08H ;求最小值
MOV R0,#50H
LDP1:MOV A,@R0
INC R0
CLR C
SUBB A,@R0
JNC DONE1
MOV A,@R0
DEC R0
XCH A,@R0
INC R0
MOV @R0,A
DONE1:DJNZ R7,LDP1
RET
AVG: MOV R7,#08H ;求平均值
MOV R0,#50H
MOV R3,#00H
MOV R4,#00H
LDP2: MOV A,@R0
ADD A,R4
MOV R4,A
MOV A,R3
ADDC A,#00H
MOV R3,A
INC R0
DJNZ R7,LDP2
MOV R7,#03H
LDP4: CLR C
MOV A,R3
RRC A
MOV R3,A
MOV A,R4
RRC A
MOV R4,A
DJNZ R7,LDP4
MOV 5AH,R4
RET
DISP: ;顯示子程序
CLR P1.0
MOV R6,#0CH
LP2: DJNZ R6,LP2
MOV A,R1
ACALL STFS
MOV R6,#04H
LP3: DJNZ R6,LP3
MOV A,@R0
ADD A,#0DH
MOVC A,@A+PC
ACALL STFS
MOV R6,#02H
LP4: DJNZ R6,LP4
SETB P1.0
INC R0
INC R1
DJNZ R5,DISP
RET
TAB: DB 7EH,30H,6DH,79H,33H,5BH,5FH,70H,7FH,7BH
STFS:MOV R7,#08H ;發(fā)送子程序
LP5:RLC A
MOV P1.2,C
SETB P1.1
MOV R6,#04H
LP6:DJNZ R6,LP6
CLR P1.1
MOV R6,#04H
LP7:DJNZ R6,LP7
DJNZ R7,LP5
RET
STJS:MOV R7,#08H
KKK1:SETB P1.1 ;接收子程序
SETB P1.2
MOV R6,#04H
KKK2:DJNZ R6,KKK2
MOV C,P1.2
RLC A
CLR P1.1
MOV R6,#02H
KKK3:DJNZ R6,KKK3
DJNZ R7,KKK1
RET
KEY1:CLR P1.0 ;鍵掃子程序
MOV R6,#18H
ZZZ1:DJNZ R6,ZZZ1
MOV A,#15H
ACALL STFS
MOV R6,#0CH
ZZZ2:DJNZ R6,ZZZ2
ACALL STJS
MOV B,A
MOV 58H,A
SETB P1.0
RET
SJZH: ;十進制轉(zhuǎn)換子程序
MOV A,@R0
MOV R0,#43H
MOV R7,#03H
LP: MOV B,#0AH
DIV AB
XCH A,B
MOV @R0,A
XCH A,B
DEC R0
DJNZ R7,LP
RET
DELAY1:MOV R7,#02H ;延時子程序
DEL4: MOV R6,#0C8H
DEL5: MOV R5,#7DH
DEL6: DJNZ R5,DEL6
DJNZ R6,DEL5
DJNZ R7,DEL4
RET
MAIN: MOV SP,#0E8H ;主程序
ANL TMOD,#0FH
ORL TMOD,#10H
MOV TH1,#80H
MOV TL1,#00H
MOV IE,#8CH
MOV 34H,#16H ;設(shè)置默認值25度
MOV 50H,#00H ;顯緩區(qū)清零
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
MOV 54H,#00H
MOV 55H,#00H
CLR P1.5 ;一直加熱
SETB P1.3
ZHH2: MOV R0,#5AH
LCALL SJZH ;調(diào)十進制轉(zhuǎn)換程序
MOV R1,#90H ;送顯初始化
MOV R0,#50H
MOV R5,#03H
ACALL DISP ;調(diào)用顯示子程序
ACALL DELAY1 ;調(diào)用延時子程序
MOV C,P1.3 ;判斷有無按鍵
JC ZHH2
ACALL KEY1 ;鍵掃
MOV A,58H
CJNE A,#00H,AAA ;是不是加一鍵
NOP
NOP
INC 34H ;溫度加一
MOV R0,#34H
ACALL SJZH ;調(diào)用十進制轉(zhuǎn)換程序
MOV R1,#90H
MOV R0,#53H
MOV R5,#02H
ACALL DISP ;調(diào)顯示
ACALL DELAY1 ;調(diào)延時
SJMP TZ
AAA: CJNE A,#01H,AAA1 ;是不是減一鍵
NOP
NOP
DEC 34H
MOV R0,#34H ;溫度減一
ACALL SJZH ;調(diào)用十進制轉(zhuǎn)換程序
MOV R1,#90H
MOV R0,#53H
MOV R5,#02H
ACALL DISP ;調(diào)顯示
ACALL DELAY1 ;調(diào)延時
AAA1 :CJNE A,#01H,TZ ;是不是檢測鍵
ACALL QR ;調(diào)用檢測模塊
TZ: SJMP ZHH2
END
第 31 頁 共 31 頁
收藏