ADC0809转换及DS18B20实验.docx
- 文档编号:774063
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:14
- 大小:125.48KB
ADC0809转换及DS18B20实验.docx
《ADC0809转换及DS18B20实验.docx》由会员分享,可在线阅读,更多相关《ADC0809转换及DS18B20实验.docx(14页珍藏版)》请在冰点文库上搜索。
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);
}
}
仿真图形:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC0809 转换 DS18B20 实验