Ⅰ 四芯水溫水位感測器原理,我想自己編程控制,可以四根線直接接51單片機的I/O口嗎另外它的水位測量是電
一個熱敏電阻,測量水溫;一個可變電阻,電阻值根據水位變化而變化。用萬用表打一下就能找出來。至於你要怎麼控制,那就把這兩個電阻連接到你的電路中去。 後面的就不用我說了吧
Ⅱ 51單片機的溫度採集系統設計
第一章 確定系統功能與性能
本系統的功能主要有數據採集、數據處理、輸出控制。能對0~1000 �0�2c范圍內的各種電加熱爐的溫度進行精密測量,同時,四位LED顯示器直接跟蹤顯示被控對象的溫度值,准確度高,顯示清晰,穩定可靠,使用方便(在具體設計編程、調試過程中,為了調試方便,編程把溫度范圍設在0~100 �0�2c)。
本系統的原理框圖如下圖所示。
數據採集部分能完成對被測信號的采樣,顯示解析度0.1�0�2c,測量精度0.1�0�2c,控制精度0.1�0�2c,可以實現採集信號的放大及A/D轉換,並自動進行零漂校正,同時按設定值、所測溫度值、溫度變化速率,自動進行FID參數自整定和運算,並輸出0~10mA控制電流,配以主迴路實現溫度的控制。數據處理分為預處理、功能性處理、抗干擾等子功能。輸出控制部分主要是數碼管顯示控制。
第二章 確定系統基本結構及硬體設計
本單片機應用系統結構是以單片機為核心外部擴展相關電路的形式。確定了系統中的單片機、存儲器分配及輸入/輸出方式就可大體確定出單片機應用系統的基本組成。
1)單片機選用MCS-51系統的8031
8031是INTEL公司MCS-51系列單片機中最基本的產品,它採用INTEL公司可靠的CHMOS工藝技術製造的高性能8位單片機,屬於標準的MCS-51的HCMOS產品。它結合了HMOS的高速和高密度技術及CHMOS的低功耗特徵,標准MCS-51單片機的體系結構和指令系統。
8031內置中央處理單元、128位元組內部數據存儲器RAM、32個雙向輸入/輸出(I/O)口、2個16位定時/計數器和5個兩級中斷結構,一個全雙工串列通信口,片內時鍾振盪電路。但80C31片內並無程序存儲器,需外接ROM。
此外,8031還可工作於低功耗模式,可通過兩種軟體選擇空閑和掉電模式。在空閑模式下凍結CPU而RAM定時器、串列口和中斷系統維持其功能。掉電模式下,保存RAM數據,時鍾振盪停止,同時停止晶元內其它功能。8031有PDIP(40pin)和PLCC(44pin)兩種封裝形式。
主要功能特性:
· 標准MCS-51內核和指令系統
· 外部程序存儲器ROM地址空間64kB
· 32個可編程雙向I/O口
· 128x8bit內部RAM(可擴充64kB外部存儲器)
· 2個16位可編程定時/計數器
· 時鍾頻率3.5-16MHz
· 5個中斷源
· 5.0V工作電壓
· 全雙工串列通信口
· 布爾處理器
· 2層優先順序中斷結構
· 兼容TTL和CMOS邏輯電平
· PDIP(40)和PLCC(44)封裝形式
Ⅲ 基於51單片機和熱敏電阻的溫度控制系統
給你個網站
你可以去看一下
http://www.sinochip.net/TechSheet/67.htm
本程序工作過程如下:
;1、開機後首先進行初始化,初始化後顯示「P」1秒,提示系統進入測試工作狀態,顯
; 示完成後,進行溫度測試。
;2、溫度測試的過程是這樣的:
; * T0置為計數方式,對T0腳(即P3.5)的脈沖計數,工作方式2,初值為255
; * 將T1置為定時方式,工作方式2,初值為0
; * 從P3.4口送單穩觸發脈沖,使555輸出單穩脈沖(正脈沖),該脈沖寬度隨熱敏
; 電阻阻值而變化。
; * 開T0、T1中斷,啟動T0、T1。此時T1自動對內部機器周期計數,當TL1溢
; 出時,產生T1中斷。在T1中斷處理程序中,將RAM 21H單元加1(即21H單
; 元存放脈沖寬計數值高位)後返回主程序。
; * 當來自P3.5的單穩脈沖結束(即下降沿到來)時,TL0計數器加1並溢出,產
; 生T0中斷。在T0中斷處理程序中,關T0、T1中斷,並將TL1中的的內容讀
; 到RAM 20H單元(20H單元存放脈寬計數值的低位)。
; * 查表求溫度值
; NTTAB是脈寬計數值與溫度的對照表,按低溫到高溫的次序存放,即第一、第
; 二單元存放-100C時的脈寬計數值,依此類推,第121和122單元則存放+500C
; 時的脈寬計數值。
; 將20H、21H中的計數值與NTTAB中的計數值依次進行比較,直至20H、21H
; 中的值小於NTTAB中的計數值為止。而比較的次數就對應溫度的整數值,二計
; 數值之差與對照表相鄰兩計數值的商即為小數位。
;3、程序中除了對-100C到+500C進行測試外,還有開路(計數值過大)、短路檢測(計
; 數值過小)、負超溫檢測、正超溫檢測,並有相應的顯示。
;4、將檢測值(溫度值或其他結果)顯示1秒,然後再重復溫度檢測。
;需要說明的是:本程序雖包括了測溫的全過程,但未考慮軟硬體的自檢,軟體濾波等部
;分。
;電容C4、熱敏電阻RT的參數決定單穩脈沖的寬度,而最終的計數值除了與單穩
; 脈沖的寬度有關外,還與晶振頻率有關,因而在RT的型號確定後要根據系統對精
; 度和解析度等的要求選擇C4的值。本程序中NTTAB脈寬計數值與溫度對照表是在
; 熱敏電阻為MF53-1型負溫熱敏電阻加12K精密電阻與之並聯,C4為1μ,晶振為
; 4MHz的條件下得到的。數據不十分准,僅做參考。你可以在元件參數定了後,可在
; 調試程序時用可變電阻箱代替熱敏電阻,在程序測出計數值處設斷點,讀出每個標
; 准阻值所對應的計數值(即20H、21H中的內容),自己將NTTAB建立起來。
; * * * * * * * * * * * * * * * * * * * * * * * * * *
; * 用89C2051控制的數字測溫儀 *
; * 源程序清單 *
; * * * * * * * * * * * * * * * * * * * * * * * * * *
ORG 0000H
AJMP MAIN ;轉主程序
ORG 000BH
AJMP WT0 ;T0中斷入口
ORG 001BH
AJMP WT1 ;T1中斷入口
;主程序
ORG 030H
MAIN: MOV IE,#00H ;關中斷
MOV SP,#40H ;設堆棧指針SP為40H
SETB P3.5 ;將P3.5口置」1」
MOV 30H,#0CH ;「P3 」送顯示緩沖區30H~33H
MOV 31H,#0EH
MOV 32H,#0EH
MOV 33H,#0EH
MAIN0: ACALL D1S ;調顯示1秒子程序
MOV P1,#0FFH ;關顯示
CLR 20H ;清脈寬計數值存放區20H~21H
CLR 21H
CLR 22H ;清單穩脈沖結束標志22H
MOV TH0,#0FFH ;置T0計數初值255
MOV TL0,#0FFH
MOV TH1,#00H ;置T1的計數初值0
MOV TL1,#00H
MOV TMOD,#26H ;置T0為計數方式,方式2;T1為定時方式。方式2
SETB EA ;允許T0、T1中斷
SETB ET0
SETB ET1
SETB TR0 ;開T0中斷
CLR P3.5 ;送單穩觸發脈沖
NOP
NOP
NOP
NOP
SETB P3.5
SETB TR1 ;開T1中斷
MAIN1: CJNE 22H,#01H,MAIN2 ;單穩脈沖未結束,轉檢查是否超時
AJMP MAIN3 ;單穩脈沖結束,轉取脈寬計數值
MAIN2: CJINE 21H,#08H,MAIN1 ;未超時,轉等待單穩脈沖結束
CLR EA
CLR ET0
CLR ET1
CLR TR0
CLR TR1
MOV 30H,#0DH ;開路提示「E1」送顯示緩沖區,轉顯示
MOV 31H,#01H
MOV 32H,#0EH
MOV 33H,#0EH
AJMP MAIN0
MAIN3: CJNE 21H,#00H,MAIN4 ;單穩脈沖結束,先判斷是否短路。不是,轉查表程序。
MOV 30H,#0DH ;短路,短路提示「E2」送顯示緩沖區,轉顯示
MOV 31H,#02H
MOV 32H,#0EH
MOV 33H,#0EH
AJMP MAIN0
MAIN4: ACALL NTTR ;調查表子程序
AJMP MAIN0
;查表求溫度值子程序
NTTR: MOV R2,#00H ;清計數與溫度對照表偏移量寄存器R2
MOV DPTR,NTTAB ;DPTR指向計數與溫度對照表首址
NTTR1: CLR C ;20H、21H中的內容與NTTRB相減,並將差值存23H、24H
MOV R3,#02H
MOV R0,#20H
MOV R1,#23H
NTTR2: MOV A,R2
MOVC A,@A+DPTR
SUBB A,@R0
MOV @R1,A
INC R0
INC R1
INC R2
CJNE R2,#122,NTTR3 ;若未到NTAB表尾,繼續比較
POVER:JC NTTR30 ;到表尾,查到對應溫度,轉求溫度值
MOV 30,#0EH ;到表尾,查到對應溫度,正超溫提示「UUU」送顯緩區
MOV 31H,#0BH
MOV 32H,#0BH
MOV 33H,#0BH
RET ;返回主程序
NTTR3: DJNZ R3,NTTR2
JNC NTTR1 ;未查到對應溫度值,繼續查表
NTTR30:MOV A,R2 ;已查到對應溫度,由偏移量求出整數部分,暫存R4
CLR C
SUBB A,#02H
RR A
MOV R4,A
MOV R1,#23H ;求溫度值的小數部分:+X/2送B
MOV A,@R1
CPL A
INC A
RR A
MOV B,A
NTTR4: DEC R2 ;Ni+1送20H、21H
MOV R0,#21H
MOV A,R2
MOVC A,@A+DPTR
MOV @R0, A
DEC R0
DEC R2
MOV A, R2
MOVC A,@A+DPTR
MOV @R0, A
DEC R2 ;求+i/2從A
DEC R2
MOV R3,#02H
CLR C
NTTR5: MOV A,R2
MOVC A,@A+DPTR
SUBB A,@R0
JNC NTTR50
CLP A
INC A
NTTR50:RR A
MOV R5,A
MOV A,B ;+x/2*10/+i得到溫度值的小數部分
JZ NTTR6
MOV B, #05H
MUL AB
MOV B,R5
DIV AB
MOV 20H,A ;小數部分送20H
AJMP NTTR7
NTTR6: MOV 20H,#00H
NTTR7: MOV A,#0AH ;判整數部分為正還是負
CLR C
SUBB A,R4
JC PTEMP
NTEMP:CJNE A,#0AH,NTEMP1 ;為負
MOV 30H,#0EH ;「-X」送顯示緩沖區高三位
MOV 31H,#0AH
MOV 32H,A
AJMP NTEMP2
NTEMP1:MOV 30H,#0AH ;「-10」 送顯示緩沖區高三位
MOV 31H,#01H
MOV 32H,#00H
NTEMP2:MOV A,#0AH ;修正小數部分後,將小數部分送顯緩低三位
CLR C
SUBB A,20H
MOV 33H,A
RET ;返回主程序
PTEMP: MOV 30H,#0EH ;為正。「 」送顯緩最高位
MOV A,R4 ;溫度值整數部分送顯緩中間兩位
MOV B,#0AH
DIV AB
JNZ PTEMP1
] MOV 31H,#0EH
JMP PTEMP2
PTEMP1:MOV 31H,A
PTEMP2:MOV 32H,B
MOV 33H,20H ;小數部分送顯緩最低位
RET ;返回主程序
;顯示子程序(將顯緩區的內容循環顯示一遍,每位顯示1ms後,關顯示返回主程序)
DSP: MOV R2,#01H
MOV R0,#30H
MOV DPTR,#TAB
DSP1: MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
ORL P3,R2
ACALL D1MS
MOV A,R2
RL A
MOV R2,A
CJNE R2,#10H,DSP2
ANL P3,#0F0H
RET
DSP2: INC R0
AJMP DSP1
;延時1ms子程序
D1MS: MOV R7,#166
D1MS1: DJNZ R7,D1MS1
RET
;顯示1秒子程序
D1S: MOV R6,#04H
D1S1: MOV R5,#250
D1S2: ACALL DSP
DJNZ R5,D1S2
DJNZ R6,D1S1
RET
;段碼表
TAB: DB 40H,79H,24H,30H,19H :0.,1.,2.,3.,4.
DB 12H,02H,78H,00H,10H :5.,6.,7.,8.,9.
DB 3FH,41H,0CH,06H,0FFH :-.,U.,P.,E.,滅
;T0中斷處理程序
WT0: MOV A,TL1 ;將T1計數值送20H
MOV 20H,A
CLR EA ;關中斷
CLR TR0 ;T0停止計數
CLR TR1 ;T1停止計數
MOV 22H,#01H ;置單穩脈沖結束標志
RETI ;返回主程序
;T1中斷處理程序
WT1: INC 21H ;脈寬計數值高位加1
RETI ;返回主程序
;脈寬計數與溫度對照表
NTTBL: DB 0D0H,05H,0B2H,05H,96H,05H,72H,05H
DB 52H,05H,35H,05H,15H,05H,0F6H,04H
DB 0D8H,04H,0B9H,04H,9CH,04H,81H,04H
DB 65H,04H,4AH,04H,30H,04H,14H,04H
DB 0FAH,03H,0E0H,03H,0C6H,03H,0ADH,03H
DB 95H,03H,7CH,03H,64H,03H,4CH,03H
Ⅳ 基於51單片機的溫度計中什麼可以代替DS18B20
DS18B20屬於數字溫度計。如果要代替的話,可以試試LM75,當然LM75是I2C介面的。然後就是模擬信號輸出的溫度計了,什麼NPT、鉑電阻、熱電偶、AD590、LM35之類的,就要用ADC了。如果你的單片機自帶了ADC,還差不多。