资料编号:103 下面是相关功能视频演示:
103-基于stm32单片机智能温控风扇控制系统Proteus仿真(源码+仿真+全套资料)
功能介绍:采用stm32单片机、ds18b20温度传感器采集温度,通过判断当前的温度值是否超过预设值,来控制风扇电机和指示灯的打开与关闭,预设值程序可调,温度采用LCD1602显示。程序采用C语言,有中文注释,容易看懂,仿真采用Proteus
下面是部分程序展示:
int main(void)
{
SystemCoreClockUpdate ();
LCD1602_Init();
LCD1602_ShowStr(2,0,"tempe=000.0C",13);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef g;
g.GPIO_Mode = GPIO_Mode_Out_PP;
g.GPIO_Speed = GPIO_Speed_10MHz;
g.GPIO_Pin = GPIO_Pin_8 ;
GPIO_Init(GPIOB,&g);
GPIO_SetBits(GPIOB,GPIO_Pin_8); //输出1
t=DS18B20_DQ_IN;
while(t){
DS18B20_IO_OUT(); //SET PG11 OUTPUT
DS18B20_DQ_OUT=0; //拉低DQ
Delay_DS18B20(750); //拉低750us
DS18B20_DQ_OUT=1; //DQ=1
Delay_DS18B20(15); //15US
DS18B20_IO_IN(); //SET PG11 INPUT
Delay_DS18B20(100);
t=DS18B20_DQ_IN;
// LCD_ShowNum(13,0,t);
}
tem=DS18B20_Get_Temp();
Delay_DS18B20(1000000);
LED_Init(); //初始化IO口
while(1)
{
tem=DS18B20_Get_Temp();//读取温度
if( tem>0) //温度为正
{ a=tem/100;
b=tem%100/10;
c=tem%10;
LCD_ShowChar(8,0,'+');
LCD_ShowNum(9,0,a);
LCD_ShowNum(10,0,b);
LCD_ShowNum(12,0,c);
if(tem>100) //设置比较值,100是指10.0℃
{
GPIO_ResetBits(GPIOA,GPIO_Pin_1); //输出0
GPIO_ResetBits(GPIOA,GPIO_Pin_2); //输出0
}
else
{
GPIO_SetBits(GPIOA,GPIO_Pin_1); //输出1
GPIO_SetBits(GPIOA,GPIO_Pin_2); //输出1
}
}
else //温度为负
{
// tem1=(int)tem;
// tem1=abs(tem1);
tem1=-(tem);
tem1=tem1+1;
a=tem1/100;
b=tem1%100/10;
c=tem1%10;
LCD_ShowChar(8,0,'-');
LCD_ShowNum(9,0,a);
LCD_ShowNum(10,0,b);
LCD_ShowNum(12,0,c);
}
Delay_DS18B20(100000);
}
下面是该资料的分享下载链接:
https://pan.baidu.com/s/1tyWUfXmeXQoryu4NTpa58Q?pwd=6yr3