国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

51單片機-流水燈

發布時間:2011-3-21 11:36    發布者:諸葛孔明
關鍵詞: 51單片機 , 流水燈



這個是原理圖,從圖中最右邊有一個排阻,也就是這里八個電阻封裝在一起,這里排阻的特點是八個

電阻有一個公共端,然后一個電源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. }

李萬鵬
原文地址:http://blog.csdn.net/woshixingaaa/archive/2010/09/17/5891763.aspx
本文地址:http://www.4huy16.com/thread-59035-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
williamkmcn 發表于 2011-7-7 17:30:27
好東西值得收藏
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • 常見深度學習模型介紹及應用培訓教程
  • Microchip第22屆中國技術精英年會——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術精英年會深圳站回顧
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表