最近研究了下ADC0809这个芯片,做了个电路,和大家分享 电路原理图如下:
说明: D0~D7接51单片机的P2口(P2.0~P2.7)
ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)
应用程序如下: #include\"reg52.h\"
#define uchar unsigned char sbit ST=P1^0; sbit EOC=P1^1; sbit OE=P1^2; sbit CLK=P1^3; sbit ADDCS=P1^4;
uchar AD_DATA[2]; //保存IN0和IN1经AD转换后的数据
/**********延时函数************/ void delay(uchar i) {
uchar j; while(i--) {
for(j=125;j>0;j--) ; } }
/*********系统初始化***********/ void init() {
EA = 1; //开总中断
TMOD = 0x02; //设定定时器T0工作方式 TH0=216; //利用T0中断产生CLK信号 TL0=216;
TR0=1; //启动定时器T0 ET0=1; ST=0; OE=0; }
/***********T0中断服务程序************/ void t0(void) interrupt 1 using 0 {
CLK=~CLK; }
/***********AD转换函数**********/ void AD() { ST=0;
ADDCS=0; //选择通道IN0 delay(10);
ST=1; //启动AD转换 delay(10); ST=0;
while(0==EOC) ; OE=1;
AD_DATA[0]=P2; OE=0; ST=0;
ADDCS=1; //选择通道IN1 delay(10);
ST=1; //启动AD转换 delay(10); ST=0;
while(0==EOC) ; OE=1;
AD_DATA[1]=P2; OE=0; }
/*****************主函数**************/ void main() {
init(); while(1) { AD(); } }
注: 由于ADC0809内部不带时钟电路,因此用51单片机的定时器T0来产生时钟信号。
在通道选择时,由于B,C接地,当A(ADDCS)为低电平时选择IN0,A为高电平时选择IN1
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务