Ⅰ 四芯水温水位传感器原理,我想自己编程控制,可以四根线直接接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,还差不多。