具体软件部分,我在详细的介绍下我是怎么加上我这个天然气模块的。
首先在demo_ED中,对天然气采集所需要的AD进行设置
-
ADC10CTL1 = INCH_1 + ADC10DIV_4; // Temp Sensor ADC10CLK/5 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE + ADC10SR; for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled results[2] = ADC10MEM;
复制代码
我采用的是INCH_1通道,其他就是配置了,最后就是results[2] = ADC10MEM,将采集的数据给results[2],而results采集的结果,我这里是有三个,电压,温度和天然气含量。
然后就是 bj = results[2]; msg[3] = bj;,好在其他函数里调用要用到
然后在demo_AP中,需要添加天然气的数据如下有详细的程序
-
void transmitDataString(char addr[4],char rssi[3], char msg[MESSAGE_LENGTH] ) { char temp_string[] = {" XX.XC"}; int temp = msg[0] + (msg[1]<<8);
if( !degCMode ) { temp = (((float)temp)*1.8)+320; temp_string[5] = 'F'; } if( temp < 0 ) { temp_string[0] = '-'; temp = temp * -1; } else if( ((temp/1000)%10) != 0 ) { temp_string[0] = '0'+((temp/1000)%10); } temp_string[4] = '0'+(temp%10); temp_string[2] = '0'+((temp/10)%10); temp_string[1] = '0'+((temp/100)%10); if( verboseMode ) { char output_verbose[] = {"\r\nNode:XXXX,Temp:-XX.XC,Battery:X.XV,Strength:XXX%,RE:no,R:XXX "};
output_verbose[46] = rssi[2]; output_verbose[47] = rssi[1]; output_verbose[48] = rssi[0]; output_verbose[17] = temp_string[0]; output_verbose[18] = temp_string[1]; output_verbose[19] = temp_string[2]; output_verbose[20] = temp_string[3]; output_verbose[21] = temp_string[4]; output_verbose[22] = temp_string[5]; output_verbose[32] = '0'+(msg[2]/10)%10; output_verbose[34] = '0'+((msg[2]%10))*4; output_verbose[59] = '0'+(msg[3]%10); //// output_verbose[60] = '0'+((msg[3]*10)%10); ////,R:XXX output_verbose[7] = addr[0]; output_verbose[8] = addr[1]; output_verbose[9] = addr[2]; output_verbose[10] = addr[3]; TXString(output_verbose, sizeof output_verbose ); } else { char output_short[] = {"\r\n$ADDR,-XX.XC,V.C,RSI,N#"};
output_short[19] = rssi[2]; output_short[20] = rssi[1]; output_short[21] = rssi[0]; output_short[8] = temp_string[0]; output_short[9] = temp_string[1]; output_short[10] = temp_string[2]; output_short[11] = temp_string[3]; output_short[12] = temp_string[4]; output_short[13] = temp_string[5]; output_short[15] = '0'+(msg[2]/10)%10; output_short[17] = '0'+((msg[2]%10))*4; output_short[22] = '0'+(msg[3]); /// output_short[3] = addr[0]; output_short[4] = addr[1]; output_short[5] = addr[2]; output_short[6] = addr[3]; TXString(output_short, sizeof output_short ); } }
复制代码
其实程序就这样,大家可能刚开始学这个东西的时候需要花费很长的时间,去了解程序里的每个函数是什么意思,以及芯片是如何配置的。等大家学到一定程度的时候就很容易去编程了,当然我编的也不一定就好,这个只作为一个参考,有错误之处请大家及时通知我,我好及时的修改,以免影响大家。 |