欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機藍橋杯智能風扇程序
[打印本頁]
作者:
sfefafwa
時間:
2021-6-27 08:35
標題:
單片機藍橋杯智能風扇程序
工作模式
設備具有“睡眠風”、“自然風”和“常風”三種工作模式可以通過按鍵切換,通過
單片機 P34 引腳輸出脈寬調(diào)制信號控制電機運行狀態(tài),信號頻率為 1KHz。
1.1 “睡眠風”模式下,對應 PWM 占空比為 20%;
1.2 “自然風”模式下,對應 PWM 占空比為 30%;
1.3 “常風”模式下,對應 PWM 占空比為 70%;
2. 數(shù)碼管顯示
數(shù)碼管實時顯示設備當前工作模式和剩余工作時間(倒計時),如圖 2 所示。
- - 1 1 - - 8 8 0 0 0 0 5 5 0 0
工作模式:睡眠風 熄滅 剩余工作時間:50 秒
圖 2.工作模式和剩余工作時間顯示
“睡眠風”狀態(tài)下,對應數(shù)碼管顯示數(shù)值為 1,自然風模式下,顯示數(shù)值為 2,常
風模式下,顯示數(shù)值為 3。
3. 按鍵控制
使用 S4、S5、S6、S7 四個按鍵完成按鍵控制功能。
2.1 按鍵S4定義為工作模式切換按鍵,每次按下S4,設備循環(huán)切換三種工作模式。
工作過程如下:
2.2 按鍵 S5 定義為“定時按鍵”每次按下 S5,定時時間增加 1 分鐘,設備的剩余
工作時間重置為當前定時時間,重新開始倒計時,工作過程如下:
設備剩余工作時間為 0 時,停止 PWM 信號輸出。
2.3 按鍵 S6 定義為“停止”按鍵,按下 S6 按鍵,立即清零剩余工作時間,PWM
信號停止輸出,直到通過 S5 重新設置定時時間。
2.4 按鍵 S7 定義為“室溫”按鍵,按下 S7,通過數(shù)碼管顯示當前室溫,數(shù)碼管顯
示格式如圖 3 所示,再次按下 S7,返回圖 2 所示的工作模式和剩余工作時間
睡眠風 自然風 常風
0 分鐘 1 分鐘 2 分鐘
3 / 4
顯示界面,如此往復。
- - 4 4 - - 8 8 8 8 2 2 5 5 C C
室溫顯示 熄滅 當前室內(nèi):25℃
圖 3.室溫顯示界面
室溫測量、顯示功能不應影響設備正在執(zhí)行的 PWM 信號輸出、停止、模式切
換和計時等功能。
4. LED 指示燈
“睡眠風”模式下,L1 點亮,“自然風”模式下 L2 點亮,“常風”模式下 L3 點亮;
按下停止按鍵或倒計時結(jié)束時,LED 全部熄滅。
單片機源程序如下:
#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; //定時器時鐘1T模式
TMOD &= 0xF0; //設置定時器模式
TL0 = 0xAE; //設置定時初值
TH0 = 0xFB; //設置定時初值
TF0 = 0; //清除TF0標志
TR0 = 1; //定時器0開始計時
ET0=1;
EA=1;
}
void tm0_isr() interrupt 1
{
static int shumaguancount;static int anjiancount;static int timecount;
shumaguancount++;anjiancount++;timecount++;
TL0 = 0xAE; //設置定時初值
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--;
}
}
復制代碼
所有程序51hei提供下載:
fengshan2.zip
(53.96 KB, 下載次數(shù): 76)
2021-6-27 08:32 上傳
點擊文件名下載附件
智能風扇
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1