導航:首頁 > 操作系統 > 單片機里發光二極體代碼

單片機里發光二極體代碼

發布時間:2022-06-24 05:53:42

A. 單片機編程實現2個發光二極體交替閃爍,時間間隔為0.5秒

#include<reg52.h>

#define FOSC 11520000 // 晶振11.0592

//
unsigned int SysTick;

/*
*
*/
int main(void)
{
//
TMOD = 0x01;
TL0 = (65536 - (FOSC / 12 / 1000));
TH0 = (65536 - (FOSC / 12 / 1000)) >> 8;
ET0 = 1;
TR0 = 1;
EA = 1;
while(1)
{
//
if((SysTick % 1000) < 500)
P1 = 0xAA;
else
P1 = 0x55;
//
}
//
}

/*
*
*/
void Timer0_IRQ() interrupt 1
{
//
TL0 = (65536 - (FOSC / 12 / 1000));
TH0 = (65536 - (FOSC / 12 / 1000)) >> 8;
//
SysTick++;
//
}
可以參考一下我給的代碼

B. 單片機程序,想在p1.1處連一個發光二極體,有電壓時二極體亮,代碼對嗎#include<reg51

你好!

這個和你電路的接法有關系,因為51單片機初始化後,埠默認是高電平;

這樣你的二極體的負極接地,二極體的正極接P1.1;

最後,程序要加一個死循環,不然,單片機會一直重新啟動;

