標(biāo)題:
51單片機(jī)溫度控制風(fēng)扇轉(zhuǎn)速程序,且溫度在LCD1602上顯示
[打印本頁]
作者:
dayuuuu
時(shí)間:
2020-4-26 16:37
標(biāo)題:
51單片機(jī)溫度控制風(fēng)扇轉(zhuǎn)速程序,且溫度在LCD1602上顯示
原理圖如下所示:
51hei圖片20200426163419.png
(78.45 KB, 下載次數(shù): 47)
下載附件
2020-4-26 16:34 上傳
源程序如下所示:
#ifndef _DS18B20_H_
#define _DS18B20_H_
/*****************************************************/
/************???????????************************/
uchar DS_init()
{
uchar state;
DQ=1;
delay_1us(8);
DQ=0;
delay_1us(80); //??????????4800US
DQ=1;
delay_1us(8);
state=DQ;
delay(100); //???
return state; //??????1???????????
}
void DS_write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if((dat&0x01)==0) //д?
{
DQ=0;
delay_1us(5);
DQ=1; //?????????γ?????
}
else //д0
{
DQ=0;
delay_1us(1);
DQ=1;
delay_1us(4);
}
dat>>=1;
}
}
uchar DS_read_byte()
{
uchar i,dat=0;
for(i=0;i<8;i++)
{
DQ=0;
dat>>=1;
DQ=1;
if(DQ==1)
dat|=0x80;
else
dat|=0x00;
delay_1us(30);
DQ=1;
}
return dat;
}
void DS_read_temperature()
{
if(DS_init()==1) //??????1?
DS_OK=0; //DS_ok=0???????
else
{
DS_init();
DS_write_byte(0xcc);//???????к?
DS_write_byte(0x44); //?????????
DS_init();
DS_write_byte(0xcc);
DS_write_byte(0xbe);//?????????
temp_value[1]=DS_read_byte(); //??д??λ??д??λ
temp_value[0]=DS_read_byte();
alarm_HL[0]=DS_read_byte(); //??????д??λ??д??λ
alarm_HL[1]=DS_read_byte();
DS_OK=1;
}
}
void set_alarm_HL()
{
DS_init();
DS_write_byte(0xcc);
DS_write_byte(0x4e);//д??RAM
DS_write_byte(alarm_HL[0]); //??д??λ
DS_write_byte(alarm_HL[1]);
DS_write_byte(0x7f);
DS_init();
DS_write_byte(0xcc);
DS_write_byte(0x48);//????????ROM
}
void display_temperature()
{
uchar flag=0;
if((temp_value[0]&0xf8)==0xf8)
{
flag=1;
temp_value[0]=~temp_value[0];
temp_value[1]=~temp_value[1]+1;
if(temp_value[1]==0x00)
temp_value[0]++;
}
display_digit[3]=df_tab[temp_value[1]&0x0f];//?С??
//?????
current=((temp_value[0]&0x07)<<4)|((temp_value[1]&0xf0)>>4);
//?ж?????
sign_temp=flag?-current:current;
LO_alarm=sign_temp<=alarm_HL[1]?1:0;
HI_alarm=sign_temp>=alarm_HL[0]?1:0;
/*********???????*************************************/
display_digit[0]=current/100;
display_digit[1]=current%100/10;
display_digit[2]=current%10;
/****?????*********************************************/
buffer_line2[8]=display_digit[0]+'0';
buffer_line2[9]=display_digit[1]+'0';
buffer_line2[10]=display_digit[2]+'0';
buffer_line2[11]='.';
buffer_line2[12]=display_digit[3]+'0';
/*********???θ?λ?????*******************************/
if(display_digit[0]==0)
buffer_line2[8]=' ';
if(display_digit[0]==0&&display_digit[1]==0)
buffer_line2[9]=' ';
if(flag==1)
{
if(buffer_line2[9]==' ')
buffer_line2[9]='-';
else
{
if(buffer_line2[8]==' ')
buffer_line2[8]='-';
else
buffer_line2[7]='-';
}
}
LCD_display(0x00,buffer_line1);
LCD_display(0x40,buffer_line2);
LCD_write_cmd(0x80+0x4d);
LCD_write_data(0x00);
LCD_write_cmd(0x80+0x4e);
LCD_write_data('C');
}
#endif
復(fù)制代碼
具體見壓縮包,歡迎交流與批評(píng)指正
溫控風(fēng)扇改進(jìn)PWM Proteus仿真程序.7z
(65.02 KB, 下載次數(shù): 133)
2022-11-24 17:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
leoli
時(shí)間:
2020-6-7 21:37
不錯(cuò)哦不錯(cuò),效果ok
作者:
wgj666
時(shí)間:
2022-11-24 16:07
有人能講解一下程序嗎?
作者:
lin-LING
時(shí)間:
2025-2-18 22:25
運(yùn)行LED沒有顯示是為啥,請(qǐng)教一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1