久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2197|回復: 4
打印 上一主題 下一主題
收起左側

單片機模擬風扇控制程序,風速不變啊

[復制鏈接]
跳轉到指定樓層
樓主
ID:842786 發表于 2020-11-12 21:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

有沒有大神幫忙看看,為什么風扇轉速不變啊

設計內容:1、3個獨立按鍵分別控制“自然風”、“睡眠風”、“常風”,(三者的區別是直流電機的停歇時間不同),并在數顯管上顯示出區別
   2、每種類型風可以根據按下獨立按鍵次數分為4個檔的風力調節。
    3、設計風扇的過熱保護,用繼電器實現。即當風扇運行一段時間后,暫停10秒。
   4、其他創新內容(如報警提示)

單片機源程序如下:
#include<reg51.h>         
#include<intrins.h>

#define uchar unsigned char   
#define uint  unsigned int      

sbit EA1=P1^4;                       
sbit motor_r=P1^5;            
sbit motor_l=P1^6;            
sbit LM298_State=P3^3;      

sbit LED_D1=P3^2;
sbit LED_D2=P3^1;
sbit LED_D3=P3^0;


sbit key0=P3^4;        
sbit key1=P3^5;                  
sbit key2=P3^6;
sbit key3=P3^7;

sbit BEEP=P1^3;

bit Flag_Time=0,Flag_Motor_Start=1;
uchar Sec=0,Min=0;
uint Sec_Timer0=0;

uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};                        //0-9  

//PWMμç»úμ÷Ëù3õê¼Öμ