include<reg51.h>
sbitinput=P1^1;
voidmain()
{
input=1;
while(1);//加上死循環,讓程序繼續執行

C. 請編寫c51單片機控制一個發光二極體閃爍的程序,埠p1∧0接發光二極體

程序:
ORG0
CPLP1.0
DJNZR7,$
DJNZR6,$-2
DJNZR5,$-4
SJMP0
END
這些,已經足夠了。
別忘了採納。

D. 51單片機控制兩個發光二極體的電路圖 和程序

你好!很高興能為你回答!如有疑問可以聯系!如圖所示:在P1.0、P1.1埠上各接一個發光二極體L1、L2,使L1、L2在不停地一亮一滅,一亮一滅的時間間隔為0.2秒。
如圖所示的石英晶體為12MHz,因此,1個機器周期為1微秒
機器周期
微秒
MOV
R6,#20
2個機器周期
2
D1:
MOV
R7,#248
2個機器周期
22+2×248=49820×
DJNZ
R7,$
2個機器周期
2×248
498
DJNZ
R6,D1
2個機器周期2×20=4010002
因此,上面的延時程序時間為10.002ms。
由以上可知,當R6=10、R7=248時,延時5ms,R6=20、R7=248時,延時10ms,以此為基本的計時單位。如本實驗要求0.2秒=200ms,10ms×R5=200ms,則R5=20,延時子程序如下:
DELAY:
MOV
R5,#20
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
(2).
輸出控制
如圖所示,當P1.0埠輸出高電平,即P1.0=1時,根據發光二極體的單向導電性可知,這時發光二極體L1熄滅;當P1.0埠輸出低電平,即P1.0=0時,發光二極體L1亮;我們可以使用SETBP1.0指令使P1.0埠輸出高電平,使用CLRP1.0指令使P1.0埠輸出低電平。P1.1同理;
5.
程序框圖

如圖4.1.2所示
圖4.1.2
6.
匯編源程序
ORG
0
START:
CLR
P1.0SETB
P1.1
LCALL
DELAY
SETB
P1.0CLR
P1.1
LCALL
DELAY
LJMP
START
DELAY:
MOV
R5,#20
;延時子程序,延時0.2秒
D1:
MOV
R6,#20
D2:
MOV
R7,#248
DJNZ
R7,$
DJNZ
R6,D2
DJNZ
R5,D1
RET
END
7.
C語言源程序
#include
<AT89X51.H>
sbit
L1=P1^0;sbit
L2=p1^1;
void
delay02s(void)
//延時0.2秒子程序
{
unsigned
char
i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void
main(void)
{
while(1)
{
L1=0;L2=1;
delay02s();
L1=1;L2=0;
delay02s();
}
}

E. 單片機 發光二極體循環點亮的程序

程序:
ORG
0000H
LJMP
MAIN
ORG
4000H
MAIN:MOV
R5,#04H
LOOP:MOV
R1,#00H
MOV
A,#0FEH
L1:MOV
P1,A
LCALL
DELAY
RL
A
INC
R1
CJNE
R1,07H,L1
MOV
R2,#00H
MOV
A,#01H
L2:MOV
P1,A
LCALL
DELAY
RR
A
INC
R2
CJNE
R2,07H,L2
DJNE
R5,LOOP
DELAY:MOV
R6,#02H
D1:MOV
R7,#0FFH
D2:DJNZ
R7,D2
DJNE
R6,D1
RET
END
電路:
連接燈的陰極至P1口上即可,復位和震盪電路不需要我說了吧
說明一下,延時時間不準確,不過基本接近1ms的
t=(256*2+1)*2+1+2=1028
如果想做到精確延時的話建議在DELAY中使用NOP指令調理,自己試一下吧
最好是用Keil模擬一下確定延時時間。
很久沒有匯編了,仔細檢查一下,估計有Bug也不一定。

F. 用51單片機控制八個發光二極體

// 51單片機控制八個發光二極體 左右循環。

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; // 改變這里 LED 各種花樣

uchar t,i;

void main()

{

TMOD=0x10;

TH1=(65535-50000)/256; // 50ms一次

TL1=(65535-50000)%256;

EA=1;

ET1=1;//開定時器1中斷

TR1=1;//啟動定時器1

t=0;

i=0;

while(1)

{

}

}

void timer1() interrupt 3

{

TH1=(65535-50000)/256; // 50ms一次

TL1=(65535-50000)%256;

t++;

if(t==20)

{

t=0;

P2=TAB[i];

i++;

if(i==18) { i=0;}

}

}

G. 用五一單片機c語言編程,p1口控制八個發光二極體,實現每隔一秒,兩兩點亮,並循環。

一、#include<reg51.h>

void delay(unsigned char Xms)//延時Xms

{

int i,j;

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

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

}

void main()

{

P0 = 0x00; //P0.0~P0.7分別接八個發光二極體,剛開始全滅

while(1)

{

delay(1000);

P0 = 0xc0;//點亮前兩個發光二極體P0.0和P0.1;

delay(1000);//延時1秒

P0 = 0x30;//點亮第三個和第四個LED

delay(1000);

P0 = 0x0c;

delay(1000);

P0 = 0x03;

}

}

二、

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar temp, t0, t1;

bit t2;

sbit P10 = P1^0;

void main()

{

P10 = 1;

temp = 0xfe;

P0 = temp;

P2 = 0xff;

TMOD = 0x01;

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

ET0 = 1;

EA = 1;

TR0 = 1;

while(1);

}

void timer0() interrupt 1

{

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

t0++;

if(t0 == 10) {

t0 = 0;

t1++;

if(t1 == 8) {t1 = 0; t2 = ~t2; P10 = t2;}

temp = _crol_(temp, 1);

if(t2) {P0 = temp; P2 = 255;}

else {P2 = temp; P0 = 255;}

}

}

(7)單片機里發光二極體代碼擴展閱讀:

例如:a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子裡面的水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為:c = a; a = b; b = c;執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b =c;則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。

順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。

H. 51單片機點亮發光二極體的c語言程序

#include
<reg51.h>
//此文件中定義了51的一些特殊功能寄存器void
delay(unsigned
int
i);
//聲明延時函數main()
{

P2
=
0x00;
//置P0口為低電平
點亮P2口8個LED燈

delay(600);
//
調用延時程序
等待一段時間後熄滅
P2
=
0xff;
//置P0口為高電平
熄滅P2口8個LED燈

delay(600);
//
調用延時程序
}/*******延時函數*************/
void
delay(unsigned
int
i)
{

unsigned
char
j;

for(i;
i
>
0;
i--)
//循環600*255次
機器在這里執行需要一段時間
也就達到了延時效果

for(j
=
255;
j
>
0;
j--);
}希望對你有幫助,如有問題,加微信xunuo_xx,留言

I. 用c語言編寫單片機流水燈程序,(8個發光二極體從左至右循環點亮)

#include<reg51.h>

voiddelay(void)

{

unsignedinti,j;

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

for(j=0;j<1000;j++)

;

}

voidmain(void)

{

while(1)

{

P3=0xfe;//第一個燈亮

delay();//延時

P3=0xfd;//第二個燈亮

delay();

P3=0xfb;//第三個燈亮

delay();

P3=0xf7;//第四個燈亮

delay();

P3=0xef;//第五個燈亮

delay();

P3=0xdf;//第六個燈亮

delay();

P3=0xbf;//第七個燈亮

delay();

P3=0x7f;//第八個燈亮

delay();

}

}

(9)單片機里發光二極體代碼擴展閱讀

單片機C語言16種方式流水燈

voidmain()

{

while(1)

{

P1=0xfe;//點亮第一個發光管

Delay(5000);

P1=0xfd;//點亮第二個發光管

Delay(5000);

P1=0xfb;

Delay(5000);

P1=0xf7;

Delay(5000);

P1=0xef;

Delay(5000);

P1=0xdf;

Delay(5000);

P1=0xbf;

Delay(5000);

P1=0x7f;//點亮第八個發光管

}

}

J. 用51單片機點亮一個發光二極體的程序。 並對程序解釋一下。

若單片機與發光二極體如下圖所示,只要用命令給單片機的管腳送一低電平就可點亮此二極體

假設管腳為P1.0,具體可用 MOV P1,#0FEH

閱讀全文

與單片機里發光二極體代碼相關的資料

熱點內容
航運什麼app好 瀏覽:129
3d清理垃圾命令 瀏覽:792
魯迅文集pdf 瀏覽:997
eclipse伺服器怎麼關閉 瀏覽:391
雲伺服器不能復制到電腦 瀏覽:178
伺服器的地址和埠號 瀏覽:587
手持上掃監管碼的app叫什麼 瀏覽:520
我的世界怎麼進ec伺服器地址大全 瀏覽:64
單片機和嵌入式軟體開發區別 瀏覽:338
為什麼掃一掃提示伺服器繁忙 瀏覽:388
慎小嶷十天突破雅思口語pdf 瀏覽:605
解壓數據丟失 瀏覽:49
查一下電腦上文件夾鎖 瀏覽:296
加密聊天消息密鑰輸入什麼 瀏覽:543
32位windows編譯器 瀏覽:964
ipad郵件無法連接發件伺服器地址 瀏覽:61
php接收websocket 瀏覽:564
碧藍航線如何查賬號伺服器 瀏覽:835
msx命令 瀏覽:750
怎麼購買app內購 瀏覽:490