導航:首頁 > 操作系統 > 單片機定時器流水燈亮

單片機定時器流水燈亮

發布時間:2023-08-13 13:01:35

『壹』 51單片機c語言定時器控制流水燈

#include //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0xFE;
for(i=0;i<8;i++) //8個流水燈依次全部點亮
{
P1=temp;
delay(500); //調用延時函數
temp<<=1;
}
}} void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}

『貳』 定時器雙向流水燈閃爍

把定時器設置成50ms一次定時中斷,作為時間基準,在定時中斷里再每次對一個變數計數加加得到想要的0.5秒和2秒時間基準 define uint unsigned int //定義無符號整數 void delay(uint); //聲明延時函數 void main(void){ uint i;uchar temp;while(1){ temp=0xFE;for(i=0;i<8;i++) //8個流水燈依次全部點亮 { P1=temp;delay(500...
用定時器實現流水燈從左到右雙位循環,跳動頻率為1秒。程序怎麼編啊... —— 用定時器實現流水燈,跳動頻率為1秒。用定時器定時50ms,採用中斷方式,對定時中斷計數,計數20次就是1秒。如下模擬圖,P1口接8個LED燈。

有關於單片機的一段程序,是用定時器做流水燈的 —— 要用定時器 就得用定時器中斷。。至於全亮的原因 是因為 delay1s 沒有起到延時1s的作用 二十極其短的延時 導致流水燈太快 給人感覺是全亮的。。你可以改成 long a ;while(a<500000)(值大小自己調試)...

如何用定時器中斷實現流水燈1秒定時流水? —— 可以中斷50ms一次(不一定非要50ms),每次中斷計數一次,等計數時間到1s,就執行一次流水動作

求助,用定時器控制流水燈循環 —— 將定時器中斷時間設置為一秒一次。聲明一個全局的變數temp 在初始化的時候賦初值,在中斷服務函數中

