ADC0809电压采集程序分享

ADC0809电压采集程序分享,第1张

  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()));

  }

  }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2706622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-16
下一篇 2022-08-16

发表评论

登录后才能评论

评论列表(0条)

保存