【TB作品】MSP430 G2553 单片机口袋板,读取单片机P1.4电压显示,ADC

功能

读取P1.4电压,显示到口袋板显示屏,电压越高亮灯越多。

部分程序

cpp 复制代码
    while (1)
    {

        ADC10CTL0 |= ENC + ADC10SC;             // Sampling and conversion start
        LPM0;
        adcvalue = ADC10MEM;             //原始数据 0到1023
        adtest = (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;
}

全部的代码

cpp 复制代码
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
相关推荐
编程墨客12 分钟前
STM32F103C8T6单片机内部执行原理及启动流程详解
stm32·单片机·嵌入式硬件
TDengine (老段)18 分钟前
TDengine 数据库建模最佳实践
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Elastic 中国社区官方博客28 分钟前
Elasticsearch 字符串包含子字符串:高级查询技巧
大数据·数据库·elasticsearch·搜索引擎·全文检索·lucene
Gauss松鼠会1 小时前
GaussDB应用场景全景解析:从金融核心到物联网的分布式数据库实践
数据库·分布式·物联网·金融·database·gaussdb
守城小轩1 小时前
Chromium 136 编译指南 - Android 篇:开发工具安装(三)
android·数据库·redis
尽兴-1 小时前
如何将多个.sql文件合并成一个:Windows和Linux/Mac详细指南
linux·数据库·windows·sql·macos
小小不董2 小时前
深入理解oracle ADG和RAC
linux·服务器·数据库·oracle·dba
qq_411262422 小时前
整体无需占用任何硬件 UART,即可新增一条全双工软串口
单片机·嵌入式硬件
胚芽鞘6812 小时前
查询依赖冲突工具maven Helper
java·数据库·maven
宇钶宇夕3 小时前
SIMATIC S7-1200的以太网通信能力:协议与资源详细解析
运维·服务器·数据库·程序人生·自动化