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值并显示温度相关推荐

  1. 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...

    <51单片机C语言蜂鸣器发声生日快乐播放程序>由会员分享,可在线阅读,更多相关<51单片机C语言蜂鸣器发声生日快乐播放程序(4页珍藏版)>请在人人文库网上搜索. 1.按键发音/ ...

  2. led的c语言程序,单片机C语言LED灯点亮程序完全版

    <单片机C语言LED灯点亮程序完全版>由会员分享,可在线阅读,更多相关<单片机C语言LED灯点亮程序完全版(7页珍藏版)>请在人人文库网上搜索. 1.1例子1第二个灯亮#inc ...

  3. c语言创建空顺序表的程序,用C语言编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。...

    #include #include #define maxsize 30 typedef int datatype; typedef struct seqlist{ datatype data[max ...

  4. C语言:利用指针编写程序,用梯形法计算给定的定积分

    题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 利用指针编写程序,用梯形法计算下列公式中的定积分: ∫100(x3+12x+1)dx ∫ 0 10 ( x 3 + 1 2 x + 1 ...

  5. keil单片机C语言输入函数,keil编写C程序是不是不能在函数内定义变量啊,求大神...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 肯定可以的:比如 程序动态显示字符 显示光标和光标闪烁打开效果 --------------------------------------------- ...

  6. 单片机c语言变频调速实验程序,单片机C语言实验例程80个

    2017-6-14 20:20 上传 点击文件名下载附件 包含以下内容: [实验10]流水灯3\ [实验11]独立按键操作方法\ [实验12]多功能按键识别\ [实验13]开关控制LED(输入输出概念 ...

  7. 单片机中段程序_单片机c语言中的一小段程序解读

    函数名称:System_CalculateSolubility()函数功能:采样ADC0832的电压值,换算成浮点数溶度值*************************************** ...

  8. 单片机定时器精准定时_用单片机C语言精确延时(定时)的方法

    最近在忙着单片机的项目,偶尔停下来小结了一下最近的收获,还是有不少可贵的收益的. 本人在闲暇的时候对单片机C语言下的各类延时程序做了下总结.由于单片机C语言下利用软件延时不容易做到精确的定时,所以很多 ...

  9. 单片机c语言NTC温度查表程序,求助 NTC热敏电阻怎么通过AD值查表显示温度

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 没分了,发个帖赚分 //ad值最大4096 //下偏rntc=(4096*上偏电阻)/4096-ad //上偏ntc=(4096-ad)*上偏电阻/ad ...

最新文章

  1. Windows搭建以太坊的私有链环境
  2. [转载红鱼儿]kbmmw 开发点滴:Authorization failed.
  3. 大剑无锋之post那么多优点,为什么还用get
  4. 【译】 WebSocket 协议第八章——错误处理(Error Handling)
  5. Magento教程 5:系统安装与备份
  6. Problem 1: Multiples of 3 and 5
  7. 使用ZooKeeper实现分布式队列、分布式锁和选举详解
  8. 2021柳州市地区高考成绩排名查询,2021年柳州所有高中排名一览表
  9. android无缝切换播放器,android 视频 无缝切换 无缝播放 surfaceview
  10. (C语言)二维整型数组的“最大点”(驻点)
  11. 动态数组 —— 框架搭建
  12. oracle时间去掉时分秒的时间_超详细的oracle修改AWR采样时间间隔和快照保留时间教程...
  13. 服务器雷达信号处理,雷达信号处理的信息几何方法
  14. 推荐系统(原理介绍)
  15. Excel列宽在哪里设置?Excel怎么设置行高和列宽
  16. 【学习体会】Lighttools8.4.0:简单光学系统实例
  17. Android系统安全 — 5.3-APK V2签名介绍
  18. Python GUI界面编程-初识
  19. 志翔亮相中国网络安全年会 终端安全要“轻管控,重感知”
  20. 计算机和正餐的英语发音,晚饭的英文,早餐,午餐,晚餐英语怎么读!

热门文章

  1. Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
  2. R语言卡方分布函数Binomial Distribution(dchisq, pchisq, qchisq rchisq)实战
  3. R计算赤信息指标(Akaike information criterion,AIC)
  4. TED+如何让压力成为朋友+如何面对压力决定你的未来
  5. python使用正则表达式删除字符串中的其它字符只保留数字和字母
  6. FSWD_BootStrap
  7. java视频为什么这么多_为什么看java教学视频教的都是javase,两者难道语言相同吗?...
  8. 查看 python 的版本 以及 python 的安装位置路径
  9. 创建windows窗口并且获得窗口句柄
  10. 二十六、二叉树--查找指定节点