<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        手動可調變速的流水燈程序

        作者:佚名   來源:本站原創   點擊數:  更新時間:2014年03月15日   【字體:

        /*********** 2011.7 JQ--V0.1 宏晶公司STC單片機開發板 ************

        $ 程序作用:手動可調變速的流水燈的效果

        $ 程序作者: JQ(QQ:489555226  Email:489555226@qq.com)

        $ 程序版本: JQ--V0.1

        $ 編制日期: 2011-07-01

        $ 編譯器:Keil C uVision2

        $ 所用芯片:STC89C52,11.0592M晶振

        $ 程序開發板:JQ--V0.1版本

        $ 程序通俗易懂  注釋詳細  結構化模塊是51單片機初學愛好者的理想選擇

        ******************** JQ--V0.1 宏晶公司STC單片機開發板 **********************/

        #include<reg52.h>      //52單片機頭文件定義

        #define uchar unsigned char    //數據類型uchar的宏定義
        #define uint  unsigned int   //數據類型uint的宏定義

        #define led P0          //P0口宏定義
        void init();
        uchar count,speed,num;  //全局變量定義

        sbit key =P3^2;

        void delay(uint k);

        uchar code huayang[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0x55,0x55,0x00};   //花樣跑馬燈數組定義  隨便改變數組里面的值就可以改變花樣(該數組有27個數值)
        void main(void)   //主函數
        {
         uchar i;
         init();
         while(1)         //while死循環
         {
          for(i=0;i<8;i++)     //0-26共27次循環依次取出數組中的數(i小于多少由數組中的數決定)
          {
           led=huayang[i];   //把取出的數以總線的方式賦給led即P0口
          }
         }
        }

         

        void init()   //初始化
        {
         speed=0;
         TMOD=0x01;   //定時器T0的應用   后面會詳細講
         TH0=(65536-speed)/256;
         TL0=(65536-speed)%256;
         EA=1;
         ET0=1;
         TR0=1;
        }


        void timer0() interrupt 1   //定時器T0中斷   后面會詳細講
        {
          TH0=(65536-speed)/256;
          TL0=(65536-speed)%256;
          count++;
          if(count==5000)
          {
           count=0;

           if(key==0)      //按鍵消抖
           { delay(5);
            if(key==0)
             num++;
             while(!key);   //松手檢測  只要當key==1時才會退出這個while循環!

             if(num==1)
             {
              speed=50;  //速度調節(也就是改變定時器的初值。
             }

             if(num==2)
             {
              speed=100;
             }

             if(num==3)
             {
              speed=150;
             }
            

             if(num==4)
             {
              speed=200;
             }
           }
          }
         if(num==5)  num=0;
         
        }

         
        void delay(uint k)   //延時子函數
        {
           while(--k);
        }


        //這過程序用到了定時器  后面會跟大家詳細講解的! 謝謝大家。!
        //對于調速函數可以進行修改,使其變得更加的簡潔,speed=num*50;if(num==6)  num=0;//防止程序出錯,所以進行了限制!

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