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

📄 lpc_adc.c

📁 LPC2103
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               深圳市优龙科技有限公司
**
**
**
**                               http://www.Ucdragon.com
**
********************************************************************************************************/
/***********************************************************************************
* File:ADC_Test
* 功能:读取ADC转换结果
* 说明:
************************************************************************************/
 //头函数
#include	"..\inc\LPC2103.h"
#include	"..\inc\Lib_LPC2103.h"
#define		ESC_KEY		0x1b	
/*************************************************************************
 * Function Name: UART0_Init
 * Parameters: Which_Uart DevNum
 * 			
 * Return: int
 *
 *		
 * Description:
 *
 *************************************************************************/
void UART0_Init ()		//串口0配置
{
  U0LCR = 0x83;		        // DLAB = 1,可设置波特率
  U0DLL = 0x11;
  U0DLM = 0x00;
  U0LCR = 0x03;
}
/*************************************************************************
* Function Name: UART0_PutChar
* Parameters:
* 	       char ch
* Return: void
*
*
* Description: Send character by polling LSR register
*
*************************************************************************/
void UART0_PutChar ( U32 data)
{
  U0THR = data;			    // 发送数据
  while( (U0LSR&0x40)==0 );	    // 等待数据发送完毕
}
/***********************************************************************************
* Function Name:	Get_Key
* Parameters:		none
* Return:			Rcv_Data
* Description:		
*
************************************************************************************/
U8 Get_Key(void)
{
  U8 Rcv_Data;
  Rcv_Data=U0RBR;
  return(Rcv_Data);
}				

/*************************************************************************
* Function Name: UART0_PutString
* Parameters:
* 	       char *Buf
* Return: int :
*
*
* Description: Send a string by using polling method
*
*************************************************************************/
void  UART0_PutString(char *str)
{
  while(*str !='\0')
    {
        UART0_PutChar(*str++);
    }
}

/***********************************************************************************
* Function Name:	ADC_Measure
* Parameters:		none
* Return:			AdcResult
* Description:		ADC第0通道进行转换,返回转换的数据
*
************************************************************************************/
void Delay ( )
{
  U8 dly=0;
  for(;dly<250;dly++);
}
/***********************************************************************************
* Function Name:	ADC_Init
* Parameters:		Adc_Clk
* Return:			none
* Description:		模数转换初始化,输入ADC的转换频率
*
************************************************************************************/
void ADC_Init( U32 Adc_Clk )
{
  PINSEL1 |= (3<<12);				//管脚配置,P0.22管脚为Ain0
  AD0CR = ( 1 << 0 ) | 				// SEL = 1 ,选择通道0
	( ( Fpclk / Adc_Clk - 1 ) << 8 ) |  	// CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz
	( 0 << 16 ) | 				// BURST = 0 ,软件控制转换操作
	( 0 << 17 ) |  				// CLKS = 0 ,使用11clock转换
	( 1 << 21 ) |  				// PDN = 1 , 正常工作模式(非掉电转换模式)
	( 0 << 22 ) |  				// TEST1:0 = 00 ,正常工作模式(非测试模式)
	( 0 << 24 ) ;  				// START = 0 ,没有启动ADC转换
}
/***********************************************************************************
* Function Name:	ADC_Measure
* Parameters:		none
* Return:			AdcResult
* Description:		ADC第0通道进行转换,返回转换的数据
*
************************************************************************************/
U32 ADC_Measure( void )
{
  U32 Adc_Data;
  AD0CR|=(0x1<<24);				//START位为1 ,启动ADC转换
  Delay(  );					//延时
  Adc_Data = AD0DR0;				//读取AD0DR0
  while ( ( Adc_Data & 0x80000000 ) == 0 );	//读取AD0DR0里面的转换数值
  Adc_Data = ( Adc_Data >> 6 ) & 0x3ff;

  return Adc_Data;				//返回转换结果
}
/***********************************************************************************
* Function Name:	ADC_Test
* Parameters:		none
* Return:			none
* Description:		ADC第0通道进行转换,通过串口发送ADC转换结果,按ESC按键退出ADC测试
*
************************************************************************************/
void main ( void )
{
  U32 i,Adc_Result;
  PINSEL0 = 0x00000005;			// 设置I/O连接到UART0,	P0.4,P0.5,P0.6,P0.7,P0.8为输出,用来控制LED.
  PINSEL1 = 0x00000000;
  UART0_Init();				//UART0初始化
  Delay(  );	
  ADC_Init( 200000 ) ;		        //输入ADC的转换频率
  while ( Get_Key() != ESC_KEY )
  {	
    Adc_Result = ADC_Measure( );
    for(i=10;i>0;i--)			//显示Adc_Result的值,即是ADC转换结果
    {
      if( (Adc_Result&(1<<(i-1))) > 0 )	UART0_PutChar('1');
      else UART0_PutChar('0');
      Delay(  );		        //延时
    }
  UART0_PutChar('\n');			//换行
  }

}

⌨️ 快捷键说明

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