c语言ntc程序,单片机NTC测温程序(带小数点) - 啊和的博客
.C文件#include "ad.h"
unsigned int xdata sAD1[10] ;
unsigned int xdata AD_Value;
unsigned int xdata TEMP_WENDU;
unsigned char xdata Error_Code;
bit Erroring;
bit AD_OK;
unsigned int xdata AD_TABLE[]=
{
3783 //0
, 3768 //1
, 3752 //2
, 3736 //3
, 3719 //4
, 3702 //5
, 3684 //6
, 3665 //7
, 3646 //8
, 3627 //9
, 3606 //10
, 3585 //11
, 3564 //12
, 3541 //13
, 3518 //14
, 3495 //15
, 3471 //16
, 3446 //17
, 3420 //18
, 3394 //19
, 3367 //20
, 3340 //21
, 3312 //22
, 3283 //23
, 3254 //24
, 3224 //25
, 3194 //26
, 3163 //27
, 3131 //28
, 3099 //29
, 3067 //30
, 3034 //31
, 3000 //32
, 2966 //33
, 2931 //34
, 2896 //35
, 2861 //36
, 2825 //37
, 2789 //38
, 2753 //39
, 2716 //40
, 2679 //41
, 2641 //42
, 2604 //43
, 2566 //44
, 2528 //45
, 2490 //46
, 2452 //47
, 2414 //48
, 2375 //49
, 2337 //50
, 2298 //51
, 2260 //52
, 2222 //53
, 2183 //54
, 2145 //55
, 2107 //56
, 2069 //57
, 2032 //58
, 1994 //59
, 1957 //60
, 1920 //61
, 1883 //62
, 1847 //63
, 1811 //64
, 1775 //65
, 1740 //66
, 1705 //67
, 1670 //68
, 1636 //69
, 1602 //70
, 1568 //71
, 1535 //72
, 1503 //73
, 1470 //74
, 1439 //75
, 1408 //76
, 1377 //77
, 1347 //78
, 1317 //79
, 1288 //80
, 1259 //81
, 1230 //82
, 1203 //83
, 1175 //84
, 1149 //85
, 1122 //86
, 1097 //87
, 1071 //88
, 1046 //89
, 1022 //90
, 998 //91
, 975 //92
, 952 //93
, 930 //94
, 908 //95
, 886 //96
, 866 //97
, 845 //98
, 825 //99
, 805 //100
, 786 //101
, 767 //102
, 749 //103
, 731 //104
, 714 //105
};
void get_adc_value(void)
{
static unsigned char adc_cnt= 0;
unsigned int xdata ad_min = 0;
unsigned int xdata ad_max = 0;
unsigned int xdata k = 0;
sAD1[adc_cnt] = Get_ADC(7);
adc_cnt++;
if (adc_cnt == 6)
{
ad_min = sAD1[0];
ad_max = sAD1[0];
k = sAD1[0];
for (adc_cnt = 1; adc_cnt
{
if (sAD1[adc_cnt]
ad_min = sAD1[adc_cnt];
}
else if (sAD1[adc_cnt] > ad_max) {
ad_max = sAD1[adc_cnt];
}
k += sAD1[adc_cnt];
}
k -= ad_min;
k -= ad_max;
k >>= 2;
AD_Value = k;
k = 0;
adc_cnt = 0;
}
}
void Get_Temp()
{
unsigned char xdata index;
static bit Read_AD_Once;
static unsigned int xdata Difference_Value;
static unsigned int xdata AD_Value_Temp;
unsigned int xdata space,poor,val,temp_val;
if(Read_AD_Once)
{
if(AD_Value>AD_Value_Temp)
{
Difference_Value=AD_Value-AD_Value_Temp;
}
else if(AD_Value
{
Difference_Value=AD_Value_Temp-AD_Value;
}
if(Difference_Value<2)
{
AD_Value=AD_Value_Temp;
} else
{
Read_AD_Once=0;
}
}
if(Read_AD_Once==0) {
Read_AD_Once=1;
AD_Value_Temp=AD_Value;
}
for(index=0; index<105; index++) //查表
{
if(AD_TABLE[index]>AD_Value)
{
AD_OK=1;
TEMP_WENDU=index;
space=AD_TABLE[index]-AD_TABLE[index+1];//计算出两个AD值间距
poor=AD_TABLE[index]-AD_Value; //计算出此次AD值比前一个大多少
val=poor*10/space; // 计算出小数点数
TEMP_WENDU=(index*10)+val; //结合
}
}
if(AD_Value<10) //NTC短路
{
Error_Code=0xE2;
Erroring=1;
}
else if(AD_Value>4080) //NTC开路
{
Error_Code=0xE1;
Erroring=1;
}
else
{
Erroring=0;
Error_Code=0x00;
}
TEMP_WENDU=TEMP_WENDU;
if(AD_OK)
{
AD_OK=0;
/*
if(TEMP<0) TEMP=0;
if(TEMP>99) TEMP=99;*/
}
}
.H文件#ifndef _ad_h
#define _ad_h
extern unsigned char xdata Error_Code;
extern bit Erroring;
extern bit AD_OK;
extern unsigned int xdata TEMP_WENDU;
extern unsigned int xdata AD_TABLE[];
extern void get_adc_value(void);
extern void Get_Temp();
#endif
c语言ntc程序,单片机NTC测温程序(带小数点) - 啊和的博客相关推荐
- 单片机热敏电阻测温度c语言,51单片机热敏电阻测温程序.doc
//本程序是通过热敏电阻测温度(30c-50c #include #include #include #define uchar unsigned char #define uint unsigned ...
- 51单片机DS18B20测温数码管显示例程(Proteus仿真+程序)
编号:19 51单片机DS18B20测温数码管显示例程 功能描述: 本设计由STM32单片机+DS18B20温度传感器+四段数码管显示模块组成. 1.主控制器是51单片机 2.DS18B20温度传感器 ...
- pt100温度传感器c语言,pt100测温程序-LCD1602
原标题:pt100测温程序-LCD1602 #include"at89X52.h" sbit LCD_RS =P2^0; sbit LCD_RW =P2^1; sbit LCD_E ...
- stm32单片机+amg8833+红外热成像/单片机红外测温成像/stm32 amg8833红外热成像
基于stm32单片机的amg8833红外热成像/单片机红外测温成像,测温模块用的是AMG8833 IR 8x8红外热像传感器. 具体功能:可红外热成像,可以设置报警阈值,可以语音播报温度异常,单片机s ...
- fm24c16c语言程序,单片机读写24C01~24C16程序
单片机读写24C01~24C16程序,24C02 read / write process 关键字:单片机读写24C01~24C16程序 单片机读写24C01~24C16程序 AT89S52 晶振频率 ...
- 犹豫许久还是在 CSDN(程序员之家) 开通了自己的第一个博客
犹豫许久还是在 CSDN(程序员之家) 开通了自己的第一个博客 不知道为啥,我一直对博客反感. 第一篇就到这里写多了烦
- ds18b20c语言显示小数位,DS18B20多点测温(读序列,匹配序列,51单片机C程序,1602显示)...
DS18B20多点测温(读序列,匹配序列,51 C程序,1602显示) 程序一:单个读序列号.程序二,匹配并且读两个DS18B20,当然,读多个与读两个基本原理一样,只要加上其序列号等即可.本程序所有 ...
- 外设驱动库开发笔记36:NTC负温度系数热电阻测温驱动
在嵌入式产品中,温度检测非常常见.在成本比较敏感而精度要求较低时,NTC电阻是个不错的选择.在这一篇中,我们将讨论如何和设计并实现一个通用的NTC驱动,以便在后续的项目中更方便的复用. 1.功能概 ...
- 51单片机电机测速程序c语言,单片机电机测速程序
这个51单片机+电机霍尔测速程序是从一个制作成功的智能小车里面提取出来的 原理图及其源代码压缩包的下载地址:http://www.51hei.com/bbs/dpj-19526-1.html 下面是主 ...
最新文章
- 百度地图——判断一个点是否在一个区域内?
- 华为交换机ipv6默认路由配置_静态路由和默认路由的配置
- P1387 最大正方形
- iphone投屏_iPhone投屏电视机/投影仪用这个方法很简单,媲美华为PC模式
- 王道8套有变化吗_求求你别再套花艺设计公式了
- 2021富途校招后台C++
- Ros使用自定义数据通讯无法收到消息的分析和解决
- python详细安装教程-python详细安装pip教程
- 我与CSDN的2020年
- [BUG]Git Sever搭建与相关错误处理
- 6.5 XGBoost实战
- 2019牛客多校第二场F Partition problem(暴搜)题解
- 怎样成为一名优秀的运维工程师
- 性能计数器驱动_Vulkan 探密:AMD Vulkan 开源驱动源码解析-零
- 阵列信号处理 窄带信号与包络
- QQ象棋java通用版下载_QQ中国象棋
- linux查看磁盘内存cpu
- 达芬奇17新功能及安装教程
- 网格布局(固定单元格间隔,单元格、容器大小不定)布局使用
- 数据库存储手机emoji表情
热门文章
- uniapp项目启动报错Error: Cannot find module ‘webpack/lib/RuleSet
- 规则引擎Drools在贷后催收业务中的应用
- Linux 实现自动安装服务组件以及优化内核参数
- 树莓派gpio编程c语言,树莓派底层编程-GPIO篇
- Brocade博科交换机按需端口概述
- HTML5系列代码:较宽松的列间距
- 辣炒孜然鱿鱼和土豆蔬菜沙拉的做法
- 《营在微博:企业微博营销实战宝典(全彩精印)》图书信息
- Geospatial Data Science (5): Spatial autocorrelation
- 如何设置代理ip服务器地址