標(biāo)題:
51單片機窗簾的控制文件不知道咋發(fā)
[打印本頁]
作者:
哥哥好0
時間:
2024-12-22 15:20
標(biāo)題:
51單片機窗簾的控制文件不知道咋發(fā)
/*
控制窗簾開關(guān)主函數(shù)
*/
#include<reg52.h>
#include<intrins.h>
#include"define.h"
#include"delay.h"
#include"LCD1602.h"
#include"DS18B20.h"
#include"ADC0832.h"
#include"L298.h"
unsigned char AuMa; //Au自動,Ma手動。自動手動切換變量
unsigned char StSp; //sr=start,sp=stop。開\關(guān)
unsigned char light; //光照強度
//***********************************************************************/
void Automatic();
void Manual();
void main()
{
LCD_init();
DS_read_temperature();
if(DS_OK==0)
return;//如果讀取錯誤,返回從新再讀
display_temperature();
IE=0x85;
PX0=1; //中斷優(yōu)先
IT0=1;
AuMa=1; //0為自動,1為手動(初始為手動)
StSp=1; //0表示開,1表示關(guān)(初始為關(guān))
while(1)
{
DS_read_temperature();//讀取溫度
if(DS_OK==0)
return;//如果讀取錯誤,返回從新再讀
display_temperature();
//MotorData=0x00; //設(shè)電機轉(zhuǎn)動初值
//MA=0;MB=0; //初始不轉(zhuǎn)動
//status=1; //初始窗戶關(guān)閉
light = Get_ADC0832();//讀取光照強度
light = light/2.5; //縮小光照檢測結(jié)果在(0-99)
if(light>99) //如果大于99
light=99; //則依然保持99
if(AuMa == 0) { //進入自動模式
Automatic();
delay(1);
}
else { //進入手動模式
IT1=1;
buffer_line1[10]='M';//*********修改成MAN
buffer_line1[11]='A';//*********修改成MAN
buffer_line1[12]='N';//*********修改成MAN
buffer_line1[13]=' ';//*********修改成MAN
buffer_line1[14]=' ';//*********修改成MAN
Manual();
delay(1);
}
}
}
/*******************手動模式***********************/
/*首先選擇手動模式,再手動選擇開還是關(guān)窗簾*/
void Manual()
{
if(StSp == 0 ) {//命令開并且當(dāng)前窗戶是關(guān)閉的
buffer_line1[14]='0';//*********修改成0,表示開
zhengzhuan();//電機正轉(zhuǎn),打開窗簾
}
else if(StSp == 1 ) {//命令關(guān)并且窗戶當(dāng)前是打開的
buffer_line1[14]='1';//*********修改成1,表示關(guān)
fanzhuan();//電機反轉(zhuǎn),關(guān)閉窗簾
}
//MA=0;MB=0;
}
/*******************自動模式*************************/
/*
首先選擇自動模式
光照太強自動關(guān)窗簾,溫度太高太低都會自動關(guān)窗簾;
只有在溫度范圍(15-30)且光線不強才會自動打開窗簾。
*/
void Automatic()
{
uchar gLight = 40; //窗簾開關(guān)的閾值
buffer_line1[10]='A';//*********修改成AUT
buffer_line1[11]='U';//*********修改成AUT
buffer_line1[12]='T';//*********修改成AUT
buffer_line1[13]=' ';//*********修改成AUT
buffer_line1[14]=' ';//*********修改成AUT
if((sign_temp<=15 || sign_temp>=30 || light>=gLight) ) { //當(dāng)前狀態(tài)為開,執(zhí)行關(guān)命令
buffer_line1[14]='1'; //*********修改成1,表示關(guān)
fanzhuan();//電機反轉(zhuǎn),關(guān)閉窗簾
}
else { //當(dāng)前狀態(tài)為關(guān),執(zhí)行開命令
buffer_line1[14]='0'; //*********修改成0,表示開
zhengzhuan();//電機正轉(zhuǎn),打開窗簾
}
}
//INT0中斷函數(shù)--控制模式切換:自動/手動
void EX_INT0() interrupt 0
{
AuMa = (AuMa+1)%2;
}
//INT1中斷函數(shù)--手動控制開關(guān)切換:開/關(guān)
void EX_INT1() interrupt 2
{
StSp = (StSp+1)%2;
}
屏幕截圖 2024-11-27 094253.png
(76 KB, 下載次數(shù): 0)
下載附件
2024-12-22 15:18 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1