新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機-流水燈

        51單片機-流水燈

        作者: 時間:2016-12-02 來源:網絡 收藏

        這個是原理圖,從圖中最右邊有一個排阻,也就是這里八個電阻封裝在一起,這里排阻的特點是八個
        電阻有一個公共端,然后一個電源VCC通過跳線與排阻相連。到達二極管的電流從正極流向負極,如
        果二極管負極是低電平,則電流流過二極管,發光二極管亮起來。負極接在單片機的P2端口上。也就
        是說P2的引腳位低電平時可驅動發光二極管發光。驅動各個燈閃爍的方法是把各位循環左移,使用函數
        _crol_。
        #include
        #include
        unsigned int a;
        void delay(){
        int i,j;
        for(i = 0; i < 0xff; i++)
        for(j = 0; j < 0xff; j++)
        ;
        }
        void liushui(){
        int i,dd;
        dd = 0xfe; //dd = 1111 1110 此時L9亮
        for(i = 0; i < 8; i++){
        P2 = dd;
        delay();
        dd = _crol_(dd,1); //循環左移一位 dd = 1111 1101
        }
        }
        void main(){
        while(1){
        liushui();
        }
        }
        流水燈向左流動,當按住獨立按鍵時,流水燈向右移動:
        #include
        #include
        unsigned int dd;
        sbit key = P1^0;
        void delay(){
        int i,j;
        for(i = 0; i < 0x2a; i++)
        for(j = 0; j < 0xff; j++)
        ;
        }
        void right(){
        P2 = dd;
        delay();
        dd = _crol_(dd,1);
        }
        void left(){
        P2 = dd;
        delay();
        dd = _cror_(dd,1);
        }
        void main(){
        dd = 0xfe;
        while(1){
        if(key == 1)
        right();
        else {
        delay();
        if(key == 0)
        left();
        }
        }
        }
        PWM調制使流水燈漸滅,改變占空比。
        1. #include
        2. #include
        3. #define uint unsigned int
        4. uint a;
        5.
        6. void delay(uint t){
        7. int i,j;
        8. for(i = 0; i < t; i++)
        9. for(j = 0; j < 0xff; j++)
        10. ;
        11. }
        12.
        13. void liushui(){
        14. int i,dd;
        15. dd = 0xfe; //dd = 1111 1110 此時L9亮
        16. for(i = 0; i < 8; i++){
        17. P2 = dd;
        18. delay(1000);
        19. dd = _crol_(dd,1); //循環左移一位 dd = 1111 1101
        20. P2 = 0xff;
        21. delay(300);
        22. }
        23. }
        24. void main(){
        25. while(1){
        26. liushui();
        27. }
        28. }


        關鍵詞: 51單片機流水

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 同仁县| 西林县| 连州市| 佛教| 延安市| 竹溪县| 多伦县| 綦江县| 乌什县| 德化县| 屯昌县| 华蓥市| 自治县| 阿瓦提县| 涞源县| 高阳县| 东阳市| 常州市| 海淀区| 谢通门县| 桐梓县| 建宁县| 德清县| 平陆县| 禄丰县| 松潘县| 文登市| 子洲县| 青州市| 阿拉尔市| 枣庄市| 永寿县| 建昌县| 重庆市| 清水河县| 遂川县| 三门峡市| 东方市| 茶陵县| 公安县| 蕲春县|