MSP430F5438+DTH11示例代码

unsigned char dth_read(unsigned char array[])//默认16Mhz主频,获取成功返回1,失败返回0,
/*array为5字节数组,带回数据格式为: 一字节湿度(整数),一字节湿度(小数,此芯片无效,但占据8位),一字节温度(整数),一字节温度(小数,无效,占位),一字节和校验 */
{
int index = 40;
unsigned char temp[40] = {0}; //获取40位元数据零时数组
P6DIR |= 0x010; // P6.4 output,dth11元器件的data数据线接到P6.4口
P6OUT &= 0XEF ; //主机拉低data线,之后须保持18ms时间。
__delay_cycles(320000); //至少保持18ms
P6OUT |=0X10; //手动拉高
P6DIR &=0XEF; //IO口切换成输入模式
while(P6IN&0x10); //至少保持20-40us
if(!(P6IN&0x10)) //电平被拉低,dth响应
{
while(!(P6IN&0x10)); //等待电平拉高
while(P6IN&0x10); //等待电平再次拉低,从次开始数据读取

while(index>0) //读取40位bit数据
{
while(P6IN&0x10); //此处当在传送位是1时高电平会保持70us,所以此处是消除读取高电平后剩余的高电平保持时间
while(!(P6IN&0x10)); //低电平保持50us,无论传送0或1,都首先保持50us低电平

__delay_cycles(500); //保持30us,之后读取data线,若是低电平,则总线已经启动下个bit位的传送,说明当前传送位是0,否则为1

if(P6IN & 0X10) //保存数据1
{
temp[40-index] = 1;

}
else //保存数据0
{
temp[40-index] = 0;
}
index--; //计数器减一
}
}
for(int z = 0 ; z < 5 ;z ++) //将40位数据转换成5个字节
{
for(int h = 0 ; h < 8 ;h++)
{
array[z]<<=1;
array[z] += temp[z*8+h];

}
}
if(array[0]+array[2] == array[4]) //校验和
return 1; //通过,数据读取有效,且正确
else
return 0; //未通过。失败
}

时间: 2024-10-21 03:59:42

MSP430F5438+DTH11示例代码的相关文章

java第15章示例代码

import java.util.Scanner; /** * * @author asus第15章示例代码1 全桂群2017.4.9 * */public class Registter { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String uname, pw

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮

java 线程、线程池基本应用示例代码回顾

package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class LiftOff implements Runnable { protected int countDown=10; private static int taskCount=0; private final int id=taskCount++; public LiftOff(){} public LiftOff(int countDown) { thi

AppCan移动应用开发平台新增9个超实用插件(内含示例代码)

使用AppCan平台进行移动开发,你所需要具备的是Html5+CSS +JS前端语言基础,此外,Hybrid混合模式应用还需结合原生语言对功能模块进行封装,对于没有原生基础的开发者,如何实现App里包括支付.界面布局.地图导航.IM等功能呢? 这里列出9个AppCan新插件,在使用AppCan平台进行移动开发时非常实用. 1. uexInAppPurchase iOS内部支付IAP插件:封装内部支付IAP相关操作. 方法说明: getProductList 得到产品列表方法 purchase 购

rocketMQ的运行示例代码

rocketMQ的示例代码 1 import com.alibaba.rocketmq.client.exception.MQBrokerException; 2 import com.alibaba.rocketmq.client.exception.MQClientException; 3 import com.alibaba.rocketmq.client.producer.DefaultMQProducer; 4 import com.alibaba.rocketmq.client.pr

pyspider示例代码二:解析JSON数据

本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: pyspider爬取的内容通过回调的参数response返回,response有多种解析方式.1.response.json用于解析json数据2.response.doc返回的是PyQuery对象3.response.etree返回的

jQuery中读取json文件示例代码

json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取,具体示例代码如下,感兴趣的朋友可以参考下哈,希望可以帮助到你 json文件是一种轻量级的数据交互格式.一般在jquery中使用getJSON()方法读取. 复制代码 代码如下: $.getJSON(url,[data],[callback]) url:加载的页面地址 data: 可选项,发送到服务器的数据,格式是key/value callback:可选项,加载成功后执行的回调函数 1.首先建一个JSON

大量的文档,大量的示例代码,大量的开源组件,大量的社区,大量的码农

移动用各个平台的原生工具和代码,当年被Delphi忽悠,入了贼船,这次搞移动,坚定了跟着厂家走的策略.每次更新不用傻等Delphi跟进,大量的文档可以参考,大量的示例代码可以直接copy,大量的开源组件可以拿来就用,大量的社区可以做到有问必答. 如果有一天真的做大了,还有大量的iOS/Java码农可以招聘,组队团PK. 总之是选路要选对啊.这两年如果不是EMB出现救市,Delphi差点成了绝唱.想想都后怕.移动开发不敢在冒险了. 参考:http://bbs.2ccc.com/topic.asp?

Supermap iClient 空间查询关联外表表查询多表字段示例代码

原创文章,转载请注明出处!http://blog.csdn.net/songhfu 空间查询关联属性表,并查询空间表和关联表字段示例代码如下: /* * 关联测试成功代码 * */ var joinItem=new SuperMap.REST.JoinItem({ foreignTableName: "V_ENABLEVIEW_LAND", joinFilter: "BBS_PARCEL.CADASTRALNO = V_ENABLEVIEW_LAND.CADASTRALNO