怎么做基于51单片机据热敏电阻的温度采集系统?

作者&投稿:真态 (若有异议请与网页底部的电邮联系)
怎么做基于51单片机据热敏电阻的温度采集系统?~

完全跟51单片机不搭边,首先,你用了比较器,反向输入就是r2.同相输入就是热敏电阻。输出OUT不是1就是0,如果out=0;led2点亮,反之led2熄灭。led1只是个电源指示灯,如果断电了就熄灭了。
AC当然是模拟量了。热敏电阻知道吧,温度不同阻值不通,比如说当前阻值是10K,那么输入就是2.5V,如果组织减小到几百欧姆,AC就接近0v左右了。如果组织怎家到几百殴,输出就接近5V了;这种电路就好比一个滑动变阻器,学过吧。划来划去阻值会不同。建议你再去看看初中的滑动变阻器章节。

给你个网站
你可以去看一下
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

1)先按芯片引脚在纸上画出最基本系统原理图
2)选择ADC引脚作为采集输入脚并加0.1uF滤波,并接上拉电阻到芯片电源,及热敏电阻接下位,(像接分压电阻一样,分压结果输入单片机ADC引脚)
3)其它的接LCD,KEY等。

准备好需要零件并在面包板上开始接图焊接后关用万用表确认连接是否正确再上电确认,没问题就可以开始写程序下载了

先设计电路。
再编写程序。
最后进行联机调试。


MCU51单片机是什么意思
8位架构:MCU51单片机基于8位数据总线和8位处理器核心,处理能力相对较低。它适用于一些低功耗和资源有限的应用。内部存储器:MCU51单片机通常包含片内ROM、RAM和特殊功能寄存器(SFR)。ROM用于存储程序代码,RAM用于存储数据,而SFR用于配置和控制各种外设。I\/O接口:MCU51单片机提供了可编程的通用输入...

基于51单片机制作万年历,用数码管,定时器,不用时钟芯片,不用液晶,怎 ...
基于51单片机制作万年历,用两个8位一体的共阴数码管,显示日期和时间。数码管位选用两片74HC138,便于动态扫描显示,又节省引脚。用3个按键调时,K1为选择调时状态,K2为加1键,K3为减1键。仿真图如下:

基于51单片机产生SPWM
spwm波直接用单片机应该就可以做出来,大可不必弄一个正弦波和一个三角波,可以直接读一个写好的表,当然表中数据代表各个脉宽时间,用定时器实现脉宽的变化~~~你的意思如果只是产生一个spwm,用数组存两个网表就可以了,一个是作为载波的三角波,一个正弦波,然后在相应的采样点上比较 ,控制管脚高低...

基于单片机红外线测距的51程序?
3、利用波速来计算距离,测量出几个纳秒的时间差,使用单片机则是不可能的。4、利用电磁波来测距、测速,是利用了变频、差频的原理,前端的电路和器件,都是使用模拟电路中高频电子线路的理论和电路器件。5、单片机之类的数字电路根本跟不上这个速度,只能做后期的低速工作,如显示报警等。6、其实,用...

基于51单片机的四层电梯c语言独立按键的四层电梯模拟
3、电梯位置,每层一个,PA1,PB2,PB3,PB4。4、电梯状态,停止PD1,向上运动PD2,向下运动PD3. 门打开PD4,门闭合PD5.5、电梯控制输出,向上运动DE1,向下运动DE2,停止运动DE3,开门DE4,关门DE5.6、另外一些指示灯的输出,最简单的指示每个按键上一个,内外部显示一个LED点阵指示,做练习就...

51单片机二极管延时点亮的室验原理?
51单片机控制二极管延时点亮的实验原理是基于51单片机的内部计时器和IO口控制二极管的电流流动。具体步骤如下:将一个二极管连接到51单片机的IO口上,使得该IO口可以控制二极管的电流开关状态。使用51单片机的内部计时器来延时,计时器可以通过编写程序控制其开始和结束的时间。在程序中设定一个时间延时,然后将...

基于51单片机超市自动存储柜系统,做密码的还是条形码的,稍微可以简单的...
向个人终端传递密码需要加载wifi或蓝牙模块,硬件与软件方面的成本就高不少,并且用户使用上并没有带来更高的便利,主要就是运营成本低(没有热敏纸消耗)。基于这些原因,你现在在各超市能看到的,还是条码柜占了绝对主流。国外有厂家在做不用电子设备柜,塞硬币后才可以开柜门,拨钥匙,然后钥匙锁定至...

急求:基于MCS-51单片机的温度控制器汇编语言软件设计和硬件电路图_百度...
DS18B20的性能特点:1、采用单总线专用技术,既可通过串行口线,也可通过其它I\/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),2、测温范围为-55℃-+125℃,测量分辨率为0.0625℃,3、内含64位经过激光修正的只读存储器ROM,4、适配各种单片机或系统机,5、...

基于51单片机执着1602时 rs rw e 怎么连
连接到任意IO都可以的,在编程的时候指定IO功能就可以了。如 sbit RS = P1 ^ 0;sbit RW = P1 ^ 1;sbit EN = P1 ^ 2;#define Data_Bus P0

