基于51单片机的模数转换AD实验设计.docx

上传人:b****6 文档编号:7587017 上传时间:2023-01-25 格式:DOCX 页数:10 大小:457.33KB
下载 相关 举报
基于51单片机的模数转换AD实验设计.docx_第1页
第1页 / 共10页
基于51单片机的模数转换AD实验设计.docx_第2页
第2页 / 共10页
基于51单片机的模数转换AD实验设计.docx_第3页
第3页 / 共10页
基于51单片机的模数转换AD实验设计.docx_第4页
第4页 / 共10页
基于51单片机的模数转换AD实验设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于51单片机的模数转换AD实验设计.docx

《基于51单片机的模数转换AD实验设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的模数转换AD实验设计.docx(10页珍藏版)》请在冰豆网上搜索。

基于51单片机的模数转换AD实验设计.docx

基于51单片机的模数转换AD实验设计

HEFEIUNIVERSITY

单片机课程综述报告

主题基于51单片机的模数转换(A/D)实验设计

姓名郭丽丽

专  业通信工程

学号1105021006

班级11级通信

(1)班

指导老师汪济洲

2014年6月2日

1.实验目的与要求1

1.1实验目的1

1.2实验要求1

2.实验原理1

2.1电路原理图1

2.2Proteus7.4软件简介2

3、实验步骤6

4、源程序代码6

5.实验结果分析10

6.总结10

 

1.实验目的与要求

1.1实验目的

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

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

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

1.2实验要求

1.采用查询法或中断法编程进行A/D采集;

2.采集0~5V围的电压信号(以电位器模拟被测信号),使用4位串行数码管显示0~5V数值,小数点保留三位,实现简易电压表功能。

2.实验原理

2.1电路原理图

熟悉8051的输入输出端口的使用方法,本实验的电路连接如图1所示。

图1连接电路

2.2Proteus7.4软件简介

Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:

①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:

ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。

④具有强大的原理图绘制功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

其操作界面如下图所示:

图2Proteus操作页面

2.模数转换(A/D)实验设计

ADC0809简介

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

图3ADC0809的部逻辑结构

 

图4ADC0809芯片

ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

ADC0809的部逻辑结构:

由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

 

图5 ADC0809的部逻辑结构

ADC0809各脚功能如下:

D7-D0:

8位数字量输出引脚。

IN0-IN7:

8位模拟量输入引脚。

VCC:

+5V工作电压。

GND:

地。

REF(+):

参考电压正端。

REF(-):

参考电压负端。

START:

A/D转换启动信号输入端。

ALE:

地址锁存允许信号输入端。

(以上两种信号用于启动A/D转换)

EOC:

转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。

OE:

输出允许控制端,用以打开三态数据输出锁存器。

CLK:

时钟信号输入端(一般为500KHz)。

A、B、C:

地址输入线。

3、实验步骤

1.Proteus软件中绘制单片机实验电路;

2.在KeilC软件中编制汇编或C程序,软件调试;

3.在Proteus中加载实验程序,观察并记录实验结果。

4、源程序代码

#include

//*******************引脚定义********************//

sbitdis_ab=P3^0;

sbitdis_clk=P3^1;

sbitCLK=P3^4;

sbitST=P3^5;

sbitEOC=P3^6;

sbitOE=P3^7;

//*****************7SEG-LED段码表****************//

UnsignedcharcodeLedTab[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,

0x7c,0x39,0x5e,0x79,0x71,0x76,0x73,0x3e,0x00,0x40};

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

unsignedchardatanum_1;//存储十六进制转化为两个单十六进制数的值

unsignedchardatanum_2;

unsignedchardatanum_3;

unsignedchardatanum_4;

voidDelay(unsignedintx);

voidDispClk(void);

voidDisplaySerial(unsignedcharx);

voidClearLed(unsignedcharx);

voidHexToDec(unsignedintx);

voidmain()

{

unsignedlongnum;

ST=0;

OE=0;

while

(1)

{

ST=1;//发高脉冲启动采样信号

ST=0;

do{CLK=!

CLK;}//提供采样时钟信号,直到采样结束为止

while(!

EOC);

OE=1;

num=P1;//读取采样值

num=5000*num/255;//将0~#FFH采样值转化为0~5V数值(0~5000)

HexToDec(num);//将16进制数据,转换为10进制数据,以便于数码管显示

ClearLed(4);

DisplaySerial(num_4);//依次从高位到低为显示采样电压值

DisplaySerial(num_3);

DisplaySerial(num_2);

DisplaySerial(num_1);

Delay(30000);//采样延时间隔,决定采样频率

}

}

//********************延时子程序********************//

voidDelay(unsignedintx)

{

unsignedintj;

for(j=0;j

}

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

功能:

串行模拟时钟

注意事项:

用到delay.h中的延时子程序

形参:

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

voidDispClk(void)

{

dis_clk=1;Delay

(1);

dis_clk=0;Delay

(1);

}

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

功能:

发送一个数字到串行LED上

形参:

unsignedcharx:

0-20

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

voidDisplaySerial(unsignedcharx)

{

unsignedchari;

unsignedcharnum_serial=LedTab[x];

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

{

dis_ab=(bit)(num_serial&0x80);

num_serial<<=1;

DispClk();

}

}

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

功能:

清串行LED显示

形参:

unsignedcharx=需要清显示的LED数

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

voidClearLed(unsignedcharx)

{

unsignedchari;

for(i=0;i<(x<<3);i++)

{

DispClk();

dis_ab=0;

}

}

voidHexToDec(unsignedintx)//十六进制转十进制

{

num_1=x%10;//个位

x=x/10;

num_2=x%10;//十位

x=x/10;

num_3=x%10;

x=x/10;

num_4=x%10;

}

 

5.实验结果分析

通过改变POT-LIN原件滑片的位置即可调整输入的物理模拟量,可以发现输出的数字信号即观察LED的显示效果的不同。

通过实验,会发现:

(1)当POT-LIN原件上的滑片位置位于参考图的上方时,LED会全亮;

(2)当POT-LIN原件上的滑片位于最下方时,LED全暗;

(3)当POT-LIN原件上的滑片位于上下之间的位置时,则会有其对应的LED显示效果。

LED显示效果如下图示:

图6LED效果图

6.总结

通过此次实验,让我学习了A/D转换与单片机的接口方法。

对A/D芯片ADC0809转换性能及编程方法有了深入的了解,通过实验了解单片机如何进行数据采集,锻炼了编程能力。

总的来说,经过这几个星期的单片机课程的学习,使我们对单片机有了一定的了解,老师只是引导我们入门,要想深入学习还得课下花时间自己钻研。

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

当前位置:首页 > 求职职场 > 简历

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

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