新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 模擬風(fēng)扇控制電路(單片機(jī)C程序設(shè)計(jì))

        模擬風(fēng)扇控制電路(單片機(jī)C程序設(shè)計(jì))

        作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
        /*

        模擬風(fēng)扇控制電路
        1、定時(shí)設(shè)置每按一下定時(shí)值在0分---2分----4分---6分----8分--10循環(huán)
        2、主電機(jī)工作方式有三種,A、PWM為三分之一
        B、PWM為二分之一 C、PWM為三分之二;
        3、顯示第一位顯示風(fēng)類,第二三四位動(dòng)態(tài)顯示定時(shí)時(shí)間;
        4、搖頭電機(jī)每30秒正轉(zhuǎn)30秒反轉(zhuǎn);
        ==================================================
        */
        #include
        #define uint unsigned int
        #define uchar unsigned char
        unsigned char code table[]={0x3f,0x06,0x5b,
        0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
        uchar flag,flag1,flag2,flag3,fen,miao,flagfen;
        uchar fenglei1,dingshi1,yaotu1;
        uchar num1,num2,temp;
        uint aa,bb,cc;
        sbit fenglei=P3^0;
        sbit dingshi=P3^1;
        sbit yaotu=P3^2;
        sbit wei1=P2^3;
        sbit wei2=P2^4;
        sbit wei3=P2^5;
        sbit wei4=P2^6;
        sbit pwmh1=P3^3;
        sbit pwml1=P3^4;
        sbit pwmh2=P3^5;
        sbit pwml2=P3^6;
        void delay(uint z);
        void keyscan();
        void disp();
        void intc();
        void dispfenlei();
        void dispdingshi();
        void dianji1();
        void dianji2();
        //=====================
        void main()
        {
        intc();
        while(1)
        {
        keyscan();
        dispfenlei();
        dispdingshi();
        dianji1();
        //dianji2();

        }
        }
        //=================
        void intc()
        {
        TMOD=0x11;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        ET0=1;
        ET1=1;
        EA=1;
        TR1=1;
        pwml1=0;
        pwml2=0;
        }
        //======================
        void timer0()
        {
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        aa++;
        if(aa==20)
        {
        aa=0;
        miao++;}
        if(miao>60)
        { miao=0;
        fen++;flagfen=1;}
        if(fen==dingshi1)
        { TR0=0;
        miao=0;
        fen=0;
        aa=0;}

        本文引用地址:http://www.104case.com/article/201611/315590.htm



        }
        //=================
        void timer1()
        {
        TH1=(65536-1000)/256;
        TL1=(65536-1000)%256;
        aa++;
        if(aa==10)
        {aa=0;bb++;}
        if(bb==100)
        {bb=0;cc++;}
        if(cc==60)
        cc=0;


        }
        //==============
        void keyscan()
        {
        if(fenglei==0)
        delay(100);
        if(fenglei==0)
        {
        while(!fenglei);
        fenglei1++;
        if(fenglei1>2)
        fenglei1=0;
        }
        if(dingshi==0)
        delay(100);
        if(dingshi==0)
        {
        while(!dingshi);
        TR0=1;
        dingshi1++;
        temp=dingshi1;
        if(dingshi1>5)
        dingshi1=0;
        }
        if(yaotu==0)
        delay(100);
        if(yaotu==0)
        {
        while(!yaotu);
        yaotu1=~yaotu1;
        }
        if(dingshi1!=0)
        TR0=1;
        else
        TR0=0;

        }

        //============
        void dispfenlei()
        {


        P0=table[fenglei1];
        P2=0xf7;
        delay(5);
        }

        //=============
        void dispdingshi()
        {if(flagfen==1)
        {flagfen=0;
        if(temp==0)
        temp==0;
        else
        temp--;
        }
        P2=0xfb;
        P0=table[0];
        P2=0xfb;
        delay(5);
        P0=0xff;

        P0=table[(temp*2)/10];
        P2=0xfd;
        delay(5);
        P0=0xff;

        P0=table[(temp*2)%10];
        P2=0xfe;
        delay(5);
        P0=0xff;
        }
        //===============
        void delay(uint z)
        {
        uint x;
        uchar y;
        for(x=0;x for(y=0;y<100;y++);
        }
        //=========風(fēng)機(jī)電機(jī)===============
        void dianji1()
        {
        switch(fenglei1)
        {
        case 0: if(aa<=3)
        pwmh1=1;
        if(aa>3&&aa<=10)
        pwmh1=0;break;
        case 1: if(aa<=5)
        pwmh1=1;
        if(aa>5&&aa<=10)
        pwmh1=0;
        case 2: if(aa<=7)
        pwmh1=1;
        if(aa>7&&aa<=10)
        pwmh1=0;

        }

        }

        //=========搖頭電機(jī)==================
        void dianji2()
        {
        if(yaotu1==1)
        {if(cc<30)
        pwmh2=1;
        else
        pwmh2=0;}
        else
        pwmh2=0;

        }



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 靖安县| 揭西县| 邢台县| 宁城县| 临安市| 荃湾区| 神农架林区| 库尔勒市| 萍乡市| 莎车县| 循化| 马龙县| 博客| 景德镇市| 宜宾市| 阳春市| 碌曲县| 剑河县| 卓尼县| 精河县| 三台县| 金坛市| 元朗区| 视频| 青川县| 乌拉特前旗| 松江区| 盈江县| 新泰市| 互助| 九江市| 台北市| 大连市| 红原县| 通化县| 建水县| 岫岩| 定襄县| 交口县| 绥化市| 长岛县|