#define PWM 10
uchar speed_set=1;               
uchar Fan_Mode=0;                  
//uchar Time_Set=1;                                 
bit flag_1s=0;                                                   
void delay_ms(uint ms)                                
{
        uint a,b;                  
        for(a=ms;a>0;a--)         
                for(b=125;b>0;b--);   
}
void  time_init()
{
        TMOD=0x01;               
        EA=1;
        TH0=(65536-1000)/256;        
        TL0=(65536-1000)%256;  
        ET0=1;
        TR0=1;
}
void Clear()
{
        P2 = 0Xff;
        P0 = 0X00;
}
void dispaly(uchar Min)   
{
        Clear();
        P2=0xfd;        
        P0=table[Min%10]
        delay_ms(1);

        Clear();
        P2=0xfe;
        P0=table[Min/10];
        delay_ms(1);
}
uchar speed_Num=0;
void key_scan()                        
{        
        if(key0==0)                                
        {
                delay_ms(10);
                if(key0==0)
                {                                                                 
                        speed_Num++;
                        if(speed_Num>3)
                        {
                                speed_Num=0;
                        }
                        switch(speed_Num)
                        {
                                case 0:speed_set=2;break;
                                case 1:speed_set=5;break;
                                case 2:speed_set=7;break;
                                case 3:speed_set=10;break;
                                default:break;
                        }                        
                }
                while(!key0)
                {
                        dispaly(speed_Num+1);
                }
        }                                                                           
        if(key1==0)                                
        {
                delay_ms(10);
                if(key1==0)
                {                        
                        Fan_Mode=0;
                        switch(Fan_Mode)
                        {
                                case 0:LED_D1=0;LED_D2=1;LED_D3=1;break;
                                case 1:LED_D1=1;LED_D2=0;LED_D3=1;break;
                                case 2:LED_D1=1;LED_D2=1;LED_D3=0;break;
                                default:break;
                        }
                        Sec_Timer0=0;                        
                }
                while(!key1)
                {
                        dispaly(speed_Num+1);
                }
        }
        if(key2==0)                                    //ê±¼ä¼ó
        {
                delay_ms(10);
                if(key2==0)
                {
                        Fan_Mode=1;
                        switch(Fan_Mode)
                        {
                                case 0:LED_D1=0;LED_D2=1;LED_D3=1;break;
                                case 1:LED_D1=1;LED_D2=0;LED_D3=1;break;
                                case 2:LED_D1=1;LED_D2=1;LED_D3=0;break;
                                default:break;
                        }
                        Sec_Timer0=0;
                }
                while(!key2)
                {
                        dispaly(speed_Num+1);
                }
        }
        if(key3==0)                        // ê±¼ä¼õ
        {
                delay_ms(10);
                if(key3==0)
                {
                        Fan_Mode=2;
                        switch(Fan_Mode)
                        {
                                case 0:LED_D1=0;LED_D2=1;LED_D3=1;break;
                                case 1:LED_D1=1;LED_D2=0;LED_D3=1;break;
                                case 2:LED_D1=1;LED_D2=1;LED_D3=0;break;
                                default:break;
                        }
                        Sec_Timer0=0;
                }
                while(!key3)
                {
                        dispaly(speed_Num+1);
                }
        }        
}
void main()                                                
{
        motor_r=0;
        motor_l=1;
        EA1=0;
        time_init();
        LED_D1=0;LED_D2=1;LED_D3=1;
        while(1)
        {
                key_scan();        
                dispaly(speed_Num+1);
        }
}void time0()interrupt 1
{
        static uchar count1=0;
        static uint count2=0;
        TH0=(65536-1000)/256;            //¶¨ê±1ms
        TL0=(65536-1000)%256;
        if(Flag_Motor_Start)
        {
                count1++;
                if(count1>PWM)                  //ÖüÆúêÇ10ms
                        count1=0;         
                if(count1<=speed_set)                  //μç»ú1 PWMμ÷Ëù
                        EA1=1;
                else
                        EA1=0;
        }
        else
        {
                EA1=0;
        }
        count2++;
        if(count2>=1000)
        {
                count2=0;               
                Sec++;
                if(Sec==60)
                {
                        Flag_Motor_Start=0;
                        LM298_State=0;
                        EA1=0;
                        motor_r=0;
                        motor_l=0;
                        BEEP=0;
//                                TR0=0;
                }
                if(Sec==70)
                {
                        Sec=0;
                        Flag_Motor_Start=1;
                        LM298_State=1;
                        motor_r=0;
                        motor_l=1;
                        EA1=1;
                        BEEP=1;
                }
                Sec_Timer0++;                                
                if(Fan_Mode==0)
                {
                        if(Sec_Timer0>100)
                                Sec_Timer0=0;
                        Flag_Motor_Start=1;
                }
                else if(Fan_Mode==1)
                {
                        if(Sec_Timer0<=4)
                                Flag_Motor_Start=1;
                        else
                                Flag_Motor_Start=0;        
                        if(Sec_Timer0>8)
                                Sec_Timer0=0;
                }
                else if(Fan_Mode==2)
                {
                        if(Sec_Timer0<=8)
                                Flag_Motor_Start=1;
                        else
                                Flag_Motor_Start=0;        
                        if(Sec_Timer0>16)
                                Sec_Timer0=0;
                }
                else
                {}
               
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:842786 發表于 2020-11-12 21:31 | 只看該作者
這是仿真

仿真.zip

26.25 KB, 下載次數: 39

回復

使用道具 舉報

板凳
ID:213173 發表于 2020-11-13 07:56 | 只看該作者
直流電機調速通常采用PWM方式,改變占空比即可改變轉速。但實際生活中絕大多數是交流風扇,調速方式有所不同。
回復

使用道具 舉報

地板
ID:845526 發表于 2020-11-21 20:36 來自觸屏版 | 只看該作者
請問樓主的問題有沒有得到解決
回復

使用道具 舉報

5#
ID:842786 發表于 2021-5-18 17:56 | 只看該作者
1920097424 發表于 2020-11-21 20:36
請問樓主的問題有沒有得到解決

解決了

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美区日韩区 | 欧日韩在线| 亚洲视频中文字幕 | www.狠狠干| 99精品视频在线 | 免费国产精品久久久久久 | 久草热在线 | 国产伦精品一区二区三区在线 | 美日韩一区二区 | 国产欧美在线 | 亚洲人成网亚洲欧洲无码 | 91人人爽 | 久在线 | 精品国产伦一区二区三区观看体验 | 色888www视频在线观看 | 国产精品夜间视频香蕉 | 日韩久久久久久 | 国产日产精品一区二区三区四区 | 亚洲国产成人精品女人 | 超碰97免费在线 | 91精品久久久久久久久久小网站 | 高清一区二区三区 | 国产伦一区二区三区视频 | 精品国产1区2区3区 在线国产视频 | 妞干网视频 | 亚洲天堂av网 | 国产精品高潮呻吟久久av黑人 | 国产a视频 | 精品日韩在线 | 欧美激情国产日韩精品一区18 | 国产剧情一区 | 亚洲精品久久久一区二区三区 | 国产男女视频网站 | 午夜性色a√在线视频观看9 | 国产精品久久久久久久久久久久 | 国产日韩欧美一区二区 | 精品国产18久久久久久二百 | 免费网站国产 | 中国美女一级黄色片 | 欧美日韩91| 国产黄色小视频在线观看 |