ADC0809电压采集程序分享

AC-DC/DC-DC转换

117人已加入

描述

  ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。那么ADC0809电压采集程序是怎样?

  ADC0809电压采集程序分享(C语言):

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

  //ADC0809的clk经分频74LS74接单片机的ALE端,ADC0809的ALE端接ST端,单片机晶振:12M

  //STC89C52RC单片机,此时介接入ADC0809的时钟频率为1M,然后不经过分频,直接把单片机的2M

  //频率的出自ALE端的时钟信号接入ADC0809也可以正常工作,不过这是将while(!AD0809_EOC);去掉以后

  //发现仍然能够正常工作。同时不加任何延时,基准电压大约为4.41v,,测出来的电压和万用表测得电压吻合

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

  #include《reg52.h》

  #include《intrins.h》

  #define uchar unsigned char

  #define uint unsigned int

  #define ad0809_data P2

  sbit ad0809_stale=P3^2;

  sbit ad0809_eoc=P3^3;

  sbit ad0809_oe=P3^4;

  sbit ad0809_a=P3^5;

  sbit ad0809_b=P3^6;

  sbit ad0809_c=P3^7;

  uchar ad0809_read()

  {

  uchar tempdata;

  ad0809_a=1;

  ad0809_b=1;

  ad0809_c=1; //选通第八个通道

  ad0809_stale=1; //对应ST以及ALE上跳沿,通道地址锁存,AD复位

  ad0809_stale=0; //ST下降沿,启动AD转换

  //while(!ad0809_eoc); //等带AD转换成功

  ad0809_data=0xff;

  ad0809_oe=1; //输出容许

  tempdata=ad0809_data;

  ad0809_oe=0; //输出禁止

  return tempdata;

  }

  uint ad0809_cvt(uchar digdata)

  {

  uint voltdata;

  voltdata=(4.41/255)*digdata*100;

  return voltdata;

  }

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

  //数码管显示子程序,将一个数num显示到某一位weixuan数码管

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

  void numdis(uchar num,uchar weixuan,uchar brightness )

  {

  while(brightness--)P0=num*0x10+weixuan*0x01;

  P0=0xff;

  }

  void display(uint addata)

  {

  numdis(addata%1000/100, 2,20);

  numdis(addata%100/10, 1,20);

  numdis(addata%10, 0,20);

  }

  void main()

  {

  while(1)

  {

  display(ad0809_cvt(ad0809_read()));

  }

  }

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

全部0条评论

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

×
20
完善资料,
赚取积分