㈠ 单片机测温电路
用热敏电阻测温 看你精度要求高低了
如果不高可以采用精密电阻分压方式测量
就是一个高精度稳压源串联一个精密电阻,下面再接你的热敏电阻。
你通过测量热敏电阻的电压值以及稳压源的电压值算出热敏电阻阻值从而测得温度。
㈡ 单片机温度检测的程序
你用的是DS18B20?这个程序你参考下#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit ds=P2^2; //温度传感器信号线
sbit la=P2^6; //数码管段选线
sbit wela=P2^7; //数码管位选线
sbit beep=P2^3; //蜂鸣器
sbit key1=P3^4;
sbit key2=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
uint temp;
float f_temp;
uint warn_l1=23;
uint warn_h1=29;
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0xbf,0x86,
0xdb,0xcf,0xe6,0xed,
0xfd,0x87,0xff,0xef}; //不带小数点的编码
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void dsreset(void) //18B20复位,初始化函数
{
uint i;
ds=0;
i=103;
while(i>0)i--;
ds=1;
i=4;
while(i>0)i--;
}
bit tempreadbit(void) //读1位函数
{
uint i;
bit dat;
ds=0;i++; //i++ 起延时作用
ds=1;i++;i++;
dat=ds;
i=8;while(i>0)i--;
return (dat);
}
uchar tempread(void) //读1个字节
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tempreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
}
void tempwritebyte(uchar dat) //向18B20写一个字节数据
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //写 1
{
ds=0;
i++;i++;
ds=1;
i=8;while(i>0)i--;
}
else
{
ds=0; //写 0
i=8;while(i>0)i--;
ds=1;
i++;i++;
}
}
}
void tempchange(void) //DS18B20 开始获取温度并转换
{
dsreset();
delay(1);
tempwritebyte(0xcc); // 写跳过读ROM指令
tempwritebyte(0x44); // 写温度转换指令
}
uint get_temp() //读取寄存器中存储的温度数据
{
uchar a,b;
dsreset();
delay(1);
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread(); //读低8位
b=tempread(); //读高8位
temp=b;
temp<<=8; //两个字节组合为1个字
temp=temp|a;
f_temp=temp*0.0625; //温度在寄存器中为12位 分辨率位0.0625°
temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入
f_temp=f_temp+0.05;
return temp; //temp是整型
}
////////////////////显示程序//////////////////////////
void display(uchar num,uchar dat)
{
uchar i;
la=0;
P0=table[dat];
la=1;
la=0;
wela=0;
i=0XFF;
i=i&(~((0X01)<<(num)));
P0=i;
wela=1;
wela=0;
delay(1);
}
void dis_temp(uint t)
{
uchar i;
i=t/100;
display(0,i);
i=t%100/10;
display(1,i+10);
i=t%100%10;
display(2,i);
}
//////////////////////////////////////////////
void warn(uint s,uchar led) //蜂鸣器报警声音 ,s控制音调
{
uchar i;i=s;
la=0;
wela=0;
// beep=0;
P1=~(led);
while(i--)
{
dis_temp(get_temp());
}
// beep=1;
P1=0XFF;
i=s;
while(i--)
{
dis_temp(get_temp());
}
}
void deal(uint t)
{
uchar i,k;
k=t/10;
if(k<warn_l1)
{
warn(40,0x01);
}
if(k>warn_h1)
{
warn(40,0x04);
}
else
{
i=40;
while(i--)
{
dis_temp(get_temp());
}
}
}
void xianshi(num)
{
uint m;
for(m=50;m>0;m--)
{
uchar shi,ge;
shi=num/10;
ge=num%10;
la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(10);
la=1;
P0=table[ge];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(10);
}
}
void anjian()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
warn_l1++;
if(warn_l1==warn_h1)
warn_l1=23;
xianshi(warn_l1+1);
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
warn_l1--;
if(warn_l1==0)
warn_l1=23;
xianshi(warn_l1+1);
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
warn_h1++;
if(warn_h1==125)
warn_h1=29;
xianshi(warn_h1+1);
while(!key3);
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{
warn_h1--;
if(warn_h1==warn_l1)
warn_h1=29;
xianshi(warn_h1+1);
while(!key4);
}
}
}
void main()
{
uchar buff[4],i;
la=0;
wela=0;
while(1)
{
tempchange();
anjian();
for(i=10;i>0;i--)
{
dis_temp(get_temp());
}
deal(temp);
sprintf(buff,"%f",f_temp);
for(i=10;i>0;i--)
{
dis_temp(get_temp());
}
for(i=10;i>0;i--)
{
dis_temp(get_temp());}
}
}
㈢ 设计一个单片机测温系统,请高人指点!!!
单片机不应该直接带负载,功率器件要公光耦隔离,你的电机驱动IC最好用高速光耦隔离开。
如果单片机直接带负载,实验的时候可能没问题,但是会有很多不稳定因素,单片机死机或者程序跑飞都有可能,甚至烧坏单片机的I/O口
步进电机的转速可控,输出稳定,
一般电机(玩具上拆的)可以通过PWM来控制转速,但是输出不稳定,
当然,还有其他的电机,具体要查相关的资料了,
如果你的电机只是通短,那随便找个能转的就OK了
㈣ 基于单片机的温度检测报警器
由
温度传感器
AD0809
采集信号得到与之对应的
模拟信号
。A/D转换电路对处理之后模拟信号数值化,将模拟信号转换成数字信号。再由集成运放LM741对微弱的电信号进行放大处理,输出电压U0=2.732-UI,输出电压U1>2.732,是一个反向电压。反向
比例运算电路
,其输出电压
UO=-2UI,U0是一个正电压。再通过单片机(8951)对信号进行读写操作,经单片机处理后由
七段数码管
显示。并通过键盘输入模块向单片机设定高温
临界温度
。当前环境温度若超过设定的高温临界温度,由单片机发出报警信号并驱动继电器使风扇电机转动。
㈤ 单片机 热敏电阻测温
1、单片机热敏电阻测温首先要设计电路原理图,如图所示:
上图R3为上拉电阻,T1为接热敏电阻端,TC1为单片机AD采集口、电阻R4和电热C6为阻容滤波电路。
2、上拉电阻R3的选择:根据所用温度的范围,选择热敏电阻对应阻值范围的中间值最好,这样检测的温度偏差较小。
3、上拉电阻选定后,根据热敏电阻阻值表,算出温度真值表,用于软件查表,计算出温度值。在算温度真值表前,首先要确定单片机AD模块的分辨率。
4、单片机软件编程,滤波方法一般采用多次采集求累加和,去最大值和最小值,最后求平均。
5、单片机选择:一般选用8位单片机就够。但是,单片机自带的温度采集AD模块,最好选用10位分辨率,10位的AD模块分辨率高,温度采集精确。
6、以上为单片机热敏电阻测温的一般流程。
㈥ 怎么用51单片机做出红外测体温
做红外测吃的体温计我觉得是非常好的,那么这样你做出的这个红外线的这个体温测试仪我认为是非常准确的,希望你努力完成任务。
㈦ 热电偶单片机如何测温
热电偶输出的是电压信号,毫伏。用单片机热电偶测温。单片机有带A/D转换的,将热电偶输出的毫伏信号(放大),输入到单片机的A/D转换口,转换成数字量。单片机内存有热电偶电压温度数据表,根据数字量查表查出温度数,然后将温度数从口输出,显示驱动单元显示温度。
㈧ 设计单片机自动测温系统
简单描述一下吧:
不知道你用的传感器型号,如果用热电偶药主要好温度补偿,传感器经过A\D把信息传给单片机,显示部分用动态数码管就可以了,
下面有两种思路:
1.用LM35去采集温度信息,根据其输出电压转化为温度信息,最好用自带AD的单片机,输出到数码管就可以了。
2.不用AD,用比较常用的18b20,接上单片机显示出温度就可以了,18b20网上有很多参考的程序。
其实不管用热电偶还是热电阻都要注意好其稳定性。
㈨ 单片机测温原理
这需要温度感应头与单片机配合的,感应头把温度信号转换成电信号在转换成二进制数,输入单片机,单片机与储存的温度记录相比较,得出当前温度,输出。总得来说就是需要有外部原件把温度换成二进制信号(有的单片机可以直接识别电压信号,内部自动转换二进制信号),单片机识别与存储的数据进行比较得出温度。