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

2024-06-03 00:28

本文主要是介绍【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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025519

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

C# dateTimePicker 显示年月日,时分秒

dateTimePicker默认只显示日期,如果需要显示年月日,时分秒,只需要以下两步: 1.dateTimePicker1.Format = DateTimePickerFormat.Time 2.dateTimePicker1.CustomFormat = yyyy-MM-dd HH:mm:ss Tips:  a. dateTimePicker1.ShowUpDown = t

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu