新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機流水燈C語言源程序

        51單片機流水燈C語言源程序

        作者: 時間:2016-11-25 來源:網絡 收藏
        **************************************************************
        文件名稱:flash_led.c
        文件說明:流水燈C程序
        編寫日期:2006年10月5日
        程序說明:MCU采用AT89S51,外接12M晶振,P1口輸出
        *************************************************************/
        #include //51系列單片機定義文件
        #define uchar unsigned char //定義無符號字符
        #define uint unsigned int //定義無符號整數
        void delay(uint); //聲明延時函數
        void main(void)
        {
        uint i;
        uchar temp;
        while(1)
        {
        temp=0x01;
        for(i=0;i<8;i++) //8個流水燈逐個閃動
        {
        P1=~temp;
        delay(100); //調用延時函數
        temp<<=1;
        }
        temp=0x80;
        for(i=0;i<8;i++) //8個流水燈反向逐個閃動
        {
        P1=~temp;
        delay(100); //調用延時函數
        temp>>=1;
        }
        temp=0xFE;
        for(i=0;i<8;i++) //8個流水燈依次全部點亮
        {
        P1=temp;
        delay(100); //調用延時函數
        temp<<=1;
        }
        temp=0x7F;
        for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
        {
        P1=temp;
        delay(100); //調用延時函數
        temp>>=1;
        }
        }
        }
        void delay(uint t) //定義延時函數
        {
        register uint bt;
        for(;t;t--)
        for(bt=0;bt<255;bt++);
        }
        #include
        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        #define TimeDelay 60000
        void delay(uint n);
        void Flash0a(void);
        void Flash0b(void);
        void Flash1a(void);
        void Flash1b(void);
        void Flash2a(void);
        void Flash2b(void);
        void Flash3a(void);
        void Flash3b(void);
        void main(void)
        {
        while(1)
        {
        Flash1b();
        Flash1a();
        delay(TimeDelay);
        delay(TimeDelay);
        Flash0b();
        Flash0a();
        Flash2b();
        Flash2a();
        Flash1b();
        Flash1a();
        Flash3b();
        Flash3a();
        }
        }
        void delay(uint n)
        {
        while(n!=0)
        {
        n--;
        }
        }
        void Flash0a(void)
        {
        uchar i;
        uchar Temp;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P0 = ~Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P0 = 0xff;
        }
        void Flash0b(void)
        {
        uchar i;
        uchar Temp;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P0 = Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P0 = 0;
        }
        void Flash1a(void)
        {
        uchar i;
        uchar Temp;
        P1 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P1 = ~Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P1 = 0xff;
        }
        void Flash1b(void)
        {
        uchar i;
        uchar Temp;
        P1 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P1 = Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P1 = 0;
        }
        void Flash2a(void)
        {
        uchar i;
        uchar Temp;
        P2 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P2 = ~Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P2 = 0xff;
        }
        void Flash2b(void)
        {
        uchar i;
        uchar Temp;
        P2 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P2 = Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P2 = 0;
        }
        void Flash3a(void)
        {
        uchar i;
        uchar Temp;
        P3 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P3 = ~Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P3 = 0xff;
        }
        void Flash3b(void)
        {
        uchar i;
        uchar Temp;
        P3 = 1;
        Temp = 0x80;
        for(i=0;i<8;i++)
        {
        P3 = Temp;
        delay(TimeDelay);
        Temp = Temp >> 1;
        }
        P3 = 0;
        }
        ===========
        ;P1口八個LED燈做三路流水燈實驗
        ;***************************************************************
        ;* Date : 2004.4.20 *
        ;***************************************************************
        ORG 0000H
        LJMP MAIN
        ORG 030H
        MAIN:MOV P1,#0DBH ;11011011--0為亮,1為滅
        ACALL DELAY
        MOV P1,#06DH ;01101101
        ACALL DELAY
        MOV P1,#0B6H ;10110110
        ACALL DELAY
        AJMP MAIN
        DELAY:MOV R7,#255 ;延時子程序
        D1: MOV R6,#255
        D2: DJNZ R6,D2
        DJNZ R7,D1
        RET
        END


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 云安县| 洛扎县| 迁安市| 五大连池市| 林周县| 临汾市| 德钦县| 古蔺县| 万盛区| 大荔县| 禹城市| 马龙县| 东乌珠穆沁旗| 邢台县| 成武县| 长岛县| 璧山县| 大邑县| 尚志市| 新宁县| 伊吾县| 耿马| 民勤县| 日照市| 山西省| 梓潼县| 太和县| 兴安盟| 永仁县| 咸宁市| 铁岭市| 弥勒县| 大连市| 栾川县| 浏阳市| 商洛市| 柳州市| 巧家县| 鄂温| 胶南市| 色达县|