|
#include "stm32f10x.h"
#include "bsp_iic.h"
#include "bsp_systick.h"
#include "bsp_oled.h"
#include "bsp_bh1750.h"
#include "bsp_usart.h"
#include "bsp_ds18b20.h"
#include "bsp_default.h"
#include "bsp_exti.h"
#include "bsp_beep.h"
#include "bsp_led.h"
#include "bsp_adc.h"
void Start_Display (void); //开机显示函数
void Display (void); //显示函数 (温度,光强度,液位)
void Display_T (float avl); //显示函数 (温度预设值)
void Display_I (float avl); //显示函数 (光强度预设值)
void Display_L (float avl); //显示函数 (液位预设值)
void LY_SentData (USART_TypeDef* pUSARTx); //蓝牙发送函数
extern float result_lx;
extern float val;
float temp = 0;
extern float TempPresets; //预设温度
extern float IlluPresets; //预设光照度
extern float LevelPresets; //预设液位
extern uint8_t flag; //加标志位
extern uint8_t flag1; //减标志位
uint8_t T_flag = 0; //温度预设标志位
uint8_t I_flag = 0; //光强度预设标志位
uint8_t L_flag = 0; //液位预设标志位
uint8_t uc, ucDs18b20Id [8];
int main(void)
{
I2C_GPIO_Config(); //I2C初始化
OLED_Init(); //OLED初始化
BEEP_Config (); //蜂鸣器初始化
LED_GPIO_Config(); //LED初始化
USART_Config(); //串口初始化
EXTI_Key_Config(); //按键中断初始化
ADCx_Init(); //ADC初始化
OLED_Fill(0xFF); //全屏点亮
SysTick_Delay_ms(20);
OLED_Fill(0x00); //全屏灭
SysTick_Delay_ms(20);
Start_Display (); //开机显示函数
while(DS18B20_Init())
printf("\r\n no ds18b20 exit \r\n");
printf("\r\n ds18b20 exit \r\n");
DS18B20_ReadId ( ucDs18b20Id ); // 读取 DS18B20 的序列号
printf("\r\nDS18B20的序列号是: 0x");
for ( uc = 0; uc < 8; uc ++ ) // 打印 DS18B20 的序列号
printf ( "%.2x", ucDs18b20Id [ uc ] );
GY_30_Write_Cmd (0x01);
GY_30_Write_Cmd (0x10);
SysTick_Delay_ms(120);
while(1)
{
Display (); //显示函数 (温度,光强度,液位)
LY_SentData (USART1); //数据发送函数
/*-------------------- 报警处理 -------------------*/
Alarm_T_LED_Config (DS18B20_GetTemp_SkipRom (), TempPresets);
Alarm_I_LED_Config (result_lx, IlluPresets);
Alarm_L_LED_Config (Level_read(), LevelPresets);
Alarm_BEEP_Config ();
/*-------------------------------------------------*/
/*-------------------- 设置预设值 -------------------*/
if (T_flag == 1) Display_T (TempPresets);
if (I_flag == 1) Display_I (IlluPresets);
if (L_flag == 1) Display_L (LevelPresets);
/*---------------------------------------------------*/
}
}
/**
* @brief 开机显示函数
* @param 无
* @retval 无
*/
void Start_Display (void)
{
static uint8_t ch[] = "Welcome to the monitoring system:";
static uint8_t ch1[] = "Loading";
while(1)
{
OLED_ShowStr(0, 0,ch,1);
OLED_ShowStr(0, 3,ch1,2);
for (uint8_t i=0;i<6;i++)
{
SysTick_Delay_ms(500);
OLED_ShowStr(56+i*8, 3, (unsigned char*)".",2);
}
OLED_CLS(); break;
}
}
/**
* @brief 显示函数 (温度,光强度,液位值)
* @param 无
* @retval 无
*/
void Display (void)
{
extern float result_lx;
extern float temp;
float result_De;
/*-------------------显示读取的光照值---------------------*/
OLED_ShowStr(0, 0, (unsigned char*)"Illu:", 2);
OLED_ShowStr(100, 0, (unsigned char*)"Lx", 2);
GY_30_ReadByte ();
Convert_GY_30 (); //取出光照强度值
OLED_ShowInteger(0, result_lx);
OLED_ShowPoint(0);
result_De = Float_Decimal(result_lx);
OLED_ShowDecimal(0, result_De);
/*--------------------------------------------------------*/
/*--------------------显示读取的温度值--------------------*/
OLED_ShowStr(0, 3, (unsigned char*)"Temp:", 2);
OLED_ShowCN(100, 3, 0);
temp = DS18B20_GetTemp_SkipRom (); //取出读取的温度值
OLED_ShowInteger(3, temp);
OLED_ShowPoint(3);
temp = Float_Decimal(temp);
OLED_ShowDecimal(3, temp);
/*--------------------------------------------------------*/
/*---------------------显示读取的液位值-------------------*/
OLED_ShowStr(0, 6, (unsigned char*)"Leve:", 2);
OLED_ShowStr(100, 6, (unsigned char*)"mm", 2);
Level_read(); //取出读取的液位值
OLED_ShowInteger(6, val);
OLED_ShowPoint(6);
val = Float_Decimal(val);
OLED_ShowDecimal(6, val);
/*--------------------------------------------------------*/
SysTick_Delay_ms(500); //间隔1s刷新
}
/**
* @brief 显示函数 (温度预设值)
* @param avl:温度值
* @retval 无
*/
void Display_T (float avl)
{
OLED_CLS(); //清屏
while (1)
{
Default_Value_T(avl);
if (flag == 1 || flag1 == 1)
{
flag = 0; flag1 = 0; //清除中断标志位
OLED_Show2Number(6, TempPresets);
SysTick_Delay_s(1);
if (flag==1|flag1==1) continue;
else break;
}
}
T_flag = 0; //清除KEY1中断标志位
OLED_CLS();
}
/**
* @brief 显示函数 (光强度预设值)
* @param avl:光强度值
* @retval 无
*/
void Display_I (float avl)
{
OLED_CLS(); //清屏
while (1)
{
Default_Value_I(avl);
if (flag == 1 || flag1 == 1)
{
flag = 0; flag1 = 0;//清除中断标志位
OLED_ShowInteger(6, IlluPresets);
SysTick_Delay_s(1);
if (flag==1||flag1==1) continue;
else break;
}
}
I_flag = 0; //清除KEY4中断标志位
OLED_CLS();
}
/**
* @brief 显示函数 (液位预设值)
* @param avl:液位值
* @retval 无
*/
void Display_L (float avl)
{
OLED_CLS(); //清屏
while (1)
{
Default_Value_L(avl);
if (flag == 1 || flag1 == 1)
{
flag = 0; flag1 = 0;//清除中断标志位
OLED_Show2Number(6, LevelPresets);
SysTick_Delay_s(1);
if (flag==1||flag1==1) continue;
else break;
}
}
L_flag = 0; //清除KEY4中断标志位
OLED_CLS();
}
/**
* @brief 蓝牙发送函数
* @param 无
* @retval 无
*/
void LY_SentData (USART_TypeDef* pUSARTx)
{
Usart_Send5Num(pUSARTx, DS18B20_GetTemp_SkipRom ()); //温度
Usart_Send5Num(pUSARTx, result_lx); //光照度
Usart_Send5Num(pUSARTx, Level_read()); //液位
Usart_Send5Num(pUSARTx, TempPresets); //预设温度
Usart_Send5Num(pUSARTx, IlluPresets); //预设光照度
Usart_Send5Num(pUSARTx, LevelPresets); //预设液位
}
|
-
-
代码.7z
202.62 KB, 下载次数: 41, 下载积分: 黑币 -5
-
-
手机APP接收.7z
3.15 MB, 下载次数: 28, 下载积分: 黑币 -5
评分
-
查看全部评分
|