⑴ 51單片機兩個定時器中斷寫了個呼吸燈程序,怎麼調試出來是小燈閃爍程序,新手求指教。
程序太亂,只用一個定時器就可以
如定時100us 中斷一次 20次是2 ms 即周期是2 ms
中斷一次計數變數a加一,並且與另一變數b(1到20)比較,如果a>b,則輸出高電平,反之則輸出低電平 a=20時清0
主程序中可不斷改變b的值,先由大到 小 再由小到大,就是呼吸燈了
如延時200ms改變一次b的值 則呼吸周期大約是8秒
⑵ 51單片機設計呼吸燈
原發布者:呦_
小屁孩
基於單片機與PWM的
呼吸燈
設計實訓指導教師:班級:設計人姓名:設計日期:設計地點:完成時間:摘要本設計是基於單片機的原理與介面設計,採用單片機I/O口,加以
C語言編程
實現LED漸亮再漸暗類似人的呼吸一樣的效果。關鍵詞
AT89C51
,PWM(
脈寬調制
)一、設計要求:呼吸燈就是讓
LED燈
的閃爍像呼吸一樣,時呼時吸,時亮時暗,利用LED的余輝和人眼的暫留效應,看上去和人的呼吸一樣。二、
設計原理
:用C語言編程實現PWM(脈寬調制)輸出驅動LED,逐漸增加PWM的
占空比
從而實現LED模擬
呼吸的過程
,即漸亮再漸暗再漸亮再漸暗……如此往復,再利用LED的余輝和人眼的暫留效應,看上去就和人的呼吸一樣。三、整體方案設計8個LED按照順序逐個實現呼吸效果。加以其他閃爍花樣增加更炫彩的效果。四、實驗元件及器材(1)元件:LED(
發光二極體
)8個1KΩ電阻8個
1nf
電容2個
晶振
1個
AT89C51晶元
1個(2)器件:
Atmega128
開發板
1塊計算機1台5、硬體原理(1)
主電路
:8個LED分別連接AT89C51的P1口,使用共陽方式,並加以1kΩ的電阻接入電源。
⑶ 51單片機led呼吸燈代碼
這位朋友你好,51單片機,如果他的呼吸燈代碼,你可以參考他的使用說明書,也就是說他技術指導說明書上會有表達。
⑷ 怎麼實現讓51單片機一邊執行呼吸燈,一邊數碼管動態顯示,最好還要有按鍵控制周期,請問這些程序該如何
所謂的呼吸燈,是類似於流水燈吧,每點亮一次或流動一次是需要延時的,而數碼管的動態顯示也要調用一個顯示子程序嗎,調用一次顯示子程序也是需要時間,就對調用顯示子程序的次數計數,當計到n次後的時間,就是呼吸燈點亮一次的時間的話,就點亮一次好了。這個計數值n取多少合適,就得通過實際測試了。不妨先設個值,如40,然後實際運行程序,看這個時間合適不,不合適,再增加或減小這個數,這樣,總會找一個適合的數了。
這個數找到後,其實改變這個數就是改變呼吸燈變化的速度,因此,在程序中需要改變呼吸燈變化的速度時,就通過按鍵來改變這個數n就可以實現了。
你這不過才是兩個任務,如果單片機就只能完成一個任務,那還叫單片機嗎?其實,能完成多少任務,就取決於你寫的程序。寫什麼程序就完成什麼任務。
⑸ 單片機製作呼吸燈的C語言程序怎樣編寫
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定義周期並賦值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循環
{
LED0=1;
Delay(150000); //特意加延時,可以看到熄滅的過程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
⑹ 求助,51單片機用PWM的RGB呼吸燈程序怎麼寫
#include<reg52.h>
sbitLED0=P2^0;//解碼器控制端,低有效
voidDelay(unsignedintt);//函數聲明
voidmain(void)
{
unsignedintset=400,pwm=0;//定義周期並賦值
while(1)//主循環
{
LED0=0;
Delay(60000);//延時,可以看到熄滅的過程
for(pwm=1;pwm<set;pwm++){
LED0=1;//熄滅LED
Delay(pwm);//延時長度,600次循環中從1加至599
LED0=1;//點亮LED
Delay(set-pwm);//延時長度,600次循環中從599減至1
}
LED0=1;
for(pwm=set-1;pwm>0;pwm--){//與逐漸變亮相反的過程
LED0=1;
Delay(pwm);
LED0=0;
Delay(set-pwm);
}
//主循環中添加其他需要一直工作的程序
}
}
voidDelay(unsignedintt)
{
while(--t);
}
⑺ 51單片機用匯編語言如何設計8個輪流呼吸的呼吸燈
因為我不知道你這個板子的硬體,我就假設一下吧,你自己對照著看看,關鍵是流程
假設如下這八個燈依次接在P0口的八個口上,高電平為燈亮,低電平為燈滅,程序如下
ORG 0000H
AJMP START
START:MOV P0,#01H;()只有第一個燈亮
ACALL DELAY;延遲,不加延遲的話 你根本看不起清到底那個燈亮的
MOV P0,#02H;()只有第二個燈亮
ACALL DELAY
MOV P0,#04H;()只有第三個燈亮
ACALL DELAY
MOV P0,#08H;()只有第四個燈亮
ACALL DELAY
MOV P0,#10H;()只有第五個燈亮
ACALL DELAY
MOV P0,#20H;()只有第六個燈亮
ACALL DELAY
MOV P0,#40H;()只有第七個燈亮
ACALL DELAY
MOV P0,#80H;()只有第八個燈亮
ACALL DELAY
AJMP START;周而復始
DELAY: MOV R6,#40;延遲程序,晶振為3.57MHZ時大概是0.1S
0.1SL1: MOV R5,#246
0.1SL2: NOP
DJNZ R5,0.1SL2
DJNZ R6,0.1SL1
RET
END