【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
相关推荐
武文斌778 分钟前
项目学习总结:LVGL图形参数动态变化、开发板的GDB调试、sqlite3移植、MQTT协议、心跳包
linux·开发语言·网络·arm开发·数据库·嵌入式硬件·学习
CoderIsArt15 分钟前
SQLite架构
数据库·sqlite
充哥单片机设计33 分钟前
【STM32项目开源】基于STM32的智能家居安防系统
stm32·嵌入式硬件·智能家居
lixora40 分钟前
银河麒麟高级服务器操作系统(ADM64 版)V10(SP1)搭建 Oracle 19c RAC
数据库
郝学胜-神的一滴44 分钟前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
点灯小铭1 小时前
基于单片机的N型热电偶PID锅炉温度控制系统
单片机·嵌入式硬件·毕业设计·课程设计
哲Zheᗜe༘1 小时前
了解学习MySQL数据库基础
数据库·学习·mysql
Miqiuha1 小时前
sql的表join怎么学?
数据库·sql
TiAmo zhang1 小时前
调查问卷管理系统开发 │ 系统功能概述
数据库·sqlserver
problc2 小时前
PostgreSQL pg_trgm中文模糊匹配优化技巧
数据库·postgresql