找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14671|回复: 4
打印 上一主题 下一主题
收起左侧

ADC0809模数转换程序及详解

[复制链接]
跳转到指定楼层
楼主
本帖最后由 ziba108 于 2018-6-8 22:02 编辑

ADC0809模数转换程序及详解

       对于初学者通过51单片机在加ADC0809模数转换尤其很重要,很多传感器得来的数据必须转换后
进一步通过51单片机来送到下一个环节,所以跟深层的了解模数转换很有必要。


模数转换器最重要的参数是转换的精度,通常用输出的数字信号的位数的多少表示。转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。
  A/D 转换一般要经过采样、保持、量化及编有些过程是合并进码4 个过程。在实际电路中,如采样和保持,量化和编码在转换过程中行的,是同时实现的。 而ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
  ADC0809主要特性:
  188AD转换器,即分辨率8位。
  2)具有转换起停控制端。
  3)转换时间为100μs
  4)单个+5V电源供电
  5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
  6)工作温度范围为-40~+85摄氏度
  7)低功耗,约15mW
  ADC0809内部结构

ADC0809外部特性(引脚功能)

ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。
  IN0IN78路模拟量输入端。
  2-12-88位数字量输出端。
  ADDAADDBADDC3位地址输入线,用于选通8路模拟输入中的一路
  ALE:地址锁存允许信号,输入,高电平有效。
  STARTAD转换启动信号,输入,高电平有效。
  EOCAD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。
  OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
  CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ
  REF+)、REF-):基准电压。
  Vcc:电源,单一+5V
GND:地。

ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此 地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可 用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

值得一提的是,我按照上面电路,把ADABC三脚共同接接地时,AD0809088始终输出高电平,最后当我把BC共同接地,在程序中给A一个0,则AD0809正常运行,有输出,并且发现当所给的时钟频率越低,最高精度的那位输出越稳定。
ADC0809模数转换完整的程序:
  #includereg52.h
  #define uint unsigned int
  #define uchar unsigned char
  uchar aaqianbaishige;
  uint temp;
  sbit clock=P2^0;
  sbit start=P2^1;
  sbit eoc=P2^2;
  sbit oe=P2^3;
  sbit ale=P2^4;
  sbit adda=P2^5;
  uchar code table[]={
  0x3f0x060x5b0x4f
  0x660x6d0x7d0x07
  0x7f0x6f0x770x7c
  0x390x5e0x790x71
  };
  //void displayuchar baiuchar shiuchar ge;
  void delayuint z;
  void main()   {
  TMOD=0x20; //设置定时器1为工作方式2
  TH1=0x216; //216
  TL1=0x216; //216
  EA=1; //开总中断
  ET1=1; //t1中断
  TR1=1;
  start=0; //复位
  oe=0; //输出
  adda=0;
  //eoc=0;
  ale=0; //关闭地址选择
  while1   {
  start=0;
  ///delay10;
  start=1; // 复位
  ale=1; // 打开地址选择
  adda=0;
  ///delay10;
  start=0; // 开始转换
  ale=0; // 关地址
  //delay1;
  whileeoc==0; // 等待eoc变为1
  //delay1;
  oe=1; // 打开输出
  //delay1;
  //P1=0xff;
  temp=P1; // p1p3
  oe=0; // 关输出
  temp=temp*50;
  temp=temp/256;
  qian=temp/1000;
  bai=temp%1000/100;
  shi=temp%100/10;
  ge=temp%10;
  P3=0x00;
  P0=0xfe;
  P3=tableqian;
  delay50;
  P3=0x00;
  P0=0xfd;
  P3=tablebai;
  delay50;
  P3=0x00;
  P0=0xfb;
  P3=tableshi;
  delay50;
  P3=0x00;
  P0=0xf7;
  P3=tablege;   }   }
  void delayuint z   {
  uint xy;
  forx=z;x0;x--
  fory=1;y0;y--;
  }
  void cl() interrupt 3    {
clock=clock;
}
ADC0809模数转换程序及详解.docx (140.61 KB, 下载次数: 88)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:366868 发表于 2018-7-7 16:10 | 只看该作者
额这一个程序换了好几个名字发了好几次
回复

使用道具 举报

板凳
ID:442451 发表于 2018-12-8 23:02 | 只看该作者
学习一下,虽然有点过时;
回复

使用道具 举报

地板
ID:371895 发表于 2018-12-9 10:55 | 只看该作者
谢谢分享。。。。。。。。。。。。。。
回复

使用道具 举报

5#
ID:419391 发表于 2020-5-17 09:49 | 只看该作者
很好的资源,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表