main.c

来自「LPC1114_例程和教程」· C语言 代码 · 共 143 行

C
143
字号
/****************************************************
*名  称:	ADC测试文件								*
*功  能:   测试ADC,测量光敏电阻					*
*备  注:	2011.1.8								*
贞明电子:http://shop58972409.taobao.com			*
*****************************************************/
/**************** 头文件调用&&宏定义 ****************/
#include "LPC11xx.h"
#include "GPIO.H"
#include "uart.h"
#define uchar unsigned char
#define uint  unsigned int
/******************* 全局变量定义 *******************/
#define  FAHBCLK	50000000	//定义转换时钟
uint8_t array_status[6];
/********************** 函数声明 ********************/
__inline void delay_ms(uint32_t a);	
void ADC_Init(void);
uint32_t Read_AD7(void);
void  Inttochar(uint32_t  num);
void LCD_Init(void);
/********************** 主函数 **********************/
int main(void)
{
	uint32_t  adtemp;
 	SystemInit();	  			//系统初始化,包括使能时钟
	GPIOInit();					//GPIO初始化,使能GPIO模块时钟
	ADC_Init();					//ADC初始化
	UARTInit(115200);			//UART初始化,设置波特率为115200
	GPIOSetDir(2,8,1);			//设置P2.8为输出,LED1
	GPIOSetValue(2,8,0);		//设置LED1亮
	delay_ms(100);	
	UARTSend("http://shop58972409.taobao.com\r\n",33);
	delay_ms(100);
	adtemp= Read_AD7();			//得到AD7的值
	adtemp=(adtemp*10000)/(1024-adtemp);   	//R光=ADC7Value*10000/(1024-ADC7Value)
	Inttochar(adtemp);			//将整转换成字符串
	UARTSend(array_status,4);	//将字符串数据发送
	UARTSend("\r\n",2);			//回车换行

	while(1)
	{

	}
}
/********************** 函数定义 ********************/
/****************************************************
*名  称:	延时函数    							*
*参  数:   延时时间								*
*备  注:	内联函数    							*
*****************************************************/
__inline void delay_ms(uint32_t a)    //1ms延时函数
{                           
	uint32_t i;
	while( --a != 0)
	{
   		for(i = 0; i<5500; i++);
	}             
}
/****************************************************
*名  称:	ADC_Init    							*
*参  数:   无										*
*备  注:	函数    								*
*****************************************************/
void ADC_Init(void)
{
	LPC_SYSCON->PDRUNCFG&=~(0x01<<4);		 //ADC模块上电
	LPC_SYSCON->SYSAHBCLKCTRL|=(1<<13);		 //ADC时钟使能
	LPC_IOCON->PIO1_11&=~(0x01<<7);			 //选择模拟输入
	LPC_IOCON->PIO1_11=0x01;				 //选择功能ADC7
	LPC_ADC->CR=(0X80<<0)|					 //	选择ADC7
				((FAHBCLK/1000000-1)<<8)|	 //时钟为1MHz
				(0<<16)|					 //软件控制模式
				(0<<17)|					 //11Clk转换有效10位精度
				(0<<24)|					 //ADC停止转换
				(0<<27);					 //无效设置

}
/****************************************************
*名  称:	Read_AD7    							*
*参  数:   返回电压值								*
*备  注:	ADC7转换,并等待结束,得到结果    		*
*****************************************************/
uint32_t Read_AD7(void)
{
	uint32_t ADC_Data;
	LPC_ADC->CR|=(1<<24);			//启动ADC
	while((LPC_ADC->DR7&0x80000000)==0);
	LPC_ADC->CR|=(1<<24);			//使用第二次转换,丢弃第一次
	while((LPC_ADC->DR7&0x80000000)==0);
	ADC_Data=LPC_ADC->DR7;			//	读取ADC7寄存器的值
	ADC_Data=(ADC_Data>>6)&0x3ff;	//提取10位AD结果
	return(ADC_Data);
}
/****************************************************
*名  称:	Inttochar    							*
*参  数:   整形数									*
*备  注:	将数值转换为字符串			    		*
*****************************************************/
 void  Inttochar(uint32_t  num)   
{   
  	if   (num<10)   
  	{   
  		array_status[0]=num+0x30;   
  		array_status[1]=0x00;   
  		return;   
  	}   
  	if   (num<100)     
  	{   
  		array_status[0]=num/10+0x30;   
  		array_status[1]=num%10+0x30;   
  		array_status[2]=0x00;   
  		return;   
  	}   
  	if   (num<1000)     
  	{   
  		array_status[0]=num/100+0x30;   
  		array_status[1]=num%100/10+0x30;   
  		array_status[2]=num%10+0x30;   
  		array_status[3]=0x00;   
  		return;   
  	}   
  	if   (num<10000)     
  	{   
  		array_status[0]=num/1000+0x30;   
  		array_status[1]=num%1000/100+0x30;   
  		array_status[2]=num%100/10+0x30;   
  		array_status[3]=num%10+0x30;   
  		array_status[4]=0x00;   
  		return;   
  	}   
  	else   
  	{   
  		array_status[0]=num/10000+0x30;   
  		array_status[1]=num%10000/1000+0x30;   
  		array_status[2]=num%1000/100+0x30;   
  		array_status[3]=num%100/10+0x30;   
  		array_status[4]=num%10+0x30;   
  		array_status[5]=0x00;   
  		return;   
  	}     
 } 

⌨️ 快捷键说明

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