关于adc0809 eoc总是低电平的问题
这是源程序#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit ST=P3^0; sbit EOC=P3^1; sbit OE=P3^2; sbit CLK=P3^3; /**********延时函数************/ void delaynms(uchar i) { uchar j; while(i--) { for(j=125;j>0;j--) ; } } /*********系统初始化***********/ void Init_Time() { EA = 1; //开总中断 TMOD = 0x02; //设定定时器T0工作方式2 TH0=236; TL0=236; TR0=1;//启动定时器T0 ET0=1; } /***********T0中断服务程序************/ void t0(void) interrupt 1 using 0 { CLK=~CLK; } /***********AD转换函数**********/ uint AD() { uint ad_data=0; OE=0; ST=0; delaynms(1); ST=1; //启动AD转换 delaynms(1); ST=0; delaynms(1); while(EOC==0); OE=1; ad_data=P1; OE=0; return ad_data; } /*******数码管显示******/ void display(uint ad_data) { P0=tab[ad_data/100]; P2=0xbf; delaynms(1); P0=tab[ad_data%100/10]; P2=0xdf; delaynms(1); P0=tab[ad_data%10]; P2=0xef; delaynms(1); P2=0xFF; } /**********主函数*******/ void main() { Init_Time(); while(1) { display(AD()); } }
ALR,START 信号线给过高电平没有,不应一直保持高电平,EOC持续为低说明转换未完成,从你的程序上看,ALE(地址锁存引脚)未受控,应接受一个正脉冲,实际可以和START引脚连在一起的。
恩,解决了,谢谢
求助小编,怎么解决的,我也是eoc总是低电平,时序和电路都检查好多遍了