基于51单片机的模数转换(AD)实验设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
延时子程序 ********************//
void Delay(unsigned int x)
{
unsigned int j;
for(j=0;j<x;j++){};
}
//********************************//
功能:串行模拟时钟
注意事项:用到 delay.h 中的延时子程序
③提供软件调试功能。 在硬件仿真系统中具有全速、 单步、 设置断点等调试 功能,同时可以观察各个变量、 寄存器等的当前状态, 因此在该软件仿真系统中, 也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2 、MPLAB等软件。
④具有强大的原理图绘制功能。 总之,该软件是一款集单片机和 SPICE分析 于一身的仿真软件,功能极其强大。
形参:无
//********************************//
void DispClk(void)
{
dis_clk=1;Delay(1);
dis_clk=0;Delay(1);
}
//**Fra Baidu bibliotek*****************************//
欢迎下载
—
功能:发送一个数字到串行 LED上
引脚定义 ********************//
欢迎下载
—
sbit OE=P3^7;
//*****************7SEG-LED
段码表 ****************//
Unsigned char code
LedTab[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
图 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. 在 Keil C 软件中编制汇编或 C程序,软件调试; 3. 在 Proteus 中加载实验程序,观察并记录实验结果。
4、源程序代码
#include <reg52.h> //*******************
sbit dis_ab=P3^0; sbit dis_clk=P3^1; sbit CLK=P3^4; sbit ST=P3^5; sbit EOC=P3^6;
0x7c,0x39,0x5e,0x79,0x71,0x76,0x73,0x3e,0x00, 0x40};
//************************************************//
unsigned char data num_1; //
存储十六进制转化为两个单十六进制数
的值
ADC0809的内部逻辑结构: 由下图可知, ADC0809 由一个 8 路模拟开关、一个地址锁存与译码器、一 个 A/D 转换器和一个三态输出锁存器组成。多路开关可选通 8 个模拟通道,允 许 8 路模拟量分时输入, 共用 A/D 转换器进行转换。 三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完的 数据。
2.实验原理 ........................................................................................................................................ 1 2.1 电路原理图 ......................................................................................................................... 1 2.2 Proteus7.4 软件简介 .......................................................................................................... 2
①实现了单片机仿真和 SPICE电路仿真相结合。 具有模拟电路仿真、 数字电 路仿真、 单片机及其外围电路组成的系统的仿真、 RS232动态仿真、 I2C 调试器、 SPI 调试器、键盘和 LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分 析仪、信号发生器等。
②支持主流单片机系统的仿真。 目前支持的单片机类型有: ARM7(LPC21xx、) 8051/52 系列、 AVR系列、 PIC10/12/16/18 系列、 HC11系列以及多种外围芯片。
欢迎下载
图 4 ADC0809芯片
—
ADC0809由一个 8 路模拟开关、一个地址锁存与译码器、一个 A/D 转换器和 一个三态输出锁存器组成。 多路开关可选通 8 个模拟通道, 允许 8 路模拟量分时 输入,共用 A/D 转换器进行转换。三态输出锁器用于锁存 A/D 转换完的数字量, 当 OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
其操作界面如下图所示:
欢迎下载
图 2 Proteus 操作页面
—
2. 模数转换( A/D)实验设计 ADC0809简介
ADC0809 是带有 8 位 A/D 转换器、 8 路多路开关以及微处理机兼容的控制 逻辑的 CMOS 组件。它是逐次逼近式 A/D 转换器,可以和单片机直接接口。
图 3 ADC0809的内部逻辑结构
DisplaySerial(num_4);
// 依次从高位到低为显示采样电压值
DisplaySerial(num_3);
DisplaySerial(num_2);
DisplaySerial(num_1);
Delay(30000);
// 采样延时间隔,决定采样频率
}
}
//********************
void ClearLed(unsigned char x);
void HexToDec(unsigned int x);
void main()
{
unsigned long num;
ST=0;
OE=0;
while(1)
{
ST=1;
// 发高脉冲启动采样信号
ST=0;
do{CLK=!CLK;}// 提供采样时钟信号,直到采样结束为止
{
dis_ab=(bit)(num_serial&0x80);
num_serial<<=1;
DispClk();
}
}
//********************************//
功能:清串行 LED显示
形参: unsigned char x = 需要清显示的 LED数
//********************************//
2.实验原理
2.1 电路原理图
熟悉 8051 的输入输出端口的使用方法 , 本实验的电路连接如图 1 所示。
欢迎下载
图 1 连接电路
—
2.2 Proteus7.4 软件简介
Proteus 是英国 Labcenter 公司开发的电路分析与实物仿真软件。 它运行于 Windows操作系统上,可以仿真、分析 (SPICE) 各种模拟器件和集成电路,该软 件的特点是:
欢迎下载
—
1.实验目的与要求
1.1 实验目的
1. 掌握 A/D 转换与单片机的接口方法 2. 了解 A/D 芯片 ADC0809转换性能及编程方法 3. 通过实验了解单片机如何进行数据采集
1.2 实验要求
1. 采用查询法或中断法编程进行 A/D 采集; 2. 采集 0~5V 范围的电压信号(以电位器模拟被测信号) ,使用 4 位串 行数码管显示 0~ 5V数值,小数点保留三位,实现简易电压表功能。
形参: unsigned char x :0-20
//********************************//
void DisplaySerial(unsigned char x)
{
unsigned char i;
unsigned char num_serial=LedTab[x];
for(i=0;i<8;i++)
—
HEFEI UNIVERSITY
单片机课程综述报告
主题 姓名 专业 学号 班级 指导老师
基于 51 单片机的模数转换( A/D)实验设计 郭丽丽
通信工程 1105021006 11 级通信( 1)班
汪济洲
欢迎下载
2014 年 6 月 2 日
—
目录
1.实验目的与要求 ............................................................................................................................ 1 1.1 实验目的 ............................................................................................................................. 1 1.2 实验要求 ............................................................................................................................. 1
while(!EOC);
OE=1;
num=P1;
// 读取采样值
欢迎下载
—
num=5000*num/255; // 将 0~#FFH 采样值转化为 0~ 5V 数值( 0~
5000)
HexToDec(num);
// 将 16 进制数据,转换为 10 进制数据,以
便于数码管显示
ClearLed(4);
unsigned char data num_2;
unsigned char data num_3;
unsigned char data num_4;
void Delay(unsigned int x);
void DispClk(void);
void DisplaySerial(unsigned char x);
3、实验步骤 ..................................................................................................................................... 5 4、源程序代码 ................................................................................................................................. 5 5. 实验结果分析 ............................................................................................................................ 10 6.总结 ............................................................................................................................................. 10
void ClearLed(unsigned char x)
{
unsigned char i;