日本欧美一区-日本欧美一区二区三区片-日本强好片久久久久久AAA-日本-区一区二区三区A片-日本人伦一区二区三区-日本人妻A片成人免费看

電子開發 | 基礎入門 | 電路原理圖 | 梯形图实例 | PLC基础   《如果喜欢本站,请按 Ctrl+D 手动收藏!感谢您的支持》一起学习一起进步,电子开发王欢迎您!.

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊

★电路公式手册,最新版《电子电路公式计算器》,电路公式查询手册 电路公式计算器【电子从业人员必备手册】
☆十天学会单片机实例100 c语言 chm格式。资料内容详细,覆盖例子多,内容广【电子从业人员必备手册】
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

單片機彩燈是怎樣點亮

作者:佚名    文章來源:本站原創    點擊數:2093    更新時間: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 個字
[ 查看全部 ] 網友評論
    没有任何评论
电子开发网:汇集综合各类电子制作与电路图的网站,plc工控技术,模电数电知识,单片机EDA等等!荟萃电路图网站精华,为工程师创造价值。欢迎关注微信公众号:电子开发网!

三菱PLC软件 GX Wor

西门子200smartPLC选

模拟量转换工程量转

简述555定时器工作原

TIA Portal博途软件

聊聊阻容降压原理和
 简单三极管逆变器
 TL494制作50HZ逆变
 80W简单的功放电路
 555制作的简易电子
 850热风枪电路图原
 直流12v荧光灯电路
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