.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测温程序(带小数点) - 啊和的博客相关推荐

  1. 单片机热敏电阻测温度c语言,51单片机热敏电阻测温程序.doc

    //本程序是通过热敏电阻测温度(30c-50c #include #include #include #define uchar unsigned char #define uint unsigned ...

  2. 51单片机DS18B20测温数码管显示例程(Proteus仿真+程序)

    编号:19 51单片机DS18B20测温数码管显示例程 功能描述: 本设计由STM32单片机+DS18B20温度传感器+四段数码管显示模块组成. 1.主控制器是51单片机 2.DS18B20温度传感器 ...

  3. pt100温度传感器c语言,pt100测温程序-LCD1602

    原标题:pt100测温程序-LCD1602 #include"at89X52.h" sbit LCD_RS =P2^0; sbit LCD_RW =P2^1; sbit LCD_E ...

  4. stm32单片机+amg8833+红外热成像/单片机红外测温成像/stm32 amg8833红外热成像

    基于stm32单片机的amg8833红外热成像/单片机红外测温成像,测温模块用的是AMG8833 IR 8x8红外热像传感器. 具体功能:可红外热成像,可以设置报警阈值,可以语音播报温度异常,单片机s ...

  5. fm24c16c语言程序,单片机读写24C01~24C16程序

    单片机读写24C01~24C16程序,24C02 read / write process 关键字:单片机读写24C01~24C16程序 单片机读写24C01~24C16程序 AT89S52 晶振频率 ...

  6. 犹豫许久还是在 CSDN(程序员之家) 开通了自己的第一个博客

    犹豫许久还是在 CSDN(程序员之家) 开通了自己的第一个博客 不知道为啥,我一直对博客反感. 第一篇就到这里写多了烦

  7. ds18b20c语言显示小数位,DS18B20多点测温(读序列,匹配序列,51单片机C程序,1602显示)...

    DS18B20多点测温(读序列,匹配序列,51 C程序,1602显示) 程序一:单个读序列号.程序二,匹配并且读两个DS18B20,当然,读多个与读两个基本原理一样,只要加上其序列号等即可.本程序所有 ...

  8. 外设驱动库开发笔记36:NTC负温度系数热电阻测温驱动

      在嵌入式产品中,温度检测非常常见.在成本比较敏感而精度要求较低时,NTC电阻是个不错的选择.在这一篇中,我们将讨论如何和设计并实现一个通用的NTC驱动,以便在后续的项目中更方便的复用. 1.功能概 ...

  9. 51单片机电机测速程序c语言,单片机电机测速程序

    这个51单片机+电机霍尔测速程序是从一个制作成功的智能小车里面提取出来的 原理图及其源代码压缩包的下载地址:http://www.51hei.com/bbs/dpj-19526-1.html 下面是主 ...

最新文章

  1. 百度地图——判断一个点是否在一个区域内?
  2. 华为交换机ipv6默认路由配置_静态路由和默认路由的配置
  3. P1387 最大正方形
  4. iphone投屏_iPhone投屏电视机/投影仪用这个方法很简单,媲美华为PC模式
  5. 王道8套有变化吗_求求你别再套花艺设计公式了
  6. 2021富途校招后台C++
  7. Ros使用自定义数据通讯无法收到消息的分析和解决
  8. python详细安装教程-python详细安装pip教程
  9. 我与CSDN的2020年
  10. [BUG]Git Sever搭建与相关错误处理
  11. 6.5 XGBoost实战
  12. 2019牛客多校第二场F Partition problem(暴搜)题解
  13. 怎样成为一名优秀的运维工程师
  14. 性能计数器驱动_Vulkan 探密:AMD Vulkan 开源驱动源码解析-零
  15. 阵列信号处理 窄带信号与包络
  16. QQ象棋java通用版下载_QQ中国象棋
  17. linux查看磁盘内存cpu
  18. 达芬奇17新功能及安装教程
  19. 网格布局(固定单元格间隔,单元格、容器大小不定)布局使用
  20. 数据库存储手机emoji表情

热门文章

  1. uniapp项目启动报错Error: Cannot find module ‘webpack/lib/RuleSet
  2. 规则引擎Drools在贷后催收业务中的应用
  3. Linux 实现自动安装服务组件以及优化内核参数
  4. 树莓派gpio编程c语言,树莓派底层编程-GPIO篇
  5. Brocade博科交换机按需端口概述
  6. HTML5系列代码:较宽松的列间距
  7. 辣炒孜然鱿鱼和土豆蔬菜沙拉的做法
  8. 《营在微博:企业微博营销实战宝典(全彩精印)》图书信息
  9. Geospatial Data Science (5): Spatial autocorrelation
  10. 如何设置代理ip服务器地址