使用MSP430F5529的ADC测量,并用OLED显示传感器输出的模拟量

发布者:柔情细语最新更新时间:2022-10-18 来源: csdn关键字:MSP430F5529  ADC测量  OLED显示  传感器输出  模拟量 手机看文章 扫描二维码
随时随地手机看文章

导语

在所有的嵌入式应用中几乎都会用到的一个功能就是ADC模块(模数转换器)。

在这里笔者分享用CCS开发环境使用MSP430F5529中的ADC来读取灰度传感器输出的模拟量,然后读取电压并将其显示在OLED上。


效果展示

请添加图片描述

MSP430F5529有4个12位ADC通道,分别为P6.0~P6.3。ADC计算公式:

请添加图片描述

ADC转化结果为0-4095,最大值为2的12次方。

此外MSP430的ADC有4个转换模式:单通道单次转化,多通道单次转化,单通道多次转化和多通道多次转化。在这里用的是多通道多次转化,毕竟要在OLED上显示多个通道的ADC值,这些值是随传感器变化的。


主函数代码

/******************接线********************/

//

//               MSP430F5529

//             -----------------

//         /||                 |

//          | |                 |

//          --|RST              |

//            |                 |

//    Vin0 -->|P6.0/CB0/A0  P3.6|-->SDA

//    Vin1 -->|P6.1/CB1/A1  P3.5|-->SCL

//    Vin2 -->|P6.2/CB2/A2      |

//    Vin3 -->|P6.3/CB3/A3      |

//            |                 |

/**************************************/



#include

#include "oled.h"

#include "type.h"

#include "bmp.h"


#define   Num_of_Results   8


volatile unsigned int A0results[Num_of_Results];

volatile unsigned int A1results[Num_of_Results];

volatile unsigned int A2results[Num_of_Results];

volatile unsigned int A3results[Num_of_Results];


int main(void)

{


  OLED_Init();    //OLED初始化


  WDTCTL = WDTPW+WDTHOLD;                   // 停止关门狗

  P6SEL = 0x0F;                             // 使能 A/D

  ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_8; // 打开ADC12,延长采样时间以避免结果溢出。

  ADC12CTL1 = ADC12SHP+ADC12CONSEQ_3;       // 使用采样定时器,多通道重复顺序转化。

  ADC12MCTL0 = ADC12INCH_0;                 // ref+=AVcc, channel = A0

  ADC12MCTL1 = ADC12INCH_1;                 // ref+=AVcc, channel = A1

  ADC12MCTL2 = ADC12INCH_2;                 // ref+=AVcc, channel = A2

  ADC12MCTL3 = ADC12INCH_3+ADC12EOS;        // ref+=AVcc, channel = A3, end seq.

  ADC12IE = 0x08;                           // Enable ADC12IFG.3

  ADC12CTL0 |= ADC12ENC;                    // 启用转换

  ADC12CTL0 |= ADC12SC;                     // 启用转换 -软件触发

  OLED_Clear();                             //OLED清屏

  while(1)

      {

  OLED_ShowString(30,1,"ADC",20);

  OLED_ShowCHinese(60,0,0);//采

  OLED_ShowCHinese(80,0,1);//集


      OLED_ShowString(20,2,"ADC0=",20);

      OLED_ShowNum(60,2,ADC12MEM0,4,20);


      OLED_ShowString(20,3,"ADC1=",20);

      OLED_ShowNum(60,3,ADC12MEM1,4,20);


      OLED_ShowString(20,4,"ADC2=",20);

      OLED_ShowNum(60,4,ADC12MEM2,4,20);


      OLED_ShowString(20,5,"ADC3=",20);

      OLED_ShowNum(60,5,ADC12MEM3,4,20);


//      __delay_cycles(1000000);  //延时1s

//      OLED_DrawBMP(0,0,127,7,BMP);//显示图片

      }

  __bis_SR_register(LPM0_bits + GIE);       

  __no_operation();



}


#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=ADC12_VECTOR


