课程设计论文基于51单片机温度监测控制系统.doc

上传人:sccc 文档编号:4868147 上传时间:2023-05-20 格式:DOC 页数:18 大小:489.01KB
返回 下载 相关 举报
课程设计论文基于51单片机温度监测控制系统.doc_第1页
第1页 / 共18页
课程设计论文基于51单片机温度监测控制系统.doc_第2页
第2页 / 共18页
课程设计论文基于51单片机温度监测控制系统.doc_第3页
第3页 / 共18页
课程设计论文基于51单片机温度监测控制系统.doc_第4页
第4页 / 共18页
课程设计论文基于51单片机温度监测控制系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《课程设计论文基于51单片机温度监测控制系统.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于51单片机温度监测控制系统.doc(18页珍藏版)》请在三一办公上搜索。

1、基于51单片机温 度 监 测 控 制 系 统目 录一.概述.11.1前言.11.2基本功能与参数.1二.系统总体设计1三. 系统硬件电路设计.23.1 最小系统模块 .23.1.1 电源模块23.1.2 振荡电路与复位电路.23.2 DS18B20与单片机的接口电路.33.3 独立键盘模块 .33.4 报警模块.33.5 数码管显示模块.43.6 proteus仿真图.43.7 DS18B20简单介绍.5四. 系统程序设计.64.1 系统主程序流程图.64.2 读出温度子程序流程图.74.3 温度转换命令子程序.74.4 计算温度子程序.84.5 按键扫描处理子程序.8五. 总结.9参考文献.

2、9附录.10一.概述1.1前言传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。本设计选用STC89C52型单片机作为主控制器件,DS18B20作为测温传感器,通过LED数码管实现温度显示。通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0100最大线性偏差小于0.01。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据

3、传输与处理过程。1.2 基本功能与参数(1)系统基本功能 a.实现温度的实时测量与显示。b.可手动设置监测温度范围的上限和下限。c.超出温度监测范围,可进行声光报警或执行预定操作。(2)参数a. DS18B20 的温度测量范围为 -55C+125C,在-10C+85C 范围内,精度为0.5Cb.显示温度值精确到0.1C,监测温度精确到1Cc精度误差小于0.5二.系统总体设计本设计的温度测量报警系统以 STC89C52 单片机为核心部件,外加温度采集电路、键盘及显示电路、越限报警等电路。采用数字温度芯片DS18B20 测量温度,输出信号全数字化。由数字温度计DS18B20和STC89C52单片机

4、构成的温度测量装置,它直接输出温度的数字信号。利用STC89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,快速测量环境温度,并可以根据需要设定上下限温度。系统框图如图1所示。时钟振荡电路STC89C52复位电路电源电路LED报警显示LED数码管显示蜂鸣器报警键盘调整控制模块DS18B20温度传感器图1 DS18B20温度测温系统框图三、 硬件设计3.1 单片机最小系统设计3.1.1 电源电路图2 电源电路3.1.2 振荡电路与复位电路晶振采用12MHZ。复位电路采用上电加按钮复位。 图3 振荡电路 图4 复位电路3.2 DS18B20与单片机的接口电路图5 DS18B20与单片

5、机的接口电路3.3独立式键盘电路图6 独立式键盘电路3.4报警模块图7 报警电路3.5 数码管显示模块显示电路采用4位共阴极LED数码管,P0口由上拉电阻提高驱动能力,作为段码输出并作为数码管的驱动。P2口的低四位作为数码管的位选端。采用动态扫描的方式显示。图8 数码管显示电路 3.6 proteus仿真图图9 proteus仿真图3.7 DS18B20简单介绍DS18B20 的性能特点如下独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温DS18

6、B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电温范围55125,在-10+85时精度为0.5零待机功耗可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快用户可定义报警设置报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,

7、具有极强的抗干扰纠错能力负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图11所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。图 10 外部封装形式四 软件设计系统程序主要包括主程序、读取温度子程序、温度转换命令子程序、计算温度子程序、按键扫描处理子程序、显示数据子程序等。4.1 主程序流程图初

8、始化读取温度SET键是否按下读出温度值温度计算处理显示数据刷新发温度转换开始命令NY调用显示子程序设置报警温度主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图11所示。图11 主程序流程图4.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图12所示。4.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待

9、转换的完成。温度转换命令子程序流程图如上图,图13所示。Y发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束 图13 温度转换流程图图12 读温度流程图4.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图14所示。 开始温度零下?温度值取补码置“1”标志计算小数位温度BCD值 计算整数位温度BCD值 结束置“0”标志NY图14计算温度流程图 4.5按键扫描处理子程序按键采用扫描查询方式,设置标志

