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

📄 adc0809.c

📁 这是一个80C51单片机模数转换C程序
💻 C
字号:
/******************************************************/
//程序名:AD0809.c
//实验:将实验板中两路模拟电压信号转换成数字量
//并以十进制形式显示,前3位显示第二通道信号
//后3位显示第一通道信号
/******************************************************/
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char 

#define IN0  XBYTE[0X0000]		//通道0 
#define IN1  XBYTE[0X0001]
#define IN2  XBYTE[0X0002]
#define IN3  XBYTE[0X0003]
#define IN4  XBYTE[0X0004]
#define IN5  XBYTE[0X0005]
#define IN6  XBYTE[0X0006]
#define IN7  XBYTE[0X0007]

uchar code tab[]={0x88,0xEB,0x4C,0x49,0x2B,0x19,0x18,0xCB,0x08,
0x09,0x0A,0x38,0x9C,0x68,0x1C,0x1E,0xFF};//0123456789abcdef//

sbit ad_busy=P3^5;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;

void AD0809(uchar idata *x);
void Display(uchar ucChn1,uchar ucChn2);

void main();
{
     uchar i,j,h;
	 uchar ad[8];
	 SCON=0;
	 P1_4=1;
	 P1_3=0;
	 p1_2=0;
	 while(1)
	 {
	     AD0809(ad);
		 Display(ad[0],ad[1]);
		 for(i=0;i<50;i++);
		     for(j=0;j<250;j++)
			     for(h=0;h<250;h++);
	  }
}
/////////////////////////////////////////////
/**************************************************************************************/
/*************调用该程序后应将模拟量转换成数字量存于一数组(x)之中***************/
/**************************************************************************************/
void AD0809(uchar idata *x)
{
     uchar i;
     data uchar xdata *ad_adr;
	 ad_adr=&IN0;
	 for(i=0;i<8;i++)
	    {
		    *ad_adr=0;
			ad_busy=0;                   //书中为  1  ,我认为应为0
			while(ad_busy==0);
			x[i]=*ad_adr;				 //对应ad[8]
			ad_adr++;
		}
}
//////////////////////////////////////////
void Display(uchar ucChn1,uchar ucChn2)
{
     uchar ucHi,ucMid,ucLow;
	 ucHi=ucChn1/100;
	 ucMid=(ucChn1-ucHi*100)/10;
	 ucLow=ucChn1%10;
	 if(ucHi==0)
	   {
	      SBUF=tab[ucLow];
		  while(!TI);
		  TI=0;
		  
		  if(ucMid==0)
		     {
			     SBUF=0xff;
				 while(!TI);
				 TI=0;
				}
			else {
			       SBUF=tab[ucMid];
				   while(!TI);
				   TI=0;
				   }
		}
	 else{ 
	         SBUF=tab[ucLow];
			 while(!TI);
			 TI=0;
			 SBUF=tab[ucMid];
			 while(!TI);
			 TI=0;
			 SBUF=tab[ucHi];
			 while(!TI);
			 TI=0;
		 }


	 ucHi=ucChn2/100;
	 ucMid=(ucChn2-ucHi*100)/10;
	 ucLow=ucChn2%10;
	 if(ucHi==0)
	   {
	      SBUF=tab[ucLow];
		  while(!TI);
		  TI=0;
		  
		  if(ucMid==0)
		     {
			     SBUF=0xff;
				 while(!TI);
				 TI=0;
				}
			else {
			       SBUF=tab[ucMid];
				   while(!TI);
				   TI=0;
				   }
		}
	 else{ 
	         SBUF=tab[ucLow];
			 while(!TI);
			 TI=0;
			 SBUF=tab[ucMid];
			 while(!TI);
			 TI=0;
			 SBUF=tab[ucHi];
			 while(!TI);
			 TI=0;
		 }
}

⌨️ 快捷键说明

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