亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
單片機電熱毯控制程序(定時控制溫度)
[打印本頁]
作者:
51黑dd
時間:
2016-4-6 18:22
標題:
單片機電熱毯控制程序(定時控制溫度)
電熱毯控制用,C51程序AT89S51,可定時控制溫度,并根據設定檔位自動調節輸出
源碼下載:
#include <AT89X51.H>//6MHz
#define uchar unsigned char
#define uint unsigned int
#define reset() {WDT=0x1e;WDT=0xe1;}//看門狗復位宏定義
sfr WDT=0xa6; //定義看門狗寄存器
uchar code DATA_7SEG[10]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};/*0~9的數碼管段碼*/
//============================================================
uchar data deda; /*100mS計數單元*/
uchar data sec; //計時秒
uchar data min; //計時分
char data set_min; //設定分
uchar data cnt_5s;
uchar data ram_flag;
char data powout_flag;
bit work_status;
bit flag_500ms;
bit bz_flag=0; //蜂鳴標志
bit startflag_5s; //5S標志
bit start_flag;
bit pout_flag;
//===========================================================
sbit h_pow_out=P2^7; //驅動H
sbit m_pow_out=P2^6; //驅動M
sbit l_pow_out=P2^5; //驅動L
sbit g_x1=P2^2; //個位顯示
sbit g_x2=P2^3;
sbit s_x1=P2^0; //十位顯示
sbit s_x2=P2^1;
sbit r_led=P3^1;
sbit g_led=P3^0;
sbit on_off_key=P3^2;
sbit timeinc_key=P3^3;
sbit timedec_key=P3^4;
sbit pow_sel_key=P3^5;
sbit run_stop_key=P3^6;
sbit bz_out=P2^4;
//==================================================
void init(void)
{
sec=min=set_min=0;
cnt_5s=0;
powout_flag=0;
work_status=0;
flag_500ms=0;
bz_flag=0;
startflag_5s=0;
start_flag=0;
pout_flag=0;
}
/*=========定時器T0初始化======*/
void init_timer0()
{
TMOD=0x11;//T0、T1方式1
TH0=-(50235/256);//100mS初值
TL0=-(50235%256);
ET0=1;TR0=1; //T0開中斷,啟動T0
}
//======================================================
/*延時k*1mS子函數*/
void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++){reset()
for(j=0;j<60;j++)
{;}}
}
/*定時器T1初始化*/
void init_timer1()
{
TH1=-(2500/256); //5mS初值
TL1=-(2500%256);
ET1=1; TR1=1; //T1開中斷,啟動T1
}
//======================================================
/*100mS定時中斷服務子函數*/
void timer0(void) interrupt 1 using 1
{
TH0=-(50235/256);// 重裝定時初值
TL0=-(50235%256);
deda++; //計時單元遞加
if(startflag_5s)cnt_5s++;//啟動5秒計時
if(deda>=10){sec++;deda=0;}// 秒加1
if(cnt_5s>=50){pout_flag=1;cnt_5s=50;}//5秒到,輸出標志置位,
//同時5秒計時值固定為5秒
if(sec>=60){set_min--;sec=0;}//60秒到,設定分遞減
if(set_min<=0)set_min=0;// 最小為0
if((set_min==0)&&(work_status==0)){startflag_5s=0;}// 若設定分為0且工作狀態為0,
//5秒啟動標志復位
else {startflag_5s=1;}// 否則5秒啟動標志置位
if((set_min<=3)&&(work_status==0))bz_flag=1;// 若設定分小于3且工作狀態為0,
//蜂鳴器啟動標志置位
else bz_flag=0; //否則蜂鳴器啟動標志復位
}
//===========================================================
/*T1 5ms定時中斷服務子*/
void timer1(void) interrupt 3 using 2
{static bit RL;static uchar cnt500;
cnt500++;if(cnt500==100){cnt500=0;flag_500ms=!flag_500ms;}// 每0.5秒,標志取反
RL=!RL;
TH1=-(2500/256);// 重裝5mS定時初值
TL1=-(2500%256);
if(start_flag)// 若系統啟動
{if(work_status==0)// 若自動時控工作
{ if(RL){P1=DATA_7SEG[set_min/10];// 點亮十位數碼管
s_x1=0;s_x2=0;g_x1=1;g_x2=1;}
else{P1=DATA_7SEG[set_min%10];// 點亮個位數碼管
s_x1=1;s_x2=1;g_x1=0;g_x2=0;}
}
//===========================================
else//否則處于持續工作時
{ if(flag_500ms){if(RL){P1=0x40;s_x1=0;s_x2=0;// 點亮g段
g_x1=1;g_x2=1;}
else {P1=0x40;s_x1=1;s_x2=1;// 點亮g段
g_x1=0;g_x2=0;}
}
else{P1=0x00;s_x1=1;s_x2=1;g_x1=1;g_x2=1;}
}
}
else {P1=0x00;s_x1=1;s_x2=1;g_x1=1;g_x2=1;} // 若系統關閉,熄滅數碼管
}
/**************************************************/
void key(void) //掃描時間設定鍵
{uchar temp,ss;
delay(10);
ss=P3;P3=0xff;
if(P3!=0xff)
{delay(10);temp=P3;P3=ss;
if(temp==0xfb){start_flag=!start_flag;ram_flag=0x55;delay(300);}// 按下開/關鍵,
//系統啟動標志取反,同時防干擾標志寫入55H
if(start_flag) //若處于開機狀態,根據按鍵狀態,進行功能散轉
{
switch(temp)
{
case 0xf7:{set_min++;bz_flag=0;startflag_5s=1;cnt_5s=0;// 設定分遞增
if(set_min>=60)set_min=60;delay(300);}break;
case 0xef:{set_min--;bz_flag=0;startflag_5s=1;cnt_5s=0;// 設定分遞減
if(set_min<=00)set_min=0;delay(300);}break;
case 0xdf:{powout_flag++;if(powout_flag>=3)powout_flag=0;// 切換
//輸出功率
delay(300);}break;
case 0xbf:{work_status=!work_status;delay(300);}break;// 選擇自動時控
//或持續工作
default:break;
}
}
else //否則處于關機狀態,設定分清零
{set_min=0;}
//===================================
if(work_status==0){if(set_min>0)startflag_5s=1;// 工作狀態為0,
//當設定分大于0,啟動5秒標志
else startflag_5s=0;}
else {startflag_5s=1;}// 工作狀態為1,也啟動5秒標志
}
}
/**************************************/
void power_out(uchar powout_flag)// 切換高中低三檔溫度
{
if(pout_flag==1)
{
switch(powout_flag)
{
case 0:m_pow_out=0;h_pow_out=1;l_pow_out=1;break;
case 1:h_pow_out=0;m_pow_out=1;l_pow_out=1;break;
case 2:l_pow_out=0;m_pow_out=1;h_pow_out=1;break;
default:break;
}
}
else {m_pow_out=1;h_pow_out=1;l_pow_out=1;}
if(start_flag==0)
{m_pow_out=1;h_pow_out=1;l_pow_out=1;pout_flag=0;bz_flag=0;bz_out=1;}
if(work_status==1)startflag_5s=1;
else {if(set_min==0)
{m_pow_out=1;h_pow_out=1;l_pow_out=1;
pout_flag=0;bz_flag=0;bz_out=1;startflag_5s=0;}
}
//=====================================================
if((bz_flag)&&(pout_flag)){if(flag_500ms)bz_out=0;else bz_out=1;}
else bz_out=1;
}
/*******************************************************/
/*主函數*/
void main()
{
if(ram_flag!=0x55)init();//上電時初始化
init_timer0(); //定時器T0初始化
init_timer1(); //定時器T1初始化
EA=1; //開總中斷
while(1) //無限循環
{
if(!start_flag){g_led=0;r_led=1;}// 系統關閉,綠燈亮,紅燈滅
else {g_led=1;r_led=0;}// 否則系統啟動,紅燈亮,綠燈滅
key(); //掃描按鍵
power_out(powout_flag); //調用功率切換子函數
reset() //看門狗復位
}
}
復制代碼
單片機電熱毯控制程序(定時控制溫度).rar
2016-4-6 18:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
2.22 KB, 下載次數: 59, 下載積分: 黑幣 -5
作者:
郝小白
時間:
2019-1-13 00:13
看著很不錯,但是有些地方不明白可以請教嗎?
作者:
lindeijun1
時間:
2021-4-9 09:51
謝謝樓主分享,最好有電路圖
作者:
蝦兵0蟹將
時間:
2021-4-9 17:36
有原理圖就更好了
作者:
yudianyiyi
時間:
2021-4-9 20:55
謝謝樓主,附件里有電路圖嗎?
作者:
akm4a1
時間:
2021-4-10 10:45
有電路圖嗎
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1