新聞中心

MEGA8做的呼吸燈

作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
利用mega8的PWM做了一款簡單的雙色呼吸燈,呼吸頻率可以調(diào)節(jié)。由于程序中還有其他功能,只將呼吸燈部分程序整理如下。

/******************************************************************************
* 頭文件設(shè)定
******************************************************************************/
#include
#include
#include "ADC.c"

本文引用地址:http://butianyuan.cn/article/201611/316312.htm

#define ledkey (PIND & 0x08)


unsigned char KEY_Flag;
unsigned int i;


/******************************************************************************
* 函 數(shù) 名: Delay_nus(unsigned int n)
* 功能描述: 延時函數(shù)
* 參 數(shù): 延時參數(shù):unsigned int n;
* 返 回 值: 無
* 備 注: ...
******************************************************************************/
void Delay_nus(unsigned int n)
{
unsigned int a,b;

for (a = 0; afor (b = 0; b<8; b++);
}

/******************************************************************************
* 函 數(shù) 名: Delay_nms(unsigned int n)
* 功能描述: 延時函數(shù)
* 參 數(shù): 延時參數(shù):unsigned int n;
* 返 回 值: 無
* 備 注: ...
******************************************************************************/
void Delay_nms(unsigned int n)
{
unsigned int a,b;

for (a = 0; a{
Delay_nus(1000);
}
}

/******************************************************************************
* 函 數(shù) 名: KEY()
* 功能描述: 按鍵函數(shù)
* 參 數(shù): 無
* 返 回 值: 無
* 備 注: ...
******************************************************************************/
void KEY(void)
{
if(ledkey == 0)//按鍵長按2s后啟動
Delay_nus(5); //延時等待按鍵2S
if(ledkey == 0)//如果按鍵依然按下,執(zhí)行相應(yīng)動作
{
KEY_Flag++;//按鍵標志位加1
if(KEY_Flag>3)//按鍵標志位只能為1或0
{
KEY_Flag=0;
}
while(ledkey == 0);//軟件消抖
}
}


/******************************************************************************
* 函 數(shù) 名: delay()
* 功能描述: 延時函數(shù)
* 參 數(shù): 無
* 返 回 值: 無
* 備 注: ...
******************************************************************************/
void delay(void)
{
unsigned char i,j;
for(i=5000;i--;i>1)
for(j=500;j--;j>1);
}


/******************************************************************************
* 函 數(shù) 名: main()
* 功能描述: 主函數(shù)
* 參 數(shù): 無
* 返 回 值: 無
* 備 注: ...
******************************************************************************/
void main()
{
unsigned char a;
PORTB = 0XFF;
DDRD = 0XF0;
delay();

TCCR1A=0Xa2;
TCCR1B=0X1B;

ICR1 = 124;

OCR1B=1;
OCR1A=1;
while(1)
{
KEY();
a++;
OCR1A=a;
OCR1B=a;
delay();
if(a>122)
{
while(1)
{
KEY();
if(KEY_Flag == 0)
{
DDRB &=0XF2;
}
if(KEY_Flag == 1)
{
DDRB &=0XF4;
}
if(KEY_Flag == 2)
{
PORTD =0X10;
}
if(KEY_Flag == 3)
{
PORTD =0X00;
}
a--;
OCR1B=a;
OCR1A=a;
delay();
if(a==1)//最小值
{
break;//跳出while
}
}
}
}
}



關(guān)鍵詞: MEGA8呼吸

評論


技術(shù)專區(qū)

關(guān)閉