学前班
最后登录1970-1-1
在线时间 小时
注册时间2017-5-4
|
楼主 |
发表于 2017-5-4 14:37:17
|
显示全部楼层
int main(void)
{
uint8_t uc, ucDs18b20Id [ 8 ];
SysTick_Init();
LED_GPIO_config();
MQ2_GPIO_config();
USARTx_Config(); //初始化串口1
BASIC_TIM_Init();
while(1)
{
if(PCIN(4)==0) //扫描烟雾报警器状态,如果为低电平执行下列操作
{
PBout(0)=1;
PBout(5)=0;
if(time==10)
{
Usart_SendByte( macUSARTx, 1); //烟感触发,串口发送指令1使电机运转
}
if(time==10000)
{
Usart_SendByte( macUSARTx, 2); //延时结束,发送指令2使电机停止
break; //跳出烟雾检测的循环
}
}
else
{
PBout(0)=0;
PBout(5)=1;
time=0;
}
}
//开始温度检测
printf("\r\n 温度检测开始 \r\n");
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 ] );
for(;;)
{
printf ( "\r\n获取该序列号器件的温度: %.1f\r\n", DS18B20_GetTemp_MatchRom ( ucDs18b20Id ) ); // 打印通过 DS18B20 序列号获取的温度值
Delay_ms(1000); /* 1s 读取一次温度值 */
if(DS18B20_GetTemp_MatchRom ( ucDs18b20Id )>=BAOJING) //温度大于报警值时,发送指令3启动电机
{
time=0;
if(time==10)
{
Usart_SendByte( macUSARTx, 3);
}
if(time==10000) //延时结束发送指令使电机停止
{
Usart_SendByte( macUSARTx, 4);
break;
}
}
}
}
|
|