新聞中心

51單片機-流水燈

作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏

這個是原理圖,從圖中最右邊有一個排阻,也就是這里八個電阻封裝在一起,這里排阻的特點是八個
電阻有一個公共端,然后一個電源VCC通過跳線與排阻相連。到達(dá)二極管的電流從正極流向負(fù)極,如
果二極管負(fù)極是低電平,則電流流過二極管,發(fā)光二極管亮起來。負(fù)極接在單片機的P2端口上。也就
是說P2的引腳位低電平時可驅(qū)動發(fā)光二極管發(fā)光。驅(qū)動各個燈閃爍的方法是把各位循環(huán)左移,使用函數(shù)
_crol_。
#include
#include
unsigned int a;
void delay(){
int i,j;
for(i = 0; i < 0xff; i++)
for(j = 0; j < 0xff; j++)
;
}
void liushui(){
int i,dd;
dd = 0xfe; //dd = 1111 1110 此時L9亮
for(i = 0; i < 8; i++){
P2 = dd;
delay();
dd = _crol_(dd,1); //循環(huán)左移一位 dd = 1111 1101
}
}
void main(){
while(1){
liushui();
}
}
流水燈向左流動,當(dāng)按住獨立按鍵時,流水燈向右移動:
#include
#include
unsigned int dd;
sbit key = P1^0;
void delay(){
int i,j;
for(i = 0; i < 0x2a; i++)
for(j = 0; j < 0xff; j++)
;
}
void right(){
P2 = dd;
delay();
dd = _crol_(dd,1);
}
void left(){
P2 = dd;
delay();
dd = _cror_(dd,1);
}
void main(){
dd = 0xfe;
while(1){
if(key == 1)
right();
else {
delay();
if(key == 0)
left();
}
}
}
PWM調(diào)制使流水燈漸滅,改變占空比。
1. #include
2. #include
3. #define uint unsigned int
4. uint a;
5.
6. void delay(uint t){
7. int i,j;
8. for(i = 0; i < t; i++)
9. for(j = 0; j < 0xff; j++)
10. ;
11. }
12.
13. void liushui(){
14. int i,dd;
15. dd = 0xfe; //dd = 1111 1110 此時L9亮
16. for(i = 0; i < 8; i++){
17. P2 = dd;
18. delay(1000);
19. dd = _crol_(dd,1); //循環(huán)左移一位 dd = 1111 1101
20. P2 = 0xff;
21. delay(300);
22. }
23. }
24. void main(){
25. while(1){
26. liushui();
27. }
28. }


關(guān)鍵詞: 51單片機流水

評論


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

關(guān)閉