用定時器控制16路流水燈循環單片機,且定時時間可調,謝謝! —— interrupt1{uchari;//循環變數//重裝定時器初值,50ms中斷一次p++;if(p>=20)//一秒鍾改變一次狀態{for(i=0;i<8;i++){P1=temp;temp<<=1;//左移一位,流水燈}p=0;}}呵呵,這就是簡單的後台任務處理思想 ...

51單片機定時器實現流水燈,並用按鍵外部中斷控制改變流水燈的流向,這個... —— EA=1;//開總中斷 EX0=1;//開外部中斷0 IT0=1;//下降沿觸發 while(1){ if(flag==0){ for(i=0;i<8;i++){ P0=0X01<<i;delayms(500); } } if(flag==1){ for(i=0;i<8;i++){ P0=0X80...

51單片機用定時器,怎麼編程流水燈一秒閃爍一次, —— 先寫一個延時子函數delay,延時時間1秒。然後寫LED=0;delay(1);LED=1;這樣就可以做到一亮一滅,再把這段程序加入到循環中就可以,循環函數很簡單不用再說了吧,如果還不懂回復我給你程序 ...

plc怎麼用計時器做3個流水燈程序 —— 計數器,定時器……用計數器,就數值1點亮一個,2點亮一個,3點亮一個,加完復位,加個循環;定時器,定時一秒,二秒,三秒,每個對應一個燈,加個循環

『叄』 單片機實驗利用定時器控制八個LED燈每隔1S每四個為一組輪流點亮

03 8隻LED左右來回點亮

/* 名稱:8隻LED左右來回點亮

說明:程序利用循環移位函數_crol_和_cror_形成來回滾動的效果

*/

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

//延時

void DelayMS(uint x)

{

uchari;

while(x--)

{

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

}

}

//主程序

void main()

{

uchari;

P2=0x01;

while(1)

{

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

{

P2=_crol_(P2,1);//P2的值向左循環移動

DelayMS(150);

}

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

{

P2=_cror_(P2,1);//P2的值向右循環移動

DelayMS(150);

}

}

}

04 花樣流水燈

/* 名稱:花樣流水燈

說明:16隻LED分兩組按預設的多種花樣變換顯示

*/

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

uchar code Pattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

uchar code Pattern_P2[]=

{

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

//延時

void DelayMS(uint x)

{

uchari;

while(x--)

{

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

}

}

//主程序

void main()

{

uchari;

while(1)

{ //從數組中讀取數據送至P0和P2口顯示

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

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(100);

}

}

}

05 LED模擬交通燈

/* 名稱:LED模擬交通燈

說明:東西向綠燈亮若干秒,黃燈閃爍5次後紅燈亮, 紅燈亮後,南北向由紅燈變為綠燈,若干秒後南北向黃燈閃爍5此後變紅燈,東西向變綠燈,如此重復。

*/

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0; //東西向燈

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3; //南北向燈

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_Count=0,Operation_Type=1; //閃爍次數,操作類型變數

//延時

void DelayMS(uint x)

{

uchari;

while(x--)for(i=0;i<120;i++);

}

//交通燈切換

void Traffic_Light()

{

switch(Operation_Type)

{

case1: //東西向綠燈與南北向紅燈亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2: //東西向黃燈閃爍,綠燈關閉

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!=10)return; //閃爍5次

Flash_Count=0;

Operation_Type=3;

break;

case3: //東西向紅燈,南北向綠燈亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4: //南北向黃燈閃爍5次

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主程序

void main()

{

while(1)Traffic_Light();

}

06 單只數碼管循環顯示0~9

/* 名稱:單只數碼管循環顯示0~9

說明:主程序中的循環語句反復將0~9的段碼送至P0口,使數字0~9循環顯示

*/

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar codeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//延時

void DelayMS(uint x)

{

uchart;

while(x--)for(t=0;t<120;t++);

}

//主程序

void main()

{

uchari=0;

P0=0x00;

while(1)

{/* for(;i<11;i++){ P0=~DSY_CODE[i]; DelayMS(300);} //注:另一方案 */

P0=~DSY_CODE[i];

i=(i+1)%10;

DelayMS(300);

}

}

『肆』 求一個AT89C52單片機流水燈程序,8個燈從左到右亮1個,亮2個亮3個,以此類推,用定時器

假設燈接P0口,低電平點亮
主程序
void main()
{
unsigned char a=0, i=0;
TMOD=0X01;
TH0=(65536-50000)/256;/定時50ms
TL0=(65536-50000)%256;
EA=1;ET0=1;
TR0=1;
P0=0XFF ;
while(1);
}
中斷程序
void timer0 (void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)//1秒時間到
{a=0;i++;P0=0XEF>>(i-1);}
if{i==8)i=0;
}

『伍』 51單片機中如何用匯編語言編寫流水燈

流水燈就是51單片機控制led燈依次點亮的控制方式。具體程序如下:

ORG 0000H;復位啟動
AJMP START;
ORG 001BH;T1中斷
AJMP T1INT;

;定義變數========================
YSJSEQU 30H;延時計數器
LEDEQU 31H;LED控制緩沖器

;主程序==========================
START:MOV LED,#0FEH;初始化數據
MOV YSJS,#0;
MOV TMOD,#10H;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H;設置定時初值
MOV TH1,#3CH;定時時間=50mS
SETB ET1;使能定時器1中斷
SETB TR1;啟動定時器1
SETB EA;開總中斷

MOV P1,LED;初始化流水燈
LOOP:JMP LOOP;循環等待中斷
T1INT:PUSH PSW;定時器1中斷程序
PUSH ACC;保護現場
MOV TH1,#3CH;定時時間=50mS
MOV TL1,#0B0H;
INC YSJS;

PUSH ACC;保護ACC
MOV A,YSJI;
CJNE A,#2,QT1;50mS*2=100mS
MOV P1,LED;
MOV A,LED;
RL A;累加器A的值循環左移1位
MOV LED,A;
MOV YSJS,#0;
QT1:POP ACC;恢復現場
POP PSW;
RETI;返回主程序
END;匯編程序結束

(5)單片機定時器流水燈亮擴展閱讀:

實現流水燈的三個方法:

第一種,匯流排方法實現流水燈。這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,加上延時函數,即可控制每個LED燈的亮滅。

第二種,移位方法實現流水燈採用循環程序結構編程。首先在程序開始給P1.0口送一個低電平,其它位為高。然後延時一段時間再讓低電平往高位移動,這樣就實現「流水」的效果了。

第三種,庫函數實現流水燈。利用左移函數進行。

『陸』 如何用單片機實現流水燈,從一依次亮到八,再從八依次亮回一,一直循環

用GPIO寄存器比如PA、PB、PC這類的整段寄存器。配合循環、移位和延時(軟硬都可以)操作,就能很優雅地實現。

單片機(Single-Chip Microcomputer)是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。

單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶元,而是把一個計算機系統集成到一個晶元上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊晶元就成了一台計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。

閱讀全文

與單片機定時器流水燈亮相關的資料

熱點內容
超短macd源碼 瀏覽:161
群暉怎麼設置用戶訪問指定文件夾 瀏覽:555
安卓怎麼測觸摸屏 瀏覽:593
javastring原理 瀏覽:315
如何關閉手機dhcp伺服器 瀏覽:981
php免費ide 瀏覽:200
程序員詞句 瀏覽:976
伺服器如何禁止某個ip段 瀏覽:329
便簽手機文件夾 瀏覽:768
gameloft的java游戲 瀏覽:110
神佑釋放怎麼轉伺服器 瀏覽:735
洋蔥app軟體怎麼登錄 瀏覽:788
兩相電空氣壓縮機 瀏覽:396
基於51單片機的智能語音密碼鎖設計 瀏覽:845
mac如何用ssh登錄伺服器 瀏覽:446
appstore怎麼設置 瀏覽:954
在哪個app買韓國女裝 瀏覽:111
php寫入文件換行 瀏覽:749
dsp實現fft演算法 瀏覽:485
棋牌源碼轉讓交易手續費 瀏覽:293