10、位,当标志位为1时,显示设置温度,否则显示当前温度。如下图15示。SET键按下ADD键按下DEC键按下显示切换标志位是否为“0”调用显示子程序报警温度加1报警温度减1YNYNYN图15 按键扫描处理子程序五、心得及体会: 此次实习我用单片机做一个完整的系统,在完成的过程中走了很多弯路,比如由于对硬件方面的东西尚不熟,查阅资料以及准备材料时都没有考虑到实践的可行性,在这里要特别感谢实验室的老师给予了我们耐心的指导,并给我们提出了建设性的意见。在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,虽然以前写过几次程序,但我觉的写好一个程序并不简单。正是通过这些

11、弯路我们才真正学到了不少东西。在做系统的同时,和同学们之间的相互探讨也使我获益匪浅。我们必须学会独立思考,用自己的能力去完成一件作品。有好多的东西,只有我们去试着做了,才能真正的掌握。!参考文献:单片机原理与应用【1】张鑫. 单片机原理与应用 电子工业出版社 2010.1【2】马忠梅,张凯,等. 单片机的C语言应用程序设计(第四版) 北京航空航天大学出版社 【3】包建华,张兴奎等.单片机原理实验与实训教程 东南大学出版社 2008.9附录:源程序如下#include#define uint unsigned int#define uchar unsigned charsbit ds = P20

12、 ;sbit dula = P26 ;sbit wela = P27 ;sbit beep = P21 ;sbit SET1 = P22; /定义上限显示调整键sbit DEC = P23; /定义增加减少键sbit ADD = P24; /定义增加减少键sbit SET2= P25; /定义下限显示调整键int temp ;float f_temp ;int warn_l1 = 50 ;int warn_l2 = 0 ;int warn_h1 = 300 ;int warn_h2 = 1000 ;/*xian shi */uchar code table = 0x3f,0x06,0x5b,0

13、x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x40;void delay(int z)int a,b ;for(a = 0;a z ;a+)for(b = 0;b 120; b+);void display(uchar num , uchar dat)uchar i;dula = 0;wela = 0; wela = 1;i = 0x00;i = i | (0x01)0)i-;ds = 1;i = 4;while(i0)i-;uchar temp_readbit(voi

14、d)uint i;bit dat;ds = 0;i+;ds = 1;i+;i+;i+;dat = ds;i = 8;while(i0)i-;return(dat);uchar temp_read(void)uchar i,j,dat;dat = 0;for(i = 0;i 8;i+)j = temp_readbit();dat = (j 1);return(dat);void temp_write(uchar dat)uint i;uchar j;bit testb;for(j = 1;j 1;if(testb)ds = 0;i+;i+;i+;ds = 1;i =8;while(i0)i-;e

15、lseds = 0;i = 8;while(i0)i-;ds = 1;i+;i+;void temp_change(void)ds_reset();delay(1);temp_write(0xcc);temp_write(0x44);uint get_temp()uchar a,b;EA = 0;ds_reset();delay(1);temp_write(0xcc);temp_write(0xbe);a = temp_read();b = temp_read();temp = b;temp warn_l2)&(t = warn_l1)warn(10,0x01);else if(t = war

16、n_l2)warn(1,0x02);else if(t = warn_h1)warn(10,0x04);else if(t = warn_h2)warn(1,0x08);elsei = 40;while(i-)dis_temp(get_temp();/*报 警 监 测 显 示*/void bjxs(int a)int x,y,z;x=a/100; /计算得到shi位数字display(5,x); y=a/10-x*10; /计算得到ge位数字display(6,y+10);z=a-x*100-y*10; /计算得到xiao数display(7,z);/*键盘 扫描*/void key() if

17、(SET1 = 0) delay(100);if(SET1 = 0)while(SET1 = 0)bjxs( warn_h1); if(ADD=0&SET1=0) if(ADD=0&SET1=0) while(ADD=0)bjxs( warn_h1);warn_h1 = warn_h1+10; if(warn_h11000)warn_h1 = 1000;bjxs( warn_h1); else if(DEC=0&SET1=0) if(DEC=0&SET1=0)while(DEC=0)bjxs( warn_h1);warn_h1 = warn_h1-10; if(warn_l1warn_h1)w

18、arn_h1=warn_l1;bjxs( warn_h1); if(SET2 = 0) delay(100);if(SET2 = 0)while(SET2 = 0)bjxs( warn_l1); if(ADD=0&SET2=0) if(ADD=0&SET2=0) while(ADD=0)bjxs( warn_l1);warn_l1 = warn_l1+10; if(warn_l1warn_h1)warn_l1 = warn_h1;bjxs( warn_l1); else if(DEC=0&SET2=0) if(DEC=0&SET2=0)while(DEC=0)bjxs( warn_l1);warn_l1 = warn_l1-10; if(warn_l10)warn_l1=0; bjxs( warn_l1); void scan() int i;temp_change();deal(temp);for(i = 0;i 10;i+)dis_temp(get_temp(); EA = 1;void timer0(void)interrupt 1 key(); TH0 = (65536-10000)/256;TL0 = (65536-10000)%256; void main()dula = 0;wela = 0;init_com();while(1)scan();

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号