课程设计报告 温度传感器

单片机控制ADC0809模数转换及显示的设计

【摘要】传感器的作用是将不易检测的非电量信号转换为易于检测的电信号,如电压、电流、电荷等,为了实现系统自动化和智能化,就需要有中央处理器对外界信号进行分析并作出相应的处理,而CPU属于数字系统,只能用于处理数字信号,这就需要将模拟信号转换成数字信号来处理,因此,信号采集与处理系统的设计与研究有着十分重要的意义。

【关键词】模数转换 CPU

【Abstract】The function of the sensor is to convert unelectronic signal to electronic signal which is easy to be tested, such as voltage\current\charge. To realize automation and intelligent of the system , there is necessity that CPU need to analyze the outer signal and response to it, but CPU is digital system, and it can only process the digital signal directly, so we must convert the analog signal to digital signal firstly. It is important to design and study the sample and process system.

 【Keywords】the converting of analog to digital  CPU

一、设计目的

1.学习操作数字电路设计实验开发系统,掌握数据采集工作原理及应用。

2.掌握proteus和单片机C语言设计方法。

3.学习掌握单片机设计的全过程。

二、设计内容

本课程设计是利用51单片机设计一个数据采集系统,并用4位数码管显示输入的电压。选用ADC0809芯片作为AD转换电路,设计中把输入的电压量转换成数字量进行显示。

设计具体要求如下:

1. 在proteus中绘制电路原理图;

2. 熟练掌握单片机C语言,编写控制程序;

3. 利用proteus仿真所编写的程序,模拟验证所编写的模块功能;

4. 整理设计内容,编写设计说明书。 

三、设计方案(包括器件选择、工作流程框图)

本课程设计的基本要求就是用单片机控制ADC0809的模拟采集并将采集的电压值显示在四位数码管上,为了使设计功能更加完善,如总体方案框图所示,可以为最小系统添加按键模块,因为ADC0809模数转换器有八路模拟采集通道,为了充分利用系统资源,可以通过添加按键模块来控制采集通道,实现多路通道分时采集。同时,在实际工程中,比如自动化、智能化控制系统中,往往需要有根据外界输入的情况对其作出智能化反馈,使系统实现良好的人机交互。该设计实现当输入电压大于或者小于一定范围的时候,LED灯点亮。

圆角矩形: 数码显示模块

圆角矩形: 按键模块圆角矩形: ADC0809模块圆角矩形: AT89C51模块

 

圆角矩形: 报警系统              

图 1 系统设计总体方案框图

1、AT89C51单片机简介

本课程设计的要求比较简单,所以可以选择使用比较简单的MCS-51系列的AT89C51单片机即可。

其特点如下: 

danpianji.png

图 2 AT89C51 引脚图

l  8位CPU,即CPU一次可以处理8为数据。

l  布尔代数处理能力,具有位寻址能力。

l  128B内部数据存储器,21个专用寄存器。

l  两个16为可编程定时器/计数器

l  32个(4×8位)双向可独立寻址的I/O接口。

l  一个全双工UART(异步串行通信接口)。

l  5个中断源,两级中断优先级控制器。

l  时钟电路,外部晶振和起振电容可产生1.2~12MHZ的时钟频率。

l  外部程序存储器寻址空间为64KB,外部数据存储器寻址空间为64KB。

l  单一+5V电源供电,双列直插式40引脚DIP封装。

l  和MCS-51系列产品指令兼容;

l  6个中断源。

l  低功耗掉电和待机模式。

重要引脚介绍:

表 1 单片机部分引脚功能

2、ADC0809模数转换器简介

   本数据采集系统采用单片机作为处理器,单片机所处理和传输的都是不连续的数字信号,而实际中遇到的大多数都是连续变化的模拟量,模拟量经传感器转换为电信号后,需要模/数转换将其变成数字信号才能输入到数字系统中进行处理与控制,因此,把模拟量转换成数字量的输出的接口电路,即A/D 转换就是实现信号转换的桥梁。

adc0809.png

图 2 ADC0809引脚图

    目前,有多种类型的A/D转换器,如并行比较型、逐次逼近型、积分型等。本设计采用逐次逼近型ADC0809转化器,该类型模数转换器转换精度高、速度快、价格适中,是目前种类最多、应用最广的模数转换器。如ADC0809内部结构图,此模数转换器由比较器、D/A转化器、寄存器、时钟发生器以及控制逻辑电路组成。

    ADC0809 就是一种CMOS单片逐次逼近式A/D转换器,其内部结构如图所示。该芯片由8路模拟开关、地址所存于与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等电路组成,因此,ADC0809可处理8路模拟量输入,且有三态输出能力。该器件既可以与各种微处理器相连,也可以单独工作,其输出与TTL电平兼容。

