新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 二極管(STC89C52): 編寫程序實現類似交通燈

        二極管(STC89C52): 編寫程序實現類似交通燈

        作者: 時間:2016-11-22 來源:網絡 收藏
        一. 硬件設計

        二. 軟件設計
        1. 程序功能
        編寫程序實現類似交通燈:東西向綠燈亮若干秒,黃燈閃爍5次后紅燈亮,紅燈亮后,南北向由紅燈變為綠燈,若干秒后南北向黃燈閃爍5此后變紅燈,東西向變綠燈,如此重復
        2. 程序源碼
        #include
        #define uchar unsigned char
        #define uint unsigned int
        sbit red_east_west = P1 ^ 0;
        sbit yellow_east_west = P1 ^ 1;
        sbit green_east_west = P1 ^ 2;
        sbit red_south_north = P1 ^ 3;
        sbit yellow_south_north = P1 ^ 4;
        sbit green_south_north = P1 ^ 5;
        uchar flash_count = 0;
        uchar operation_type = 1;
        void delayms(uint xms);
        void traffic_light();
        void main()
        {
        while(1)
        traffic_light();
        }
        void traffic_light()
        {
        switch(operation_type)
        {
        case 1: //green between east and west, red between south and north
        red_east_west = 1; yellow_east_west = 1; green_east_west = 0;
        red_south_north = 0; yellow_south_north = 1; green_south_north = 1;
        delayms(2000);
        operation_type = 2;
        break;
        case 2: //yellow flash between east and west, green close between east and west
        delayms(300);
        yellow_east_west = ~yellow_east_west; green_east_west = 1;
        if (++flash_count != 10)
        return;
        flash_count = 0;
        operation_type = 3;
        break;
        case 3: //red between east and west, green between south and north
        red_east_west = 0; yellow_east_west = 1; green_east_west = 1;
        red_south_north = 1; yellow_south_north = 1; green_south_north = 0;
        delayms(2000);
        operation_type = 4;
        break;
        case 4: //yellow flash between south and north
        delayms(300);
        yellow_south_north = ~yellow_south_north; green_south_north = 1;
        if (++flash_count != 10)
        return;
        flash_count = 0;
        operation_type = 1;
        break;
        }
        }
        void delayms(uint xms)
        {
        uint i, j;
        for (i = xms; i > 0; i--)
        for (j = 110; j > 0; j--)
        ;
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宝山区| 清镇市| 托克逊县| 陆丰市| 弋阳县| 英吉沙县| 赞皇县| 广丰县| 元谋县| 丹凤县| 鄯善县| 南京市| 桐乡市| 丰城市| 镇巴县| 凉山| 麻阳| 萨嘎县| 南木林县| 和平县| 鄂尔多斯市| 咸丰县| 灯塔市| 新竹市| 罗定市| 奉贤区| 滦南县| 隆安县| 彰化县| 江北区| 大港区| 凤阳县| 乐昌市| 鄂尔多斯市| 临高县| 西畴县| 祁连县| 闸北区| 绥棱县| 徐州市| 卢湾区|