電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 單片機(jī) >> 正文

單片機(jī)彩燈是怎樣點(diǎn)亮

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2009/11/27

如用要獲得0.5秒的時(shí)間,而單片機(jī)的指令周期是1μs0.5秒是1μs5000000倍,所以在程序編寫中常用循環(huán)語(yǔ)句來(lái)完成時(shí)間的延長(zhǎng)。而空循環(huán)一次操作需要2個(gè)機(jī)器周期的時(shí)間(注:這是在用無(wú)符號(hào)字符型變量作循環(huán)變量的情況下,同時(shí)是用變量減循環(huán),具體可參看反匯編指令“DJNZ 存儲(chǔ)單元 ,目標(biāo)地址”的說(shuō)明 ),下面就是一個(gè)完成0.5秒延時(shí)的程序。

程序是用C51編寫的,由于C語(yǔ)言本身不依賴于硬件,便于在不同的單片機(jī)進(jìn)行程序移植。C51與標(biāo)準(zhǔn)C語(yǔ)言主要語(yǔ)句是完全相同的,在程序編寫中有不同的地方,在本書的附錄中有較為詳細(xì)的敘述,請(qǐng)參看附錄B

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

{

unsigned char i,j,k; //聲明三個(gè)無(wú)符號(hào)字符型變量i,j,k

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

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

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

}

完成發(fā)光二極管以1Hz的閃爍程序設(shè)計(jì)框圖如圖2-3所示。

LED

LED

程序開始

延時(shí)0.5

延時(shí)0.5

                            2-3 1Hz的閃爍程序設(shè)計(jì)框圖

點(diǎn)亮一只發(fā)光二極管的完整的程序:(samp2-1.c

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

#define uchar unsigned char   //為了書寫簡(jiǎn)單,定義uchar表示無(wú)符號(hào)字符型

#define uint unsigned int   //定義uint表示無(wú)符號(hào)整型

#define ulong unsigned long //定義ulong 表示無(wú)符號(hào)長(zhǎng)型

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

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

{

unsigned char i,j,k;//聲明i,j,k為無(wú)符號(hào)字符型變量

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

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

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

}

void main(void)               //主函數(shù)

{

while(1)                    // * while循環(huán),當(dāng)條件為真時(shí)(只有0為假)執(zhí)行下面的循環(huán)體,由于條件恒為真,所以構(gòu)成無(wú)限次循環(huán) */

   {

     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)     //延時(shí)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)               //主函數(shù)

{

   uchar i,j;

    while(1)                    //無(wú)限循環(huán)

   {

     j=0x01;

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

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

      {

        P2=~j;

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

        delay05s();      //延遲0.5

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

      }

   }

}

3 任意變幻的LED

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

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

#define uchar unsigned char    

#define uint unsigned int

#define ulong unsigned long

//定義顯示花樣數(shù)據(jù)的數(shù)組

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

void delay05s(void) //延時(shí)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)               //主函數(shù)

{

   uchar i;

    while(1)                    //無(wú)限循環(huán)

   {

   

     for(i=0;i<8;i++)      //循環(huán)8次,實(shí)現(xiàn)顯示8個(gè)對(duì)應(yīng)花樣

      {

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

                            其中的0對(duì)就的LED亮,1對(duì)應(yīng)的位LED     */

        delay05s();        //延遲0.5

      }

   }

}

Tags:單片機(jī),彩燈,led,程序  
責(zé)任編輯:admin
相關(guān)文章列表
西門子S7-200SMART PLC彩色燈程序設(shè)計(jì)_跑馬燈程序 , SHB_L循環(huán)指
LED為什么會(huì)發(fā)出不同顏色的光,此文讓我豁然開朗,發(fā)光二極管燒燈
LED阻容降壓電源電阻怎么用
阻容降壓電路的小夜燈拆機(jī)
基于AT89C52單片機(jī)控制的雙軸太陽(yáng)自動(dòng)跟蹤系統(tǒng)設(shè)計(jì)
ESP32單片機(jī)入門篇
超聲波測(cè)距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測(cè)距C語(yǔ)言程序
七段數(shù)碼管顯示原理研究_數(shù)碼管顯示0~9對(duì)應(yīng)的段碼
單片機(jī)C語(yǔ)言編程入門教程  流水燈程序示例
基于51單片機(jī)—多功能秒表,多功能計(jì)時(shí)器C語(yǔ)言程序
如何正確選擇適合LED燈的驅(qū)動(dòng)電源?LED燈珠驅(qū)動(dòng)電源
LED燈泡的燈珠為什么是串聯(lián)的?功率大的采用混聯(lián)
STC89C52單片機(jī)數(shù)字電流表電壓表源碼與電路圖  51單片機(jī)電流電壓
自學(xué)stm32單片機(jī)四個(gè)步驟,實(shí)用又高效!
先學(xué)51還是先學(xué)STM32?STM32和51單片機(jī)的區(qū)別
單片機(jī)最小系統(tǒng)介紹及電路設(shè)計(jì) STM32單片機(jī)最小系統(tǒng)
怎么用LED制作小夜燈 阻容降壓電路原理
什么是PIC單片機(jī)
LED數(shù)碼管的檢測(cè),LED七段數(shù)碼管檢測(cè)
為什么51單片機(jī)的晶振一般使用11.0592? 51單片機(jī)常用波特率初值表
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢
少妇大战黑吊在线观看| 色94色欧美一区| 欧美一区二区三区久久综| 国产美女一级视频| 亚洲色成人网一二三区| xyx性爽欧美| 特级毛片a级毛片在线播放www | 亚洲AV高清在线观看一区二区| 亚洲AV无码一区二区三区网址| 中文字幕欧美在线观看| 阿娇囗交全套高清视频| 晚上看b站直播软件| 国产精品日韩欧美一区二区三区| 国产在线资源站| 亚洲欧美日韩国产成人| 99re免费在线视频| 波多野结衣视频全集| 强行扒开双腿猛烈进入| 四虎影院永久网址| 久久久99精品免费观看| 美女免费网站xx美女女女女女女bbbbbb毛片| 欧美日韩视频在线第一区| 在花轿里就开始圆房高辣h| 伊人久热这里只精品视频| a毛片免费观看| 极品人妻少妇一区二区三区| 国产精品igao视频网网址| 亚洲成A∨人片在线观看无码| 一区二区三区四区在线视频| 波多野结衣种子网盘| 天天做天天做天天综合网| 亚洲国产天堂久久综合| 精品视频麻豆入口| 国产美女自慰在线观看| 久久人人爽人人爽人人片dvd| 色婷婷综合久久久| 在车子颠簸中进了老师的身体| 免费在线观看污视频网站| 99免费在线视频| 日日噜噜噜夜夜爽爽狠狠| 又爽又黄又无遮挡网站|