• y, 3) p = np.poly1d(f) print('p is :\n', p) yf=np.polyval(f, x) plt.figure() plt.scatter(x, y, c='r') plt.plot(x, yf) plt.show() 长这样，几乎就是一条直线， 多项式表达式，把这个表达式灌入单片机即可，...
作者
QQ群：852283276 微信：arm80x86 微信公众号：青儿创客基地 B站：主页 https://space.bilibili.com/208826118
参考

matplotlib之散点图 python 对于任意数据和曲线进行拟合并求出函数表达式的三种方案。 numpy.linspace()等差数列函数

方法
首先测得不同温度下对应的电压，这样的通过ADC测出电压就可以反推出温度，首先用python绘图，看看情况，安装matplotlib，会自动安装numpy, cycler, python-dateutil, kiwisolver, pyparsing, matplotlib
# pip uninstall matplotlib
PS C:\dog\program\fj\dcl4\prj\python> pip install matplotlib
Collecting matplotlib
|████████████████████████████████| 9.1MB 159kB/s
Collecting numpy>=1.11 (from matplotlib)
|████████████████████████████████| 12.8MB 285kB/s
Collecting cycler>=0.10 (from matplotlib)
Collecting python-dateutil>=2.1 (from matplotlib)
|████████████████████████████████| 235kB 117kB/s
Collecting kiwisolver>=1.0.1 (from matplotlib)
|████████████████████████████████| 61kB 231kB/s
Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 (from matplotlib)
|████████████████████████████████| 71kB 143kB/s
Requirement already satisfied: six in c:\users\qinge\appdata\roaming\python\python37\site-packages (from cycler>=0.10->matplotlib) (1.12.0)
Requirement already satisfied: setuptools in c:\users\qinge\appdata\local\programs\python\python37\lib\site-packages (from kiwisolver>=1.0.1->matplotlib) (40.6.2)
Installing collected packages: numpy, cycler, python-dateutil, kiwisolver, pyparsing, matplotlib
Successfully installed cycler-0.10.0 kiwisolver-1.1.0 matplotlib-3.1.1 numpy-1.17.0 pyparsing-2.4.2 python-dateutil-2.8.0

编写绘图程序，采用多项式拟合，
import matplotlib.pyplot as plt
import numpy as np

x = [0.376, 0.397, 0.42 , 0.443, 0.465, #-24 -20
0.49 , 0.516, 0.543, 0.571, 0.6,   #-19 -15
0.631, 0.662, 0.695, 0.728, 0.763, #-14 -10
0.799, 0.836, 0.874, 0.913, 0.953, #-9  -5
0.994, 1.037, 1.08 , 1.124, 1.17,  #-4   0
1.216, 1.263, 1.312, 1.361, 1.41,  # 1   5
1.461, 1.512, 1.564, 1.617, 1.67,  # 6   10
1.724, 1.778, 1.833, 1.888, 1.943, # 11  15
1.999, 2.054, 2.11 , 2.166, 2.222, # 16  20
2.278, 2.334, 2.389, 2.445, 2.5,   # 21  25
2.555, 2.609, 2.663, 2.717, 2.77,  # 26  30
2.822, 2.874, 2.926, 2.976, 3.026, # 31  35
3.076, 3.124, 3.172, 3.219, 3.265,
3.31 , 3.355, 3.398, 3.441, 3.483,
3.524, 3.564, 3.603, 3.642, 3.679,
3.716, 3.752, 3.787, 3.821, 3.854,
3.887, 3.918, 3.949, 3.979, 4.008,
4.036, 4.064, 4.091, 4.117, 4.142,
4.167, 4.191, 4.214, 4.237, 4.259,
4.28 , 4.301, 4.321, 4.34 , 4.359]
y = np.arange(-24, 76, 1.0)
f = np.polyfit(x, y, 3)
p = np.poly1d(f)
print('p is :\n', p)
yf=np.polyval(f, x)
plt.figure()
plt.scatter(x, y, c='r')
plt.plot(x, yf)
plt.show()

长这样，几乎就是一条直线，  多项式表达式，把这个表达式灌入单片机即可，
PS C:\dog\program\fj\dcl4\prj\python> python .\temperature.py
p is :
3         2
1.854 x - 12.44 x + 44.69 x - 38.15

