導航:首頁 > 操作系統 > 用單片機p1口控制8個燈一直亮

用單片機p1口控制8個燈一直亮

發布時間:2022-08-24 02:39:49

① 用AT89C51單片機埠P1控制8個LED燈的變化(左移2次右移2次閃爍2次延時一秒)的工作原理

基本方式就是:
P1=0X01;//或者別的數,看你想亮幾個
DELAY_MS(500);//適當延時
P1=P1>>1;//左移或者右移
DELAY_MS(500);
P1=P1>>1;
DELAY_MS(500);
.....
代碼按順序執行就是了。P1口不同的輸出對應不同的亮燈狀態,不同的輸出中間加上延時即可實現不同的效果。

② 使用單片機I/O口控制8隻LED燈。 1)點亮8個中的的第任意個LED燈。 使任意一個或多個LED燈閃爍

舉個簡單的例子,8個LED燈的正級分別接在P1.0到P.7上面,負極分別接在P2.0到P2.7上面,

P1 = 0xff; (P1口全部高電平) P2 = 0x00; (P2口全部低電平),此時電流通過P1口經LED流向P2口,8個燈全部點亮,如果P1不變,P2 = 0XFF; 此時由於P1與P2的介面全部是高電平,沒有電壓差也就沒有電流,LED全部熄滅,如果想讓某一個燈點亮,可以根據8421法則,P2.7 P2.6 P2.5 P2.4是高8位,P2.4 P2.3 P2.2 P2.1 P2.0是低8位
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
8 4 2 1 8 4 2 1
當p1 = 0xff; p2 = 0xfe的時候,就是P2.0那個小燈點亮,其他7個滅,p2 = 0xfe的這個F就是8+4+2+1 =15,對應16進制里的f, 同理E=8+4+2+0 =14,對應16進制里的e。
閃爍的話需要用到定時器,時間到了把當前P2對應的引腳取反一下就行了,比如當前P2.0 = 1; 定時器時間到了以後 ~P2.0 當然實際寫程序的時候不能直接這么寫,自己多復習下吧

③ 用51單片機P1口驅動8個LED做循環點亮控制,每個LED占空比50%,周期兩秒

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

uchar Counter = 0;
uchar P1LEDBUF = 0x01;//P1口的燈如果亮了7個,就改成0xFE;

main()
{
P1=0x00; //如果燈全亮了,則全部改為0xFF
TMOD = 0x01; //T0工作在定時方式1
TH0 = 0x3C; //T0初值50ms
TL0 = 0xB0;
ET0 = 1; //開啟定時器0中斷
EA = 1; //開總中斷
TR0 = 1; //啟動定時器0
while(1);
}

/********************************************/
/* 定時器0中斷服務程序 */
/********************************************/
void T0_Serve() interrupt 1
{
TH0 = 0x3c; //每次定時50ms
TL0 = 0xb0;
Counter++;
if(Counter == 20) //中斷20次後進入函數,時間剛好1秒(誤差可以忽略)
{
Counter = 0; //計數清0
P1 = P1LEDBUF ;
P1LEDBUF =_crol_(P1LEDBUF,1); //位移P1口LED,准備下一輪
//如果燈亮和滅的剛好反了(熄了一個燈,亮了7個)就把初值改了
}
if(Counter == 40)
{
Counter = 0;//計數清0,周期2秒
P1 = 0x00 ;//如果燈全亮了,則改為P1=0xFF;
}
}

④ 單片機編程,用一個開關控制8個燈輪流亮,再用一個開關控制兩個燈一起亮一起滅

簡單的啊。思路:8個LED接在一個口,如P1口。再將另外兩個LED接在另外某個口(如P2)的兩個引腳。然後將兩個按鍵分別接在空閑的口的兩個引腳。
按下一個按鍵,使8個LED的輸出狀態變化,0xFE循環移位實現,LED低電平亮。另外的按鍵按下,兩個LED狀態翻轉。

⑤ 單片機程序:P1口接8盞LED燈,8盞LED燈循環點亮,間隔時間為50ms,用延時子程序實現

