可以通過左移函數_crol_()和右移函數_cror_()來實現LED等的來迴流動。 具體實現方法可以參考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){ P1=0xfe; while(1) { // 向左循環點亮LED for(i=0; i<7; i++) { P1=_crol_(P1,1); // 左移一位,點亮下一位LED delay(55); } // 向右循環點亮LED for(i=0; i/ 右移一位,,點亮上一位LED delay(55); } }}// 延時函數,延時a毫秒void delay(uint a){ uint x,y; for(x=a;x>0;x--) for(y=110;y>0;y--);}
❷ 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)
單片機流水燈C語言程序的源代碼如下:
#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8個流水燈反向逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8個流水燈依次反向全部點亮
{
P1=temp;
delay(100); //調用延時函數
temp>>=1;
}
void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(2)stc單片機編程點亮小燈擴展閱讀
51單片機流水燈的源代碼如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
❸ 怎麼以stc單片機為例編寫一個LED指示燈閃爍工程。
我的個天,不能讓你家幫你作作業吧。
給個框架和思路吧。LED二極體正極串一個限流電阻接在+5V電源上,負極接在MCU一個管腳上,如P20,如果燈不夠亮,可以加個三極體放大電流。
程序思路:
main(void)
{
while(1)
{
延時
P20=~P20
//P20取反
點亮和熄滅LED
}
}
❹ 單片機的點亮一盞燈程序
MAIN: MOV P1,#11111110B;點亮P1.0所接的燈
ACALL YS ;調用延時子程序,讓P1.0所接的燈亮一小段時間
MOV P1,#11111101B;點亮P1.1所接的燈
ACALL YS ;調用延時子程序,讓P1.1所接的燈亮一小段時間
MOV P1,#11111011B;點亮P1.2所接的燈
ACALL YS ;調用延時子程序,讓P1.2所接的燈亮一小段時間
MOV P1,#11110111B;點亮P1.3所接的燈
ACALL YS ;調用延時子程序,讓P1.3所接的燈亮一小段時間
MOV P1,#11101111B;點亮P1.4所接的燈
ACALL YS ;調用延時子程序,讓P1.4所接的燈亮一小段時間
MOV P1,#11011111B;點亮P1.5所接的燈
ACALL YS ;調用延時子程序,讓P1.5所接的燈亮一小段時間
MOV P1,#10111111B;點亮P1.6所接的燈
ACALL YS ;調用延時子程序,讓P1.6所接的燈亮一小段時間
MOV P1,#01111111B;點亮P1.7所接的燈 ACALL YS ;調用延時子程序,讓P1.7所接的燈亮一小段時間
LJMP MAIN ;循環.這回用長調用指令LJMP,當程序比較長的時候就用
LJMP YS: ;延時子程序YS,功能是能讓LED亮起來或者滅掉一小段時間
MOV R1,#200 ;讓燈亮滅時間的長短也就是延時的長短跟#號後面的數據有關
D: MOV R2,#200 ;延時長點#號後面的數據就大點,延時短點#號後面的數據
T: MOV R3,#200 ;就小點,但#號後面最大的數據是255
DJNZ R3,$
DJNZ R2,T
DJNZ R1,D
RET ;子程序返回指令,子程序的設計一般都是因為主程序要調用它, ;調用完是要返回到主程序繼續運行下一個語句的
END
❺ 求講解這段STC15單片機的代碼,外部中斷2讓LED燈亮
「為什麼按下外部中斷鍵就能讓LED燈亮一下」
因為程序裡面一旦進入外部中斷,就把P1.0管腳翻轉一下,如果接了LED就會有亮滅的變化。
「P10=!P10 是什麼意思」、
將P1.0管腳的輸出電平翻轉。
「為什麼我改成P20=!P20就報錯」
因為程序里只定義了P10,P20這個符號沒有定義,你需要自己添加 sbit P20 = P2^0;
「開發板的外部中斷焊接到單片機的P1.0引腳,如果我焊接的不是P1.0引腳,那P10=!P10還好使嗎」
外部中斷跟P1.0管腳沒有關系。你重新看電路圖去……
「為什麼頭文件加上#include「STC15.H」就會報錯」
因為編譯器找不到這個文件在哪兒,當然就會嗷嗷叫喚……