⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad0808.c

📁 Proteus环境下ADC0808模数转换程序,中断方式.
💻 C
字号:
#include <at89x51.h>
#define uchar unsigned char
#define unit  unsigned int
 sbit eoc=P3^0;
 sbit oe =P3^1;
 sbit st =P3^3;
 
 sbit s1=P2^5;
 sbit s2=P2^6;
 sbit s3=P2^7;

uchar code tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x0,0x0};//数码管共阳级显示0~9,不显示

unit ad_0809,ad_data1,ad_data2,ad_data3;
uchar out;

void delaynms(unit x);
void display();
void ad0809();
void key();

void main()
{ 
   EA=1;
	EX0=1;
	IT0=1;//下降沿触发,cpu内存占用少,如果是低电平触发,cpu将耗大量内存在中断上,长时间的取ad转换数据
 while(1)
 { s1=s2=s3=0;//channel 0
 
  P0=0xff;//input
  oe=0;
  st=0;
  st=1;//清0
  st=0;//启动
 
  ad_0809=out;
  display();

 }

}

void EXINTO(void) interrupt 0
{EA=0;
 EX0=0;
 oe=1;
  out=P0;
   oe=0;
	EA=1;
	EX0=1;
}




void delaynms(unit x)	
{ while(x-->0)
{
  unsigned char k; 
  for(k=10;k>0;k--); 
} 
}


void display()
{ //unit a;
  ad_data1=(ad_0809*49/25)/100;  //the highest bit, 255*49/25=4.99V
  ad_data2=(ad_0809*49/25)/10%10;
  ad_data3=(ad_0809*49/25)%100%10;
  

  P1=tab[ad_data3];
  P2=0x0b;
  delaynms(10);
  P2=0xff;

  P1=tab[ad_data2];
  P2=0x0d;
  delaynms(10);
 P2=0xff;

  P1=tab[ad_data1];
  P2=0x0e;
  P1_7=1;  //共阴极的
  delaynms(10);//中断方式延时比较短
 P2=0xff;



}


模数转换器适用的最高有效工作时钟频率约为3MHz。最高模数转换速度大约可以达到24微妙。工作时钟的脉冲宽度应不小于166纳秒。</FONT>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当工作时钟CLK3的脉冲宽度调到125纳秒时,不论频率为何值,得到的转换结果都是错误的。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)ADC0809内部带有输出锁存器。可以与AT89S51单片机直接相连。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)初始化时,使ST和OE信号全为低电平。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)送要转换的那一通道的地址到A、B、C端口上。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)在ST端给出一个至少有100纳秒的宽的正脉冲信号。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (5)是否转换完毕,根据EOC信号来判断。</FONT></DIV>
<DIV><FONT size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (6)当EOC变为高电平时,这时给OE为高电平,转换的数据就会给单片机了<


  


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -