Ai8051U 与 LabVIEW 上位机实现 DHT11 数据采集
本项目基于 Ai8051U 单片机设计,LabVIEW 上位机通过串口发送指令,单片机获取 DHT11 传感器采集环境温湿度数据,并反馈给上位机,完成数据的采集、显示和保存等。
介绍
本节给出项目所需的硬件和软件资料。
硬件
软件
代码
- #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[3]={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[0],Temperature[1]);//
- //printf("Humidity = %u.%u%%RH\r\n",Humidity[0],Humidity[1]);//
- receive_data();
- test_do_data();
- }
- }
- }
-
- /*----------- Send temperature ----------------*/
- void SendTempData()
- {
- u16 shi,ge,xiaoshu;
- DHT_Collect();
- shi = Temperature[0]/10 + '0';
- ge = Temperature[0]%10 + '0';
- xiaoshu = Temperature[1] + '0';
- UartSend(shi);
- UartSend(ge);
- UartSend('.');
- UartSend(xiaoshu);
- UartSendStr("\r\n");
- }
-
- /*----------- Send humidity ----------------*/
- void SendHumiData()
- {
- u16 shi,ge,xiaoshu;
- DHT_Collect();
- shi = Humidity[0]/10 + '0';
- ge = Humidity[0]%10 + '0';
- xiaoshu = Humidity[1] + '0';
- UartSend(shi);
- UartSend(ge);
- UartSend('.');
- UartSend(xiaoshu);
- UartSendStr("\r\n");
- }
-
- /*--------------------- 数据接收与测试 ----------------------------*/
- void receive_data(void)
- {
- u16 i ;
- for(i=0;i<3;i++)
- {
- comdata[i] = buffer; // 将缓冲的数据赋值给数组
- delay_ms(2); // 延时一会,让串口缓存准备好下一个字节,不延时可能会导致数据丢失
- }
- }
-
- void test_do_data(void) // 测试并执行命令
- {
- if(comdata[0] == 0x55) //0x55和0xAA均为判断是否为有效命令
- {
- if(comdata[1] == 0xAA)
- {
- switch(comdata[2])
- {
- case Temperature_COMMAND:
- SendTempData();
- break;
- case Humidity_COMMAND:
- SendHumiData();
- break;
- }
- }
- }
- }
复制代码
完整工程见文末附件。
效果
串口助手
LabVIEW 程序面板
总结
本文介绍了使用 Ai8051U 单片机结合 LabVIEW 上位机,实现采集环境温湿度的项目设计,为相关行业在环境温湿度的自动化监测等需求方面提供了参考。
|