具体特点如下:

l  分辨率为8位。

l  电压输入型。

l  误差为±LSB,无漏码。

l  转换时间为100us。

l  很容易与微处理器连接。

l  单一电源+5V供电,此时模拟通道输入的量程为0~5V。

l  无需零位与满量程调整。

l  带有锁存控制逻辑的8通道多路转换多路开关。

l  可使用5V电压作为基准电压。

l  内部带有锁存器的三态数据输出。

1.png

图 3 ADC0809内部结构图

表 2 ADC0809各脚功能

ADC0809的工作过程:

首先,输入3位地址C、B、A的值,如通道选择方式所示,并使ALE=1,将地址存入地址锁存器中,此地址经选通8路模拟输入之一到比较器。START上升沿将逐次逼近型寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D

转换完成,EOC变高,只是A/D转换结束,结果数据已存入锁存器,这个信号可用中断申请,当OE输入高电平时输出三态门打开,转化结果的数据量输出到数据总线上。

   转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理,数据传送的关键问题是如何确定A/D 转换的完成,因为只有确认完成后,才能进行数据的传送。有定时传送方式、查询方式、和中断方式,本设计功能较为单一,对CPU使用效率没有特殊要求,我们可以采用查询方式,查询EOC是否为1。

2.png

图 1 通道选择方式

4.png

图 2 ADC0809工作时序图

五、硬件电路设计

六、软件程序设计

七、设计结果

八、设计结论

九、参考文献

十、原理图附件和程序

 

第二篇:温度传感器设计

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

机电信息工程学院

单片机系统课程设计报告

完成日期:20xx年5月31日

系: 专 业: 班 级: 设计题目: 学生姓名: 指导教师: 机电信息工程系 电子信息工程 温度传感器

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

目 录

一、设计任务和性能指标 ........................................................................................... 2

1.1设计任务 ............................................................................................................. 2

1.2性能指标 ............................................................................................................. 2

二.设计方案 .................................................................................................................. 2

三、系统硬件设计 ..................................................................... 错误!未定义书签。

3.1单片机的最小系统 ........................................................... 错误!未定义书签。

3.2 DS18B20 ........................................................................... 错误!未定义书签。

3.3基于485通信 ................................................................... 错误!未定义书签。

3.4数码管显示 ....................................................................... 错误!未定义书签。

四、系统软件设计 ..................................................................... 错误!未定义书签。

五、心得体会 ............................................................................. 错误!未定义书签。

参考文献 ....................................................................................................................... 9

附录 系统硬件电路图 ............................................................................................... 10

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

一、设计任务和性能指标

1.1设计任务

(一)、基本任务:熟悉单片机最小系统,在此基础上,使用温度传感器ds18b20设计设计制作一个温度测量系统,并把所测的值实时显示出来。

(二)、扩展任务:温度ds18b20检测环境温度,输入单片机I/O接口,把测量的数据经过485通信口传送到另外一个单片机系统,在在数码管或液晶显示器上显示出来。

1.2性能指标

单片机最小系统、显示电路板、ds18b20

二.设计方案

我们设计的温度系统是由中央控制器、温度检测器及显示器组成。控制器采用单片机AT89S51,温度检测部分采用DS18B20温度传感器,用LCD做显示器。温度传感器DS18B20采集温度信号送该给单片机处理,存储器通过单片机对某些时间点的数据进行存储;单片机再把温度数据送LCD显示,已达到显示当前温度的目的。

三.系统硬件设计

3.1 单片机最小系统

89C51是Intel公司生产的一个单片机系列的名称。

(1)一个8位的微处理器(CPU)。

(2)片内数据存储器RAM(128B/256B)。存放可以读/写的数据---运算的中间结果、最终结果、欲显示的数据等。

(3)片内程序存储器ROM/EPROM(4KB/8KB) 。存放程序,一些原始数据和表格。但也有一些单片机内部不带ROM/EPROM,如8031,8032,80C31等。

