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

📄 main.c

📁 LPC1114_例程和教程
💻 C
字号:
/****************************************************
*名  称:	NTC热敏电阻测温							*
*功  能:   测试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];
uint32_t j;
uint32_t RT_TAB[82]={
	  2729,2670,2612,2556,2501,2448,2396,2345,2296,2247,
	  2200,2154,2110,2066,2023,1982,1941,1902,1863,1825,
	  1788,1752,1717,1862,1649,1616,1584,1552,1492,1463,
	  1435,1407,1380,1353,1327,1302,1277,1253,1229,1206,
	  1183,1161,1139,1118,1097,1077,1057,1038,1019,1000,
	  982,964,947,930,913,896,881,865,850,835,820,805,
	  791,778,764,751,738,725,713,701,689,677,665,654,
	  643,632,622,611,601,591,
};
/********************** 函数声明 ********************/
__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)
{
	int  adtemp;
	int i,R1,R2;
	int Ti;
 	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);			//回车换行
	for(i=0;i<80;i++)
	{
		R1=RT_TAB[i];
		R2=RT_TAB[i+1];	
//		if((adtemp<=R1)&&(adtemp>=R2))
//		{
		//	R1=	RT_TAB[i];
		//	R2= RT_TAB[i+1];
		//	Ti=(adtemp/(R1-R2))>>2+((i+1/2-((R1+R2)/(R1-R2)>>2))>>2);
		//	Ti=i; 
			Inttochar(R1);			//将整转换成字符串
			UARTSend(array_status,4);	//将字符串数据发送
			UARTSend("\r\n",2);			//回车换行
//			break;
			delay_ms(1);
//		}
	} 

	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -