资料包括温湿度变送器说明书,配置测试上位机,以及usb转485驱动,通讯历程(西门子SmartPLC,组态王等)。
此变送器可采用pc软件labview等(需485转usb)进行解析,或单片机串口解析(需485转ttl)以及plc等进行解析数据,本贴采用STM32F1进行解析,其他单片机只需更改串口解析函数即可完成移植。
显示部分采用0.96oled 7针spi 。解析速率可根据需求通过调整发送间隔时间即可。
连接示意图如下:
结果如图
程序
#include "sys.h"#include "delay.h" #include "oled.h" #include "bmp.h" #include "led.h" #include "usart.h" #include "key.h" int main(void) { SystemInit(); delay_init(); OLED_Init(); LED_Init(); KEY_Init(); USART3_Init(9600); Bling(3); delay_ms(1000); NVIC_Configuration(); display(); while(1) { Ask_temperature_data(); delay_ms(50); Ask_humidity_data(); delay_ms(1000); } } /**************接线说明******************* ********显示屏*************************** // GND 电源地 // VCC 3.3v电源 // D0 PC3(SCL) // D1 PC2(SDA) // RES PC1 // DC PC0 // CS GND ********串口****************************** ** USART3_TX --> PB10 ** USART3_RX --> PB11 温湿度变送器解析 温度: ° 湿度: % *****************************************/ void Ask_temperature_data(void) { ask_data=1; USART3_Send(0x01); USART3_Send(0x03); USART3_Send(0x00); USART3_Send(0x01); USART3_Send(0x00); USART3_Send(0x01); USART3_Send(0xD5); USART3_Send(0xCA); } void Ask_humidity_data(void) { ask_data=2; USART3_Send(0x01); USART3_Send(0x03); USART3_Send(0x00); USART3_Send(0x00); USART3_Send(0x00); USART3_Send(0x01); USART3_Send(0x84); USART3_Send(0x0A); } void display(void) { Draw_Logo1(); write_16_16_CN(0,0,0); //温 write_16_16_CN(16,0,1); //湿 write_16_16_CN(32,0,2); //度 write_16_16_CN(48,0,4); //变 write_16_16_CN(64,0,5); //送 write_16_16_CN(80,0,6); //器 write_16_16_CN(96,0,7); //解 write_16_16_CN(112,0,8); //析 write_16_16_CN(0,3,0); //温 write_16_16_CN(16,3,2); //度 LCD_P8x16Str(32,3,":"); write_16_16_CN(0,6,1); //湿 write_16_16_CN(16,6,2); //度 LCD_P8x16Str(32,6,":"); }
复制代码