新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 手動可調變速的流水燈程序

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

        作者: 時間:2016-12-01 來源:網絡 收藏
        /*********** 2011.7 JQ--V0.1 宏晶公司STC單片機開發板 ************

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

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

        $ 程序作者: 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 //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; //速度調節(也就是改變定時器的初值?。?br /> }

        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);
        }


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



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 罗源县| 阿图什市| 上犹县| 鹤庆县| 盐津县| 大丰市| 清涧县| 吉木乃县| 石狮市| 肇庆市| 揭东县| 香港| 射洪县| 都兰县| 黔江区| 神农架林区| 南投市| 玛多县| 吴旗县| 怀化市| 鄄城县| 平湖市| 漠河县| 扶风县| 垦利县| 涞水县| 台南县| 淮安市| 钟山县| 黄大仙区| 永州市| 白银市| 东方市| 改则县| 寻乌县| 枣阳市| 日喀则市| 大荔县| 双江| 皋兰县| 泾阳县|