本程序采用的是八路ADC单次采集的模式,根据配置,在单次的模式下转换完成后ADC12SC会自动复位,因此需要在循环中进行ADC12CTL0 |= ADC12SC;操作,而如果配置成连续采集的模式,只需要在程序开始将ADC12SC置位一次就可以,但是就需要注意当进入中断后如果不手动禁止中断会一直停留在循环中,因此在采集到需要的数据后需要将ADC关闭或者中断使能禁止才能重新回到主函数,这一点需要注意。

八路单次采集的程序如下:

/*************************************** 八路AD多路单次采集基亚5110液晶显示 采集模式:多路单次 ****************************************/ #include <msp430x14x.h> #include "LCD5110.h" #define uint unsigned int #define uchar unsigned char unsigned char ad0[]="1:0.0V"; unsigned char ad1[]="2:0.0V"; unsigned char ad2[]="3:0.0V"; unsigned char ad3[]="4:0.0V"; unsigned char ad4[]="5:0.0V"; unsigned char ad5[]="6:0.0V"; unsigned char ad6[]="7:0.0V"; unsigned char ad7[]="8:0.0V"; uchar flag=1; uint temp0,temp1,temp2,temp3,temp4,temp5,temp6,temp7; void Init_Clk() { uchar i; BCSCTL1&=~XT2OFF; //打开XT振荡器 do { IFG1 &= ~OFIFG; //清除振荡错误标志 for(i = 0; i < 100; i++) _NOP(); //延时等待 } while ((IFG1 & OFIFG) != 0); //如果标志为1继续循环等待 IFG1&=~OFIFG; BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1M } void Init_ADC() { P6SEL|=0XFF; //信号采集端口选择第二功能 ADC12CTL0 = ADC12ON+SHT0_8+MSC; // 打开ADC+设置采样时间 ADC12CTL1 = SHP+CONSEQ_1; // 使用采样时序电路信号+多路单次模式 //上面的寄存器配置采样保持触发源选择时ADC12SC,采集信号使用采样时序电路产生的信号 // 转换模式为多路单次复转换 上面的设置必须在ENC=0的情况下设置 //设置每个通道的输入端口和参考电压,参考电压默认为AVCC 3.3V ADC12MCTL0 = INCH_0; ADC12MCTL1 = INCH_1; ADC12MCTL2 = INCH_2; ADC12MCTL3 = INCH_3; ADC12MCTL4 = INCH_4; ADC12MCTL5 = INCH_5; ADC12MCTL6 = INCH_10; ADC12MCTL7 = INCH_11+EOS; // 最后一个通道 ADC12IE = BIT7; // 最后一个通道转换完成后使能ADC中断 ADC12CTL0 |= ENC; // 使能转换 } /******************************************* 函数名称:Trans_val 功 能:将16进制ADC转换数据变换成三位10进制 真实的模拟电压数据,并在液晶上显示 参 数:Hex_Val--16进制数据 n--变换时的分母等于2的n次方 返回值 :无 ********************************************/ void Trans_val(uchar ptr[6],uint Hex_Val) { unsigned long caltmp; uint Curr_Volt; caltmp = Hex_Val; caltmp = (caltmp << 5) + Hex_Val; //caltmp = Hex_Val * 3 Curr_Volt = caltmp >> 12; //Curr_Volt = caltmp / 2^n // 参考电压为3.3V,所以计算公式应该为Hex_val*3.3/2^n // 乘除计算通过移位来进行可以有效的提高程序运行效率 ptr[2] = (Curr_Volt / 10)+0x30; //个位 ptr[4] = (Curr_Volt % 10)+0x30; //小数位 } void main() { Init_Clk(); Init_ADC(); WDTCTL = WDTPW + WDTHOLD; LCD_init(); LCD_showsh(0, 0, "电压采集:"); _EINT();//开启全局中断 P5DIR|=BIT5; P3OUT|=~BIT5; while (1) { ADC12CTL0 |= ADC12SC; LCD_prints(0,2,ad0); LCD_prints(8,2,ad1); LCD_prints(0,3,ad2); LCD_prints(8,3,ad3); LCD_prints(0,4,ad4); LCD_prints(8,4,ad5); LCD_prints(0,5,ad6); LCD_prints(8,5,ad7); } } /******************************************* 函数名称:ADC12ISR 功 能:ADC中断服务函数 参 数:无 返回值 :无 ********************************************/ #pragma vector=ADC_VECTOR __interrupt void ADC12ISR (void) { temp0 = ADC12MEM0; Trans_val(ad0,temp0); temp1 = ADC12MEM1; Trans_val(ad1,temp1); temp2 = ADC12MEM2; Trans_val(ad2,temp2); temp3 = ADC12MEM3; Trans_val(ad3,temp3); temp4 = ADC12MEM4; Trans_val(ad4,temp4); temp5 = ADC12MEM5; Trans_val(ad5,temp5); temp6 = ADC12MEM6; Trans_val(ad6,temp6); temp7 = ADC12MEM7; Trans_val(ad7,temp7); }

MSP430学习笔记11-八路ADC采集诺基亚5110液晶显示相关推荐

  1. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  2. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  3. HALCON 20.11:深度学习笔记(11)---目标检测

    HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...

  4. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

    台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network 本博客主要整理自: http://blog.csdn.net/x ...

  5. 小猫爪:S32K3学习笔记05-S32K3之ADC

    小猫爪:S32K3学习笔记05-S32K3之ADC 1 前言 2 资源简介 3 ADC功能详解 3.1 ADC mux-mode channels 3.2 ADC内部框架 3.3 时钟源 3.4 通道 ...

  6. 华为HCIA-datacom 学习笔记11——AAA原理与配置

    华为HCIA-datacom 学习笔记11--AAA原理与配置 AAA原理与配置 1.AAA概述 认证(authentication):验证用户是否获得访问权,确定哪些用户可以访问网络 授权(auth ...

  7. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  8. 凸优化学习笔记 11:对偶原理 拉格朗日函数

    前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...

  9. Python学习笔记11:函数修饰符

    Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...

最新文章

  1. Redis环境配置(核心配置选项)
  2. 一款开源免注册的加密工具,防火防盗防泄密~
  3. iOS 关于枚举的使用
  4. python坐标轴刻度设置_matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)...
  5. Dubbo——面试问题集(4~14)
  6. 在学习js的然后写代码的过程中我老是找不到思路怎么办?
  7. 强化学习ppt_强化学习和最优控制的十个关键点81页PPT汇总
  8. 列表(list)和集合(set)
  9. linux常用命令和操作笔记
  10. redux react-redux入门篇
  11. html双人可悔棋五子棋源码,MATLAB实现五子棋游戏(双人对战、可悔棋).pdf
  12. 反激式开关电源设计_变压器选型
  13. torch.nn.Embedding的函数
  14. 修改360抢票的刷新频率+突破8车次限制
  15. 第十五章 友元、异常和其他
  16. 前缀树是什么 前缀树的使用场景
  17. 计算机维修的入门知识
  18. Apache CXF 简介
  19. 大数据技术之Hadoop-入门
  20. 51nod 1299 监狱逃离 树形dp

热门文章

  1. 用什么条码标签制作软件批量打印产品吊牌?
  2. java把字符串转换为数组
  3. Html Email 邮件html页编写指南
  4. 单连通图(算法导论22.3-12)
  5. Windows 11 插上U盘之后鼠标移动非常卡
  6. *判断奇偶数的函数*/
  7. 微服务连载(二)漫谈何时从单体架构迁移到微服务?
  8. 微信公众号之全局计时器的案例
  9. python mypy类型检查_Python 类型检查
  10. 【chineseocr_lite】识别效果