__interrupt void ADC12ISR (void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12ISR (void)

#else

#error Compiler not supported!

#endif


{

  static unsigned int index = 0;


  switch(__even_in_range(ADC12IV,34))

  {

  case  0: break;                           // Vector  0:  No interrupt

  case  2: break;                           // Vector  2:  ADC overflow

  case  4: break;                           // Vector  4:  ADC timing overflow

  case  6: break;                           // Vector  6:  ADC12IFG0

  case  8: break;                           // Vector  8:  ADC12IFG1

  case 10: break;                           // Vector 10:  ADC12IFG2

  case 12:                                  // Vector 12:  ADC12IFG3

    A0results[index] = ADC12MEM0;           // Move A0 results, IFG is cleared

    A1results[index] = ADC12MEM1;           // Move A1 results, IFG is cleared

    A2results[index] = ADC12MEM2;           // Move A2 results, IFG is cleared

    A3results[index] = ADC12MEM3;           // Move A3 results, IFG is cleared

    index++;                                // Increment results index, modulo; Set Breakpoint1 here


    if (index == 8)

    {

      (index = 0);

    }

  case 14: break;                           // Vector 14:  ADC12IFG4

  case 16: break;                           // Vector 16:  ADC12IFG5

  case 18: break;                           // Vector 18:  ADC12IFG6

  case 20: break;                           // Vector 20:  ADC12IFG7

  case 22: break;                           // Vector 22:  ADC12IFG8

  case 24: break;                           // Vector 24:  ADC12IFG9

  case 26: break;                           // Vector 26:  ADC12IFG10

  case 28: break;                           // Vector 28:  ADC12IFG11

  case 30: break;                           // Vector 30:  ADC12IFG12

  case 32: break;                           // Vector 32:  ADC12IFG13

  case 34: break;                           // Vector 34:  ADC12IFG14

  default: break;

  }

}


B站视频

MSP430 ADC采样-OLED显示


关键字:MSP430F5529  ADC测量  OLED显示  传感器输出  模拟量 引用地址:使用MSP430F5529的ADC测量,并用OLED显示传感器输出的模拟量

上一篇:MSP430F5529之1.44寸OLED显示
下一篇:MSP430+LCD1602显示实验

推荐阅读最新更新时间:2024-11-07 18:58

OLED显示屏结构及其特点介绍
        O LED显示 屏是OEL显示技术的一种应用,在过去的十多年,越来越多的科研力量投入到 OLED 技术的研发中,O LED显示屏 结构以及OLED显示技术也越发的成熟。目前,OLED显示器在人们的日常生活中发挥着不可替代的作用。基于OLED显示屏的广泛应用,本章就OLED显示屏结构及其特点做简要分析。   为了形像说明OLED显示屏结构,可以将每个OLED单元比做一块汉堡包,发光材料就是夹在中间的蔬菜。每个OLED的显示单元都能受控制地产生三种不同颜色的光。OLED与LCD一样,也有主动式和被动式之分。被动方式下由行列地址选中的单元被点亮。主动方式下,OLED单元后有一个薄膜晶体管(TFT),发光单元在TFT
[手机便携]
柔软度不输OLED 电泳显示前景看好
电泳显示技术朝软性显示大步迈进。 OLED技术的特性,使其在软性显示的地位快速崛起,不过除了OLED,同样能以TFT技术为基础的电泳显示技术,也正如火如荼地研发中。虽然在动画呈现的效果明显逊于OLED,但其省电性的优势却也是OLED所不可及的,因此在节能减碳目标的导引下,电泳技术势必将牵动未来软性显示的市场发展方向。 即便目前以软性薄膜晶体管(Thin Film Transistor, TFT)背板为基础的电泳显示还无法顺利达成,但若是将电泳显示(Electrophoretic Display, EPD)与其他电路基板结合,如今在技术上已不成问题,并已广泛应用在电子纸手表,如Sony 2016年中旬推出的e-paper手表Fes
[手机便携]
三星被曝已放弃RGB OLED显示面板研发
    位于北京的国美马甸新活馆是国美在全国最高端的门店之一,位于三层的电视卖场最大的特点是,入口处用LG和三星的曲面电视摆成一个弧形的电视墙。两品牌各占一半,数量相同,像是列阵备战,唯一不同的是LG用了OLED电视,而三星用的是UHD电视。   三星也是重点推广OLED的企业之一,无论是在今年年初的CES消费电子展上,还是一年一度的三星论坛,三星一直在宣传介绍其OLED电视。然而在如此重要的卖场里却并未展示OLED,代表三星OLED技术的产品去哪了?着实让人有些诧异。   近日,中国网科技频道从消息人士处获悉,三星已放弃对RGB OLED技术的开发。但三星方面并未对此正面回应,仅表示:研究机构预测,今年OLED电视市场相
[家用电子]
OLED iPad面板生产做准备 LG显示着手转移产线设备
LG显示目前正在将其韩国龟尾工厂E5产线的部分OLED生产设备转移到其位于坡州的工厂,或是为生产苹果计划用于未来新款iPad的OLED面板做准备。 据TheElec报道,LG显示正在将其部分张紧器转移到其位于坡州P10工厂的E6-4生产线上。张紧器用于Gen 6 (1500x1850mm) OLED面板生产,被用于拉和固定精细的金属掩膜,后者在沉积过程中被用于对齐红色、绿色和蓝色的有机材料。 消息人士称,目前正在使用的一些生产设备很少会转移到另一条生产线上。这是因为设备在运输过程中可能会损坏,并且需要根据特定的生产线严格校准。 LG显示这样做可能是为苹果的OLED iPad做准备。公司一直计划在其E6-4生产线上生产这种面板,由于
[手机便携]
宸鸿:可挠触控OLED 下一世代显示器主流
苹果触控面板供应商宸鸿今天举行在线法人宣讲会,宸鸿策略长刘诗亮说,可挠式有机发光二极管(OLED)搭配触控方案,将是下一世代显示器主流。 苹果推出第一支采用OLED面板的手机iPhone X后,市场关注苹果何时能推出采用可挠式OLED面板的手机,让可弯曲,甚至可折叠的OLED手机问世。 刘诗亮评价,未来OLED市场规模一年超过200亿美元(约新台币6000亿元),对触控技术要求严苛,目前看来以奈米银技术最接近市场需求,宸鸿投入最多资源,希望尽早商品化,成为公元2019年最大的OLED触控产品供应商。 他说,宸鸿对奈米银触控技术花很大心血,韩国或中国大陆客户都透露未来可能的采购意愿,对可挠式OLED搭配奈米银触控产品有兴趣。 刘诗亮
[家用电子]
OLED显示器及其馈电技术
    提高成品率和降低制造成本这两个因素正在促进OLED(有机发光二极管)显示器的使用量稳定攀升。作为响应,一些半导体制造商已经开始提供用于OLED和LCD偏置电源的功率转换IC,为OEM设计师在如何实现显示器电源子系统方面带来灵活性。尽管IC制造商没有严格地优化这些供OLED用的功率控制器,但这些器件确实有助于保持OLED优异的能量效率,并发挥显示器市场中像LCD所能提供的规模经济优势。 黑白OLED的首次商业应用是便携式测量仪器和娱乐设备中的小型低分辨率前面板显示器。由于制造工艺已经成熟,OLED作为翻盖手机中的第二显示器业已取得了更大的商业成功。     彩色OLED作为取景器首次应用于模拟摄录机、数字摄录机和数码相机中。
[嵌入式]
OLED显示屏将是未来车载显示系统的新宠
  汽车信息系统的复杂性和信息密度在日益上升,这使得汽车内部显示器不再仅仅是基本的集中仪表显示,而是要满足越来越详细和多样化的车内信息显示需求。车载显示器市场按应用分为车载导航装置、车载电视,以及车载信息系统;按装配时间分为原装和后装两个市场。原装市场需要经过严格的认证,进入较难;后配市场则不需认证,是目前最大的市场,约是原装市场的20倍。未来随着汽车导航系统等成为汽车标配,新车配备显示器的比例即原装市场的比例会逐步提升。 图1:全球汽车显示面板市场规模统计。       汽车电子需要的显示产品,对于环境适应性要求高,普遍需求的车载显示屏的性能指标为:亮度20~60nit,常温工作寿命50000小时,耐受温度范围-4
[汽车电子]
OLED屏异军突起 未来显示市场将如何走向?
  众所周知,显示市场长年被技术手段成熟价格又很亲民的LCD显示屏把持着!近年来,随着科技不断地发展, OLED 显示技术的不断成熟, OLED 在显示市场上持续发力,并且持续的侵吞着原本LCD显示屏的市场份额,俨然成了显示市场的一匹黑马,以势如破竹之势,出现在大众的视野里,虽然LCD还有许多“阵地”可守,已经呈现可以取而代之的态势,但拥有绝对市场份额的LCD显示又会怎样绝地反击呢?下面就随嵌入式小编一起来了解一下相关内容吧。    OLED 在市场上成了争相追逐的显示技术   OLED显示屏在市场上基本由韩国的企业把持着,其中韩国三星掌握着小尺寸OLED显示屏的绝对市场份额,以至于三星在供应了自己的手机 面板 之后,还接下
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved