单片机课程设计之热敏电阻测温.docx

上传人:b****5 文档编号:12190371 上传时间:2023-04-17 格式:DOCX 页数:18 大小:1.06MB
下载 相关 举报
单片机课程设计之热敏电阻测温.docx_第1页
第1页 / 共18页
单片机课程设计之热敏电阻测温.docx_第2页
第2页 / 共18页
单片机课程设计之热敏电阻测温.docx_第3页
第3页 / 共18页
单片机课程设计之热敏电阻测温.docx_第4页
第4页 / 共18页
单片机课程设计之热敏电阻测温.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

单片机课程设计之热敏电阻测温.docx

《单片机课程设计之热敏电阻测温.docx》由会员分享,可在线阅读,更多相关《单片机课程设计之热敏电阻测温.docx(18页珍藏版)》请在冰豆网上搜索。

单片机课程设计之热敏电阻测温.docx

单片机课程设计之热敏电阻测温

 

JIUJIANGUNIVERSITY

单片机课程设计报告

题目热敏电阻温度采集系统设计

院系电子工程学院

专业自动化

姓名xxxx

xxxx

班级学号xxxx

指导教师xxxx

日期2012-2-23

 

目录

 

第一部分:

设计背景………………………………………3

第二部分:

系统主要功能…………………………………5

第三部分:

电路设计与参数选择…………………………5

第四部分:

系统软件设计…………………………………11

第五部分:

系统调试与仪器使用…………………………21

第六部分:

测试数据与结果分析…………………………23

第七部分:

使用说明书……………………………………23

第八部分:

总结…………………………………………24

 

热敏电阻温度采集系统设计

摘要

温度在人类的生活中扮演着极其重要的角色,在冶金、钢铁、石化、水泥、玻璃、医药等行业温度的测量及为重要。

本次课程设计采用单片机了STC12C5A60S2和10KNTC热敏电阻为核心器件来设计热敏电阻测温系统。

通过NTC热敏电阻对外界温度信号进行采集,由于热敏电阻的阻值随外界温度变化而变化,再通过测量电路把阻值的变化转换为电压的变化,利用STC12C5A60S2单片机的集成AD把采集到的模拟电压信号转换为数字信号,利用单片机对数字信号进行处理后就可以得到相应的温度值,从而完成了对温度的测量。

该系统采用了STC12C5A60S2单片机、NTC热敏电阻、共阴极数码管显示、电容、排阻、晶振、电阻等元器件。

关键字:

STC12C5A60S2单片机、热敏电阻、测温系统

第一部分

设计背景

在人类的生活环境中,温度扮演着极其重要的角色。

无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。

自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。

在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。

温度对于工业如此重要,由此推进了温度传感器的发展。

进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。

在工农业生产中,温度检测及其控制占有举足轻重的地位,随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统已经应用于诸多领域。

要达到较高的测量精度需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差等问题,使温度检测复杂化。

模拟信号在长距离传输过程中,抗电磁干扰时令设计者伤脑筋的问题,对于多点温度检测的场合,各被检测点到监测装置之间引线距离往往不同,此外,各敏感元件参数的不一致,这些都是造成误差的原因,并且难以完全清除。

单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。

采用单片机对温度采集进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控数据的技术指标,从而能够大大提高产品的质量和数量。

 

第二部分

系统主要功能

本系统测量的温度范围为2-42摄氏度,可以通过数码管直观地显示出当前温度值。

第三部分

电路设计与参数选择

1、设计原理

图1

如图1所示,当外界温度变化时,热敏电阻的阻值随着发生变化,热敏电阻上分得的电压发生变化,通过单片机的IO口和集成AD可以获得热敏电阻的电压值为V,通过计算得出热敏电阻的阻值变化规律R=V*R1/(5-V)。

由于热敏电阻的阻值与温度有表1的对应关系,将各对应值用数组形式写入程序,通过查表便可以得到此时外界的温度值。

温度(摄氏度)

阻值(千欧姆)

温度(摄氏度)

阻值(千欧姆)

温度(摄氏度)

阻值(千欧姆)

2

25.7

17

12.6

32

7.7

3

24.6

18

12.1

33

7.4

4

23.6

19

11.6

34

7.1

5

25.5

20

11.2

35

6.9

6

21.6

21

10.7

36

6.6

7

20.7

22

10.3

37

6.4

8

19.8

23

10.0

38

6.2

9

19.0

24

9.6

39

6.0

10

18.2

25

9.2

40

5.8

11

17.4

26

8.9

41

5.6

12

16.7

27

8.8

42

5.4

13

16.0

28

8.7

43

5.2

14

15.4

29

8.6

44

5.0

15

14.8

30

8.5

45

4.8

16

14.2

31

8.4

46

4.6

表1

2、硬件电路

图2

3、元器件选用及连接

元件号

元件名称

元件说明

1

电源

5V

2

电阻R1

10K

3

热敏电阻R

10K

4

电容C3

10uF

5

电阻R2

4.7K

6

电容C1

30pF

7

电容C2

30pF

8

晶振X1

12MHZ

9

