導航:首頁 > 操作系統 > 單片機雙燈閃爍左右移動程序

單片機雙燈閃爍左右移動程序

發布時間:2022-05-29 11:24:08

單片機匯編語言,怎樣讓雙燈左移循環

led equ p1
org 0
jmp main
main:
mov a,#0xfc

mov led,a

call delay

rl a

rl a

jmp main

delay:
............
ret
end

Ⅱ 單片機用c語言編程,使led燈管從中間開始兩個燈向兩邊循環閃爍

//設是AVR單片機,為1表示LED亮,8個LED接在A上
a[]={0x18,0,0x24,0,0x42,0,0x81,0,0x42,0,0x24,0};
for (int i=0;i<12;++i)
{
PORTA=a[i];//A口接了8個LED
delay(500);//延時函數可自己寫
}
//如果是其它單片機就請自己修改了。

Ⅲ 請問我寫的單片機八個LED燈左移後再右移的程序錯在哪裡

主要是左移補0或者補1的問題。P1=>>1|0;P1=<<1|1; 補1是滅,補0是亮。
剛好之前寫過,看一下和你的不同之處。

#include"reg52.h"
#define uint unsigned int
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
//P1=0xff;
while(1)
{ P1=0x7f;
do{
P1=P1>>1|0;
delay(100);}
while(P1!=0x00);
do{
P1=P1<<1|1;
delay(100);}
while(P1!=0xff);
}
}

Ⅳ 求你89C52單片機流水燈移動的程序 第一次一個LED左移8次,第二次二個LED

#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;

sbit led=P2;//這里填你LED連接的埠(引腳),不一定是P2,也有可能是P3、P0

void delay(u16 i)
{
while(i--);
}

void shan1()
{
u8 i;
led=0x01;//我默認led輸入高電平1是亮,具體按照你實際情況,低電平亮就0xfe;
for(i=0;i<7;i++)//已經點亮一個了,所以剩7個。
{
led=_crol_(led,1);//左移1位
}
led=0x00;
}

void shan2()
{
u8 i;
led=0xc0;//我默認led輸入高電平1是亮,具體按照你實際情況
for(i=0;i<6;i++)已經點亮兩個個了,所以剩6個。
{
led=_cror_(led,1);//右移一位
delay(1000);
}
led=0x00;
}
void shan2()
{
u8 i;
led=0xc0;//我默認led輸入高電平1是亮,具體按照你實際情況
for(i=0;i<6;i++)
{
led=_cror_(led,1);
delay(1000);
}
led=0x00;
}

void main()
{
while(1)
{
shan1();
delay(1000);
shan2();
}
}

Ⅳ 單片機上電後8個led燈閃爍,按下k1一個燈從左右移動,按下k2兩個燈左右移動,

沒有具體的電路圖,就只以P1口作為基本輸驅動口進行說明。主程序需要一個delay函數進行led亮滅的延時。當然你首先要先進行P1口和開關按鍵的預定義,這個要看你板子的原理圖。
void delay(int l)

{

int
a,b;

for(a=0;a<l;a++)

{

for(b=0;b<10000;b++);

}
}
void main()

{
int m=0;

//設置開關為P3.7和P3.8,低有效
while(1)
{
if(P3.7 ==0)

{
m = 0;
}
else if(P3.8 ==0)

{
m = 1;

}
if (m == 0)
{
P1.0=1;
delay(10);
P1.0=0;
delay(10);
P1.1=1;

...//以此類推到P1.7

}
else if(m ==1)

{
P1.0=1;

P1.1=1;

delay(10);

P1.0=0;

P1.1=0;

delay(10);

P1.2 =1;

P1.3 =1;

delay(10);

...//同理以此類推即可

}
}
}

Ⅵ 燈光移位控製程序(單片機程序)

摘要:介紹了單片機實現多路燈光自動控制系統的軟、硬體設計。
關鍵詞:單片機自動控制可控硅抗干擾

利用單片機豐富的軟硬體資源實現對各種廣告牌多路燈光自動控制,與傳統的電子線路控制器相比,具有可編程、體積小、控制靈活、操作方便、控制時間可變可調等優點。
我們為呼市郵政局設計並安裝了上述單片機多路燈光自動控制系統。下面就該系統的軟、硬體設計作介紹。

1系統結構及工作原理
系統整體結構如圖1。

圖1系統結構

8031單片機是該系統的核心部件,其主要功能:(1)燈光控制的軟體編程;(2)干擾信號的處理及復位;(3)光強及時間定時的檢測及控制。
單片機的控製程序通過對光強或時間的檢測,自動開啟(夜間)或關閉(白天)燈光系統,每1路燈光設備與8031內存控制位相對應,單片機通過P3.0(RXD)和P3.1(TXD)多功能口,利用串列通信方式0實現不同控制代碼的輸出,從而完成了多路燈光設備各種變化的自動循環顯示。

