单片机基于51单片机的温度传感器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

引脚介绍


P1口:P1是一个带有内部上拉电阻的8位双向I/O口。P1的输出缓 冲级可驱动(输入或输出)4个TTL逻辑门电路。对端口写“1”,通 过内部的上拉电阻把端口拉到高电平,此时可做输入口。因为内部 存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓 冲级可驱动(输入或输出电流)4个TTL逻辑门电路。对端口写“1”, 通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。因为 内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 在访问外部程序存储器获16位地址的外部数据存储器(例如执行 MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地 址的外部数据存储器(如执行 MOVX @RI指令)时,P2口线上的内 容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个 访问期间不改变。
放大电路
741放大器为运算放大器中最常被使用的一 种,拥有反相向与非反相两输入端,由输入端 输入欲被放大的电流或电压信号,经放大后由 输出端输出。放大器作动时的最大特点为需要 一对同样大小的正负电源,其值由±12Vdc至 ±18Vdc不等,这里使用±15Vdc的电压。
放大电路
7脚、4脚分别接正负15V; 3端输入,6端输出; 构成电压跟随器。
设计要求
自动显示当前温度。 设置温度上下限功能。 温度上下限调整可通过串行通信接口实现。 当前温度可通过串行通信接口送给计算机。 温度超限报警。

2014-6-2
设置温度上下限

具体思路
1 分s1 s2 s3三个功能键 2 调整步长为0.5度 3 通过单片机编程、按键来实现
2014-6-2

ADC0809内部结构
ADC0809各脚功能
D7-D0:8位数字量输出引 脚。 IN0-IN7:8位模拟量输入引 脚。 VCC:+5V工作电压。 GND:地。 REF(+):参考电压正端。 REF(-):参考电压负端。
ADC0809各脚功能
START:A/D转换启 动信号输入端。 ALE:地址锁存允许 信号输入端。 (以上两种信号用 于启动A/D转) A、B、C:地址输入 线
硬件原理图
温度显示 ADC0809 模数转换
超量程报警
AT89C51
按键控制 AD590 测温电路 电源及复位电路
整体电路图
系统模块介绍
•AD590及外围电路 •ADC0809模数转换
•按键控制模块
•报警模块
温度传感器AD590
温度转换为电流。 线性度优良、性能稳定。 每增加1℃,它会增加1μA输出电流。 可测量范围-55℃至150℃。 供电电压范围+4V至+30V。

温度传感器AD590
ห้องสมุดไป่ตู้
1脚接VCC 2脚接电流输出端 3脚一般不用
AD590温度与电流关系
AD590模块
电阻选用 9.6K 滑动变阻器 选用1K 通过微调使 得总电阻精确 到10K
AD590模块
选用运放741做电压跟随器,提高输入阻抗。 仿真时,用滑动变阻器改变电压,模拟实际中的温度变化。
ADC0809各脚功能
EOC:转换结束信号输 出引脚,开始转换时为 低电平,当转换结束时 为高电平。 OE:输出允许控制端, 用以打开三态数据输出 锁存器。 CLK:时钟信号输入端 (一般为500KHz)。
通道选择
当ALE线为高电平时, 地址锁存与译码器 将A,B,C三条地 址线的地址信号进 行锁存,经译码后 被选中的通道的模 拟量进入转换器进 行转换。
引脚介绍


P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3 口输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。 对P3口写入“1”时,他们被内部上拉电阻拉高并可作为输 入口。此时,被外部拉低的P3口将用上拉电阻输出电流。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器 周期以上高电平将使单片机复位。 ALE/PROG:当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。 即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出 固定的正脉冲信号,因此它可对输出时钟信号或用于定时。 要注意的是:当访问外部数据存储器时将跳过一个ALE脉冲。 闪存编程期时,该引脚还用于输入编程脉冲。
数码管显示模块
开始 初始化 P2.0=1
读P0口
P2.1=1
读P0口
P2.2=1
读P0口
结束
P2.3=1
读P0口
数码管显示流程图
数码管动态显示代码部分
/***************************************** * 函数:动态显示函数 * 输入:要显示的数值000.0~100.0 * 返回值:无 ******************************************/ void display(uint dat) { uchar dispbuf[4]; dispbuf[3]=dat/1000; P0=dispbitcode[dispbuf[3]]; P20=0; P21=1; P22=1; P23=1; delay_ms(2); P0=0x00;
数码管动态显示代码部分
dispbuf[2]=dat/100%10; P0=dispbitcode[dispbuf[2]]; P20=1; P21=0; P22=1; P23=1; delay_ms(2); P0=0x00; dispbuf[1]=dat/10%10; P0=dispbitcode[dispbuf[1]]; P07=1; P20=1; P21=1; P22=0; P23=1; delay_ms(2); P0=0x00; ;
ADC0809
ADC0809是美国国家半导体公司 生产的CMOS工艺8通道,8位逐次 逼近式A/D模数转换器。其内部有 一个8通道多路开关,它可以根据 地址码锁存译码后的信号,只选通 8路模拟输入信号中的一个进行A/D 转换。
ADC0809
主要特性:
8路输入通道,8位A/D转换器,即分辨率为8位。 具有转换起停控制端。 转换时间为100μs(时钟为640KHz时),130μs (时钟为500KHz时)。 单个+5V电源供电。 模拟输入电压范围0~+5V,不需零点和满刻度校 准。 工作温度范围为-40~+85摄氏度。 低功耗,约15mW。
基于AD590温度显示器设计
小组成员 22011311 22011312 22011313
刘森林 俱子研 孙业飞
设计要求
自动显示当前温度。 设置温度上下限报警功能。 温度上下限调整可通过串行通信接口实现。 当前温度可通过串行通信接口送给计算机。 温度超限报警。

总体方案
系统以51单片机为控制核心,加上AD590测 温电路、ADC0809模数转换电路、温度数据 显示电路以及外围电源等组成。 利用AD590集成温度传感器及其接口电路完 成温度的测量并转换成模拟电压信号。经由模 数转换器ADC0809转换成单片机能够处理的 数字信号,然后送到单片机中进行处理变换, 最后将温度值显示在LED显示器上。
引脚介绍



PSEN:程序存储允许输出是外部程序存储器的读选通 信号,当80C51由外部程序存储器取指令(或数据) 时,每个机器周期两个PSEN有效,即输出两个脉冲。 在此期间,当访问外部数据存储器,这两次有效的 PSEN信号不出现。 EA/VPP:外部访问允许。要使CPU仅访问外部程序存 储器(地址为0000H---FFFFH),EA端必须保持低电平 (接地)。需注意的是; 如果加密位LB1被编程,复位 时内部会锁存EA端状态。如 EA端为高电平(接VCC 端),CPU则执行内部程序存储器中的指令。 XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2 :振荡器反相放大器的输出端。
*函数:触发ADC0808开始转换并读取数值
uchar ADC_Read(void) { uchar getdataV; OE=0; //OE=0时输出呈高阻态 ST=1; //上跳沿时,内部寄存器清零 ST=0; //下跳沿时,进行A/D转换 while(EOC==0); //空循环,直到转换结束 OE=1; //允许输出 getdataV=P1; //转换数据输出给单片机P1口 OE=0; //传输结束,OE重新变为0 return getdataV; }
结束
软件实现
*函数:ADC0808初始化 void ADC_Init(void) { ST=1; P34=0; P35=0; P36=0; //选择地址IN1(CBA=000) ST=0; //ST为转换启动信号 EOC=1; //转换结束信号。高电平时,表明转换结束 OE=0; //输出允许信号。OE=1,输出转换数据 }
}
2014-6-2
程序代码
if(count==1) { if(add==0) { delay1(z); //延时消抖 if(add==0) { highlimt=highlimt+5; //上调设定值 } } if(sub==0) { delay1(z); //延时消抖 if(sub==0) { highlimt=highlimt-5; //下调设定值 } }
ADC0809电路连接
电压输入选择IN0通道
转换数据从OUT1~OUT7口输
出至单片机的P1口
START与ALE一起接P3.0
OE接P3.1
CLOCK接P3.3
A、B、C三条地址线接单片
机的P3.4 P3.5 P3.6
ADC0809模块
开始 取数据 初始化 读数 据结 束
启动转换
转换 结束
2014-6-2
小结1 长按按键,会“一直做出反应”
优点: 便于迅速进行大范围的调节
缺点:
增大调节到某一精确值的难度
2014-6-2
温度超限报警

具体思路
1 用LED灯和蜂鸣器共同实现报警功能 2 用软件程序实现单片机输出控制信号 3 搭建外围电路,实现信号对报警器的控制
引脚图

引脚功能说明 Vcc:电源电压 GND:地 P0口:P0口是一组8位漏极开 路型双向I/O口,即地址/数据总 线复位口。作为输出口用时,每 位能吸收电流的方式驱动8个逻 辑门电路,对端口写“1”可 作 为高阻抗输入端用。在访问外部 数据存储器或程序存储器时,这 组口线分时转换地址(低8位) 和数据总线复用,此时P0激活 内部的上拉电阻。
单片机以及数码管显示
AT89C51单片机模块
80C51单片机介绍

80C51是美国ATMEL公司生产的低电压,高性能 CMOS8位单片机,可提供以下标准功能:4K 字节闪 存,128字节内部RAM,32个I/O口线,两个16位定 时/计数器,一个5向量两级中断结构,一个全双工 串行通信口,片内振荡器及时钟电路。同时,80C51 可降至0HZ的静态逻辑操作,并支持两种软件可选的 节电工作模式。空闲方式停止CPU的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续 工作。掉电方式保存RAM中的内容,但振荡器停止 工作并禁止其它所有部件工作直到下一个硬件复位。
硬件连接图
2014-6-2
程序代码
void delay(unsigned int i) { char j; for(i; i > 0; i--) for(j = 200; j > 0; j--); } void sett() { if(set==0) { delay1(z); if(set==0) { count++; // 标志位 // 按下 //延时消抖 // count=1 设置上限温度 count=2 设置下限温度 count=0 正常显示温度
ADC0809应用说明
(1) ADC0809内部带有输出锁存器,可以与51单片 机直接相连。 (2) 初始化时,使ST和OE信号全为低电平。 (3)送要转换的哪一通道的地址到A,B,C端口上。 (4) 在ST端给出一个至少有100ns宽的正脉冲信号。 (5) 是否转换完毕,我们根据EOC信号来判断。 (6) 当EOC变为高电平时,这时给OE为高电平,转换 的数据就输出给单片机了。
相关文档
最新文档