📄 main.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 + -