zoukankan      html  css  js  c++  java
  • 实验五 CC2530平台上ADC组件的TinyOS编程

    实验 CC2530平台上ADC组件的TinyOS编程

    实验目的:

    1. 加深和巩固学生对于TinyOS编程方法的理解和掌握
    2. 让学生初步掌握传感器的ADC组件应用方法
    3. 学生通过本实验能够初步的了解和掌握CC2530平台上传感器的连接方法,及TinyOS编程方法
    4. 高学生的上机和编程过程中处理具体问题的能力

    实验要求:

    1. 实验要求自己独立的完成
    2. 编写和调试过程中出现的问题记录,并事后总结到报告中
    3. 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
    4. 实验完成后,要上交实验报告

    实验内容:

    1. 开发一个新的应用,每秒钟获取一次传感数据。以下述顺序完成这个新应用的开发。
      1. 首先使得应用能够以1秒为周期获取电压及芯片内部温度;
      2. 然后在上述基础上通过光敏传感器获取光照强度值。
    2. 在实验报告中分别给出上述两个阶段的源码

    实验代码:

    (1)配置文件TestAdcC.nc

    configuration TestAdcC

    {

    }

    implementation

    {

    components TestAdcM as App;

    components MainC ;

    App.Boot -> MainC.Boot;

    components PlatformLcdC;

    App.Lcd->PlatformLcdC.PlatformLcd;

    App.LcdInit->PlatformLcdC.Init;

    components new TimerMilliC() as Timer1;

    App.Timer1 -> Timer1;

    components new AdcC() as Ad;

    App.AdControl->Ad;

    App.AdRead->Ad;

    }

    (2)模块文件TestAdcM.nc

    #include "ADC.H"

    module TestAdcM

    {

    uses interface Boot;

    uses interface PlatformLcd as Lcd;

    uses interface Init as LcdInit;

    uses interface AdcControl as AdControl;

    uses interface Read<int16_t> as AdRead;

    uses interface Timer<TMilli> as Timer1;

    }

    implementation

    {

    #define VDD 33

       uint16_t m_val;

      

    task void CalcVolt()

    {

     unsigned char s[16];

     m_val = ((float)m_val / (float)0x1FFF) *VDD;

     sprintf(s, (char*)"%d.%d V",  m_val/10, m_val%10);

     call Lcd.PutString(60,20,s);

    }

    event void Boot.booted()

    {

    call LcdInit.init();

    call Lcd.ClrScreen();

           call Lcd.FontSet_cn(1,1);

           call Lcd.PutString_cn(0,20,"电压为 ");

    call AdControl.enable(ADC_REF_AVDD,ADC_12_BIT,ADC_AIN7);

    call Timer1.startPeriodic(1024);

         call Lcd.FontSet(1,1);

    }

    event void AdRead.readDone(error_t result, int16_t val)

    {

    m_val=val;

    post CalcVolt();

    }

    event void Timer1.fired()

    {

    call AdRead.read();

    }

    }

    3makefile 编译文件

    COMPONENT=TestAdcC

    include $(MAKERULES)

    实验环境:

    1. 上位机操作系统为WindowsXP,在Cygwin环境下编译
    2. 集成开发环境为Notepad++

     

    实验报告人:木舟 报告时间2018.11.16

  • 相关阅读:
    数据库规范化与经典三范式
    左右两个下拉框里的内容互换
    利用创造元素的方法进行下拉框内容的添加
    数组除重和应用随机数进行随机点名
    for 语句练习
    super和this
    linux常用命令
    g​e​t​A​t​t​r​i​b​u​t​e​和​g​e​t​P​a​r​a​m​e​t​e​r​区​别
    HTTP 方法:GET 对比 POST
    sql语句中字符串类型的变量前后需要使用单引号
  • 原文地址:https://www.cnblogs.com/LeonNchu/p/10695785.html
Copyright © 2011-2022 走看看