Пример #1
0
void DS18B20_Execute()
{
    /*
    -флаг сброшен - выполнить поиск 1Wire устройств
    -если количество заданных устройсв совпадает с
    колличеством найденных - устанавливаем флаг,
    чтобы функция поиска больше не запускалась
    */

    if (ds18b20_searchFlag == SEARCH_SENSORS){
          ds18b20_num = 0;
          ds18b20_crcFlag = OWI_SearchDevices(ds18b20_AllDevices, MAX_DEVICES, BUS, &ds18b20_num);
          if ((ds18b20_num == MAX_DEVICES)&&(ds18b20_crcFlag != SEARCH_CRC_ERROR)){
             ds18b20_searchFlag = SENSORS_FOUND;
          }
    }

    /*
       считать температуру первого найденного датчика
       если возвращена ошибка CRC, вывести строку "not"
       и сбросить флаг, чтобы функция поиска снова произвела
       опрос шины
    */

    ds18b20_crcFlag = DS18B20_ReadTemperature(BUS, ds18b20_AllDevices[0].id, &(ds18b20_temperature[0]));
    if (ds18b20_crcFlag != READ_CRC_ERROR){
//        DS18B20_PrintTemperature(ds18b20_temperature);
    }
    else{
        ds18b20_searchFlag = SEARCH_SENSORS;
    }

    /*
        считать температуру второго найденного датчика
        если возвращена ошибка CRC, вывести строку "not"
        и сбросить флаг, чтобы функция поиска снова произвела
        опрос шины
    */

//    LCD_Goto(7,1);
    ds18b20_crcFlag = DS18B20_ReadTemperature(BUS, ds18b20_AllDevices[1].id, &(ds18b20_temperature[1]));
    if (ds18b20_crcFlag != READ_CRC_ERROR){
//        DS18B20_PrintTemperature(ds18b20_temperature);
    }
    else{
//        LCD_SendString("  not  ");
        ds18b20_searchFlag = SEARCH_SENSORS;
    }

}
Пример #2
0
/*******************************************************************************
* Function Name  : TaskTouch
* Description    : Touch Pannel task.
* Input          : - *pdata.
* Output         : None
* Return         : None
*******************************************************************************/
void TaskTouch(void *pdata)
{
    float temp = 0.0;
    char str_buf[32];

    pdata = pdata;                // 防止编译器告警
    DS18B20_Configuration(12);
    while(1)
    {
        OSTimeDlyHMSM(0, 0, 0, 500);        // 任务延时3s
        
        temp = DS18B20_ReadTemperature();
        strcpy(str_buf, FLOAT2STR(temp, 4));

        TFT_DisplayD36x48(10,  70, str_buf[1], White, Blue);
        TFT_DisplayD36x48(46,  70, str_buf[2], White, Blue);
        TFT_DisplayD36x48(82,  70, '.', White, Blue);
        TFT_DisplayD36x48(118,  70, str_buf[4], White, Blue);
        TFT_DisplayD36x48(154,  70, str_buf[5], White, Blue);
        TFT_DisplayD36x48(190,  70, str_buf[6], White, Blue);

        printf("%s\r\n", str_buf);
          
    } // end while(1)...
}
Пример #3
0
unsigned int GetTemperature(uint8 *pID)
{
	unsigned int Data;
	DS18B20_Convert(pID);
	OWDelay(500);
	Data = DS18B20_ReadTemperature(pID); 
	Data = Data*10/16;
	return Data;
}
Пример #4
0
/********************************************************************************
 * 函数名:TemperDatHandle()
 * 描述  :温度数据处理
 * 输入  :-
 * 返回  :-
 * 调用  :-
 ********************************************************************************/
void TemperDatHandle()
{
	tmp_data.tmp2 = DS18B20_ReadTemperature(1);
//	SendString("temp2:\r\n");									//调试信息时候用
//	SendTemp(tmp_data.tmp2);
//	SendString("\r\n");
//	tmp_data.tmp1 = (uint)sensor_data.temp1_h<<8|(uint)sensor_data.temp1_l;
//	SendString("temp1:\r\n");
//	SendByteASCII(tmp_data.tmp1);
//	SendString("\r\n");
//	tmp_data.tmp2 = (uint)sensor_data.temp2_h<<8|(uint)sensor_data.temp2_l;
//	SendString("temp2:\r\n");
//	SendByteASCII(tmp_data.tmp2);
//	SendString("\r\n");
//	if(tmp_data.tmp1>5000) tmp_data.tmp1 = 8888;			//默认没有零下的情况,50度以上显示错误88.88度
	if(tmp_data.tmp2>5000) tmp_data.tmp2 = 8888;			//默认没有零下的情况,50度以上显示错误88.88度
}