展开全文
• 51单片机热敏电阻测温数码管显示keil工程文件C源文件，数码管显示热敏读出的温度
• 51单片机热敏电阻测温查表程序
• 51单片机热敏电阻测温程序.doc
• 热敏电阻测温小程序，关键是成本低。简单方便，又实用
• 视频演示地址： 本设计是由STM32F103C8T6为主控芯片热敏电阻测温液晶1602显示报警设计 开机显示测量温度当高出设定值后蜂鸣器报警 按键可调整报警值
视频演示地址：https://www.bilibili.com/video/BV1yh411Y7jJ/
本设计是由STM32F103C8T6为主控芯片热敏电阻测温液晶1602显示报警设计 开机显示测量温度当高出设定值后蜂鸣器报警 按键可调整报警值
展开全文
• 基于单片机热敏电阻测温设计， 本资源是基于单片机热敏电阻测温设计，下载附件包括基于单片机热敏电阻测温电路原理图
• 基于单片机热敏电阻测温设计， 本资源是基于单片机热敏电阻测温设计，下载附件包括基于单片机热敏电阻测温电路PCB文件
• 基于单片机热敏电阻测温设计， 本资源是基于单片机热敏电阻测温设计，下载附件包括基于单片机热敏电阻测温设计任务书
• 基于单片机热敏电阻测温设计。 本资源是基于单片机热敏电阻测温设计，下载附件是C语言代码。
• 基于单片机热敏电阻测温设计， 本资源是基于单片机热敏电阻测温设计，下载附件包括基于单片机热敏电阻测温电路原理图和PCB图
• 基于单片机热敏电阻测温设计开题报告。本资源是基于单片机热敏电阻测温设计，下载包含开题报告，仅供参考。
• 本设计以51系列单片机STC89C52为控制核心，以液晶显示模块、键盘为人机接口，负温度系数热敏电阻器（NTC）为采样传感器，实现了一个基于51单片机热敏电阻测温设计。 附件为C代码。
• 基于单片机热敏电阻测温设计 1.基本功能 1）具有声光报警功能； 2）使用液晶显示； 3）温度上、下限报警值设定；温度上、下限报警； 4）手动方式设定温度上下限； 总体方案设计 温度控制系统主要由温度传感器...
基于单片机的热敏电阻测温设计
1.基本功能 1）具有声光报警功能； 2）使用液晶显示； 3）温度上、下限报警值设定；温度上、下限报警； 4）手动方式设定温度上下限；
总体方案设计
温度控制系统主要由温度传感器（热敏电阻），A/D转换器，单片机（STC12C5A60S2），按键设置和液晶显示显示组成。

主函数
void main()
{
LCD1602_cls();
TMOD=0x01;
TH0=0x4c;
TL0=0x00;
ET0=1;
TR0=1;
EA=1;
if(temp_h>99||temp_l>99||temp_l>=temp_h)
{
temp_h=30;
temp_l=10;
}
while(1)
{
temp=(int)(temp * 0.5) + (TempCalculate(Rad,3950.0,0,10000.0) * 0.5);
show();		 //显示函数
key();		 //按键处理程序
proc();		 //超限处理程序
}
}

按键检测
void key()
{

if(!key_1)
{
delay(888);
if(!key_1)
{
state=(state+1)%3;
while(!key_1);
}
}
if(state!=0)
{
if(!key_2)
{
delay(888);
if(!key_2)
{
while(!key_2) show();
switch(state)
{
case 1:
if(temp_h<99)temp_h++;
SectorErase(0x2000);	 //保存上限值
byte_write(0x2000,temp_h);
break;
case 2:
if(temp_h>temp_l+1)temp_l++;
SectorErase(0x2200);	 //保存上限值
byte_write(0x2200,temp_l);
break;
}
}
}
if(!key_3)
{
delay(888);
if(!key_3)
{
while(!key_3) show();
switch(state)
{
case 1:
if(temp_h>temp_l+1)temp_h--;
SectorErase(0x2000);	 //保存上限值
byte_write(0x2000,temp_h);
break;
case 2:
if(temp_l>-40)temp_l--;
SectorErase(0x2200);	 //保存上限值
byte_write(0x2200,temp_l);
break;

}
}
}
}
}


