❶ 單片機 控制 發光二極體
還是比較簡單的,但你沒即電路圖,又沒介紹說明你這設計到底是什麼原理,怎麼寫呀。
哥們,學機的就搞不定電了?偶當初也是學機的,現在照樣一邊設計機器,一邊搞嵌入式系統。學習須努力呀,呵呵。
=[兄弟,繼續頂你]==========
你沒說明白,我自己假設一個情況吧:就假設你有10個閥,10個發光二級管,每個閥對應一個管子,要是1號閥開,則1號管亮,要是1,2號閥一起開,則1,2號管一起亮,要是有關的閥了,則相應的管子也滅。
設閥開時反饋給單片機高電平,閥關時則給單片機低電平。
二級管是在單片機輸出低電平時點亮相應的管子。
單片機是標准40腳或44腳,有全部三匯流排的(比如AT89S52)
1-8 號閥接到P0.0 - P0.7
9,10號閥接到P1.0 - P1.1
1-8 號管接到P2.0 - P2.7
9,10號閥接到P3.0 - P3.1
=[最原始的程序]===========
ORG 0000H
SJMP MAIN
ORG 0020H
MAIN:
NOP ; 其實這里應延時約5ms穩定上一周期
MOV P0,#0FFH ; 51的機子要讀入須先寫高(其實P0可不用)
NOP
MOV A,P0
CPL A ; A取反,准備給P2送去
MOV P2,A ; P0狀態寫給P2
NOP
MOV P1,#0FFH ; 51的機子要讀入須先寫高
NOP
MOV A,P1
CPL A ; A取反,准備給P3送去
MOV P3,A ; P0狀態寫給P3
NOP
lJMP MAIN
END
================================================
❷ 基於單片機的水塔水位控制中的水位檢測感測器,應該怎樣做呢或者應選擇那樣的水位感測器呢
位式的就選浮球式液位感測器。要是連續的液位測量,有投入式的,差壓式的,電容式的,磁翻板的,浮筒式的,等等。
❸ 用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;}
}
}
❹ 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();
}
}
❺ 單片機控制發光二極體閃爍
#include<reg51.h> // 頭文件 ;
sbit LED =P0^7; // 定義LED接至P0.7 ;
#define uint unsigned int
void delay(uint x); // 聲明延時函數;
/*主函數*/
void main()
{
while(1)
{
LED = 0; // 輸出低電平,點亮LED;
delay(50); // 延時;
LED = 1; // 輸出高電平,熄滅LED;
delay(50); // 延時;
}
}
/*延時函數*/
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<1200;j++);//大約10 ms;
}
❻ 急求~~單片機如何通過i o埠控制發光二極體的亮滅
首先把IO埠設為輸出模式,若IO埠接led的正極,led負極接地,讓單片機輸出高電平led就能亮,輸出低電平led就滅了。當然還要考慮led兩端電壓和流過led的電流要合適。
❼ 單片機一個按鍵控制一個發光二極體
以下是用C語言實現的:
#include<reg51.h>
sbit KEY=P1^0;
sbit LED=P1^1;
void delay();
void main()
{
while(1) //不斷循環
{
if(KEY==0) //判斷鍵盤是否被按下
{
delay(); //調用延時函數,作用消抖
if(KEY==0) //再次讀鍵盤,以判斷剛才判斷到的是否為抖動
LED=~LED; //取反P1.1電平狀態,也就是改變發光管的狀態
}
}
}
void delay()
{
unsigned int i=50000;
while(i--); //不斷循環的自減,直到i變為0
}
以下是用匯編實現的:
ORG 0000H
AJMP MAIN ;跳轉到主程序
ORG 0100H
MAIN:JB P1.0,MAIN ;判斷P1.0是否被按下,若不是則再判斷,是則向下執行
CALL DELAY ;調用延時子程序,延時一段時間,用於鍵盤消抖
JB P1.0,MAIN ;再次判斷按鍵狀態,用於判斷是否為抖動,不是則向下執行
CPL P1.1 ;取反P1.1,也就是改變一次發光二極體的狀態
JNB P0.0,$ ;等待按鍵釋放(等待P1.0電平變高)
AJMP MAIN
DELAY:
MOV R0,#200
LOOP: MOV R1,#200
DJNZ R1,$
DJNZ R0,LOOP
RET
END
這些都是剛剛寫好的,希望能令你滿意,有問題可以hi我!
❽ 怎麼使單片機直接控制發光二極體 沒有鎖存器~ 謝謝
可以用鎖存器74hc573鎖存數碼管的段選。我可以送你一個原理圖,你看看硬體。挺簡單的電路。程序是你每次寫完數碼管的數據後,鎖存一下,p0口就可以做別的工作了,數碼管不會受影響