28031單片機控制系統功能分析
2.1光強或時間定時的檢測及控制
如圖2所示,當8031單片機P1.4的控制開關撥到+5V時,系統的開啟或關閉由光強控制。這時,當光線較強時(白天),光耦二極體電阻變小,三極體Q1導通,P1.7為低電平;當光線暗時(夜間)光耦二極體變大,三極體Q1截止,P1.7為高電平。8031單片機控製程序每隔一定時間(約5ms)采樣P1.7端的狀態,然後根據其高低電平選擇開啟或關閉相應的燈光控制代碼發送。圖2中與光耦二極體並聯的可調電位器可以調整三極體Q1的截止導通狀態,從而實現對光控的微調。

圖2光耦電路

當P1.4撥至接地狀態時,8031單片機程序進入時間控制子程序,8031單片機把內部定時器0設置成日歷時鍾計數(其初值可以用按鈕設置),當程序查詢到表格內的開啟或關閉初值(表格的初值可通過按鈕及數碼管顯示來輸入或修改)與單片機時鍾當前值相同時,則自動發送相應的開啟或關閉輸出控制代碼。
2.2雙向可控硅控制電路
由於負載一般為大功率器件(電壓從幾百伏至上千伏,電流從幾安培至幾十安培),因此,8031單片機工作部分與可控硅觸發部分採用MOC3021雙向可控硅輸出型光電耦合器,圖3為1路可控硅觸發控制電路。

圖3可控硅觸發電路

可控硅TR的門極觸發電流為50mA,觸發電壓為2V,則最小觸發電壓為:
VT=R1,IGT+VGT+VTM=300×0.05+2+3=20V
對應的最小控制角α為:

其中:IGT為可控硅TR的最小觸發電流,VGT為可控硅TR的最小觸發電壓,VTM為MOC3021輸出壓降(3V),Vp為交流工作電壓的峰值。
在使用中發現,當感性負載時,有時會引起可控硅誤觸發。經分析發現,當感性負載時,由於電壓上升率dv/dt較大,在阻斷狀態下,可控硅的PN結相當於1個電容,當突然受到正向電壓、充電電流過門極PN結時,起到了觸發電流的作用,造成MOC3021的輸出迴路可控硅誤導通。為此,我們對上述電路進行了修正,如圖4所示。在輸出迴路中加入R2和C1組成RC迴路,降低dv/dt。按照MOC3021的技術指標,允許最大的電壓上升率dv/dt=10V/s,結溫上升時dυ/dt下降,在極端的工作條件下,dv/dt=0.8V/s。

圖4修改後的觸發電路


R2、R1之和與最小觸發電壓與可控硅門極電流的關系為:
C1取0.2μF。
同理,在TR輸出端加上RC濾波網路,從而使TR輸出電壓上升率下降。
2.3單片機工作迴路的干擾及解決措施
由圖1可知,光耦電路利用MOC4021將輸入弱信號與輸出強信號進行隔離,但在實際運行時,單片機系統仍有較強的干擾信號存在,常常出現死機或程序飛跑現象。分析認為,由於輸出的大電流及電壓均工作在開關狀態,輸出高次諧波通過電源迴路對8031單片機產生了較大的影響,因此,我們設計了電源濾波電路及硬體復位電路,對電路的干擾進行了有效的控制。其中,硬體復位電路如圖5所示。圖5中74LS123為雙路可再觸發單穩態多諧振盪器,通過外接阻容參數,可產生不同寬度的正負脈沖,其真值表如表1。

圖5復位電路

表174LS123真值表

輸入 輸出
deleteAB QQ
LXX LH
XHX LH
XXL LH
HL^
HIH
LH

由表1及圖5電路可知:由於1腳A接地,2腳B接8031單片機P1.0,正常運行時,循環程序不斷從P1.0發送代碼信號,使2腳不斷有上升沿出現,因此,13腳保持高電平,則5腳輸出低電平,保持8031RESET腳低電平的需要。當程序飛跑或死機時,2腳電位不再變化,使5腳產生一高電平脈沖,促使8031復位,重新啟動。
3系統結構特點及應用范圍
該系統軟硬體均採用模塊化結構,1塊控制板能控制16路輸出,輸出信號通過8031串列口RXD及TXD端經74LS164串入並出移位寄存器輸出,因此,軟體輸出代碼高達上千路信號,硬體控制板根據需要可以任意擴充,只要電源變壓功率相應增大即可。該系統可廣泛應用於霓紅燈,多路塑料管燈及多路色燈的控制。
另外,系統具有與微機串列口RS-232的通信介面,必要時可以與微機連接,這樣,多路燈光控制參數及時間控制參數在微機上可隨時修改,使控制變得更加靈活。

作者單位:呼和浩特內蒙古大學電子工程系(010021)

參考文獻