排阻RP1

10KX8

10

数码管

8段共阴

11

单片机

STC12C5A60S2

表2

系统所用的元器件及说明如表2所示。

引脚连接安排为:

P1.1引脚接热敏电阻,RST引脚接复位电路,X1、X2连接用来起振,P2.7-P2.4引脚接数码管的1、2、3、4,P0.0-P0.7引脚接数码管的abcdefgh和10K的排阻。

4、硬件选用

⒈热敏电阻的选用

热敏电阻器的热敏电阻有电阻值随温度升高而升高的正温度系数(简称PTC)热敏电阻和电阻值随温度升高而降低的负温度系数(简称NTC)热敏电阻。

NTC热敏电阻器,是一种以过渡金属氧化物为主要原材料,采用电子陶瓷工艺制成的热敏半导体陶瓷组件。

这种组件的电阻值随温度升高而降低,利用这一特性可制成测温、温度补偿和控温组件,又可以制成功率型组件,抑制电路的浪涌电流。

电阻温度特性可以近似地用下式来表示:

R=R*EXP[B*(1/T-1/T)]式中:

RT、RN分别表示NTC在温度T(K)和额定额定温度TN(K)下的电阻值,单位Ω,T、TN为温度,单位K(TN(k)=273.15+TN(℃))。

B,称作B值,NTC热敏电阻特定的材料常数(Beta)。

由于B值同样是随温度而变化的,因此NTC热敏电阻的实际特性,只能粗略地用指数关系来描述,所以这种方法只能以一定的精度来描述额定温度或电阻值附近的有限的范围。

电阻-温度关系:

NTC热敏电阻器CWF2-502F3950各温度点的电阻值,即电阻-温度关系表。

NTC热敏电阻器CWF2-502F3950的测温范围为[-55℃,125℃],其电阻值的变化范围为[250062Ω,242.64Ω]。

如表1所示,列举了2-42摄氏度的电阻-温度关系。

⒉STC12C5A60S2单片机的选用及单片机资源安排

2.1STC12C5A60S2概述

本次课程设计核心元件是单片机STC12C5A60S2,下面对STC12C5A60S2做简单的概述。

2.1.1基本构造

STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储区(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振动器和外部晶振等模块。

STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片内系统。

单片机STC12C5A60S2的基本构造如图3所示:

图3

2.1.2性能特点

60KB的Flash片内程序存储器、256字节的内部随机存取数据存储器(RAM)、1024字节的外部存储器、1K字节的数据Flash存储(EEPROM)、ISP(在系统可编程)/IAP(在应用可编程)、看门狗、内部集成MAX810专用复位电路、外部掉电检测电路、时钟源:

外部精度晶体/时钟,内部R/C振荡器、4个16位定时器、3个时钟输出口、7个外部中断I/O口、PWM(2路)/PCA(可编程计数器阵列,2路)、A/D转换,10位精度ADC,共8路.

2.1.3STC12C5A60S2单片机资源利用

本次课程设计,主要应用了STC12C5A60S2单片机中中央处理器(CPU)、高速A/D转换、外部晶振等模块。

第四部分

C语言程序流程图及代码

主函数流程图:

 

AD中断流程图:

数码管显示

 

系统C程序代码:

Config.h代码:

#ifndef_CONFIG_H_

#define_CONFIG_H_

#include

#defineFOSC12000000L

#defineADC_POWER0x80

#defineADC_FLAG0x10

#defineADC_START0x08

#defineADC_SPEEDLL0x00

#defineADC_SPEEDL0x20

#defineADC_SPEEDH0x40

#defineADC_SPEEDHH0x60

#defineADC_POSITION1//AD通道位置0-7

#defineNUX_DATAP0//数码管段选

#defineNUX_SEGP2//数码管位选

voidDelay_ms(unsignedintms);//延时函数

voidInitADC();//初始化AD功能

#endif

Main.c代码:

#include"config.h"

unsignedintcodeTtable[42][2]={2,257,3,246,4,236,5,225,6,216,7,2078,1989,19010,18211,17412,16713,16014,15415,14816,14217,13618,13119,12620,12121,11622,11223,10724,10325,10026,9627,9228,8929,8630,8231,8032,7733,7434,7135,6936,6637,6438,6239,6040,5841,5642,5443,52};//此数组保存热敏电阻的温度值(从2-43摄氏度),超出无效

unsignedcharcodeTableDATA[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F/*0-9*/,0x00/*无*/,0x02,0x39,}

//数码管数字0-9

unsignedcharcodeTableSEG[4]={0xEF,0xDF,0xBF,0x7F};

//数码管位置0-3

unsignedcharshow[4];

//定义温度全局

/********************************************

**函数名称:

voidDelay_ms(unsignedintms)

**功能描述:

延时函数

**输 入:

unsignedintms延时时间

**输 出:

**全局变量:

**调用模块:

**********************************************/

voidDelay_ms(unsignedintms)

{

for(;ms>0;ms--);

}

/*****************************************************

**函数名称:

voidadc_isr()interrupt5

**功能描述:

AD中断,获取AD数据

**输 入:

**输 出:

show

**全局变量:

show

**调用模块:

Delay_ms

********************************************************/

voidAdc_isr()interrupt5

{

unsignedchari;

unsignedintm;

m=ADC_RES;

//计算此时热敏电阻阻值

m=(100*m)/(255-m);

//计算此时的温度值

for(i=41;i<42;i--)

{

if(m>=Ttable[i][1]&&m

{

show[0]=(Ttable[i][0]+1)/10;

show[1]=(Ttable[i][0]+1)%10;

show[2]=11;

show[3]=12;

break;

}

}

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ADC_POSITION;//重新使能AD转换

}

/******************************************************

**函数名称:

voidInitADC()

**功能描述:

初始化AD功能

**输 入:

**输 出:

**全局变量:

**调用模块:

Delay_ms

*********************************************************/

voidInitADC()

{

P1ASF=0xff;

ADC_RES=0;

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|1;//使能P11为AD输入

IE=0xa0;

Delay_ms(20);

}

main()

{

unsignedchari,j;

InitADC();

while

(1)

{

for(j=255;j>0;j--)

{

for(i=0;i<4;i++)

//数码管扫描

{

NUX_SEG=TableSEG[3-i];

NUX_DATA=TableDATA[show[i]];

Delay_ms(100);

NUX_DATA=0x00;

}

}

}

}

第五部分

系统调试与仪器使用

1、系统调试的仪器选用及其使用

如表3所示

仪器名称

仪器用途

万用表

检测电路的通断、短路、测量电阻、电压、电流

起子

撬下单片机

程序下载电路板

下载程序给单片机

电烙铁

修改电路板上的错误

电脑

用来编写程序、修改程序,仿真等

表3

2、系统调试及调试故障的检测与分析

第一步用下载程序的电路板和电脑给单片机下载编写好的程序

第二步将下载好的单片机安装在设计的电路板上,给电路板接上5V的电源(接上电源后,数码管没有显示。

分析:

电路出现短路或者断路或者连线有误;检测:

用万用表测量单片机正负引脚有电压,测量各引脚之间的电阻,核对电路图及其电路板上的连线,一切正常。

分析:

电路板焊接无误,程序出现问题)

第三步在电脑上修改原有的程序,并且将程序下载到下载电路板上,用下载电路板上的热敏电阻测温系统进行检测(修改程序后,数码管有显示,但是没有规律分析:

程序出现错误)

第四步在电脑上继续修改原有的程序,并且将程序下载到下载电路板上,用下载电路板上的热敏电阻测温系统进行检测(修改程序后,数码管有显示,且运行正常)

第五步将修改好的程序用下载程序的电路板和电脑下载到单片机(数码管显示正常,但是与下载电路板上的热敏电阻测温系统有1摄氏度的温度差距,并且显示的温度数字不停地左右跳动分析:

实际电路使用的电阻和程序里给定的电阻有差距,A/D转换扫描的频率太快;检测:

修改程序,将温度计算公式加1,减小A/D转换扫描的频率)

第六步将修改好的程序用下载程序的电路板和电脑下载到单片机(成功正确显示)

 

第六部分

测试数据与结果分析

1、测试数据

①让该热敏电阻测温系统处于空气中时,温度显示为12摄氏度左右

②当在该热敏电阻上用吹风机吹冷风时,温度显示9摄氏度左右

③当在该热敏电阻上用吹风机吹热风时,温度显示25摄氏度左右

④用手触摸该热敏电阻时,温度显示17摄氏度左右

2、结果分析

该热敏电阻测温系统能够正常工作,且灵敏度比较高,但是显示温度不太稳定,会有数据的稍微跳动,总体来说是合格的。

第七部分

使用说明书

1、使用说明

该热敏电阻测温系统测量温度在2-42摄氏度范围内,超出范围则无效,主要用于室内测温。

该热敏电阻测温系统能显示温度数据和温度单位符号,但是只能显示温度数据的整数部分,所以不能用于高精度的温度测量。

该热敏电阻测温系统所接电源为5V,切记不可接12V等电源,以免烧坏单片机。

2、系统软件和应用软件列表

主要用到的软件有ISPLAY,PROTEUS,KEIL4

3、参考资料

[1]杨路明.C语言程序设计教程.北京邮电大学出版社

[2]童诗白.

模拟电子技术基础.高等教育出版社

[3]阎石.数字技术基础第五版.高等教育出版社

4、小组成员及所做的工作

xxx:

负责电路焊接及电路调试与检测

xxx:

负责程序编写及电路调试与检测

xxx:

负责报告编写及电路调试与检测

第八部分

总结

这次课程设计将单片机与传感器进行了结合跟进一步想我展示了单片机得强大功能此外还接触了模数转换器件,了解了有关AD转换的知识,同时也温习了汇编知识。

以前学习总是依赖仿真软件,现在知道做出实物出来比仿真更有效,通过这次课程设计,我希望老师上课可以多给我们讲些理论外的知识来拓宽我们的视野。

总之这次课程设计让我收获很大。

附:

实物照

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1