51单片机的热敏电阻有什么作用问题

查看: 3776|回复: 15
单片机热敏电阻温度计proteus仿真及程序
51单片机做的用热敏电阻来测温并用数码管显示,下面是电路原理图:
源程序:
#include&reg52.h&
#define uchar unsigned char
#define uint unsigned int
//
unsigned char code dispbitcode[]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//
//
unsigned char code LEDcode[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
//
//
unsigned char dispbuf[8]={10,10,10,10,10,10,0,0};
//
uns
unsigned int uiR
sbit START=P3^1;
sbit OE=P3^0;
sbit EOC=P3^2;
sbit P17=P1^7;
//
void delay(uint z)& & & && & //延时函数,约1ms
{
& & & & uint x,y;
& & & & for(x=z;x&0;x--)
& & & & & & & & for(y=110;y&0;y--);
}
void Display()
{for(dispcount=0;dispcount&5;dispcount++)
{P2=0
P1=LEDcode[dispbuf[dispcount]];
if(dispcount==3)
{P17=1;}
P2=dispbitcode[dispcount];
delay(1);
P2=0
}
}
//
void ADC0809()
{
& & & &
& & & &
//& & & & START=0;
& & & & START=1;
& & & & START=0;
P0=0X
//EOC=1;
while(EOC==0);
OE=1;
uiResult=P0;
OE=0;
y=uiR
uiResult=(y*;
if(uiResult&2732)
{ uiResult=2732-uiRsflag=1;}
else
{ uiResult=uiResult-2732;sflag=0;}
i=4;
dispbuf[1]=0;
dispbuf[2]=0;
dispbuf[3]=0;
dispbuf[4]=0;
if(sflag==1)
{ dispbuf[0]=11;}
else
{ dispbuf[0]=10;}
dispbuf[5]=10;
dispbuf[6]=10;
dispbuf[7]=10;
while(uiResult/10)
{dispbuf[i]=uiResult%10;
uiResult=uiResult/10;
i--;
}
dispbuf[i]=uiR
}
//
void main(void)
{
& & & & xdata unsigned char kk = 0;
& & & &
& & & & START=0;
OE=0;
uiResult=148;
while(1)
{
& & & & kk++;
& & & & Display();
& & & & ADC0809();
}
}
//复制代码
11:47 上传
点击文件名下载附件
下载积分: 黑币 -5
111.31 KB, 下载次数: 94, 下载积分: 黑币 -5
绝世好帖!
楼主可以分析下电路吗?
顶!顶!顶!顶!
数字显示怎么不能调节?温度数值怎么不会变啊?
我想知道热敏电阻你接哪里了 我没看到啊 而且7474不好找 能用哪些芯片代替吗
好动西啊,感谢分享,收藏了
感谢分享,收藏了
谢谢楼主的分享
谢谢楼主的分享
楼主,我下了这个,但是打开,发现调节滑动变阻器,显示屏数值不会改变,这是怎么回事?
越快乐越堕落 发表于
我想知道热敏电阻你接哪里了 我没看到啊 而且7474不好找 能用哪些芯片代替吗
热敏电阻用滑动变阻器代替了
谢谢楼主 很有用
楼主能教一下如何改变电阻值电容值调整显示数字么
没什么用处,一直显示-273
下载了,谢谢楼主资源,先看看再评价
确实显示不会变化,楼主能否给个说明呢
Powered by您现在的位置是: >
推荐星级:
51单片机热敏电阻温度计仿真设计,含原理图 C语言代码
部分文件列表
文件名大小51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/1KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/STARTUP.A516KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/STARTUP.LST1KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/STARTUP.OBJ1KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/main.LST4KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/main.OBJ4KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/main.c2KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/pro4KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/pro.M517KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/pro.hex1KB51单片机热敏电阻温度计仿真设计,含原理图 C语言代码/pro.lnp1KB...
下载本资源的用户还喜欢
已有 249105 个资源
项 目 外 包
工作经验:3-5年 | 学历:本科
10K-15K | 广东省 深圳市
工作经验:不限 | 学历:博士
25K-35K | 广东省 深圳市
工作经验:1-3年 | 学历:本科
10K-15K | 广东省 深圳市
工作经验:3-5年 | 学历:本科
15K-25K | 上海市 松江区
工作经验:3-5年 | 学历:本科
10K-15K | 上海市 松江区我很急呢,有没人会用热敏电阻给52单片机写一程序,只用检测30“到100度”100就关,30度就开_百度知道
我很急呢,有没人会用热敏电阻给52单片机写一程序,只用检测30“到100度”100就关,30度就开
我很急呢,有没人会用热敏电阻给52单片机写一程序,只用检测30“到100度”100就关,30度就开ledq!相信很简单~求求你们快帮我!
我有更好的答案
首先要知道他它的温度与电阻的关系曲线,就可以把它两端的电压值通过ADC芯片转换
采纳率:70%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机 热敏电阻的电路原理图,电子方面的前辈请进来看看!高分悬赏!_百度知道
51单片机 热敏电阻的电路原理图,电子方面的前辈请进来看看!高分悬赏!
请前辈看一下下面的热敏电阻模块的原理图,根据我的理解是这样的,LM393是一个比较芯片,热敏电阻传感器模块输出模拟量AC,IN引脚是一个数字电位器,LM393的作用就是比较数字电位器的输入IN跟热敏电阻的模拟量输出AC,比较结果通过OUT引脚传出来。。。这个LM3...
我有更好的答案
完全跟51单片机不搭边,首先,你用了比较器,反向输入就是r2.同相输入就是热敏电阻。输出OUT不是1就是0,如果out=0;led2点亮,反之led2熄灭。led1只是个电源指示灯,如果断电了就熄灭了。AC当然是模拟量了。热敏电阻知道吧,温度不同阻值不通,比如说当前阻值是10K,那么输入就是2.5V,如果组织减小到几百欧姆,AC就接近0v左右了。如果组织怎家到几百殴,输出就接近5V了;这种电路就好比一个滑动变阻器,学过吧。划来划去阻值会不同。建议你再去看看初中的滑动变阻器章节。
这个AC输出的模拟量我用控制器进行AD转换之后是个电压值吧?那怎么通过这个电压值来计算出这个电阻值呢?求解释阿。。。大神!
转换前是电压值,模拟量=电压值?!转换后就是一组二进制数了。看你用几位的AD。AD使用时必须有个参考电压,你还得补补手册。因为单片机不能直接处理模拟量,需要用AD把模拟量转换为二进制数再去处理,如果输入到AD的电压=参考电压,输出就是全1,然后单片机判断这组二进制数的大小来相应处理。我这样说的是笼统的,你能给出个具体的来吗?
嗯,我的芯片的STM32,内部集成12位的AD模块,我转换出来的值大概是 0x8f3,还没超过最大值0xfff,这个AD的参考电压我一直在查找查不到啊,假设参考电压是3.3v,那根据这个0x8f3如何算出电压值跟电阻值呢,最终是要转换成电阻值才能去R-T表查找所对应的温度的。。。在线等前辈解答啊!感激不尽!
给你的例子,你这是十二位的。我给你说个8位的。如果是5V电压,转换得到的是0xef。电压就是2.5V,FF=256。ef=128,(128-256)*5=2.5V 如上你的图。R1=10K,那么Rt=10K。(Rt/(Rt+R))*5=2.5
有人跟我这么解释的,参考电压是3.3,他说12位最大是 0xfff(4096),假设转换出来是0xef(128),那么就有等式 128/4096 = 模拟电压/3.3v从而求出模拟电压=(128/,然后如上图所示,忽略从AC流出的电流,那么流过R1跟RT(热敏电阻)上的电流就是3.3/(R1+RT),那么 (3.3/(R1+RT)) *RT就等于热敏电阻上的电压也就是AC输出的模拟电压,然后 (3.3/(R1+RT)) *RT = (128/,R1=10K,可以求出RT,你怎么看?
就是这样的。AD的输入阻抗很高,所以AC上的电流可以忽略的。
对了,再请教个问题,如果AD转换出来的数值都是0,一般存在哪些情况?传感器模块就是上面的那个电路...
万能表测电压,如果电压不是0,那就是你的AD命令错了,可能是你的格式错误。
采纳率:41%
51单片机 用热敏电阻 检测温度,上面电路只是一个比较电路,不同的温度 AC 点的电压不同,调节 R2 可以使 D2 在 每个温度点 的 亮 & 灭。如果 用 单片机 AD 检测温度,则只要 按照不同的 温度的电压 值进行 AD 转换 得到数字量,可以用计算公式,或者用 温度值 的数据表,比较 AD 转换后的数值,即为当前的温度值,热敏电阻 有在 不同温度下 的电阻值 系数表,这个在网上可以 找到。(VCC/(R1+RT)) *RT
为每个温度的电压值, 通过 AD 转换 的数值 和 温度系数表 换算后才能得到温度值。
(VCC/(R1+RT)) *RT
,这个公式是忽略AC端输出到单片机的电流吧?我接的是STM32,也可以这样忽略?
单片机 AD 检测的电流可以忽略不计数(是很小很小的)
单片机指的普通的51单片机吧?那如果是stm32或者ARM9之类的芯片也一样可以忽略?
所有单片机的 AD 转换,包括单独 AD 转换芯片。
噢噢,大概懂了,对了,再请教个问题,如果AD转换出来的数值都是0,一般存在哪些情况?传感器模块就是上面的那个电路...
其实只要 检测一下 AD 转换输入 点的电压,如果是 0 V 则转换后,应该是 0 ,如果 AD 转换输入 点的电压,不为 0 V 则转换后,应该按照 电压 比例 的数值,如果 数据 还是 0 ,则程序 有问题了,如果是外接 AD 转换芯片 连接 等等。
本回答被网友采纳
首先,这个AC电压值是通过R1与N1的分压得来,温度的变化会导致N1电阻值的变化,也就令AC产生变化,所以这个AC是个模拟量;另外,N1电阻值与温度的关系,通常是个单向的曲线关系,即电阻值与温度是一一对应的关系,如果采用那些标准的热敏电阻,那么这个曲线关系还可以采用公式来表达;其实,你这个电路是采用参考电压来跟踪温度(也就是受测信号电压,即图中的AC)的变化,与通过模数转换,将温敏电阻上的电压进行量化的效果是一样的;当参考电压从高往低(或从低往高)逼近,直至比较器状态翻转,则此时的参考电压就视为温敏电阻上的电压了,这里比较器输出的仅仅是个状态,与温度没有直接的关系;而采用模数转换,也是需要一个参考电压的,只是这个参考电压是固定的,经转换后得到一个与受测信号电压对应的数字值;至于此电压与受测温度的关系,还需要转换为电阻与温度的关系,这个关系就是热敏电阻值与温度的曲线关系,因此,这个温度,可以采用查表方式,也可采用计算公式求得;
对了,再请教个问题,如果AD转换出来的数值都是0,一般存在哪些情况?传感器模块就是上面的那个电路...
不知道你的AD转换器的输入信号取自何方,是取自AC?还是其他?AD转换有误,应该能够判别问题所在,无非是输入信号、电路、程序问题;
这个AC就是R1和N1的分压值,热敏电阻随温度的变化而变化,分压点的电压也随之改变,通常将这个变化的电压量列入模拟量。可以通过查找R-T表取样温度的R值计算出分压点的电压,之后确定LM393的门栏电压。当然,也可以通过改变热敏电阻的温度,结合标准温度计来获得取样温度的电压值。
对了,再请教个问题,如果AD转换出来的数值都是0,一般存在哪些情况?传感器模块就是上面的那个电路...
如果AD转换出来的数值都是0,一般存在这些情况:传感器模块电路的R1开路或N1、C2短路。
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 51单片机热敏电阻a/d转化公式 的文章

 

随机推荐