📄 adc.c
字号:
#include<lpc214x.h>
#include <code.h>
//10K的热敏电阻0-50度所对应的码表值
const unsigned int Temp_code[]=
{
// 0-25
2843,2718,2599,2486,2379,2277,2180,2087,1999,1916,1836,1760,1688,1619,1553,1490,1430,1373,1319,1266,1217,1169,1124,1081,1039,1000,
// 26--50
962,925,891,857,826,795,766,738,711,686,661,638,615,593,573,553,534,515,497,480,464,449,433,419,405,
// 51-75
// 392,379,366,355,343,332,321,311,301,292,283,274,265,257,249,242,234,227,220,214,208,201,195,190,184,
// 76--100
// 179,174,169,164,159,155,150,146,142,138,134,131,127,124,120,117,114,111,108,105,102,100,97,94,92
};
/***********************************************************************
//查电阻值所对应的温度是多少
***********************************************************************/
unsigned char check_code(unsigned int k)
{
unsigned char i;
if(k<405)return(51); //大于50度以上都显示为51度
for(i=0;k<Temp_code[i];i++);
return (i-1);
}
/***********************************************************************
//R=30K或20K
//RT=10K
***********************************************************************/
unsigned int Totemp(unsigned int AD)
{
unsigned int Itemp;
unsigned int Tk;
Tk=1023-AD;
Itemp=(unsigned int)(((unsigned long)1000*AD)/Tk); //扩大100倍
return(Itemp);
}
unsigned char Get_Temp(unsigned int i)
{
return (check_code(Totemp(i))); //转换温度
}
void Ad_fun (void) { /* Delay function */
unsigned int val;
unsigned char t;
AD0CR |= 1<<24; /* Start A/D Conversion */
do {
val = AD0DR1; /* Read A/D Data Register */
} while ((val & 0x80000000) == 0); /* Wait for end of A/D Conversion */
AD0CR &= ~0x01000000; /* Stop A/D Conversion */
val = (val >> 6) & 0x03FF; /* Extract AIN0 Value */
t=Get_Temp(val)-2; //校准
Draw_a(t/10,88,0,8);
Draw_a(t%10,96,0,8);
Draw_a(13,104,0,8);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -