为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机温度传感器

2017-09-30 21页 doc 140KB 35阅读

用户头像

is_418164

暂无简介

举报
单片机温度传感器单片机温度传感器 (南京信息工程大学) ------------------ ----------------------- ----------------------- ----------------------- 目录 一:系统概述 二:硬件系统设计 1、温度计整个测温流程图 2、ADC0809时序图 3、ADC0809初始化程序 4、数码管指令 5、温度计整体驱动程序 三、软件系统设计 1、温度计整个测温流程图 2、ADC0809时序图 3、ADC0809初始化程序 4、数码管指令 ...
单片机温度传感器
单片机温度传感器 (南京信息工程大学) ------------------ ----------------------- ----------------------- ----------------------- 目录 一:系统概述 二:硬件系统 1、温度计整个测温流程图 2、ADC0809时序图 3、ADC0809初始化程序 4、数码管指令 5、温度计整体驱动程序 三、软件系统设计 1、温度计整个测温流程图 2、ADC0809时序图 3、ADC0809初始化程序 4、数码管指令 5、温度计整体驱动程序 四、电路制作与调试 1、电路图 2、焊接电路 3、硬件调试 4、软件调试 一:系统概述 温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、 机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速 发展,微机测量和控制技术得到了迅速的发展和广泛的应用。 采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅 度提高被控温度的技术指标,从而能够大大提高产品的质量和数量51系列单片机具有易于学习、价格低、功耗低等优点,应用在温度测量与控制方面,控制简 单方便,测量范围广,精度较高。 温度传感器将温度信息变换为模拟电压信号后,将电压信号放大到单片机可 以处理的范围内,经过低通滤波,滤掉干扰信号送入单片机。 温度通过模拟温度传感器(热敏电阻)进行采样并转换为电压信号,经放大 器放大后用ADC0809模数转换器进行A/D转换成数字量进入AT89C51单片机,从P3.0、P3.1口输出到八段数码管LED静态显示部分显示其温度。 LED数码管显示 A/D转换成数热敏电阻采集电压信号 字量 温度 二:硬件系统设计 1、AD590介绍 1.1、集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱和值VBE与热力学温度T和通过发射极电流I的下述关系实现对温度的检测: 式中,K—波尔兹常数; q—电子电荷绝对值。 集成温度传感器具有线性好、精度适中、灵敏度高、体积小、使用方便等优 点,得到广泛应用。集成温度传感器的输出形式分为电压输出和电流输出两种。 电压输出型的灵敏度一般为10mV/K,温度0?时输出为0,温度25?时输出2.982V。电流输出型的灵敏度一般为1mA/K。 1.2、AD590是美国模拟器件公司生产的单片集成两端感温电流源。它的主 要特性如下: ?、流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数, 即: mA/K 式中: —流过器件(AD590)的电流,单位为mA; T—热力学温度,单位为K。 ?、AD590的测温范围为-55?~+150?。 ?、AD590的电源电压范围为4V~30V。电源电压可在4V~6V范围变化,电流 变化1mA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。 ?、输出电阻为710MW。 1.3、AD590基本应用电路 1.4、AD590测量热力学温度、摄氏温度、两点温度差、多点最低温度、多 点平均温度的具体电路,广泛应用于不同的温度控制场合。由于AD590精度高、价格低、不需辅助电源、线性好,常用于测温和热电偶的冷端补偿。 2、AT89S51 介绍 2.1、AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价 比的解决。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保 存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具 有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 2.2、AT89S51引脚及各引脚用途 VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器, 它可以被定义为数据/地址的第八位。在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”时,其管脚被内部上拉电阻拉高,且作为 输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部 上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取 时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对 外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输 入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 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口同时为闪烁编程和编程校验接收一些控制信 号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口 时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过 某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读 入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的, 不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上 面的图,如果不对端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输 入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中 实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。接下来 让我们再看另一个问,从图中可以看出这四个端口还有一个差别,除了P1口外P0P2P3口都还有其他的功能。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电 平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时, 将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果 微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个 机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器 (0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 3、ADC0809 介绍 3.1、ADC0809是8位CMOS逐次逼近式A/D转换器。内部有8 路模拟量输入和8 位数字量输出的A/D转换器,它是美国国家半导体公司的产品,是目前国 内最广泛的8 位通用的A/D转换的芯片。 3.2、 ADC0809各管脚功能 ?IN0—IN7为8 路模拟电压输入线,用于输入被转换的模拟电压。 ?ADDA,ADDB,ADDC 三位地址输入端。八路模拟信号转换选择同由A,B,C决定。A为低位,C为高位。 ?CLOCK 外部时钟输入端,时钟频率高,A/D转换速度快。允许范围为 10~1280KHZ,典型值为640KHZ,此时,A/D转换时间为10us。通常由MCS-51型单片机ALE端直接或分频后与其相连。当MCS-51型单片机无读写外,RAM操作时,ALE信号固定为CPU时钟频率的1/6,若单片机外接的晶振为6MHZ,则1/6为1MHZ,A/D转换时间为64us。 ?D0--D7 数字量输出端,A/D转换的结果由这几个端口输出。 ?OE A/D转换结果输出允许控制端,当OE端为高电平时,允许将A/D转换结果从D0~D7端输出。通常由MCS-51型单片机的端和ADC00809片选端(例如),通过或非门与ADC0809的OE端相连接。当DPTR为FEFFH,且执行“MOVX A,@DPTR” 指令后,和2.0均有效,或非后产生高电平,使ADC0809的OE端有效,ADC0809将A/D转换的结果送入数据总线P0口,CPU在读入中。 ?ALE 地址锁存允许信号。八路模拟通道地址由A,B,C输入在ADC0809的ALE信号有效时,将该八路地址锁存。 ?START 启动A/D转换信号。当START端输入一个正脉冲时,立即启动 ADC0809进行A/D转换。START端与ALE 端连在一起,由MSC-51型单片机WR和ADC0809片选端(例如)。通过或非门连接,当DPTR为FEF8H时,执行“MOVX @DPTR,A”指令后,将启动ADC0809模拟通道0的A/D转换。FEF8H~FEFFH分别为八路模拟输入通道的地址。执行MOVX写指令,并非真的将A中的内容写进ADC0809 中,ADC0809中没有一个寄存器,能容纳的A中的内容。ADC0809的输入通道是IN0~IN7,输出通道是D0~D7,因此,执行:“MOVX @DPTR,A”指令与A中内容无关,但DPTR地址应指向当前A/D的通道地址。 ?DOC A/D转换结果信号。当ADC0809启动A/D转换后,EOC输出低电平,转换结束后,EOC输出高电平,表示可以读取A/D转换的结果。该信号取反后若 与MCS-51型单片机引脚或连接,可引发CPU中断,在中断服务程序中读A/D转换的数字信号,若与MCS-51型单片机两个中断源已用完,则EOC也可与P1口或P3口的一条端线相连,不采用中断方式,采用查询方式,查得EOC为高电平后,在读入A/D转换的值。 ? VREF+,VREF- 正负基准电压输入端。正基准电压的典型值为+5V,可与电源电压+5V相连,但电源电压 往往有一定的波动,将影响A/D转换的精度。因此,精度要求较高时,可用高稳定基准电源输入。当模拟信号电压较低时,基 准电压也可取低于5V的数值。 ?VCC,GND 正电源电压端和地端。 4、LM358 介绍 4.1、LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大 器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐 的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流 增益模块和其他所有可用单电源供电的使用运算放大器的场合。LM358 的封装形式有塑封8引线双列直插式和贴片式。 4.2、LM358特性: 内部频率补偿;直流电压增益高(约100dB);单位增益频带宽(约1MHz);电源电压范围宽:单电源(3—30V);双电源(?1.5 一?15V); 低功耗电流,适合于电池供电 ; 低输入偏流; 低输入失调电压和失调电流;共 模输入电压范围宽,包括接地; 差模输入电压范围宽,等于电源电压范围;输 出电压摆幅大(0 至Vcc-1.5V) 4.3、LM385 引脚图 8脚V+,4脚接地,1,7脚输出,2,6脚比较端+,3,5比较端- 5、LED数码管 介绍 5.1、在单片机应用系统中,如果需要显示的内容只有数码和某些字母,使 用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活, 与单片机接口简单易行。 5.2、LED数码管是由发光二极管作为显示字段的数码型显示器件。图4-2a为0.5inLED数码管的外形和引脚图,其中七只发光二极管分别对应a~g笔段构成“日”字形另一只发光二极管Dp作为小数点。因此这种LED显示器称为七段数码管或八段数数码。 LED数码管按电路中的连接方式可以分为共阴型和共型两大类,如图4-2示b、c所示。共阳型是将各段发光二极管的正极连在一起,作为公共端COM,公共 端COM接高电平,a~g、Dp各笔段通过限流电阻接控制端。某笔段控制端低电平 时,该笔段发光,高电平时不发光。控制苛几段笔段发光,就能显示出某个数码 或字符。共阴型是将各数码发光二极管的负极连在一起,作为公共端COM接地,某笔段通过限流电阻接高电平时发光。 当LED数码管与单片机相联时,一般将LED数码管的各笔段引脚a、b、„、g、Dp按某一顺序接到MCS-51型单片机某一个并行I/O口D0、D1、„、D7,当该I/O口输出某一特定数据时,就能使LED数码管显示出某个字符。 三、软件系统设计 1、温度计整个测温流程图 开始 初始化ADC0809 显示数字 处理数据 启动ADC0809 否 打开ADC0809读数字 是 转换完成 2、ADC0 809时 序图 3、ADC0809初始化程序 MOV R0, #0A0H ;数据存储区首地址 MOV R2, #08H ;8路计数器 SETB IT1 ;边沿触发方式 SETB EA ;中断允许 SETB EX1 ;允许外部中断1中断 MOV DPTR, #0FEF8H ;D/A转换器地址 LOOP: MOVX @DPTR, A ;启动A/D转换 HERE: SJMP HERE ; 等待中断 中断服务程序: DJNZ R2, ADEND MOVX A, @DPTR ;数据采样 MOVX @R0, A ;存数 INC DPTR ;指向下一模拟通道 INC R0 ;指向数据存储器下一单元 MOVX @DPTR, A ADEND: RETI 4、数码管指令: MOV DPTR,#SEGPORT MOV A,#SEG MOVX X @DPTR,A MOV DPTR,#BITPORT MOV A,#BIT MOVX @DPTR,A 5、温度计整体驱动程序: #include #include #define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00}; //数码显示代码 sbit led1=P2^3; sbit led2=P2^2; sbit led3=P2^1; sbit led4=P2^0; //位选 sbit P24=P2^4; sbit P26=P2^6; sbit P27=P2^7; sbit swich=P2^5; //定义开关 uint k,l,m; uchar fuhao,shi,ge,biaoshi,num2,num,f,shu; void delay(uint p) { uchar i,j; for(i=p;i>0;i--) for(j=110;j>0;j--); } //延时1ms void display() //动态显示程序 { led1=1; P1=table[fuhao]; delay(5); led1=0; led2=1; P1=table[shi]; delay(5); led2=0; led3=1; P1=table[ge]; delay(5); led3=0; led4=1; P1=table[biaoshi]; delay(5); led4=0; } void inti() //初始化程序 { f=0; led1=0; led2=0; led3=0; led4=0; TMOD=0x20; TH1=4; //设置定时器T1 TL1=4; EA=1; //开启总中断 ET1=1; //开启定时器1中断 TR1=1; //定时器T1工作 P1=0xff; P27=1; num=0; fuhao=17; shi=17; ge=17; biaoshi=17; P26=0; } void key() { if(swich==0) { delay(5); //去抖动 if(swich==0) { f=1; //标志位 while(!swich); } } } void main() { inti(); while(1) { key(); if(f==1) { P26=1; for(k=20;k>0;k--); P26=0; for(k=20;k>0;k--); P26=1; delay(1); P0=0xff; EX1=1; //开启外部中 delay(1); f=0; } display(); } } void t1() interrupt 3 { P24=~P24; } void ex1() interrupt 2 { f=0; EX1=0; P26=1; for(k=20;k>0;k--); //数据传输时间 num=P0; num2=0; for(l=0;l<8;l++) //首尾交换 { shu=num; shu=shu&0x01; for(m=0;m<7-l;m++) { shu=shu*2; } num2=num2+shu; num=num>>1; } //首尾转换 for(k=10;k>0;k--); num=num2; if(num<55) { fuhao=16; shi=(55-num)/10; ge=(55-num)%10; biaoshi=12; } else { fuhao=(num-55)/100; if(fuhao==0) fuhao=17; shi=(num-55)%100/10; ge=(num-55)%10; biaoshi=12; } P26=0; } 四、电路制作与调试 1、电路图 2、焊接电路 根据电路图,排列好元器件位置,着手进行焊接电路。在焊接过程中,要时 刻注意错线、开路、短路等焊接问题。要焊接,防止不当操作造成元器件的 损坏。 焊接完以后,根据电路图用万用表等工具测试各引脚是否造成虚焊、短路等 问题.,根据测试结果修正以上出现的问题。 3、硬件调试 在样机加电之前,首先用万用表等工具,根据硬件电器原理图和装配图仔细检查样机线路的正确性,并核对元器件的型号、规格和安装是否符合要求。 应特别注意电源的走线,防止电源之间的短路和极性错误,并重点检查扩展系统 总线(地址总线、数据总线和控制总线)是否存在相互间的短路或与其它信号线 的短路。第二步是加电后检查各个插件上引脚的电位,仔细测量各点电位是否正 常,尤其应注意单片机插座上的各点电位,若有高压,联机时将会损坏仿真器。 第三步是在不加电情况下,除单片机以外,插上所有的元器件,最后用仿真适配 器将样机的单片机插座和仿真器的仿真接口相连,为联机调试做准备。 4、软件调试 ?、计算程序的调试方法 计算程序的错误是一种静态的固定的错误,因此主要用单拍或断点运行方式 来调试。根据计算程序的功能,事先准备好一组测试数据。调试时,用防真器的 写命令,将数据写入计算程序的参数缓冲单元,然后从计算程序开始运行到结束, 运行的结果和正确数据比较,如果对有的测试数据进行测试,都没有发生错误, 则该计算程序调试成功;如果发现结果不正确,改用单步运行方式,即可检查出 错误所在。计算程序的修改视错误性质而定。若是算法错误,那是根本性错误, 应重新设计该程序;若是局部的指令有错,修改即可。如果用于测试的数据没有 全部覆盖实际计算的原始数据的类型,调试没有发现错误可能在系统运行过程中 暴露出来。 在完成了各个模块程序(或各个任务程序)的调试工作以后,便可进行系统的综合调试。综合调试一般采用全速断点运行方式,这个阶段的主要工作社排除 系统中遗留的错误以提高系统的动态性能和精度。在综合调试的最后阶段,应在 目标系统的晶振频率工作,使系统全速运行目标程序,实现了预定功能技术指标 后,便可将软件固化,然后在运行固化的目标程序,成功后目标系统便可脱机运 行。一般情况下,这样一个应用系统就算研制成功了。
/
本文档为【单片机温度传感器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索