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

📄 51adc0832.c

📁 51单片机 10-7 ADC0832模数转换实验
💻 C
字号:
/********************************************************/
/*杭州电子&计算机工作室									*/
/*http://www.hificat.com								*/
/*ADC0832测试程序										*/
/*目标器件:AT89S51										*/
/*晶振:11.0592MHZ			    						*/
/*编译环境:Keil 7.50A									*/
/********************************************************/

/*********************************包含头文件********************************/
#include <reg51.h>

/*********************************端口定义**********************************/
sbit  CS  = P3^4;
sbit  Clk = P1^0;
sbit  DIO = P1^1;

/*******************************定义全局变量********************************/
unsigned char adval;						//AD值

/*******************************共阳LED段码表*******************************/
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

/****************************************************************************
函数功能:AD转换子程序
入口参数:CH
出口参数:adval
****************************************************************************/
unsigned char A_D(bit CH)
{
	unsigned char i;
	CS  = 0;								//片选
	Clk = 0;								//时钟拉低
	Clk = 1;								//时钟拉高
	DIO = 1;								//启动信号
	if ( CH == 0 )							//通道选择
	{
		Clk = 0;
		Clk = 1;
		DIO = 1;							//通道0的第一位

		Clk = 0;
		Clk = 1;
		DIO = 0;							//通道0的第二位
	}
	else
	{
		Clk = 0;
		Clk = 1;
		DIO = 1;							//通道1的第一位

		Clk = 0;
		Clk = 1;
		DIO = 1;							//通道1的第二位
	}

	Clk = 1;
	Clk = 0;

	for( i = 0;i < 8;i++ )					//读取八位AD值
	{
		Clk = 1;
		Clk = 0;
		if ( DIO )
			adval = (adval>>1) | 0x80;
		else
			adval = (adval>>1) | 0x00;		
	}
	CS = 1;									//释放ADC0832
	return(adval);							//返回采样值
}

/****************************************************************************
函数功能:数码管显示子程序
入口参数:
出口参数:
****************************************************************************/
void delay1(void)
{
	int k;
	for(k=0;k<400;k++);
}

/****************************************************************************
函数功能:数码管显示子程序
入口参数:k
出口参数:
****************************************************************************/
void display(int k)
{
	P2=0xfe;			
	P0=tab[k/1000];
	delay1();
	P2=0xfd;
	P0=tab[k%1000/100];
	delay1();
	P2=0xfb;
	P0=tab[k%100/10];
	delay1();
	P2=0xf7;
	P0=tab[k%10];
	delay1();
	P2=0xff;
}

/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
	P2=0xff;									//端口初始化
	P0=0xff;
	while(1)									//主循环
		{
			A_D(0x01);							//通道1转换
			display(adval);						//显示AD值
  		}
}




⌨️ 快捷键说明

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