百度分公司 网站外包提高网站排名的方法

当前位置: 首页 > news >正文

百度分公司 网站外包,提高网站排名的方法,太原做网站需要多少钱,网站制作答辩ppt怎么做【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据#xff0c;LabVIEW 上位机绘制演化曲线 主要介绍了 R78/G15 开发板基于 Arduino IDE 环境串口打印温湿度传感器 DHT11 和温度传感器 DS18B20 传感器的数据#xff0c;并通过LabVIEW上位机绘制演…【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据LabVIEW 上位机绘制演化曲线 主要介绍了 R78/G15 开发板基于 Arduino IDE 环境串口打印温湿度传感器 DHT11 和温度传感器 DS18B20 传感器的数据并通过LabVIEW上位机绘制演化曲线。 DHT11 DHT11 数字温湿度传感器它应用专用的数字模块采集技术和温湿度传感技术确保产品具有极高的可靠性与卓越的长期稳定性。 简介 DHT11 内置一个电阻式感湿元件和一个 NTC 测温元件DHT11 为 4 针单排引脚封装采用单线制串行接口只需加适当的上拉电阻信号传输距离可达20米以上。 DHT11 工作参数 湿度测量范围20~90%RH湿度测量精度±5%RH温度测量范围0~50℃温度测量精度±2℃工作电压DC 3.3V/5V DHT11 采用单总线协议也就是使用一根 DATA 线进行数据的收发。DHT11 的 DATA 线一次通讯时间 4ms 左右数据分整数部分、小数部分和校验位具体为 8bit 湿度整数数据 8bit 湿度小数数据 8bit 温度整数数据 8bit 温度小数数据 8bit 校验位。 时序图 DHT11 的 DATA 传输一次完整的数据为 40bit按照高位在前低位在后的顺序传输。 数据格式为8bit 湿度整数数据 8bit 湿度小数数据 8bit 温度整数数据 8bit 温度小数数据 8bit 校验位一共 5 字节40bit数据。 代码 由于直接调用 DHT11.h 库函数出错因此需要自己编写 DHT11 驱动函数 int dhPin 4; // 温湿度信号接脚连入 Pin 4 byte dat[5]; // 存放湿度2byte, 温度 2 byte, checksum 1 byte byte readData() { // 每次读取 8 bits ( one byte)byte data 0 ; // 初始化数据不然可能出错for (int i 0; i 8; i) {if (digitalRead(dhPin) LOW) { // 一开始要 LOW 才表示要传过来while (digitalRead(dhPin) LOW); //等待 50us// 现在已经变成 HIGH 了delayMicroseconds(30); //判断高电平持续时间以判定资料是‘0’还是‘1’if (digitalRead(dhPin) HIGH) // 持续了 30 us 以上就是 1data | (1 (7 - i)); //高位在前低位元在后while (digitalRead(dhPin) HIGH); // 等待下一bit的接收}}return data; } void start_test() { // 每次要与 DHT11 沟通digitalWrite(dhPin, LOW); //拉低到 LOW发送表示要开始沟通的信号delay(30); //延时要大于 18ms以便 DHT11 能检测到开始信号我们用30msdigitalWrite(dhPin, HIGH); // 拉高HIGH, 让 DHT11 拉低到 LOW 告诉我们要传送delayMicroseconds(40); // 给40us等待 DHT11 响应pinMode(dhPin, INPUT); // 改为输入 mode 准备 digitalRead( )while (digitalRead(dhPin) HIGH); // 必须等到 LOWdelayMicroseconds(80); //DHT11 发出响应会拉低 80us所以至少等80uswhile (digitalRead(dhPin) LOW); // 继续等到变 HIGHdelayMicroseconds(80); //DHT11 会拉高到HIGH 80us 后开始发送数据for (int i 0; i 5; i) dat[i] readData(); //接收温湿度资料校验位元pinMode(dhPin, OUTPUT); // 改为 Output mode, 准备拉高HIGHdigitalWrite(dhPin, HIGH); //发送完一次资料后释放bus等待下一次开始信号 } void setup( ) {Serial.begin(9600);Serial.println(begin!);pinMode(dhPin, OUTPUT); } void loop( ) {start_test( );Serial.print(Current humdity );Serial.print(dat[0], DEC); //显示湿度的整数部分Serial.print(.);Serial.print(dat[1], DEC); //显示湿度的小数位Serial.println( %);Serial.print(Current temperature );Serial.print(dat[2], DEC); //显示温度的整数部分Serial.print(.);Serial.print(dat[3], DEC); //显示温度的小数位Serial.println( C);delay(1985); }参考基于arduino的dht11温湿度传感器的使用 。 效果 硬件连接 电路 实物连线 串口打印 DS18B20 DS18B20 数字温度计是 DALLAS 公司生产的 1-Wire 单总线器件具有线路简单、体积小的特点。 简介 特点 独特的单线接口方式DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围 55℃125℃固有测温误差 1℃。支持多点组网功能多个DS18B20可以并联在唯一的三线上最多只能并联8个实现多点测温如果数量过多会使供电电源电压过低从而造成信号传输的不稳定。工作电源: 3.0~5.5V/DC 可以数据线寄生电源在使用中不需要任何外围元件测量结果以9~12位数字量方式串行传送 电路 模块 电路 时序图 代码 这里同样是库函数无法正常加载因此不使用库函数驱动 DS18B20 int DS18B20DQ 4; void setup() {// put your setup code here, to run once:Serial.begin(115200); } void loop() {float t;t Ds18b20GetTemp();Serial.print(The temperature is :);Serial.println(t);delay(2000); } void Ds18b20Rst(void) {pinMode(DS18B20DQ,OUTPUT);digitalWrite(DS18B20DQ,LOW);delayMicroseconds(750);//主机发送复位脉冲480us-960usdigitalWrite(DS18B20DQ,HIGH);delayMicroseconds(15);//18b20等待15-60us
} /等待18b20响应 返回1未检测到18b20* 返回0存在*/ byte Ds18b20Check() { byte retry0;pinMode(DS18B20DQ,INPUT);while(digitalRead(DS18B20DQ)retry200){ retry;delayMicroseconds(1);}if(retry200)return 1;else retry0;while(!digitalRead(DS18B20DQ)retry240){retry;delayMicroseconds(1);} if(retry240)return 1;return 0; } /从18b20读取一个位 返回值1/0*/ byte Ds18b20ReadBit(void) {byte data;pinMode(DS18B20DQ,OUTPUT);digitalWrite(DS18B20DQ,LOW);delayMicroseconds(2);digitalWrite(DS18B20DQ,HIGH);pinMode(DS18B20DQ,INPUT);delayMicroseconds(12);if(digitalRead(DS18B20DQ))data1;else data0;delayMicroseconds(50);return data;} /从18b20读取一个字节 返回值读到的数据*/ byte Ds18b20ReadByte(void) {byte i,j,dat;dat0;for(i1;i8;i){jDs18b20ReadBit();dat(j7)|(dat1);//低位在前}return dat;} /写一个字节到Ds18b20 dat:要写入的字节*/ void Ds18b20WriteByte(byte dat) { byte i;byte temp;pinMode(DS18B20DQ,OUTPUT);for(i1;i8;i){tempdat0x01;datdat1;if (temp)//write 1{digitalWrite(DS18B20DQ,LOW);delayMicroseconds(2); digitalWrite(DS18B20DQ,HIGH);delayMicroseconds(60); }else{digitalWrite(DS18B20DQ,LOW);delayMicroseconds(60); digitalWrite(DS18B20DQ,HIGH);delayMicroseconds(2); }}}/*开始温度转换**/ void Ds18b20Start(void) {Ds18b20Rst();Ds18b20Check();Ds18b20WriteByte(0XCC);Ds18b20WriteByte(0X44);} /从Ds18b20得到温度值 精度0.1c* 返回值温度值-550-1250*/ float Ds18b20GetTemp() {byte temp;byte TH0,TL0;short tem;float t;Ds18b20Start();Ds18b20Rst();Ds18b20Check();Ds18b20WriteByte(0XCC);//skip romDs18b20WriteByte(0XBE);//read,start form the 0 byte,LSB forstTLDs18b20ReadByte();//LSBTHDs18b20ReadByte();//MSB//Serial.println(TH);//Serial.println(TL);if(TH7){TH~TH;TL~TL;temp0;//the temperature is negative}else temp1;// the temperature is positivetemTH;//高八位tem8;temTL;//低八位t((float)tem*0.0625);if(temp)return t;else return -t;}效果 硬件连接 串口打印效果 LabVIEW 结合 LabVIEW 上位机可实现远程监控 流程图 代码改进 int DS18B20DQ 4; byte comdata[3]{0}; //定义数组数据存放串口命令数据 void setup() {// put your setup code here, to run once:Serial.begin(115200); }void loop() {while (Serial.available() 0) //不断检测串口是否有数据{receive_data(); //接受串口数据test_do_data(); //测试数据是否正确并更新数据} }void receive_data(void)
{int i ;for(i0;i3;i){comdata[i] Serial.read();//延时一会让串口缓存准备好下一个字节不延时可能会导致数据丢失delay(2);} }void test_do_data(void) // 测试并执行命令 {if(comdata[0] 0x55) //0x55和0xAA均为判断是否为有效命令{if(comdata[1] 0xAA){if(comdata[2] 0xFF){// 读取温度值float t;t Ds18b20GetTemp();Serial.println(t);}}} }DHT11 DS18B20 温度动态采集展示