本文主要是介绍【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
功能
读取P1.4电压,显示到口袋板显示屏,电压越高亮灯越多。
部分程序
while (1){ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion startLPM0;adcvalue = ADC10MEM; //原始数据 0到1023adtest = (float) adcvalue / 1024.0 * 3.3;dis_num_6(adtest); //显示电压//电压最大值最小值限制if (adcvalue <= min_YIN)adcvalue = min_YIN;if (adcvalue > max_YIN)adcvalue = max_YIN;//偏差值adcvalue = adcvalue - min_YIN;//总体范围temp1 = max_YIN - min_YIN;//每一段多少duan = temp1 / 8;//控制小灯怎么点亮if (adcvalue > duan * 7) //0就是点亮 1就是不亮 这里表示8个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 0); /* 指定1号管脚输出为0 */PinOUT(4, 0); /* 指定0号管脚输出为0 */PinOUT(5, 0); /* 指定1号管脚输出为0 */PinOUT(6, 0); /* 指定0号管脚输出为0 */PinOUT(7, 0); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 6) //0就是点亮 1就是不亮 这里表示7个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 0); /* 指定1号管脚输出为0 */PinOUT(4, 0); /* 指定0号管脚输出为0 */PinOUT(5, 0); /* 指定1号管脚输出为0 */PinOUT(6, 0); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 5) //0就是点亮 1就是不亮 这里表示6个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 0); /* 指定1号管脚输出为0 */PinOUT(4, 0); /* 指定0号管脚输出为0 */PinOUT(5, 0); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 4) //0就是点亮 1就是不亮 这里表示5个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 0); /* 指定1号管脚输出为0 */PinOUT(4, 0); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 3) //0就是点亮 1就是不亮 这里表示4个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 0); /* 指定1号管脚输出为0 */PinOUT(4, 1); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 2) //0就是点亮 1就是不亮 这里表示3个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 0); /* 指定0号管脚输出为0 */PinOUT(3, 1); /* 指定1号管脚输出为0 */PinOUT(4, 1); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > duan * 1) //0就是点亮 1就是不亮 这里表示2个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 0); /* 指定1号管脚输出为0 */PinOUT(2, 1); /* 指定0号管脚输出为0 */PinOUT(3, 1); /* 指定1号管脚输出为0 */PinOUT(4, 1); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else if (adcvalue > 50) //0就是点亮 1就是不亮 这里表示1个灯全部亮{PinOUT(0, 0); /* 指定0号管脚输出为0 */PinOUT(1, 1); /* 指定1号管脚输出为0 */PinOUT(2, 1); /* 指定0号管脚输出为0 */PinOUT(3, 1); /* 指定1号管脚输出为0 */PinOUT(4, 1); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}else //0就是点亮 1就是不亮 这里表示0个灯全部亮{PinOUT(0, 1); /* 指定0号管脚输出为0 */PinOUT(1, 1); /* 指定1号管脚输出为0 */PinOUT(2, 1); /* 指定0号管脚输出为0 */PinOUT(3, 1); /* 指定1号管脚输出为0 */PinOUT(4, 1); /* 指定0号管脚输出为0 */PinOUT(5, 1); /* 指定1号管脚输出为0 */PinOUT(6, 1); /* 指定0号管脚输出为0 */PinOUT(7, 1); /* 指定1号管脚输出为0 */}}
}// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{LPM0_EXIT;
}
全部的代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
这篇关于【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!