51单片机温度传感器课程设计 .docx

上传人:牧羊曲112 文档编号:4881980 上传时间:2023-05-21 格式:DOCX 页数:20 大小:291.86KB
返回 下载 相关 举报
51单片机温度传感器课程设计 .docx_第1页
第1页 / 共20页
51单片机温度传感器课程设计 .docx_第2页
第2页 / 共20页
51单片机温度传感器课程设计 .docx_第3页
第3页 / 共20页
51单片机温度传感器课程设计 .docx_第4页
第4页 / 共20页
51单片机温度传感器课程设计 .docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机温度传感器课程设计 .docx》由会员分享,可在线阅读,更多相关《51单片机温度传感器课程设计 .docx(20页珍藏版)》请在三一办公上搜索。

1、单片机原理及应用课程设计报告51单片机与温度传感器与设计专业: 电子班级:1111名:学号:指导教师:肖金球随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所 给人带来的方便也是不可否定的,其中温度传感器就是一个典型的例子,但人 们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的 设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发 展。本设计所介绍的温度传感器与传统的温度计相比,具有读数方便,测温范 围广,测温准确,其输出温度采用数字显示,该设计控制器使用单 片机STC89S52,测温传感器使用DS18B20,用LCD实现温度显示,能准确达到

2、以上要 求。随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各 个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度 传感器。关键词:单片机,数字控制,温度传感器1.温度传感器设计内容1.1传感器三个发展阶段一是模拟集成温度传感器。该传感器是采用硅半导体集成工艺制成,因此亦称硅传感器或单片集成温度传感器。此种传感器具有功能单一(仅测量温度)、测温误差小、价格低、响应速 度快、传输距离远、体积小、微功耗等特点,适合远距离测温、控温,不需要进行非线性校 准,且外围电路简单。它是目前在国内外应用最为普遍的一种集成传感器,典型产品有AD590、 AD592、 TMP1

3、7、 LM135 等。二是模拟集成温度控制器。模拟集成温度控制器主要包括温控开关、可编程温度控制器,典型产品有LM56、AD22105和MAX6509。某些增强型集成温度控制器(例如TC652/653)中还包含了 A/D转换器以及固化好的程序,这与智能 温度传感器有某些相似之处。但它自成系统,工作时并不受微处理器的控制,这是二者的主要区别。三是智能温度传感器。智能温度传感器内部都包含温度传感器、A/D转换 器、信号处理器、存储器(或寄存器)和接口电路。有的产品还带多路选择器、 中央控制器(CPU)、随机存取存储器(RAM)和只读存储器(ROM)。智能温度传感器 的特点是能输出温度数据及相关的温

4、度控制量,适配各种微控制器(MCU);并且 它是在硬件的基础上通过软件来实现测试功能的,当然,其智能化程度也取决 于软件的开发水平。1.2设计目的通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟 悉芯片的使用,温度传感器的功能,数码显示管的使用,汇编语言的设计;并 且把我们这两年所学的数字和模拟电子技术、检测技术、单片机应用等知识, 通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选 定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观 能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献 资料查阅能力的作用,

5、为毕业设计和以后工作打下一个良好的基础。1.3设计任务和要求以MCS-52系列单片机为核心器件,组成一个温度传感器,采用数字温度传感器DS18B20为 检测器件,进行单点温度检测,检测精度为0.5摄氏度。温度显示采用LCD1602显示,两位 整数,一位小数。2.设计思路与总体框图.采用AT89S52单片机作为控制核心对温度传感器DS18B20控制,读取温度信号并进行计算 处理,并送到液晶显示器LCD1602显示。按照系统设计功能的要求,确定系统由3个模块组 成:主控制器、测温电路和显示电路。温度传感器原理图LCD1LM016L-12 3 4 5 6 7P0.0/AD0P0.1/AD1P0.2/

6、AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/TTP3.6/WR -P3.7/RDRESPACK-8图1 仿真电路图PCB版图3.温度传感器详细设计3.1管脚电路图(T2)P1.0r14D vccrrEKj pi.-匚22G PC.D (ADO)Fl.2 匚3 PD-1 (ADI)P1.3 匚437 PG.2 (ADZ)P1.4E5 PD.3

