ADC0804模数转换51单片机程序与电路

AC-DC/DC-DC转换

116人已加入

描述

  集成A/D转换器品种繁多,选用时应综合考虑各种因素选取集成芯片。一般逐次比较型A/D转换器用的比较多,ADC0804就是这类单片集成A/D转换器。ADC0804是一款8位、单通道、低价格A/D转换器。

  adc0804主要特点

  模数转换时间大约100us;

  方便TTL或CMOS标准接口;

  可以满足差分电压输入;

  具有参考电压输入端;

  内含时钟发生器;

  单电源工作时(0~5)V输入电压范围是0~5V;

  不需要调零。

  adc0804芯片操作时序图

51单片机

  操作时序图

  分析图可知,CS先为低电平,WR随后置低,经时间tw(WR)L后,WR置高,随后AD转换器被启动,并且在经过一段时间后,模数转换完成,转换结果存入数据锁存器,同时INTR自动变为低电平,通知单片机本次转换已结束。我们在实际写单片机程序启动A/D转换时就要遵循上面的时序。但实际使用中,也可以不采用中断方式读取A/D转换数据,我们可以在启动A/D转换后,经过延时一段时间,直接读取A/D转换数据结果,读取结束后再启动一次A/D转换,如此循环下去。

51单片机

  ADC0804与CPLD&FPGA、8051单片机等典型连接图

  ADC0804模数转换51单片机电路

51单片机

  程序图如下:

  #include

  #include “lcd.h”

  #include

  #define uint unsigned int

  #define uchar unsigned char

  uchar lcd[]=“0123456789”;

  sbit rd=P3^6; //IO口定义

  sbit wr=P3^5;

  sbit cs=P3^7;

  read_adc0804()//控制并读取adc0804转换好的数据

  {

  uchar a; //写入控制命令,启动转换

  cs=1;

  wr=1;

  cs=0;

  wr=0;

  _nop_();

  wr=1;

  P1=0xff; //读取已转换好的数据

  rd=1;

  rd=0;

  _nop_();

  a=P1;

  rd=1;

  cs=1;

  return a;

  }

  void main()

  {

  uchar a,A1,A2,A3;

  lcd_init();

  while(1)

  {

  a=read_adc0804();

  A1=a/100; //分出百,十,和个位

  A2=a%100/10;

  A3=a%10;

  lcd_busy();

  lcd_xy(3,0);

  lcd_write_dat(lcd[A1]);

  lcd_busy();

  lcd_xy(4,0);

  lcd_write_dat(lcd[A2]);

  lcd_busy();

  lcd_xy(5,0);

  lcd_write_dat(lcd[A3]);

  }

  }

  推荐阅读:

  adc0804操作方法

  adc0804数字电压表

  adc0804和adc0809区别

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分