找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4506|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)漸明漸暗的閃爍彩燈程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:80436 發(fā)表于 2015-5-22 01:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

/*********************************************************************************************
程序名:    漸明漸暗的閃爍彩燈
編寫人:   謝海斌 
編寫時(shí)間:  2019年11月09日
硬件支持:  STC12C2052 內(nèi)部RC或外部12MHZ晶振
接口說(shuō)明:  8個(gè)LED彩燈接P1口  
修改日志:  
/*********************************************************************************************
說(shuō)明:
使用PWM方式調(diào)整LED的亮滅周期,達(dá)到亮度變化。


/*********************************************************************************************/


#include <REG51.h> //51頭文件
/*********************************************************************************************
//《C_無(wú)級(jí)亮度閃爍》
#define DY_PORT                P1 //設(shè)置LED連接的I/O組
#define DY_SPEED        1 //設(shè)置每一個(gè)明亮級(jí)的停留時(shí)間(值域:0~65535)
#define DY_PWM                50 //設(shè)置明亮的總級(jí)數(shù)(級(jí)數(shù)過(guò)大會(huì)出現(xiàn)閃爍)(值域:0~65535)
#define DY_MAX                50 //設(shè)置最大明亮(值域:小于明亮總級(jí)數(shù))
/*********************************************************************************************/
//《B_無(wú)級(jí)亮度變化》
#define DY_PORT                P1 //設(shè)置LED連接的I/O組
#define DY_SPEED        1 //設(shè)置每一個(gè)明亮級(jí)的停留時(shí)間(值域:0~65535)
#define DY_PWM                500 //設(shè)置明亮的總級(jí)數(shù)(級(jí)數(shù)過(guò)大會(huì)出現(xiàn)閃爍)(值域:0~65535)
#define DY_MAX                500 //設(shè)置最大明亮(值域:小于明亮總級(jí)數(shù))
/*********************************************************************************************
//《A_8級(jí)亮度變化》
#define DY_PORT                P1 //設(shè)置LED連接的I/O組
#define DY_SPEED        100 //設(shè)置每一個(gè)明亮級(jí)的停留時(shí)間(值域:0~65535)
#define DY_PWM                500 //設(shè)置明亮的總級(jí)數(shù)(級(jí)數(shù)過(guò)大會(huì)出現(xiàn)閃爍)(值域:0~65535)
#define DY_MAX                8 //設(shè)置最大明亮(值域:小于明亮總級(jí)數(shù))
/*********************************************************************************************


bit [自定義名] ; //定義一個(gè)位(位的值只能是0或1)例:bit LED
#define [代替名]        [原名]  //用代替名代替原名(可以方便修改常改或調(diào)試的值)例:#define LED P1
sbit  [自定義名] = [系統(tǒng)位名] ; //自定義系統(tǒng)位名。例:sbit Add_Key = P3 ^ 1;
unsigned char [自定義名] ; //定義一個(gè)0~255的整數(shù)變量.例:unsigned char a;
unsigned int [自定義名] ; //定義一個(gè)0~65535的整數(shù)變量


/*********************************************************************************************/
void delay (unsigned int a){ // 0.1ms延時(shí)程序(12MHz 10倍于51單片機(jī)速度時(shí))
        unsigned char i;
        while( --a != 0){
                for(i = 0; i < 12; i++);
        }                                     
}
/*********************************************************************************************/
void display (unsigned int a){ //顯示程序(50ms的PWM寬度)
        DY_PORT = 0x00; //LED小燈亮
        delay (a);                 //延時(shí)a的長(zhǎng)度
        DY_PORT = 0xff; //LED小燈滅
        delay (DY_PWM-a);//延時(shí)總PWM長(zhǎng)度減a
}
/*********************************************************************************************/
void main (void){ //主程序
    unsigned int t=1;
        unsigned int i;
        bit LOOP=0; //LOOP是循環(huán)切換標(biāo)志


        while (1){
                if(LOOP == 0){ //變亮循環(huán)
                        for(i = 0; i < DY_SPEED; i++){
                                display(t);
                        }
                        t++;
                        if(t>(DY_MAX-2)){
                                LOOP = 1;
                        }
                }
                if(LOOP == 1){ //變暗循環(huán)
                        for(i = 0; i < DY_SPEED; i++){
                                display(t);
                        }
                        t--;
                        if(t<2){
                                LOOP = 0;
                        }
                }
    }
//今天天氣不錯(cuò),但我好桑心吶,


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:257658 發(fā)表于 2017-12-27 14:28 | 只看該作者
感覺(jué)用定時(shí)器會(huì)好點(diǎn)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表