求基于52或51单片机数显温度计C程序...附上原理图,要求能测0-100度...
sbit DQ=P3^6; \/\/数据传输线接单片机的相应的引脚 unsigned char tempL=0; \/\/设全局变量 unsigned char tempH=0;unsigned int sdate;\/\/测量到的温度的整数部分 unsigned char xiaoshu1;\/\/小数第一位 unsigned char xiaoshu2;\/\/小数第二位 unsigned char xiaoshu;\/\/两位小数 bit fg=1; \/...

江宁区17755486130: 怎么做基于51单片机据热敏电阻的温度采集系统? -
招岸中风: 完全跟51单片机不搭边,首先,你用了比较器,反向输入就是r2.同相输入就是热敏电阻.输出OUT不是1就是0,如果out=0;led2点亮,反之led2熄灭.led1只是个电源指示灯,如果断电了就熄灭了. AC当然是模拟量了.热敏电阻知道吧,温度不同阻值不通,比如说当前阻值是10K,那么输入就是2.5V,如果组织减小到几百欧姆,AC就接近0v左右了.如果组织怎家到几百殴,输出就接近5V了;这种电路就好比一个滑动变阻器,学过吧.划来划去阻值会不同.建议你再去看看初中的滑动变阻器章节.

江宁区17755486130: 基于51单片机和热敏电阻的温度控制系统 -
招岸中风: 给你个网站

江宁区17755486130: 我想用热敏电阻传感器,PCF8951,和51单片机实现温度数值的显示,怎么编程啊 -
招岸中风: 通过运放将热敏电阻的信号处理在0-5v以内,例如1-4v 然后通过51单片机安装iic的时序去读取pcf8951采集到1-4v的电压值,然后在数码管或者lcd上显示

江宁区17755486130: 我想用PCF8951和51单片机,热敏电阻传感器来具体温度数值,不知道往单片机写什么样的程序,有没有会的? -
招岸中风: 用热敏电阻和一个高精度电阻做一个分压电路.然后用AD转换采集热敏电阻上的电压值,得到对应电压的AD值.根据热敏电阻的数据手册做一个温度--AD值表.然后利用AD值查找对应的温度.显示可以用LED数码管或者LCD都可以啊.

江宁区17755486130: 单片机 热敏电阻测温 -
招岸中风: 1、单片机热敏电阻测温首先要设计电路原理图,如图所示:上图R3为上拉电阻,T1为接热敏电阻端,TC1为单片机AD采集口、电阻R4和电热C6为阻容滤波电路.2、上拉电阻R3的选择:根据所用温度的范围,选择热敏电阻对应阻值范围的中...

江宁区17755486130: 基于MC51单片机的热敏电阻测温显示系统课程设计 -
招岸中风: 通过热敏电阻的分压接ADC,单片机程序编写设置ADC出来的数字信号与温度的对应关系,其实这个跟温度传感器的原理相似,只不过被温度传感器集成而已,具体可参照温度传感器DS18B20内部结构与程序,LDE显示电路较简单,网上很多

江宁区17755486130: 用c51单片机和热敏电阻制作温度计 -
招岸中风: 热敏电阻做温度计,就是测量热敏电阻的电阻值,然后根据温度、电阻的对应关系,将阻值转换成对应的温度值.简单点说,硬件上:一个电阻测量电路.软件上:分成两部分,一部分控制硬件进行电阻测量,二部分是根据电阻值的测量结果推导出对应的温度值.根据测量精确度的要求,硬件上电阻测量电路可以有若干种方法,简单点用有AD的CPU或者外接AD,或者用电压频率转换电路将电阻信号转换成频率,CPU测频率,或者用CPU的比较器进行简易低精度测量...方法很多的

江宁区17755486130: 请问利用热敏电阻来检测温度给单片机AD处理显示,其最常用的简单原理图是如何的? -
招岸中风: 标准电阻和热敏电阻组成一个电桥,然后进行AD转换,在计算后显示温度,

江宁区17755486130: 用单片机实现热敏电阻测温显示,51的,我是用查表好,还是用ad转换好?这两种方法有什么不同和优缺点?有没 -
招岸中风: 用热敏电阻测温必须要用AD转换,至于查表,是获得AD转换结果后,为了再转换成精确温度值的数学方法.也就是说,首先要进行AD转换,如果在所测量的温度区间热敏电阻的变化非线性较大,就必须用查表或插值的方法进行修正.具体资料很多,你可到百度文库中用“热敏电阻测温”搜索.

江宁区17755486130: 怎样写用热敏电阻测温度的程序,用单片机AD测的热敏电阻的AD值,怎样把数字量转换成温度? -
招岸中风: 这个主要还是看你的热敏电阻是不是线性的,如果是铂电阻这种,线性度很好的话,可以采用楼上的方法,原理就是注重学的已知两点,求一条直线,前提是你要知道两个已知的点.如果你的电阻线性度不好,偏差比较大,有两种方法,一、将阻值与温度的关系看做是折线,多求几条直线,根据不同的AD值范围采用不同的折线.第二种方法就是做一张表,将温度值和AD值用一个表格表示出来,转换时直接查表就行了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网