基于单片机的温度数据采集系统实验报告毕业论文.docx

上传人:b****8 文档编号:9305596 上传时间:2023-02-04 格式:DOCX 页数:13 大小:265.34KB
下载 相关 举报
基于单片机的温度数据采集系统实验报告毕业论文.docx_第1页
第1页 / 共13页
基于单片机的温度数据采集系统实验报告毕业论文.docx_第2页
第2页 / 共13页
基于单片机的温度数据采集系统实验报告毕业论文.docx_第3页
第3页 / 共13页
基于单片机的温度数据采集系统实验报告毕业论文.docx_第4页
第4页 / 共13页
基于单片机的温度数据采集系统实验报告毕业论文.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于单片机的温度数据采集系统实验报告毕业论文.docx

《基于单片机的温度数据采集系统实验报告毕业论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的温度数据采集系统实验报告毕业论文.docx(13页珍藏版)》请在冰豆网上搜索。

基于单片机的温度数据采集系统实验报告毕业论文.docx

基于单片机的温度数据采集系统实验报告毕业论文

(此文档为word格式,下载后您可任意编辑修改!

基于单片机的温度数据采集系统实验报告

 

 

班级:

电技10—1班

姓名:

田波平

学号:

指导老师:

仲老师

 

题目:

基于单片机的温度数据采集系统

一.设计要求

1.被测量温度范围:

0~120℃,温度分辨率为0.5℃。

2.被测温度点:

2个,每5秒测量一次。

3.显示器要求:

通道号2位,温度4位(精度到小数点后一位)。

显示方式为定点显示和轮流显示。

4.键盘要求:

(1)定点显示设定;

(2)轮流显示设定;(3)其他功能键。

二.设计内容

1.单片机及电源模块设计

单片机可选用AT89S51及其兼容系列,电源模块可以选用7805等稳压组件,本机输入电压范围9-12v。

2.存储器设计

扩展串行I2C存储器AT24C02。

要求:

AT24C02的SCK接P3.2

AT24C02的SDA接P3.4

2.传感器及信号转换电路

温度传感器可以选用PTC热敏电阻,信号转换电路将PTC输出阻值转换为0-5V。

3.AD转换器设计

AD选用ADC0832。

要求:

ADC0832的CS端接P3.5

ADC0832的DI端接P3.6

ADC0832的DO端接P3.7

ADC0832的CLK端接P2.1

4.显示器设计。

6位共阳极LED显示器,段选(a-k;

}

voidwrite_add(ucharaddress,uchardate)写入外存储器中

{

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

}

ucharread_add(ucharaddress)从外存储器中读出数据

{

uchardate;

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

returndate;

}

3.AD转换器设计

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道AD转换芯片。

由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。

学习并使用ADC0832可是使我们了解AD转换器的原理,有助于我们单片机技术水平的提高。

ADC0832具有以下特点:

●8位分辨率;

●双通道AD转换;

●输入输出电平与TTLCMOS相兼容;

●5V电源供电时输入电压在0~5V之间;

●工作频率为250KHZ,转换时间为32μS;

●一般功耗仅为15mW;

●8P、14P—DIP(双列直插)、PICC多种封装;

●商用级芯片温宽为0°Cto+70°C,工业级芯片温宽为40℃to+85℃。

引脚图

引脚功能如下:

ADC0832为8位分辨率AD转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI数据输入端,可以轻易的实现通道功能的选择。

功能时序图

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DODI的电平可任意。

当要进行AD转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DODI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。

当2位数据为“1”、“1”时,只对CH1进行单通道转换。

当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。

当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。

在完成输入启动位、通道选择之后,就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。

在程序读取二个数据后,我们可以加上检验来看看数据是否被正确读取。

下面

程序如下:

unsignedcharGetValue0832(bitChannel)AD转换后的数据

{

unsignedchari,data1=0,data2=0;

clk=0;

d0=1;

di=1;

cs=0;cs=0时ADC0832有效

clk=1;

delay();

clk=0;第一个脉冲,开始位

d0=1;

di=1;

clk=1;

delay();

clk=0;第二个脉冲,模式选择

di=Channel;

d0=channel;通道选择

clk=1;

delay();

clk=0;第三个脉冲,通道选择

d0=1;

di=1;

for(i=0;i<8;i++)第一次读数从高到低,时钟下降沿有效

{

clk=1;

clk=0;

if(d0==1&&di==1)

data1|=0x80>>i;

}

for(i=0;i<8;i++)第二次从低到高读数,下降沿有效

{

if(d0==1&&di==1)

data2|=0x01<

clk=1;

delay();

clk=0;

}

cs=1;

d0=1;

di=1;

clk=1;

if(data1==data2)

return(data1);

}

5.键盘电路设计

6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用动态扫描方式检测键盘。

6.

uintkeyscan()

{

uchartemp;

P33=0;

temp=P2&0xf0;

if(temp!

=0xf0)

{

Delayms(10);

temp=P2&0xf0;

if(temp!

=0xf0)

{

switch(temp)

{

case0x70:

return1;break;

case0xb0:

return2;break;

case0xd0:

return3;break;

case0xe0:

return4;break;

}

}

}

}

显示模块采用6个共阳极数码管,采用动态扫描的方式进行显示。

电路图如下:

图6:

显示模块

voidDisplay(void)显示温度的函数

{

P27=0;选中第一个位选

P0=LED[ucADC2100];;显示

Delayms

(1);

delay1(200);

P27=1;

P26=0;选中第一个位选

P0=LED[ucADC2%10010];显示

Delayms

(1);

delay1(200);

P26=1;

P25=0;选中第一个位选

P0=(LED[ucADC2%10]-0x80);显示

Delayms

(1);

delay1(200);

P25=1;

P24=0;选中第一个位选

P0=LED[ucADC2*10%10];显示

Delayms

(1);

delay1(200);

P24=1;

}

voiddisplay2(uchara,ucharb)显示通道的函数

{

P23=0;

P0=LED[a];

Delayms(5);

delay1(200);

P23=1;

P22=0;

P0=LED[b];

Delayms(5);

delay1(200);

P22=1;

}

6.软件设计

其他应用到的程序:

voidmain(void)

{

uintnum;

write=0;

flag=0;

channel=0;

init();

ucADC=read_add

(2);

TMOD=0x01;

ET0=1;

EA=1;

TH0=()256;

TL0=()%256;

TR0=1;

while

(1)

{

num=keyscan();

switch(num)

{

case1:

channel=0;break;

case2:

channel=1;break;

case3:

flag=1;break;

case4:

flag=0;break;

}

ucADC=GetValue0832(channel);

Display();display2(channel,1);

if(write==1)

{

write=0;

write_add(2,ucADC);

}

}

}

voidt0()interrupt1定时器0

{

TH0=()256;

TL0=()%256;

tcnt++;

if(tcnt==100)

{

tcnt=0;

write=1;

if(flag==1)

channel=~channel;

}

}

三.项目心得

系统基本实现了设计要求,通过这次课程设计,使我更加熟练的掌握了AT89C52、AT24C02、ADC0832等芯片的使用,熟悉了领用C51语言编写程序控制单片机。

4.参考文献

1、李全利,单片机原理及接口技术,高等教育出版社,2004

2、于永,51单片机常用模块与综合系统设计实例精讲,电子工业出版社,2007

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

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1