7、 (AD3.Ji:MC-SI:iF1.5Ea35 PCl4 (AC4)iMisc/Pi.er7* PD.5 (AD5)(SCK) P1.7IZ333 PB.6 (AM)RET匚自盟 PD.7 (AD7J(RXDJP3.0E1031 EA.VPP(TXD) P3.1 匚113D AL&FROQ(INTO) P3J2 匚1220 PSENiHTT:. F3.3 匚132S P2.7 ;A15(TDi F3.4 匚1427 P2.E (A14)(T日F3.5匚152B P2.5 (A 13)NR) P3.er1625Tl F*2.4 (A12)RD:. P2.7E1724 P2.3 (A11)/TA

8、L2 Eia23 P2.2 (AID)XTAL1匚1022 PM (A0)GNDE2021 P2.C (AB)图2AT89S52管脚封装3.2主要特性与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环 数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定 128*8位内部RAM 32可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路3.3管脚说明P0 口: P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电流。当P1 口的管脚第 一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可

9、以被定义为数据/地 址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码, 此时P0外部必须被拉高。P1 口: P1 口是一个内部提供上拉电阻的8位双向I/O 口,P1 口缓冲器能接收输出4TTL门 电流。P1 口管脚写入1后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输 出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1 口作为第八位地址接收。P2 : P2 口为一个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可接收,输出4个TTL 门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入

10、时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存 储器或16位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时, 它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器 的内容。P2 口在FLASH编程和校验时接收高八位地址信号和控制信号。P3 : P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门电流。当 P3 口写入“ 1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电 平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为AT89C

11、51的一些特殊功能口,如下表所示: 口管脚 备选功 能 P3.0 RXD (串行输入口) P3.1 TXD (串行输出口) P3.2 /INT0 (外部中断0)P3.3 /INT1 (外部中断1)P3.4 T0 (记时器0外部输入)P3.5 T1 (记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3 口同时为闪烁编程和编程校验接收一些控制信号.RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH编程期间,此引脚用于输入编

12、程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外 部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC 指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置 位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 /PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程

13、序存储器(0000H-FFFFH),不管是否有 内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间 内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源 (VPP)。XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 :来自反向振荡器的输出。4.温度传感器模块图3 DS18B2 0相关资料4.1DS18B20原理与分析DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型 智能温度传感器。与传统的热敏电阻相比,它能够直接读出被测温度并且可根 据实际要求通过简单的编程实现912位的数字值读数方

14、式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息 或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于 数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而 使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时 间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便 的使用和更令人满意的效果。以下是DS18B20的特点:(1)独特的单线接口 方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。(2)在使用中不需要

15、任何外围元件。(3)可用数据线供电, 电压范围:+3.0+5.5 V。 (4)测温范围:-55 - +125 C。固有测温分辨率 为0.5 C。 (5)通过编程可实现9-12位的数字读数方式。(6)用户可自 设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以 并联在惟一的三线上,实现多点测温。(8)负压特性,电源极性接反时,温 度计不会因发热而烧毁,但不能正常工作。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用 于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改 变,所产生的信号作为减法计数器2的脉

16、冲输入。器件中还有一个计数门,当计数门打开时, DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时 间由高温度系数振荡器来决定,每次测量前,首先将一55C所对应的一个基数分别置入减法计 数器1、温度寄存器中,计数器1和温度寄存器被预置在一55C所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值 减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开 始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温 度寄存器的累加,此时温度寄存器中的数值就是所测温度

17、值。其输出用于修正减法计数器的预 置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。温度/C一进制表示十六进制表示+1250000 01111101000007D0H+850000 0101010100000550H+25.06250000 0001100100000191H+ 10.1250000 00001010000100A2H+0.50000 0000000000100008H00000 0000000010000000H-0.51111 111111110000FFF8H-10.1251111 111101011110FF5EH-25.06251111 111

18、001101111FE6FH-551111 110010010000FC90H图4一部分温度对应值表另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20 (发复位脉冲) f发ROM功能命令发存储器操作命令处理数据。4.2 DS18B20温度传感器与单片机的接口电路DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2 脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图4所示单片机端接单线总 线,为保证在有效的DS18B20时钟周期内提供足够

19、的电流,可用一个MOSFET管来完成对总线的 上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启 时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接 口必须是三态的。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格 的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义 了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线 器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总 线器件回送数据,在进

20、行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是 低位在先。5.软件设计系统程序主要包括主程序、读出温度子程序、温度转换子程序、计算温度子程序、显示等 等。5.1主程序主要功能是完成DS18B20的初始化工作,并进行读温度,将温度转化成为压缩BCD码并在 显示器上显示传感器所测得的实际温度。5.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有 错时不进行温度数据的改写。其程序流程图1如下图所示。命令垃桃jaiKuM命令浅1炭|心晶出:布金b押Hi .L_K(_慑脸E了宜至/ 料5人以原TV存潞WBk图5程序流程图15.3温度转换命

21、令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。流程图图2如下发 DSlSBZOfe 位命令发跳过RQV1命令发温度楮换开始命令图6 程序流程图25.4计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。流程图3如下:开始图7 程序流程图36. 完整程序如下:#include #include typedef unsigned char uint8;#define uint unsigned int#define uchar unsigned charsb

22、it DQ = P33;/ 定义 DQ 引脚为 P3.3uchar code Bw10= 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;/ 百位 编码ucharcodeXsw16 = 0x30,0x31,0x31,0x32,0x33,0x33,0x34,0x34,0x35,0x36,0x36,0x37,0x38,0x38,0x39 ,0x39;/小数位编码sbit RS = P20 ;sbit RW = P21 ;sbit EN = P22 ;sbit BUSY = P07;uchar wendu;uchar temp_g,temp_d;u

23、nsigned char code word1=Temperature:;void delay(uint xms) uint i,j;for(i=xms;i0;i)for(j=110;j0;-j);void Delayus(int t) 在11.059MHz的晶振条件下调用本函数需要24us,然后每次计 数需16u s int s;for (s=0; st;s+);/等待繁忙标志void wait(void)P0 = 0xFF;do RS = 0;RW = 1;EN = 0;EN = 1;while (BUSY = 1);EN = 0;写数据void w_dat(uint8 dat)wait(

24、);EN = 0;P0 = dat;RS = 1;RW = 0;EN = 1;EN = 0;写命令void w_cmd(uint8 cmd)wait();EN = 0;P0 = cmd;RS = 0;RW = 0;EN = 1;EN = 0; 发送字符串到LCDvoid w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start);while (*p != 0)w_dat(*p+);)/初始化1602void Init_LCD1602(void)w_cmd(0x38); / 16*2 显示,5*7 点阵,8 位数据接口w_cmd(0x0c); /显

25、示器开、光标开、光标允许闪烁w_cmd(0x06); /文字不动,光标自动右移w_cmd(0x01); / 清屏uchar Reset()/完成单总线的复位操作。uchar d;DQ = 0;将DQ线拉低Delayus(29); /保持480 u s .复位时间为480 u s,因此延时时间为(480-24)/16 =28.5,取 29us。DQ = 1;/ DQ返回高电平Delayus(3); /等待存在脉冲.经过70us之后检测存在脉冲,因此延时时间为 (70-24)/16 = 2.875,取 3us。d = DQ;/获得存在信号Delayus(25);/等待时间隙结束return(d);

26、/返回存在信号,0=器件存在,1 =无器件void write_bit(uchar bitval)/ 向单总线写入 1 位值:bitvalDQ = 0;将DQ拉低开始写时间隙if(bitval=1)DQ =1;/如果写1, DQ返回高电平Delayus(5);/在时间隙内保持电平值,DQ = 1;/ Delayus 函数每次循环延时 16ps,因此 Delayus(5)=5*16+24=104 psvoid ds18write_byte(char val)/ 向单总线写入一个字节值:valuchar i;uchar temp;for (i=0; ii;temp &= 0x01;write_bi

27、t(temp);Delayus(5);uchar read_bit()/从单总线上读取一位信号,所需延时时间为15us,因此无法调用前 面定义的Delayus ()函数,而采用一个for()循环来实现延时。uchar i;DQ = 0;将DQ拉低开始读时间隙DQ = 1;然后返回高电平for (i=0; i3; i+);/ 延时 15psreturn(DQ);/返回DQ线上的电平值uchar ds18read_byte()/从单总线读取一个字节的值uchar i;uchar value = 0;for (i=0;i8;i+)/读取字节,每次读取一个字节if(read_bit()value|=0

28、x01i;/然后将其左移Delayus(6);return(value);int Readtemperature()/如果单总线节点上只有一个器件则可以直接掉用本函数。如果节 点上有多个器件,为了避免数据冲突,应使用Match ROM函数来选中特定器件。uchar temp_d,temp_g,k,get2,temp;Reset();ds18write_byte(0xcc);/跳过ROMds18write_byte(0x44);/启动温度转换Delayus(5);Reset();ds18write_byte(0xcc);/跳过 ROMds18write_byte(0xbe);/读暂存器for (

29、k=0;k4)|(temp_g&0x0f)4)|(temp_g&0x0f)4);w_cmd(0xc1);w_dat(Bwtemp/100);return temp;main()Init_LCD1602();w_string(0x80,word1);while (1)wendu=Readtemperature();temp_g=wendu%100/10+0;/这里要特别注意啊少了%100就差很多temp_d=wendu%10+0;w_cmd(0xc2);delay(2);w_dat(temp_g);delay(2);w_dat(temp_d);delay(2);w_cmd(0xc4);delay

30、(2);w_dat(0x2e);/ 小数点delay(2);w_cmd(0xc6);delay(2);w_dat(0xdf);/温度符号delay(2);w_dat(0x43);7. 总结与体会课程设计给我们带来的不只是一个项目的一系列学习,更重要的是我在这个设计过程中所 锻炼的能力和培养的一种精神。在本次课程设计中,比起上学期,更多是靠自己,去查阅资 料,去寻找解决办法,还有就是和同学们互相帮助学习。我们这次课题虽然不难,但要去做好 它,让它实现正确的功能,也少不了不断的研究和探索,可能废寝忘食,可能绞尽脑汁。不仅 是现在的学习,在以后的生活中工作也,以这样一种态度和精神去完成自己的梦想,实现自己 的价值。8. 参考文献1 单片机原理及应用(第二版)张毅刚 彭喜元彭宇编著2 Protel Dxp 2004简明教程和考证指南电子工业出版社3 C单片机原理及应用4 数字电路基础技术康华光第五版5 数字温度传感器DS18B20的原理与应用EB/OL

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号