<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機彩燈是怎樣點亮

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2009/11/27

      如用要獲得0.5秒的時間,而單片機的指令周期是1μs0.5秒是1μs5000000倍,所以在程序編寫中常用循環語句來完成時間的延長。而空循環一次操作需要2個機器周期的時間(注:這是在用無符號字符型變量作循環變量的情況下,同時是用變量減循環,具體可參看反匯編指令“DJNZ 存儲單元 ,目標地址”的說明 ),下面就是一個完成0.5秒延時的程序。

      程序是用C51編寫的,由于C語言本身不依賴于硬件,便于在不同的單片機進行程序移植。C51與標準C語言主要語句是完全相同的,在程序編寫中有不同的地方,在本書的附錄中有較為詳細的敘述,請參看附錄B

      void delay05s(void) //延時0.5秒子程序

      {

      unsigned char i,j,k; //聲明三個無符號字符型變量i,j,k

      for(i=5;i>0;i--)   //外循環,每次循環約0.1s,共延時為5*0.1s=0.5s

      for(j=200;j>0;j--)//每次循環約0.5ms,所以延時約為200*0.5ms=100ms=0.1s

           for(k=250;k>0;k--);//最里面的循環,延時約為250*2us=500 us=0.5ms

      }

      完成發光二極管以1Hz的閃爍程序設計框圖如圖2-3所示。

      LED

      LED

      程序開始

      延時0.5

      延時0.5

                                  2-3 1Hz的閃爍程序設計框圖

      點亮一只發光二極管的完整的程序:(samp2-1.c

      #include "reg51.h"              //包含頭文件

      #define uchar unsigned char   //為了書寫簡單,定義uchar表示無符號字符型

      #define uint unsigned int   //定義uint表示無符號整型

      #define ulong unsigned long //定義ulong 表示無符號長型

      sbit light=P2^0;      //定義light變最表示P2.0

      void delay05s(void) //定義延時0.5秒子函數,函數名為delay05s

      {

      unsigned char i,j,k;//聲明i,j,k為無符號字符型變量

      for(i=5;i>0;i--)   //外循環,每次循環約0.1s,共延時為5*0.1s=0.5s

      for(j=200;j>0;j--)//每次循環約0.5ms,所以延時約為200*0.5ms=100ms=0.1s

           for(k=250;k>0;k--);//最里面的循環,延時約為250*2us=500 us=0.5ms

      }

      void main(void)               //主函數

      {

      while(1)                    // * while循環,當條件為真時(只有0為假)執行下面的循環體,由于條件恒為真,所以構成無限次循環 */

         {

           light=0;                //P2.0端輸出低電平,使LED

           delay05s();             //延遲0.5

         light=1;               // P2.0端輸出高電平,使LED

           delay05s();             //延遲0.5

         }

      }

      2、跑馬燈

      #include "reg51.h"              //包含頭文件

      #define uchar unsigned char    

      void delay05s(void)     //延時0.5秒子程序

      {

      unsigned char i,j,k;

      for(i=5;i>0;i--)  

      for(j=200;j>0;j--)

           for(k=250;k>0;k--);

      }

      void main(void)               //主函數

      {

         uchar i,j;

          while(1)                    //無限循環

         {

           j=0x01;

          /* j初始化為0X01,即0000 0001 */

          for(i=0;i<8;i++) // for循環,條件為i<8,執行下面的循環體,完成8次循環

            {

              P2=~j;

          /* ~j取反。j初始值為0X01,即0000 0001,將j各位取反后為1111 1110,輸出到端口信號為“0LED就亮,為“1LED熄滅 */

              delay05s();      //延遲0.5

              j=j<<1;         /* j<<1為變量j中的值左移一位,最低位補“1,結果“0依次左移一位,發亮的LED也就左移一位*/

            }

         }

      }

      3 任意變幻的LED

      控制程序如下(samp2-2.c):

      #include "reg51.h"              //包含頭文件

      #define uchar unsigned char    

      #define uint unsigned int

      #define ulong unsigned long

      //定義顯示花樣數據的數組

      uchar dispcode[8]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0xff };

      void delay05s(void) //延時0.5秒子程序

      {

      unsigned char i,j,k;

      for(i=5;i>0;i--)  

      for(j=200;j>0;j--)

           for(k=250;k>0;k--);

      }

      void main(void)               //主函數

      {

         uchar i;

          while(1)                    //無限循環

         {

         

           for(i=0;i<8;i++)      //循環8次,實現顯示8個對應花樣

            {

              P2=dispcode[i];   /*數組dispcode中的各位數據就是LED所顯示花樣,

                                  其中的0對就的LED亮,1對應的位LED     */

              delay05s();        //延遲0.5

            }

         }

      }

      Tags:單片機,彩燈,led,程序  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 制服丝袜人妻综合第一页| 色偷偷91久久综合噜噜噜| 国产成人人综合亚洲欧美丁香花 | 国产成人综合日韩精品无码不卡 | 激情婷婷成人亚洲综合| 久久综合狠狠色综合伊人| 激情综合婷婷色五月蜜桃| 伊人伊成久久人综合网777| 亚洲综合综合在线| 国产福利电影一区二区三区久久久久成人精品综合 | 色综合久久无码五十路人妻| 色爱区综合激情五月综合色 | 精品国产天堂综合一区在线| 久久综合国产乱子伦精品免费| 国产香蕉尹人综合在线观看| 色综合天天综合给合国产| 91精品国产综合久久精品| 天天做天天爱天天爽综合区| 狠狠色综合网久久久久久| 91综合久久婷婷久久| 狠狠色噜噜狠狠狠狠色综合久| 国产性天天综合网| 色综合久久中文字幕综合网| 色综合久久98天天综合| 久久国产综合精品SWAG蓝导航| 色婷婷天天综合在线| 亚洲国产精品综合久久网各| 国内偷自视频区视频综合| 色久悠悠婷婷综合在线亚洲| 久久综合色之久久综合| 激情综合婷婷丁香五月| 激情综合色综合啪啪开心| 奇米综合四色77777久久| 色婷婷综合和线在线| 婷婷综合激情五月中文字幕| 色天使久久综合网天天| 亚洲综合伊人久久大杳蕉| 国产成人精品综合网站| 热久久综合这里只有精品电影| 狠狠色丁香婷婷综合| 狠狠色成人综合网图片区|