8盞LED燈循環點亮,間隔時間為50ms,你能分辨不?
還是給你改為間隔時間為1s,用定時器延時子程序實現
org 0000h
jmp start
org 0030h
start:
mov A,#0FEH;
mov R2,#8;
LOOP1: mov p1,A; 左邊4個LED每隔1S亮1個。從P1.0到P1.7。
call delay1s; 調用定時1s程序
RL A;
djnz R2,LOOP1
jmp start

delay1s:
mov r7,#20
lpr7: call delay50ms;
djnz r7,lpr7
ret

delay50ms:
mov TMOD,#01H
mov TH0,#(65536-50000)/256;
mov TL0,#(65536-50000) mod 256;
setb TR0;
jnb TF0,$
clr TF0;
ret

jmp $
end

⑥ 利用單片機控制8個發光二極體,實現8個燈同時閃爍的控製程序

以51位例,使用P1的八個IO口控制。
先定義:
sbit
LED0=P1^0;
sbit
LED1=P1^1;
........
以此類推,定義八個。
然後在主循環中:
LED0=0;
延時一段時間;
LED0=1;
就可以看到閃爍了。

⑦ 編程:使用單片機P1口控制8個LED。顯示方式:自上而下逐個點亮,再自下而上逐個點亮,如此循環

摘要 給你個簡單點的

⑧ AT89C51單片機的P1口控制8盞LED流水燈

# include "reg51.h" // 包含頭文件

#define uchar unsigned char

void delay02s(void) // 延時0.2s子程序

{

unsigned char i,j,k;

for ( i=2;i>0;i-- )

for (j=200;j>0;j-- )

for (k=250;k>0;k-- );

}

void main (void) // 主函數

{

uchar i,j;

while (1) // 死循環

{

j=0x01; // j初始化為0x01,左移初始值

for(i=0;i<8;i++) // for循環語句,完成8個循環

{

P1= ~ j; // 對變數j 中的值按位取反後,從P1口輸出

delay02s( ); // 延時0.2s

j= j<<1; // 左移1位

}

j=0x80; // 設置右移初始值j為0x80

for (i=0;i<8;i++)

{

P1= ~ j;

delay02s( );

j= j>>1; // 右移1位

}

}

}

這只是延時的方法實現的。

⑨ 利用89C51單片機的P1口控制8個發光二極體LED編程

這是只是百點亮P1口的程序
#include<reg51.h>
void
main()
{
while(1)
{
p1=0x00;
}
}
這是閃爍度P1口回程序
#include<reg51.h>
void
delay(unsigned
int
i)
//延時函數
{
unsigned
int
k;
for(k=0;k<i;k++);
}
void
main()
//主函數
{
while(1)
//循環函數
{
P1=0x00;
//點亮P1口
delay(2000);
//延時
P1=0xff;
//熄滅P1口
delay(200);
//延時
}
}
純手打,答對你有幫助的話請採納
謝謝

⑩ 使用51單片機的p1埠控制8個發光按照順序輪流點亮,並畫出51單片機與外接圖並

咨詢記錄 · 回答於2021-10-24

閱讀全文

與用單片機p1口控制8個燈一直亮相關的資料

熱點內容
扭蛋人生安卓如何下載 瀏覽:712
什麼app文檔資源多好 瀏覽:919
黑馬程序員APP 瀏覽:144
掌閱小說是哪個app 瀏覽:43
如何把u盤的軟體安裝到安卓機 瀏覽:992
php跑在什麼伺服器 瀏覽:122
編譯器怎麼跳轉到下一行 瀏覽:450
嵌入式py編譯器 瀏覽:324
rplayer下載安卓哪個文件夾 瀏覽:298
安卓手機里的電子狗怎麼用 瀏覽:748
pythonspyder入門 瀏覽:764
趣質貓app是什麼 瀏覽:60
皮帶壓縮機經常吸不上 瀏覽:205
西部隨行版怎樣加密 瀏覽:996
釘釘上如何壓縮圖片 瀏覽:924
cad輸入命令不顯示窗口 瀏覽:618
小米視頻加密之後怎麼看 瀏覽:76
超級程序員劉芳閱讀 瀏覽:833
顧家九爺在哪個app 瀏覽:820
我的世界怎麼在聯機大廳做伺服器 瀏覽:290