实验五 CC2530平台上ADC组件的TinyOS编程
实验五 CC2530平台上ADC组件的TinyOS编程
实验目的:
- 加深和巩固学生对于TinyOS编程方法的理解和掌握
- 让学生初步掌握传感器的ADC组件应用方法
- 学生通过本实验能够初步的了解和掌握CC2530平台上传感器的连接方法,及TinyOS编程方法
- 提高学生的上机和编程过程中处理具体问题的能力
实验要求:
- 实验要求自己独立的完成;
- 编写和调试过程中出现的问题要做好记录,并事后总结到报告中
- 实验程序调试完成后, 用给定的平台进行测试,由老师检查测试结果,并给予相应的成绩
- 实验完成后,要上交实验报告。
实验内容:
- 开发一个新的应用,每秒钟获取一次传感数据。以下述顺序完成这个新应用的开发。
- 首先使得应用能够以1秒为周期获取电压及芯片内部温度;
- 然后在上述基础上通过光敏传感器获取光照强度值。
- 在实验报告中分别给出上述两个阶段的源码。
实验代码:
(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();
}
}
(3)makefile 编译文件
COMPONENT=TestAdcC
include $(MAKERULES)
实验环境:
- 上位机操作系统为WindowsXP,在Cygwin环境下编译
- 集成开发环境为Notepad++
实验报告人:木舟 报告时间:2018.11.16
实验五 CC2530平台上ADC组件的TinyOS编程的更多相关文章
- 实验四 CC2530平台上UART组件的TinyOS编程
实验四 CC2530平台上UART组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530的UART.及其TinyOS编程方法 学生通过本实验 ...
- 第二次实验:CC2530平台上GPIO组件的TinyOS编程
实验二 CC2530平台上GPIO组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生理解和掌握CC2530的GPIO及外部中断,及其TinyOS编程方法 学 ...
- 实验六 CC2530平台上P2P通信的TinyOS编程
实验六 CC2530平台上P2P通信的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的掌握射频通信TinyOS编程方法 学生通过本实验应理解TinyOS中 ...
- 实验三 CC2530平台上CC2530平台上定时器组件的
实验三 CC2530平台上CC2530平台上定时器组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握CC2530定时器的PWM功能,及其TinyOS ...
- 第一次实验: CC2530平台上电源管理与休眠
实验一 CC2530平台上电源管理与休眠 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步的认识TinyOS编程的基础和简单的程序编写 学生通过本实验能够初步的了解和掌握Ti ...
- 2017-2018-2 1723《程序设计与数据结构》实验四 & 实验五 & 课程总结 总结
作业地址 实验四作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1943 提交情况如图: 实验五作业:https://edu ...
- 2017-2018-2 20155228 《网络对抗技术》 实验五:MSF基础应用
2017-2018-2 20155228 <网络对抗技术> 实验五:MSF基础应用 1. 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需 ...
- GitHub Android 最火开源项目Top20 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上。基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要。利用这些项目,有时能够让你达到事半功倍的效果。
1. ActionBarSherlock(推荐) ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库,通过一个API和主题,开发者就可以很方便 ...
- 2017-2018-2 20155225《网络对抗技术》实验五 MSF基础应用
2017-2018-2 20155225<网络对抗技术>实验五 MSF基础应用 ms08_067 用search命令,搜索与ms08_067相关的模块,如图: 找到了对应的攻击模块expl ...
随机推荐
- week6
面向对象编程 class类(新式类:class xx(obj):,经典类 class xx:) 构造函数 __init__(self,ret1,ret2...) 在实例化时做一些类的初始化工作 析构函 ...
- java字符串截取指定下标位置的字符串
public class A { public static void main(String[] args) { //定义的字符串 String s = "Hello World" ...
- java----判断闰年和平年
public class year{ public static void main(String[] args){ int year=2010; if((year%4==0&&yea ...
- UML介绍
UML是什么 Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所 ...
- 理解什么是适配器(adapter)和接口(interface)
● 适配器(adapter) In computing, adapter is a hardware device or software component that converts transm ...
- Base包equivalent
Guava 18.0到22.0 Equivalence发生了较大的变化,这里我们先不可考虑Equivalence 新实现的那个接口,首先看一个测试demo: import java.util.Arra ...
- puts方法要点
puts是print string的缩写.尽管没有直观的表示会调用换行符,但是puts会这样做:如同print,打印用户的数据,之后自动地转到新一行.假如让puts打印已经以换行符结束的一行,它不会再 ...
- c++给数组整体赋初值
1.memset memset是计算机中C/C++语言初始化函数.作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作. 头文件: #include<cstri ...
- cocos图片的选择以及压缩
我们在使用cocos在windows平台下,运行速度很快很流畅,很强大,可是当我们打包成apk文件,在手机上运行的时候,流畅度很可能降低,甚至还有间歇性内存彪高. 游戏内存优化我们一般可以从这么3个方 ...
- Ubuntu 16.04 上安装 MySQL 5.7 教程
介绍 MySQL 是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装.它使用关系数据库和SQL(结构化查询 ...