NTC热敏电阻测温度 单片机C和汇编源程序

2019-11-11来源: 51hei关键字:NTC  热敏电阻  单片机C  汇编

NTC热敏电阻器参数介绍:


【标称阻值】
标称阻值是NTC热敏电阻器设计的电阻值,常在热敏电阻器表面标出。标称阻值是指在基准温度为25℃时零功率阻值,因此又被称为电阻值R25。


【额定功率】
额定功率是指热敏电阻器在环境温度25℃、相对湿度为45%~80%及大气压力为0.87~1.07Pa的大气条件下,长期连续负荷所允许的耗散功率。


【B值范围】
B值范围(K)是负温度系数热敏电阻器的热敏指数,反映了两个温度之间的电阻变化。它被定义为两个温度下零功率电阻值的自然对数之差与这个温度倒数之差的比值。B值可用下述公式计算,即  
式中,R1、R2分别是绝对温度T1、T2时的电阻值(Ω)。


【零功率电阻值】
在规定温度下测量热敏电阻器的电阻值,当由于电阻器内部发热引起的电阻值变化相对于总的测量误差来说可以忽略不计时测得的电阻值。


【耗散系数δ(mW/℃)】
耗散系数是指热敏电阻器消耗的功率与环境温度变化之比,即
 
式中,W是热敏电阻消耗的功率(mW);T是热平衡时的温度(℃);T0是周围环境温度(℃);I是在温度为T时通过热敏电阻器的电流(A);R是在温度为T时热敏电阻器的电阻值(Ω)。


【时间常数τ(s)】
时间常数τ(s)指的是热敏电阻器在零功率状态下,当环境温度由一个特定温度向另一个特定温度突变时,热敏电阻器阻值变化63.2%所需的时间。


【电阻温度系数】
电阻温度系数是指环境温度变化1℃时热敏电阻器电阻值的相对变化量。知道某一个型号热敏电阻器的电阻温度系数后,就可以估算出热敏电阻器在相应温度下的实际电阻值。


单片机源程序如下:

/*---------------------------------------------------------------------*/

/* --- STC MCU International Limited ----------------------------------*/

/* --- STC 1T Series MCU Demo Programme -------------------------------*/

/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */

/*---------------------------------------------------------------------*/



/*************        本程序功能说明        **************


读ADC和测温度.


用STC的MCU的IO方式控制74HC595驱动8位数码管。


用户可以修改宏来选择时钟频率.


用户可以在"用户定义宏"中选择共阴或共阳. 推荐尽量使用共阴数码管.


使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下, 用户

修改MCU主时钟频率时,自动定时于1ms.


左边4位数码管显示ADC2接的电压基准TL431的读数, 右边4位数码管显示温度值, 分辨率0.1度.


NTC使用1%精度的MF52 10K@25度C.


测温度时, 为了通用, 使用12位的ADC值, 使用对分查找表格来计算, 小数点后

一位数是用线性插补来计算的.


所以, 测温度的ADC3进行4次ADC连续采样, 变成12位的ADC来计算温度.


******************************************/


#include        "config.H"

#include        "adc.h"


/****************************** 用户定义宏 ***********************************/


#define                LED_TYPE        0x00                //定义LED类型, 0x00--共阴, 0xff--共阳


#define        Timer0_Reload        (65536UL -(MAIN_Fosc / 1000))                //Timer 0 中断频率, 1000次/秒


/*****************************************************************************/







/*************        本地常量声明        **************/

u8 code t_display[]={                                                //标准字库

//         0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F

        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,

//black         -     H    J         K          L           N        o   P         U     t    G    Q    r   M    y

        0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,

        0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};        //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1


u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};                //位码



/*************        IO口定义        **************/

sbit        P_HC595_SER   = P4^0;        //pin 14        SER                data input

sbit        P_HC595_RCLK  = P5^4;        //pin 12        RCLk        store (latch) clock

sbit        P_HC595_SRCLK = P4^3;        //pin 11        SRCLK        Shift data clock



/*************        本地变量声明        **************/


u8         LED8[8];                //显示缓冲

u8        display_index;        //显示位索引

bit        B_1ms;                        //1ms标志


u16        msecond;


/*************        本地函数声明        **************/

u16        get_temperature(u16 adc);



/****************  外部函数声明和外部变量声明 *****************/




/********************** ADC配置函数 ************************/

void ADC_config(void)

