ADC0809转换及DS18B20实验.docx

上传人:b****2 文档编号:774063 上传时间:2023-04-30 格式:DOCX 页数:14 大小:125.48KB
下载 相关 举报
ADC0809转换及DS18B20实验.docx_第1页
第1页 / 共14页
ADC0809转换及DS18B20实验.docx_第2页
第2页 / 共14页
ADC0809转换及DS18B20实验.docx_第3页
第3页 / 共14页
ADC0809转换及DS18B20实验.docx_第4页
第4页 / 共14页
ADC0809转换及DS18B20实验.docx_第5页
第5页 / 共14页
ADC0809转换及DS18B20实验.docx_第6页
第6页 / 共14页
ADC0809转换及DS18B20实验.docx_第7页
第7页 / 共14页
ADC0809转换及DS18B20实验.docx_第8页
第8页 / 共14页
ADC0809转换及DS18B20实验.docx_第9页
第9页 / 共14页
ADC0809转换及DS18B20实验.docx_第10页
第10页 / 共14页
ADC0809转换及DS18B20实验.docx_第11页
第11页 / 共14页
ADC0809转换及DS18B20实验.docx_第12页
第12页 / 共14页
ADC0809转换及DS18B20实验.docx_第13页
第13页 / 共14页
ADC0809转换及DS18B20实验.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ADC0809转换及DS18B20实验.docx

《ADC0809转换及DS18B20实验.docx》由会员分享,可在线阅读,更多相关《ADC0809转换及DS18B20实验.docx(14页珍藏版)》请在冰点文库上搜索。

ADC0809转换及DS18B20实验.docx

ADC0809转换及DS18B20实验

实验九A/D转换实验DS18B20实验(二选一)

一、实验预习

1.熟悉51单片机与A/D转换器的接口设计。

2.熟悉ADC0809芯片的时序。

3.熟悉DS18B20芯片的时序。

实验预习问题:

1.ADC0809转换器的转换频率上限是多少?

答:

时钟频率为64KHZ,转换时间为10us。

2.基于51单片机的ADC0809转换电路如何设计?

见下图

3.DS18B20的优缺点有哪些?

优点:

适应电压范围更宽,电压范围:

3.0~5.5V,在寄生电源方式下可由数据线供电;独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;简单的多点分布应用;无需外部器件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;零待机功耗;用户可定义的非易失性温度报警设置;负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作;具有极强的抗干扰纠错能力;

缺点:

温度范围只能在-55度到+125度之间;编程比较复杂。

(书面预习,写在实验报告上)

二、实验目的

1.掌握A/D转换芯片ADC0809与单片机的接口方法。

  

2.了解A/D转换芯片ADC0809转换性能及编程方法。

3.通过实验了解单片机如何进行数据采集。

4.通过实验了解传感器的优缺点。

三、演示实验

嵌入式系统演示实验

演示实验关注点:

嵌入式系统与51单片机系统的异同点。

四、实验内容

选择A/D转换实验的实验内容:

A/D转换器大致分有三类:

一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用ADC0809属第二类,是8位A/D转换器。

每采集一次一般需100μs。

自制实验开发板布局如上图所示。

单片机部分最小系统电路原理图如下。

图中P3~P6为单排针,将单片机的P0~P3口引出。

ADC0809部分电路原理如下图。

图中74373锁存器锁存地址信号,选择ADC0809通道,7474D触发器对ALE信号2分频,给ADC0809做CLK信号。

7402为与非门芯片。

注意以上电路原理图网络标号的用法。

仔细阅读原理图,了解A/D转换芯片ADC0809转换性能及编程方法。

采用ADC0809,由电位器提供模拟量输入。

编写程序,将模拟量转换成数字量,并通过HD7279的LED显示转换结果。

(HD7279程序以.h文件的形式给出)

(利用中断来判断EOC)

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

//各数字的数码管段码(共阴)

ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbitCLK=P1^3;//时钟信号

sbitST=P1^2;//启动信号

sbitEOC=P1^1;//转换结束信号

sbitOE=P1^0;//输出使能

uintd;

//延时

voidDelayMS(uintms)

{

uchari;

while(ms--)

for(i=0;i<120;i++);

}

//显示转换结果

voidDisplay_Result(uintd)

{

P2=0xfe;//第4个数码管显示个位数

P0=DSY_CODE[d%10];

DelayMS(5);

P2=0xfd;//第3个数码管显示十位数

P0=DSY_CODE[d%100/10];

DelayMS(5);

P2=0xfb;//第2个数码管显示百位数

P0=DSY_CODE[d/100]+128;

DelayMS(5);

}

//主程序

voidmain()

{

TMOD=0x02;//T1工作模式2

TH0=0x14;

TL0=0x00;

IE=0x82;

TR0=1;

P1=0x3f;//选择ADC0809的通道3(0111)(P1.4~P1.6)

while

(1)

{

ST=0;

ST=1;

ST=0;//启动A/D转换

while(EOC==0);

OE=1;

d=P3;

d=d*100/51;

Display_Result(d);

OE=0;//等待转换完成OE=1;

}

}