1餘永權.單片機應用系統的功率介面技術.北京:北京航空航天大學出版社,1992;104~108
2李樹華.IBM-PC微機與發光管顯示屏的連網通訊.內蒙古大學學報(自然科學版),1993;(4):441~443
3Xicor Inc.New Proct and Applications Information for Design engineers.EDN,1994;39(25):159~160

Ⅶ 51單片機,一個按鍵怎麼控制兩個燈輪流閃動,看詳細說明

先設置一個位變數,表徵現在是啟動還是停止。
再設置一個位變數,表徵應該是LED1亮還是LED2亮。
然後在檢測到按鍵的同時,啟動定時器,取反第一個變數,計時五秒後取反第二個變數。

Ⅷ 8個LED指示燈循環閃爍的程序(單片機)

1:設置一個變數i,它可以從0循環到3

2:檢測一個已取消緩沖的鍵。按「+1」

3:當I值為每個值時,執行相應的模式。

水量燈參考程序

#include

#include

#定義uchar無符號字元

Ucharj,溫度;

無效延遲(無符號整型ms)

Uchart;

(女士)

對於(t = 0;T < 123;T + +);

Voidmain()

P1=0XFF;

延遲(500);

Temp=0xfe;//奇怪,led連接在P2.3~P2.6

對於(j = 0;J < 4;J + +)

P1=temp;

延遲(500);

Temp=_crol_(Temp,1);

P1=0XFF;

(1);

(8)單片機雙燈閃爍左右移動程序擴展閱讀:

注意事項:

#include「reg52。這個文件為單片機定義了一些特殊的功能寄存器

Typedef無符號int在16以下;//以聲明的方式定義數據類型

無符號charu8;

//LED燈

Sbitleda=P0;

Sbitled1=P0^0;

Sbitled2=P0^1;

Sbitled3=P0^2;

Sbitled4=P0^3;

Sbitled5=P0^4;

Sbitled6=P0^5;

Sbitled7=P0^6;

Sbitled8=P0^7;

無效延遲(16歲以下)

,(我);

Voidmain()

而(1)

勒達=1;//所有的燈都亮著

//從左到右熄滅

Led1=0;

延遲(50000);//延遲時間約為450毫秒

Led2=0;

延遲(50000);//延遲時間約為450毫秒

Led3=0;

延遲(50000);//延遲時間約為450毫秒

Led4=0;

延遲(50000);//延遲時間約為450毫秒

Led5=0;

延遲(50000);//延遲時間約為450毫秒

Led6=0;

延遲(50000);//延遲時間約為450毫秒

Led7=0;

延遲(50000);//延遲時間約為450毫秒

Led8=0;

延遲(100000);//延遲大約900毫秒

//從右到左照明

Led8=1;

延遲(50000);//延遲時間約為450毫秒

Led7=1;

延遲(50000);//延遲時間約為450毫秒

Led6=1;

延遲(50000);//延遲時間約為450毫秒

Led5=1;

延遲(50000);//延遲時間約為450毫秒

Led4=1;

延遲(50000);//延遲時間約為450毫秒

Led3=1;

延遲(50000);//延遲時間約為450毫秒

Led2=1;

延遲(50000);//延遲時間約為450毫秒

Led1=1;

延遲(50000);//延遲時間約為450毫秒

勒達=1;//所有的燈都亮著

Ⅸ 在線等,急,用C語言編程,實現單片機控制兩個LED燈:當S1開關閉合時,兩個LED燈交替閃爍

判斷開關對應的埠電平,改變led對應埠即可。

交替閃爍就是在循環中讓兩個LED埠交替高低電平。

循環中加入延時。延時函數我用循環實現。題目沒有要求精準延時,如精準需用中斷。

#include <reg52.h>

#define uInt unsigned int

sbit D1=P2^0;

sbit D2=P2^1;

sbit S1=P3^2;

void mDelayuS( uInt us );

void main()

{

if(S1)

D1=D2=0;

while(S1==0) D1=!D2,mDelayuS(1000),D2=D1;

}

void mDelayuS( uInt us )

{

while ( us -- ); /* 24MHz MCS51 */

}

Ⅹ 單片機左右來迴流水燈程序,兩個兩個的燈亮能用keil生成.hex文件。

自己現成想的匯編的要不要啊哈哈
MOV A,#0011111
LOOP:
MOV P0,A
CALL DELAY
RR A
JMP LOOP
DELAY: ;延時程序
MOV R3,#20
D1:MOV R4,#20
D2:R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R2,D1
RET

這只是2個燈右移程序,如果達到你想要的效果還有計數8次然後進入計數左移動8次,懂基本原理什麼都好辦哎!糾結!!!!!!!!!

閱讀全文

與單片機雙燈閃爍左右移動程序相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:189
pdf劈開合並 瀏覽:27
不能修改的pdf 瀏覽:751
同城公眾源碼 瀏覽:488
一個伺服器2個埠怎麼映射 瀏覽:297
java字元串ascii碼 瀏覽:78
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:945
安卓導航無聲音怎麼維修 瀏覽:332
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491