ADC综合应用实验设计.docx
- 文档编号:23398455
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:12
- 大小:148.34KB
ADC综合应用实验设计.docx
《ADC综合应用实验设计.docx》由会员分享,可在线阅读,更多相关《ADC综合应用实验设计.docx(12页珍藏版)》请在冰豆网上搜索。
ADC综合应用实验设计
南京信息工程大学单片机实验报告
实验(实习)名称ADC及显示实验日期2013.6.20得分指导教师毛鹏
系信控专业电气工程年级2010级班次2姓名李来学号20101340055
一、实验任务:
利用单片机STC89C52与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,两位数码显示。
二、实验设备:
STC89C52单片机、ADC0809芯片、2个共阴极数码管、5V电源、面包板、导线若干、晶振、电容
三、实验内容:
以89C51单片机为核心,借助ADC0809芯片,实现对模拟电压的取样转换(取样点的电压在0~5V之间可调),并通过2位8段共阴极LED数码管进行显示,即实时显示出当前的模拟电压大小。
1.ADC0809规格及引脚分配图如下图所示:
ADC0809引脚图
(1)它的主要功能:
18位分辨率
28路模拟输入选通转换
3可锁存三态输出,与TTL兼容,和微机接口方便
4最大不可调误差小于±1LSB
5不必进行零点和满度调整
6CMOS工艺、功耗为15mW
7单一+5V电源工作
8转换速率取决于芯片的时钟频率
(2)引脚功能分析:
START:
A/D转换启东控制端,加正脉冲后转换开始
IN0-IN7:
8路模拟输入端
D0-D7:
8路数字量输出
EOC:
转换结束信号输出端,当A/D转换开始后,EOC变低电平,而转换结束时,EOC返回高电平。
该信号可作为中断请求信号。
ALE:
地址锁存控制端,ALE上升沿将A、B、C的输入地址打入地址锁存器。
OE:
输入允许控制端,当OE端的电平由低变高时,三态输出锁存器打开。
该信号一般由片选和读信号产生。
CLK:
时钟输入端。
ADDA、ADDB、ADDC:
8路模拟开关的选通地址输入端,用以选择8个通道中的一个模拟量进行A/D转换。
2.STC89C52各个引脚分布如下图所示:
STC89C52引脚图
3.硬件接线方式及目的
(a)把“单片机系统”区域中的P3.0与”模数转换模块ADC0809“区域中的ST端子用导线相连接。
目的:
A/D转换启东控制端,加正脉冲后转换开始。
(b)把“单片机系统”区域中的P3.1与”模数转换模块ADC0809“区域中的ALE端子用导线相连接。
目的:
地址锁存控制端,ALE上升沿将A、B、C的输入地址打入地址锁存器。
(c)把“单片机系统”区域中的P3.2与”模数转换模块ADC0809“区域中的OE端子用导线相连接。
目的:
输入允许控制端,当OE端的电平由低变高时,三态输出锁存器打开。
该信号一般由片选和读信号产生。
(d)把“单片机系统”区域中的P3.6与”模数转换模块ADC0809“区域中的EOC端子用导线相连接。
目的:
转换结束信号输出端,当A/D转换开始后,EOC变低电平,而转换结束时,EOC返回高电平。
该信号可作为中断请求信号。
(e)把“单片机系统”区域中的P3.7与”模数转换模块ADC0809“区域中的CLK端子用导线相连接。
目的:
时钟输入端,用来提供时钟信号。
(f)把“模数转换模块ADC0809”区域中的ADDA、ADDB、ADDC端子用导线连接到单片机的VCC端子上。
把“模数转换模块ADC0809”区域中IN7与外接输入电压相连。
目的:
8路模拟开关的选通地址输入端,用以选择8个通道中的一个模拟量进行A/D转换。
(g)把“单片机系统”区域中的P2.0-P2.7连接到“模数转换模块ADC0809”区域中D0D1D2D3D4D5D6D7端子上。
目的:
将ADC8路数字量输出作为单片机P2端口的输入。
(h)把“单片机系统”区域中的P1.0-P1.7连接到两个“数码管”区域中ABCDEFG端子上。
目的:
将单片机的P1口输出到数码管上显示
(i)把“单片机系统”区域中的P0.0-P0.1连接到“数码管”区域中com端口。
目的:
片选信号,用于分别选中数码管1、数码管2
4.电路原理图
电路原理图
5.程序流图
四.实验程序
C语言源程序
#include
sbitALE=P3^1;
sbitST=P3^0;
sbitEOC=P3^2;
sbitOE=P3^6;
sbitCLK=P3^7;
sbitwexuan1=P0^0;
sbitwexuan2=P0^1;
//sbitIN1=P0^5;
//sbitIN2=P0^6;
//sbitIN3=P0^7;
unsignedintcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};//段码表
unsignedintn=0,flag1=1,flag=1,ad_data,num1=0,num2=0;
voiddelay(xms)
{
unsignedintx,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay()//2位数码管显示
{
floata;
a=(float)ad_data/256*5*1000;
num1=(int)a/1000;
num2=(int)a/100-num1*10;
P1=table[num1];
wexuan1=1;
delay
(1);
wexuan1=0;
P1=0xff;
P1=0x7f;//小数点
wexuan1=1;
delay
(1);
wexuan1=0;
P1=0xff;
P1=table[num2];
wexuan2=1;
delay
(1);
wexuan2=0;
P1=0xff;
}
voidinit()
{
ST=0;
ALE=0;
OE=0;
CLK=0;
//_EOC=1;
TMOD=0x12;IP=0x09;
TH0=(65536-22)/256;
TL0=(65536-22)%256;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET0=1;ET1=1;
TR0=1;TR1=1;
EX0=1;//打开外部中断
IT0=1;//从高到低的负跳变有效
P0=0x00;
}
voidstart()//inta,intb,intc)//选择通道
{
//IN1=a;IN2=b;IN3=c;
ALE=0;ALE=1;
ST=0;ST=1;
ALE=0;ST=0;
display();
delay(10);
}
intread()
{
unsignedintdat;
P2=0xff;
OE=1;
display();
dat=P2;
OE=0;
return(dat);
}
voidmain()
{
init();
while
(1)
{ST=0;
ST=1;
ST=0;
if(n==20)
{
flag=1;
//display();
//start();
//while(EOC==0);//转换结束(EOC=1)读出数据后显示
//_EOC=0;
ad_data=read();
flag=0;
display();
//n=0;
//display();
//_EOC=1;
}
display();//显示的是if中的电压值
}
}
voidINTR_0()interrupt0
{
while
(1)
{
ad_data=read();
flag=0;
display();}
}
voidtimer0()interrupt1//输出500kHz方波
{
CLK=~CLK;
}
voidtimer1()interrupt3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
n++;
flag1=0;
}
5.实验总结
单片机是一门实践性非常强的学科,只看教程,光说不练是永远也学不会的,买一块开发板,就是买一个平台,有了单片机的实验平台,才能去实验更多的程序,才能日积月累,积累更多的开发经验和思路,才能踏进单片机开发的大门,通过本次实践,我体会到了实践的重要性以及必要性,要学会理论联系实践,脚踏实地的进行实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ADC 综合 应用 实验设计