標(biāo)題:
單片機(jī)藍(lán)橋杯智能風(fēng)扇程序
[打印本頁]
作者:
sfefafwa
時(shí)間:
2021-6-27 08:35
標(biāo)題:
單片機(jī)藍(lán)橋杯智能風(fēng)扇程序
工作模式
設(shè)備具有“睡眠風(fēng)”、“自然風(fēng)”和“常風(fēng)”三種工作模式可以通過按鍵切換,通過
單片機(jī) P34 引腳輸出脈寬調(diào)制信號控制電機(jī)運(yùn)行狀態(tài),信號頻率為 1KHz。
1.1 “睡眠風(fēng)”模式下,對應(yīng) PWM 占空比為 20%;
1.2 “自然風(fēng)”模式下,對應(yīng) PWM 占空比為 30%;
1.3 “常風(fēng)”模式下,對應(yīng) PWM 占空比為 70%;
2. 數(shù)碼管顯示
數(shù)碼管實(shí)時(shí)顯示設(shè)備當(dāng)前工作模式和剩余工作時(shí)間(倒計(jì)時(shí)),如圖 2 所示。
- - 1 1 - - 8 8 0 0 0 0 5 5 0 0
工作模式:睡眠風(fēng) 熄滅 剩余工作時(shí)間:50 秒
圖 2.工作模式和剩余工作時(shí)間顯示
“睡眠風(fēng)”狀態(tài)下,對應(yīng)數(shù)碼管顯示數(shù)值為 1,自然風(fēng)模式下,顯示數(shù)值為 2,常
風(fēng)模式下,顯示數(shù)值為 3。
3. 按鍵控制
使用 S4、S5、S6、S7 四個(gè)按鍵完成按鍵控制功能。
2.1 按鍵S4定義為工作模式切換按鍵,每次按下S4,設(shè)備循環(huán)切換三種工作模式。
工作過程如下:
2.2 按鍵 S5 定義為“定時(shí)按鍵”每次按下 S5,定時(shí)時(shí)間增加 1 分鐘,設(shè)備的剩余
工作時(shí)間重置為當(dāng)前定時(shí)時(shí)間,重新開始倒計(jì)時(shí),工作過程如下:
設(shè)備剩余工作時(shí)間為 0 時(shí),停止 PWM 信號輸出。
2.3 按鍵 S6 定義為“停止”按鍵,按下 S6 按鍵,立即清零剩余工作時(shí)間,PWM
信號停止輸出,直到通過 S5 重新設(shè)置定時(shí)時(shí)間。
2.4 按鍵 S7 定義為“室溫”按鍵,按下 S7,通過數(shù)碼管顯示當(dāng)前室溫,數(shù)碼管顯
示格式如圖 3 所示,再次按下 S7,返回圖 2 所示的工作模式和剩余工作時(shí)間
睡眠風(fēng) 自然風(fēng) 常風(fēng)
0 分鐘 1 分鐘 2 分鐘
3 / 4
顯示界面,如此往復(fù)。
- - 4 4 - - 8 8 8 8 2 2 5 5 C C
室溫顯示 熄滅 當(dāng)前室內(nèi):25℃
圖 3.室溫顯示界面
室溫測量、顯示功能不應(yīng)影響設(shè)備正在執(zhí)行的 PWM 信號輸出、停止、模式切
換和計(jì)時(shí)等功能。
4. LED 指示燈
“睡眠風(fēng)”模式下,L1 點(diǎn)亮,“自然風(fēng)”模式下 L2 點(diǎn)亮,“常風(fēng)”模式下 L3 點(diǎn)亮;
按下停止按鍵或倒計(jì)時(shí)結(jié)束時(shí),LED 全部熄滅。
單片機(jī)源程序如下:
#include<reg52.h>
#include<dulianjian.h>
#include<shumaguan.h>
#include<onewire.h>
void Timer0Init();
void anjian();
unsigned char jianzhi;
unsigned char fengsu=1;
unsigned char time;
unsigned char wendu;
unsigned char t;
unsigned char c;
static unsigned char s=0;
static unsigned char w=0;
unsigned char timeplay[8];
unsigned char wenduplay[8];
bit anjianflag;
bit wenduflag;
void main()
{
Timer0Init();
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X01;P2=0X00;
while(1)
{
timeplay[0]=17;timeplay[1]=fengsu;timeplay[2]=17;timeplay[3]=16;timeplay[4]=0;
timeplay[5]=time/100;
timeplay[6]=(time%100)/10;
timeplay[7]=time%10;
if(wenduflag)
{
wendu=(unsigned char)rd_temperature_f();
}
wenduplay[0]=17;wenduplay[1]=4;wenduplay[2]=17;wenduplay[3]=16;wenduplay[4]=16;
wenduplay[5]=wendu/10;
wenduplay[6]=wendu%10;
wenduplay[7]=12;
if(anjianflag==1)
{
jianzhi=zhuangtaiji();
if(jianzhi==1)
{
c++;
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X01;P2=0X00;
}
if(jianzhi==2)
{
time=0;t=0;
}
if(jianzhi==3)
{
t++;
if(t==1)time=60;
if(t==2)time=120;
if(t==3)
{
time=0;t=0;
}
}
if(jianzhi==4)
{
fengsu++;
if(fengsu==1)
{
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X01;P2=0X00;
}
if(fengsu==2)
{
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X02;P2=0X00;
}
if(fengsu==3)
{
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X04;P2=0X00;
}
if(fengsu==4)
{
fengsu=1;
P2=0X80;P0=~0X00;P2=0X00;
P2=0X80;P0=~0X01;P2=0X00;
}
}
}
}
}
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定時(shí)器時(shí)鐘1T模式
TMOD &= 0xF0; //設(shè)置定時(shí)器模式
TL0 = 0xAE; //設(shè)置定時(shí)初值
TH0 = 0xFB; //設(shè)置定時(shí)初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
ET0=1;
EA=1;
}
void tm0_isr() interrupt 1
{
static int shumaguancount;static int anjiancount;static int timecount;
shumaguancount++;anjiancount++;timecount++;
TL0 = 0xAE; //設(shè)置定時(shí)初值
TH0 = 0xFB; //reload timer0 high byte
if (shumaguancount == 20) //1ms * 1000 -> 1s
{
shumaguancount = 0;
if(c%2==0)
{
display(timeplay[s],w);
wenduflag=0;
}
if(c%2==1)
{
display(wenduplay[s],w);
wenduflag=1;
}
s++;w++;
if(s==8)s=0;
if(w==8)w=0;
}
if(anjiancount==100)
{
anjiancount=0;
anjianflag=1;
}
if(timecount==10000)
{
if(time>0)
time--;
}
}
復(fù)制代碼
所有程序51hei提供下載:
fengshan2.zip
(53.96 KB, 下載次數(shù): 76)
2021-6-27 08:32 上傳
點(diǎn)擊文件名下載附件
智能風(fēng)扇
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1