//T0定时器中断给ADC0808提供时钟信号

voidTimer0_INT()interrupt1

{

CLK=~CLK;

}

仿真图形:

 

选择BS18B20实验的实验内容:

DS18B20是广泛使用的数字温度传感器,测温范围-55℃~+125℃。

采用独特的一线制接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现双向通讯,支持多点组网功能。

DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路(常见的三引脚封装)内。

仔细阅读DS18B20的芯片资料,设计其与单片机的接口电路图,完成焊接,编写程序,完成温度测量功能,并通过HD7279的LED显示测量结果。

(HD7279程序已.h文件的形式给出)

五、实验步骤

选择A/D转换实验的实验步骤:

1.编写ADC0809程序,编译排除语法错误,接仿真器调试,可采用延时、中断、查询任何一种方法读取AD转换结果,利用变量观察窗口观察转换结果(必须在程序停止运行才可观察)。

2.将转换结果显示在LED数码管上,利用hd7279.h头文件,直接调用write_hd7279函数就可将转换结果显示在LED上。

3.在完成以上第二步的基础上,设基准电压为5V,将转换结果量化为电压值显示在实验板LED上,如实际电压为4.32V,显示432即可。

选择BS18B20实验的实验步骤:

1.阅读BS18B20芯片资料,完成电路设计与焊接。

2.编写BS18B20程序,编译排除语法错误,接仿真器调试,利用变量观察窗口观察当前温度(必须在程序停止运行才可观察)。

3.在完成以上第二步的基础上,将温度结果显示在实验板LED上。

少HD7279函数,可以自加2句write话

#include

#include

#definedisp_dataP0

#definecommP2

#defineucharunsignedchar

#defineuintunsignedint

uchardisp[6];

/*******************************************/

/***************DS18B20程序*****************/

/*******************************************/

sbitDQ=P3^7;

bitF;

/*--------------精确延时5us子程序---------*/

voiddelay5(ucharn)

{

do

{

_nop_();

_nop_();

_nop_();

n--;

}

while(n);

}

/*--------------初始化函数--------------------*/

voidinit_ds18b20(void)

{

//ucharx=0;

DQ=1;

delay5(10);

DQ=0;

delay5(120);

DQ=1;

delay5(16);

delay5(80);

}

/*--------------读取一字节函数----------------*/

ucharreadbyte(void)

{

uchari=0;

uchardate=0;

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

{

DQ=0;

delay5

(1);

DQ=1;//15微秒内拉释放总线

date>>=1;

if(DQ)

date|=0x80;

delay5(11);

}

return(date);

}

/*--------------写一字节函数------------------*/

voidwritebyte(uchardat)

{

uchari=0;

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

{

DQ=0;

DQ=dat&0x01;//写"1"在15微秒内拉低

delay5(12);//写"0"拉低60微秒

DQ=1;

dat>>=1;

delay5(5);

}

}

/*--------------读取温度函数------------------*/

uintreadtemp(void)

{

uchara,b;

uinttemp;

floattt;

init_ds18b20();

writebyte(0xCC);//跳过读序号列号的操作

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

init_ds18b20();

writebyte(0xCC);

writebyte(0xBE);//读取温度寄存器

a=readbyte();

b=readbyte();

if(b&0xf8)

{

temp=b;

temp<<=8;

temp|=a;

temp=~temp;

temp+=1;

F=1;//温度为负值

}

else

{

temp=b;

temp<<=8;

temp=temp|a;

F=0;//温度为正值

}

tt=temp*0.0625*10+0.5;

return(tt);

}

/*******************************************/

/***************DS18B20程序end**************/

/*******************************************/

 

//共阳极数码管0-9显示

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,/**/0x9c,0xbf,0xff};

//delay:

1ms//o,-,灭

//crystal:

12MHz

voiddelay_1ms(ucharm)

{

uchara,b,c;

for(a=m;a!

=0;a--)

for(b=2;b!

=0;b--)

for(c=248;c!

=0;c--);

}

voidconvert(void)

{

uinttemp;

temp=readtemp();

if(F)

{

disp[0]=12;//温度为负值

disp[1]=11;

disp[2]=temp/100;

disp[3]=temp/10%10;

}

else

{

disp[0]=12;//温度为正值

disp[1]=temp/1000;

disp[2]=temp/100%10;

disp[3]=temp/10%10;

}

disp[4]=10;//显示"C"

}

voiddisplay(void)

{

uchari,temp;

temp=0x01;

for(i=0;i<5;i++)

{

disp_data=table[disp[i]];

comm=temp;

delay_1ms

(2);

comm=0x0;

temp<<=1;

}

}

voidmain()

{

delay_1ms(200);

while

(1)

{

convert();

display();

delay_1ms(20);

}

}

仿真图形:

 

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2