单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度
STM32查表法读NTC值并显示温度
#include "stm32f10x.h"Y'+F0IZ+
#include "delay.h"pU'`9fLi_
#include "sys.h"tOlzOBzR
&j
wnM
#include "led.h"|{}d5Z"5;}
#include "key.h"P"h,[{Y*>
#include "lcd1602.h"{U+9,6.`
#include "fan.h"5Fl
#include "adc.h"
#include "ntc.h"hz>yv@1
0N}
wD-
Cx1Sh#9
3qV>TE]6,
eW }jS/g`
//#include "motor.h"K_w0+oYa
//************************************************************************JVIcNK)
rwV u?W
//#define OVER_MENU 10 //定义一个数,判断这个数是否需要退出菜单设置l,FG:"`Z@
L;(3u'
//vu8 auto_return=0;Rp4BU"&sU
=O}%bZ)Q
L{o >D"
/********************** Hhce:E@K
* 目录结构体定义 * tr67ofld|
**********************/ _,-M8=dL%*
/*UU:QK{{E
struct MenuItemw!GU~0~3[
{ hnfrnYH
unsigned char MenuCount; //当前层节点数A)`fD
%+
unsigned char *DisplayString; //菜单标题Z({`9+/>u
void (*Subs)(); //节点函数]aMa*fF
struct MenuItem *ChildrenMenus; //子节点)uv$tnP*
struct MenuItem *ParentMenus; //父节点fAA@ziKg
}; :8GxcqvCWq
-^nQ^Td=j
/*********************** :O@,Z_"
* 调用子函数区 * ;r@R (Squ
********************** */ JXa%TpI:
E
/*4*2>R8SX~
void NullSubs(void) l.W 1$g
{ =w>>7u$4
Ul~}@^m]4}
}URzE+8m^
M6 >\R$
[2fiHE
gQzJ2LU(
void MotorSetPWM(void)DuCu6j
{ HuLm!tCu
7!QXh;u
//不分频。PWM频率=72000000/900=80KhzsB1tce
//delay_ms(10); BrH`:Dw
TIM_SetCompare2(TIM4,100);cd%g]T)#1
2W-NCE%K)T
}f`";Q/rG
p-03V"^&
/*********************W&re;?Z{ke
@^4M~F%
//------------------------------------------------------------------------------3b/vyZF
/*********************** ;cHI3V
* 结构体区 * kk7:A0._
***********************/ /v ;Kb|e
//----------------------以下为例子,请根据实际情况修改---------------------------n[w,x;
/*CzsY=DBH=
struct MenuItem TimeMenu[4];oX]1>#5UMg
struct MenuItem UvlampMenu[4];+Q#Qu0_
struct MenuItem UvfanMenu[4];F>-@LOqHy
struct MenuItem MotorMenu[5];,ce^"yG
struct MenuItem MainMenu[5];eJ\j{-
pxnUe1=
Y,Zv0-"
struct MenuItem TimeMenu[4]=&-)Y[#\J
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenus1kw4'#J8
{4, "1.Time Set", NullSubs, Null, MainMenu},.t%Vx
{4, "2.OFF", NullSubs, Null, MainMenu},~ai'
M#
{4, "3.ON", NullSubs, Null, MainMenu},HnY"6gTNK
{4, "4.Back", NullSubs, MainMenu, MainMenu},DT]p14@t9
}; B]}V$*$\?
]M"'qC3g
r{jD,x2
struct MenuItem UvlampMenu[4]=Ck a]F2,
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenusNn7@+g)
{4, "1.UVlamp Set", NullSubs, Null, MainMenu},|(ju!&
{4, "2.OFF", UVlampSetOFF, Null, MainMenu},]TprPU39
{4, "3.ON", UVlampSetON, Null, MainMenu},/
{4, "4.Back", NullSubs, MainMenu, MainMenu},{hP&P
}; )P+GklI{4
'm?x2$u8
struct MenuItem UvfanMenu[4]=&_hCs![
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenusnL20}"$E
{4, "1.UVfan Set" , NullSubs, Null, MainMenu},c^gIK1f-
{4, "2.OFF", UVfanSetOFF, Null, MainMenu},D)Rf
{4, "3.ON", UVfanSetON, Null, MainMenu},z(68^-V=:
{4, "4.Back", NullSubs, MainMenu, MainMenu},Hu2g (!
}; Bzt`9lg
la 7QNQW
struct MenuItem MotorMenu[5]=F76h
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenusfR;_6?p*B
{5, "1.Motor Set", NullSubs, Null, MainMenu},ZTC1t_
{5, "2.Turnleft", MotorSetTurnleft, Null, MainMenu},]7
mSM
{5, "2.TurnRight", MotorSetTurnRight, Null, MainMenu},d+ko"F|
{5, "4.OFF", MotorSetOFF, Null, MainMenu},shvcc
{5, "5.Back", NullSubs, MainMenu, MainMenu},Y.
tFqzo3
}; y.
'Rw]
C[
struct MenuItem MainMenu[5]=3(p6ak2lv
{ //MenuCount DisplayString Subs ChildrenMenus ParentMenus*uM*)6O3
{5, "1.Time Set" , NullSubs, TimeMenu, Null},g$LwXfg
{5, "2.UVlamp Set", NullSubs, UvlampMenu, Null},0J`/g H
{5, "3.UVfan Set", NullSubs, UvfanMenu, Null},k(+u"T
{5, "4.Motor Set", NullSubs, MotorMenu, Null},#;]F:TlR
{5, "5.Back", NullSubs, MainMenu, MainMenu},CxQ,yd;>
};>iJuR.:OO
5)
shZ
//------------------------------------------------------------------------------uNBhVsM6<
X0TGJ,yW(
/*********************** 7E)7sd
* 全局变量声明区 * +N_%|!F-c
***********************/ -Sgp,"a
/*kn|l 3+
struct MenuItem (*MenuPoint) = MainMenu; //结构体指针,指向结构体后由内部函数指针指向功能函数Z`t?kXDNoI
vu8 DisplayStart = 0; //显示时的第一个菜单项y@JYkp>I
vu8 UserChoose = 0; //用户所选菜单项LdUpVO8)l
u8 DisplayPoint = 0; //显示指针}`FPe
u8 MaxItems; //同级最大菜单数giJyMd}x
vu8 ShowCount=2; //同屏显示菜单数}dl(9H=4
+,>bpp1
/*********************** hh}EDnx
*显示函数区 * zxdO3I
***********************/ |_m;@.44?U
/*e84TLU?~
void ShowMenu(void) HArYL}l
{#Qd3A
u8 n;o#6}?g.
MaxItems = MenuPoint[0].MenuCount;//定义最大同级菜单cf!R
DisplayPoint = DisplayStart;JqZ5DjI:
for(n=0;DisplayPoint
{Pc1N~?}.
if(DisplayPoint==UserChoose)UC@ "
LCD1602_Show_Str(0,n,"->");4/|=0TC;
LCD1602_Show_Str(2,n,MenuPoint[DisplayPoint++].DisplayString);^+
mo$*KNW%\
}mNKa~E
rOT8!"
}=T]OYk
?2;G_P+
l?[DO?m+R
/***********************************************************************************/bHnQLJ
A>puk2 s
vxx3^;4p
// KeyRunScan(); 0<9TyN6
// UpdateDisplay();wQcw#
// PtcRun();uX[
"w|
// FanRun();Ui&$/%Z|
-C+vmY*@
qT4s*kqr
e hq6.+l
// Motor_Init();lOui{QU
//uart_init(115200); $Vzfhj-if
//TIM4_PWM_Init(899000,0); //不分频。PWM频率=72000000/900=8Khz4KnDXQ%
//TIM_SetCompare2(TIM4,100);%ZK}y{u\
//MotorSetTurnLeft();pxj"
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); X'm2uOEj
e+[J9;g
G
w[&P%
void ERROR_CH(void)A-FwNo2"%
{}UrtDXhA
u8 temp_N,temp_F=0;f7'%AuSQ(
temp_N=Get_Adc_Average(ADC_Channel_8,30);S SXSgp
b}:Z(L,\
if (temp_N>5000)rL=$WxdPU
{nq=fSK(
LCD1602_ClearScreen();EIRf6jL
delay_ms(10);5z_)
LCD1602_Show_Str(0, 0, "SYSTEM STOP");c
z|IBsa*
LCD1602_Show_Str(1, 0, "ERROR CODE:NTC");U VT8TN-T
$m>e!P>%u
}jo^*R'}
temp_N=0;QVpZA,
while(1)i?>"}h
{|zMQe}R@%
Ledred_pro(10);!NCT)#G`
WxFjpJt
}SxDE3A-:
// 可以增加风扇自检测试5IMH G%W7
"{k3~epYaN
} (nh!tC
=EKJ!{
RjDFc:bB
1wG1\9S
v09f#t$;5
int main(void)pqe**`z@y
{ D&shrKFx
[3.rG!Na
u32 adcx;OjN]mp-q
u16 adcx_v;1f=L8Dr
u16 adc_value_16;^tv*I~>J!
float vx;1}6pq2
wb}tN7~Y;
",}VB8K
/dfZ>k8
YblRwic
u8 adcx1[2] ={ 0,0};G 1$l %B
u8 adcx2[3] ={ 0,0,0};+FiV!nRkZ
MWl@smRh
u8 adc_vcc_1[3] ={0,0,0};JI^w1I, T
// u8 adc_vcc_2[2] ={0,0};%Y@3)
zE[c$KPP
^{s)`j'I*
Pc3u`Q L?
u16 led0pwmval=0;yhIg)/?L
delay_init(); ctZW7
%;<
单片机c语言NTC温度查表程序,STM32查表法读NTC值并显示温度相关推荐
- 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...
<51单片机C语言蜂鸣器发声生日快乐播放程序>由会员分享,可在线阅读,更多相关<51单片机C语言蜂鸣器发声生日快乐播放程序(4页珍藏版)>请在人人文库网上搜索. 1.按键发音/ ...
- led的c语言程序,单片机C语言LED灯点亮程序完全版
<单片机C语言LED灯点亮程序完全版>由会员分享,可在线阅读,更多相关<单片机C语言LED灯点亮程序完全版(7页珍藏版)>请在人人文库网上搜索. 1.1例子1第二个灯亮#inc ...
- c语言创建空顺序表的程序,用C语言编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。...
#include #include #define maxsize 30 typedef int datatype; typedef struct seqlist{ datatype data[max ...
- C语言:利用指针编写程序,用梯形法计算给定的定积分
题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: ∫100(x3+12x+1)dx ∫ 0 10 ( x 3 + 1 2 x + 1 ...
- keil单片机C语言输入函数,keil编写C程序是不是不能在函数内定义变量啊,求大神...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 肯定可以的:比如 程序动态显示字符 显示光标和光标闪烁打开效果 --------------------------------------------- ...
- 单片机c语言变频调速实验程序,单片机C语言实验例程80个
2017-6-14 20:20 上传 点击文件名下载附件 包含以下内容: [实验10]流水灯3\ [实验11]独立按键操作方法\ [实验12]多功能按键识别\ [实验13]开关控制LED(输入输出概念 ...
- 单片机中段程序_单片机c语言中的一小段程序解读
函数名称:System_CalculateSolubility()函数功能:采样ADC0832的电压值,换算成浮点数溶度值*************************************** ...
- 单片机定时器精准定时_用单片机C语言精确延时(定时)的方法
最近在忙着单片机的项目,偶尔停下来小结了一下最近的收获,还是有不少可贵的收益的. 本人在闲暇的时候对单片机C语言下的各类延时程序做了下总结.由于单片机C语言下利用软件延时不容易做到精确的定时,所以很多 ...
- 单片机c语言NTC温度查表程序,求助 NTC热敏电阻怎么通过AD值查表显示温度
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 没分了,发个帖赚分 //ad值最大4096 //下偏rntc=(4096*上偏电阻)/4096-ad //上偏ntc=(4096-ad)*上偏电阻/ad ...
最新文章
- Windows搭建以太坊的私有链环境
- [转载红鱼儿]kbmmw 开发点滴:Authorization failed.
- 大剑无锋之post那么多优点,为什么还用get
- 【译】 WebSocket 协议第八章——错误处理(Error Handling)
- Magento教程 5:系统安装与备份
- Problem 1: Multiples of 3 and 5
- 使用ZooKeeper实现分布式队列、分布式锁和选举详解
- 2021柳州市地区高考成绩排名查询,2021年柳州所有高中排名一览表
- android无缝切换播放器,android 视频 无缝切换 无缝播放 surfaceview
- (C语言)二维整型数组的“最大点”(驻点)
- 动态数组 —— 框架搭建
- oracle时间去掉时分秒的时间_超详细的oracle修改AWR采样时间间隔和快照保留时间教程...
- 服务器雷达信号处理,雷达信号处理的信息几何方法
- 推荐系统(原理介绍)
- Excel列宽在哪里设置?Excel怎么设置行高和列宽
- 【学习体会】Lighttools8.4.0:简单光学系统实例
- Android系统安全 — 5.3-APK V2签名介绍
- Python GUI界面编程-初识
- 志翔亮相中国网络安全年会 终端安全要“轻管控,重感知”
- 计算机和正餐的英语发音,晚饭的英文,早餐,午餐,晚餐英语怎么读!
热门文章
- Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
- R语言卡方分布函数Binomial Distribution(dchisq, pchisq, qchisq rchisq)实战
- R计算赤信息指标(Akaike information criterion,AIC)
- TED+如何让压力成为朋友+如何面对压力决定你的未来
- python使用正则表达式删除字符串中的其它字符只保留数字和字母
- FSWD_BootStrap
- java视频为什么这么多_为什么看java教学视频教的都是javase,两者难道语言相同吗?...
- 查看 python 的版本 以及 python 的安装位置路径
- 创建windows窗口并且获得窗口句柄
- 二十六、二叉树--查找指定节点