{

        ADC_InitTypeDef                ADC_InitStructure;                                //结构定义

        ADC_InitStructure.ADC_Px        = ADC_P12 | ADC_P13;//设置要做ADC的IO,        ADC_P10 ~ ADC_P17(或操作),ADC_P1_All

        ADC_InitStructure.ADC_Speed     = ADC_90T;                        //ADC速度                        ADC_90T,ADC_180T,ADC_360T,ADC_540T

        ADC_InitStructure.ADC_Power     = ENABLE;                        //ADC功率允许/关闭        ENABLE,DISABLE

        ADC_InitStructure.ADC_AdjResult = ADC_RES_H8L2;                //ADC结果调整,        ADC_RES_H2L8,ADC_RES_H8L2

        ADC_InitStructure.ADC_Polity    = PolityLow;                //优先级设置        PolityHigh,PolityLow

        ADC_InitStructure.ADC_Interrupt = DISABLE;                        //中断允许                ENABLE,DISABLE

        ADC_Inilize(&ADC_InitStructure);                                        //初始化

        ADC_PowerControl(ENABLE);                                                        //单独的ADC电源操作函数, ENABLE或DISABLE

}



/**********************************************/

void main(void)

{

        u8        i;

        u16        j;

        

        display_index = 0;

        ADC_config();

        

        Timer0_1T();

        Timer0_AsTimer();

        Timer0_16bitAutoReload();

        Timer0_Load(Timer0_Reload);

        Timer0_InterruptEnable();

        Timer0_Run();

        EA = 1;                                                //打开总中断

        

        for(i=0; i<8; i++)        LED8[i] = 0x10;        //上电消隐


        

        while(1)

        {

                if(B_1ms)        //1ms到

                {

[1] [2] [3] [4] [5]
关键字:NTC  热敏电阻  单片机C  汇编 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479574.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STC15单片机ADC温敏电阻测温源程序
下一篇:STC15w4k58s4单片机4串口同时收发例程

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

HAL库教程14:查表法测量NTC热敏电阻
如果超过范围,返回32767 ℃。10K上拉,3950 10K热敏电阻  * @retval 温度值  */  short calcuTem(u16 ad_value){  short tempValue= 0x7fff;  if ((ad_value < 3877)&&(ad_value > 72))  {    for (short i = 0 ; i < 181 ; i++)    {      if (ad_value > tempRes_buf[i
发表于 2019-05-30
HAL库教程14:查表法测量NTC热敏电阻
手把手教你如何使用NTC浪涌电流限制器
在启动电子设备(如开关电源(SMPS)或逆变器)时,设备会通过具有高峰值的瞬时异常电流。它被称为浪涌电流,如果没有保护,它可能破坏半导体器件或对滤波电容器的使用寿命产生有害影响。NTC热敏电阻用作ICL(浪涌电流抑制器),方便、有效地保护电气、电子器件的电路免受浪涌电流的影响。NTC热敏电阻的优点NTC热敏电阻是一种采用具有负温度系数(NTC)的特殊半导体陶瓷的温度相关电阻。它们在室温下具有很高的电阻,当它们通电时,自己产生热量,随着温度升高,电阻下降。由于具有这种特性,它们被用作电气和电子设备的电流保护装置,方便、有效地限制异常电流,包括在通电时的浪涌电流。用作浪涌电流抑制器的NTC热敏电阻也称为功率型热敏电阻。固定电阻或NTC
发表于 2018-11-26
手把手教你如何使用NTC浪涌电流限制器
NetApp收购StackPointCloud,将为NetApp注入新活力
全球混合云数据管理领域的权威企业 NetApp(纳斯达克股票代码:NTAP)近日宣布完成了对StackPointCloud的收购。StackPointCloud是多云Kubernetes即服务领域的领导者,也是Kubernetes项目的参与者。StackPointCloud与NetApp的结合创建了NetApp Kubernetes服务,这不仅是业界第一个用于多云部署的完整Kubernetes平台,也是一个面向Azure、Google Cloud、AWS和NetApp HCI的基于云的完整产品组合。StackPointCloud首席执行官Matt Baldwin及其团队成员积累的知识和经验也将为NetApp带来新的活力。NetApp
发表于 2018-09-28
EM78P468 NTC lcd测温设计C语言源代码
; }   Rc_t=0;  P6CR|=0x01;//用NTC充电  Rp_TO_IN;  Rc=1;  while(1)  {   if(Rp)   {    break;   }   Rc_t++;  }  WDTC();  test_temp[RC_num]=Rc_t;  RC_num++; }while(RC_num<6);  RC_num=0;  
发表于 2018-01-27
NTC热敏电阻高精度温度计程序
STC12C5406AD 晶振频率为12MHz  本程序已调试完成: 功能说明:采用廉价的NTC热敏电阻设计高精度温度计的方案, 根据NTC热敏电阻的温度特性,采用了较具新意程序算法;摆脱了传统的查表显示温度的方法, 特点:程序中无须查表,打破了常规的查表显示温度的方法。 //NTC敏电阻温度显示。 //DS18B20温度显示。 #include "stc12c5410ad.h"//头文件 #include "intrins.h" #define 
发表于 2018-01-14
ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
pt100热敏电阻+AD824S放大并由ATmega8单片机主控的测温系统仿真原理图如下ATmega8单片机源程序如下:/*****************************************************This program was produced by theCodeWizardAVR V2.03.4 StandardAutomatic Program Generator?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.Project : Version : Date    
发表于 2019-11-08
ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved