Ai8051U 与 LabVIEW 上位机实现 DHT11 数据采集
Ai8051U 与 LabVIEW 上位机实现 DHT11 数据采集
本项目基于 Ai8051U 单片机设计,LabVIEW 上位机通过串口发送指令,单片机获取 DHT11 传感器采集环境温湿度数据,并反馈给上位机,完成数据的采集、显示和保存等。
介绍
本节给出项目所需的硬件和软件资料。
硬件
主控:Ai8051U-34K64 芯片
开发板:Ai8051U多功能学习板
软件
1.Keil C51
2.AIapp-ISP-V6.95E
3.NI LabVIEW 2024 x64
代码
#include <AI8051U.h>
#include <intrins.h>
#include <stdio.h>
#include "Config.h"
#include "Delay.h"
#include "DHT11.h"
#include "UART.h"
#define Temperature_COMMAND 0x10
#define Humidity_COMMAND 0x11
//u8 comdata={0};
void SendData();
void receive_data(void); //接收串口数据
void test_do_data(void); //测试串口数据是否正确,并更新数据
/*-------------------- main ---------------------*/
void main(void)
{
P_SW2 |= 0x80; //扩展寄存器(XFR)访问使能
GPIO_Init();
UartInit();
ES = 1;
EA = 1;
while(1)
{
if(recv_flag==1)
{
recv_flag = 0;
//DHT_Collect(); // 获取温湿度数据
//printf("Temperature = %u.%uC\r\n",Temperature,Temperature);//
//printf("Humidity = %u.%u%%RH\r\n",Humidity,Humidity);//
receive_data();
test_do_data();
}
}
}
/*----------- Send temperature ----------------*/
void SendTempData()
{
u16 shi,ge,xiaoshu;
DHT_Collect();
shi = Temperature/10 + '0';
ge = Temperature%10 + '0';
xiaoshu = Temperature + '0';
UartSend(shi);
UartSend(ge);
UartSend('.');
UartSend(xiaoshu);
UartSendStr("\r\n");
}
/*----------- Send humidity ----------------*/
void SendHumiData()
{
u16 shi,ge,xiaoshu;
DHT_Collect();
shi = Humidity/10 + '0';
ge = Humidity%10 + '0';
xiaoshu = Humidity + '0';
UartSend(shi);
UartSend(ge);
UartSend('.');
UartSend(xiaoshu);
UartSendStr("\r\n");
}
/*--------------------- 数据接收与测试 ----------------------------*/
void receive_data(void)
{
u16 i ;
for(i=0;i<3;i++)
{
comdata = buffer; // 将缓冲的数据赋值给数组
delay_ms(2); // 延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失
}
}
void test_do_data(void) // 测试并执行命令
{
if(comdata == 0x55) //0x55和0xAA均为判断是否为有效命令
{
if(comdata == 0xAA)
{
switch(comdata)
{
case Temperature_COMMAND:
SendTempData();
break;
case Humidity_COMMAND:
SendHumiData();
break;
}
}
}
}
完整工程见文末附件。
效果
串口助手
LabVIEW 程序面板
总结
本文介绍了使用 Ai8051U 单片机结合 LabVIEW 上位机,实现采集环境温湿度的项目设计,为相关行业在环境温湿度的自动化监测等需求方面提供了参考。
搞得不错,
页:
[1]