(4)四个8位并行I/O接口P0-P3。每个口既可以用作输入,也可以用作输出89C51有四个8位并行接口,即P0-P3。它们都是双向端口,每个端口有8条I/O线,均可输入/输出。P0-P3口四个锁存器同RAM统一编址,可以把I/O口当作一般特殊功能寄存器来寻址。

2

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

3.2 DS18B20

DS18B20的测温原理如图所示,图中低温度系数晶振的振荡频率受温度的影响很小〔1〕,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。

图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。

3

温度传感器设计

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

3.3 基于485通信

485总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达200mv的电压,可靠通信的传输距离可达数千米。

温度传感器设计

3.4 数码管显示

LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。右图是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。当然,LED的电流通常较小,一般均需在回路中接上限流电阻。假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。其它字符的显示原理类同,读者自行分析即可。abcdefgh 分别控制8个段,称段码。数码管的3、8脚是公共端,公共端可以用三极管控制是否连接电源,由此可以控制整个数码管点亮或熄灭。如果多个数码管一起使用,如8个,这个端口就用来选择需要使用的数码管的位,即第几位数码管起作用。成位码。

温度传感器设计

4

温度传感器设计

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

3.5硬件框图

温度传感器设计

四,软件设计

4.1 程序流程图

5

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

4.2 程序

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit DQ=P3^3; //定义通信端口

uchar code table[]={0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};//共阳极代码 void delay(uint i)

{

while(i--);

}

温度传感器设计

6

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

//初始化函数

init_ds18b20(void)

{

uchar x=0;

DQ=1; //DQ复位

delay(8);

DQ=0; //单片机将DQ拉低

delay(80);//精确延时 大于480us

DQ=1; //拉高总线

delay(14);

x=DQ; //稍作延时后 如果x=0则初始化成功x=1则初始化失败 delay(20);

}

//读一个字节

readonechar(void)

{

uchar i=0;

uchar dat=0;

for(i=8;i>0;i--)

{

DQ=0; //给脉冲信号

dat>>=1;

DQ=1; //给脉冲信号

if(DQ)

dat|=0x80;

delay(4);

}

return(dat);

}

//写一个字节

writeonechar(uchar dat)

{

uchar i=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

7

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

delay(4);

}

//读取温度

readtemperature(void)

{

uchar a=0;

uchar b=0;

uchar t=0;

init_ds18b20();

writeonechar(0xcc); //跳过读序号列号的操作

writeonechar(0x44); //启动温度转换

init_ds18b20();

writeonechar(0xcc); //跳过读序号列号的操作

writeonechar(0xbe); //读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=readonechar(); //读取温度值低位

b=readonechar(); //读取温度值高位

a=a>>4; //低位右移4位,舍弃小数部分

t=b<<4; //高位左移4位,舍弃符号位

t=t|a;

return(t);

}

void display_tempmain(uchar i) //主程序温度显示函数

{

P0=table[i/10];//十位

P2=0x0e;

P2=0x2e;

delay(500);

P0=table[i%10];//个位

P2=0x0d;

P2=0x2d;

delay(500);

P0=0xc6; //显示摄氏度

P2=0x07;

P2=0x27;

delay(100);

8

大连民族学院2007级电子信息工程专业单片机系统课程设计报告

}

void main(void)

{

uchar temp;

while(1)

{

temp=readtemperature();

display_tempmain(temp);

}

}

五,心得体会

经过将近一个学期的单片机课程设计,终于完成了我们的温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀.

在本次设计的过程中,我发现很多的问题,虽然以前还做过相似的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前试着写过几次程序,但我觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。

这次的高精度温度计设计实验,不仅把将课堂上学到的理论知识与实际应用结了起来,而且使我对电子电路、电子元器件、印制电路板等方面的知识有了更进一步加深蠠 ??识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高.

大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的温度计设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。

参考文献

[1] 徐维祥、刘旭敏. 单片微型机原理及应用. 大连:大连理工大学出版社,1996

[2] 李光飞、楼然苗、胡佳文、谢象佐. 单片机课程设计与实例指导. 北京: 北京航空航天大学出版社,2004

[3] 余永权. 89系列FLASH单片机原理及应用. 北京:电子工业出版社,2002

[4] 李群芳,黄建. 单片机微型计算机与接口技术. 北京:电子工业出版社,2001

[5] 楼然苗、李光飞. 51系列单片机设计实例. 北京:北京航空航天大学出版社,2003

9

附录 系统硬件电路图

温度传感器设计

大连民族学院2007级电子信息工程专业单片机系统课程设计报告 10

相关推荐