数据显示
void show()			//显示数据
{

LCD1602_write(0,0x80);
LCD1602_writebyte("Temp:");
if(temp>=0)
{
if(temp>99)LCD1602_write(1,0x30+temp/100%10);
else LCD1602_writebyte(" ");
if(temp>9)LCD1602_write(1,0x30+temp/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+temp%10);
}else
{
LCD1602_writebyte("-");
if(temp*-1>9)LCD1602_write(1,0x30+(temp*-1)/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+(temp*-1)%10);
}
LCD1602_write(1,0xdf);
LCD1602_writebyte("C   ");

LCD1602_write(0,0xC0);
LCD1602_writebyte("H:");
if(state==1&&s1==1)
{
LCD1602_writebyte("   ");
}else
{

if(temp_h>=0)
{
if(temp_h>99)LCD1602_write(1,0x30+temp_h/100%10);
else LCD1602_writebyte(" ");
if(temp_h>9)LCD1602_write(1,0x30+temp_h/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+temp_h%10);
}else
{
LCD1602_writebyte("-");
if(temp_h*-1>9)LCD1602_write(1,0x30+(temp_h*-1)/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+(temp_h*-1)%10);
}
}
LCD1602_write(1,0xdf);
LCD1602_writebyte("C L:");
if(state==2&&s1==1)
{
LCD1602_writebyte("   ");
}else
{
//			LCD1602_write(1,0x30+temp_l/10%10);
//			LCD1602_write(1,0x30+temp_l%10);

if(temp_l>=0)
{
if(temp_l>99)LCD1602_write(1,0x30+temp_l/100%10);
else LCD1602_writebyte(" ");
if(temp_l>9)LCD1602_write(1,0x30+temp_l/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+temp_l%10);
}else
{
LCD1602_writebyte("-");
if(temp_l*-1>9)LCD1602_write(1,0x30+(temp_l*-1)/10%10);
else LCD1602_writebyte(" ");
LCD1602_write(1,0x30+(temp_l*-1)%10);
}
}
LCD1602_write(1,0xdf);
LCD1602_writebyte("C");

}


展开全文
• 单片机在电子产品中的应用已经越来越广泛，在很多的电子产品中也用到了...　RT为100K－精度为1％的热敏电阻； 　R1为100Ω的普通电阻； 　C1为0.1μ的瓷介电容。 　其工作原理为： 　1.先将P1.0、P1.1、P1.2都设
• 本设计以51系列单片机STC89C52为控制核心，以液晶显示模块、键盘为人机接口，负温度系数热敏电阻器（NTC）为采样传感器，实现了一个基于51单片机热敏电阻测温设计。
1、设计需求及目标
具有温度上下限范围，并可以手动调整；
初始化后显示温度信息与上下限信息；  模数转换芯片使用分辨率10位以上A/D芯片；  采用液晶显示；
2、设计思路及方案
本设计以51系列单片机STC89C52为控制核心，以液晶显示模块、键盘为人机接口，负温度系数热敏电阻器（NTC）为采样传感器，实现了一个基于51单片机的热敏电阻测温设计。

资料获取请关注微信公众号“电子工程师成长日记”，回复关键词：“资料”！
展开全文
• 单片机课程设计之热敏电阻测温
• 基于单片机热敏电阻测温设计， 本资源是基于单片机热敏电阻测温设计，下载附件包括基于单片机热敏电阻测温电路原理图和PCB图
• #include"eeprom52.h" //调用STC89C52单片机的EEPROM控制程序 #include "math.h" #define uchar unsigned char //宏定义 #define uint unsigned int //宏定义 #define LCD1602_dat P0 //LCD1602的数据...
• 分别接到单片机的P2.0 , P2.1上面。 为什么选这两个引脚？因为51单片机上没有IIC总线接口，需要用普通的IO模拟，所以它随便选了两个IO接上就行。 VREF是什么？基准电压，也是它能测量的最大电压。 如何...
• 所谓NTC热敏电阻器就是负温度系数热敏电阻器，即就是电阻值随着温度上升而迅速下降，因此可以利用这个特性来测量温度。 2、温度计算公式 其中，T1和T2指的是K度，即开尔文温度，开氏度 = 摄氏度+273.15； Rntc是...

...