導航:首頁 > 操作系統 > 51單片機流水燈編程

51單片機流水燈編程

發布時間:2022-01-27 03:14:35

㈠ 51單片機流水燈用C語言編寫的設計程序

其實很簡單
就是用_cror_()函數或者 _crol_()函數,第一個是右移第二個是左移

㈡ 單片機流水燈C語言程序(8個燈,依次點亮每個燈,延時500MS)

單片機流水燈C語言程序的源代碼如下:

#include //51系列單片機定義文件

#define uchar unsigned char //定義無符號字元

#define uint unsigned int //定義無符號整數

void delay(uint); //聲明延時函數

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i<8;i++) //8個流水燈逐個閃動

{

P1=~temp;

delay(100); //調用延時函數

temp<<=1;

}

temp=0x80;

for(i=0;i<8;i++) //8個流水燈反向逐個閃動

{

P1=~temp;

delay(100); //調用延時函數

temp>>=1;

}

temp=0xFE;

for(i=0;i<8;i++) //8個流水燈依次全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp<<=1;

}

temp=0x7F;

for(i=0;i<8;i++) //8個流水燈依次反向全部點亮

{

P1=temp;

delay(100); //調用延時函數

temp>>=1;

}

void delay(uint t) //定義延時函數

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

(2)51單片機流水燈編程擴展閱讀

51單片機流水燈的源代碼如下

#include<reg51.h>

#include<intrins.h>

voiddelay(inta)

{

inti;

while(a--)for(i=0;i<110;i++);

}

main()

{

inti;

while(1)

{

P0=0xfe;

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

{

P0=_crol_(P0,1);

delay(500);

}

}

}

㈢ 用C51單片機控制12個LED流水燈的C語言程序怎麼寫

#include "REG52.H"

//控制引腳定義
sbit LED1 = PX.X; //P0.0-P3.7任意引腳
.... .... .......
sbit LED12 = PX.X;
//宏定義燈亮燈滅
#define LED1_ON( ) LED1 =0 //陽極接電源
#define LED1_OFF( ) LED1 =1 //陽極接電源
....... ............. .............
#define LED12_ON( ) LED12 =0 //陽極接電源
#define LED12_OFF( ) LED12 =1 //陽極接電源

void Init_GPIO( )//埠引腳初始化,關閉所有指示燈
{
LED1_OFF( ) ;
..............
LED12_OFF( ) ;
}
void Delay_ms( u16 dat ) //延時函數
{
u16 i, j;
for(i = dat; i>0; i--)
{
for (j=300; j>0; j--);
}
}
int main( ) //主函數
{
Init_GPIO( );//引腳初始化
while(1) //大循環
{
LED1_ON( );//點亮第一個LED
LED2_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);//延時 參數自己可以根據晶振頻率自己調節

LED1_OFF( ); //點亮第二個LED
LED2_ON( );
LED3_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);
............. //按照上面修改;

LED1_OFF( );//點亮第十二個LED
LED2_OFF );
LED3_OFF( );
.............
LED12_ON( );
Delay_ms(1000);
}
}

㈣ 51單片機編程流水燈問題

void main()
{
unsigned char i ;
start:P0=0x01;
i=0 ;
while(1)
{
P0=~(1<<i++); //P0口只有8位,即0-7;所以當i自加等於7時要讓其從0開始
delay1ms(500);
// if (P0==1) 把這個改為
if( i>= 7 )
{
goto start;
}
}
}
其實在進行用C語言編程中,應當不用或者少用goto語名,如果是一個流水燈程序,可以參考下面這個程序。
#include <reg52.h>
#include <intrins.h> //包含循環左移函數_crol_頭文件
#define uchar unsigned char
#define uint unsigned int
void delay1ms(unsigned int a )
{
unsigned char b;
while(a--)
{
for(b=0;b<125;b++);
}
}
void main(void)
{
P0 = 0x01; //先點亮第一個LED
while(1)
{
delay1ms(500);
P0 = _crol_(P0,1); //循環左移1位
}
}

㈤ 80C51單片機流水燈編程

#include<reg51.h> //51系列單片機定義文件
#define uchar unsigned char //定義無符號字元
#define uint unsigned int //定義無符號整數
void delay(uint); //聲明延時函數
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8個流水燈逐個閃動
{
P1=~temp;
delay(100); //調用延時函數
temp<<=1;
}
}

void delay(uint t) //定義延時函數
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
這是代碼,具體你可以運行來看效果。

㈥ 51單片機c語言編寫流水燈程序

這個有點多,定時器倒是可以寫寫
TMOD=0xXX;設置工作方式
TH0=0xXX;
TL0=0xXX; 裝入計數初值
EA=1;開總中斷
TR0=1;開定時器中斷

㈦ 51單片機16路流水燈怎麼用C語言寫,並求每個步驟的講解

我給你個簡單的例子:

#include<AT89X51.H>//預處理文件裡面定義了特殊寄存器的名稱如P1口定義為P1

voidmain(void)

{

//定義花樣數據

constunsignedchardesign[32]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,

0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x0,

0xE7,0xDB,0xBD,0x7E,0xFF};

unsignedinta;//定義循環用的變數

unsignedcharb;//在C51編程中因內存有限盡可能注意變數類型的使用

//盡可能使用少位元組的類型,在大型的程序中很

受用

do{

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

{

for(a=0;a<30000;a++);//延時一段時間

P1=design[b];//讀已定義的花樣數據並寫花樣數據到P1口

}

}while(1);

}

程序中的花樣數據可以自以去定義,因這里我們的LED要AT89C51的P1引腳為低電平才

會點亮,所以我們要向P1口的各引腳寫數據O對應連接的LED才會被點亮,P1口的八個引

腳剛好對應P1口特殊寄存器的八個二進位,如向P1口定數據0xFE,轉成二進制就是

11111110,最低位D0為0這里P1.0引腳輸出低電平,LED1被點亮。如此類推,大家不難算

出自己想要做的效果了。

留個郵箱給你發個入門文檔

㈧ 51單片機流水燈程序

程序如下,模擬見附件。有問題請追問。

#include<AT89X51.h>
#defineucharunsignedchar
#defineuintunsignedint
bitflag_1s=0;
ucharcodetab[8]={1,2,4,8,16,32,64,128};//[第1小題用這個表]
//ucharcodetab[8]={0x05,0x0a,0x50,0xa0,0xaa,0x55,0xff,0x00};//[第2小題用這個表]
voidInitTimer1(void)
{
TMOD=0x10;
TH1=0x3C;
TL1=0x0B0;
EA=1;
ET1=1;
TR1=1;
}
voidmain(void)
{
staticucharj;
InitTimer1();
P0=0;
P1=0;
P2=0;
P3=0;
flag_1s=1;
while(1)
{
if(flag_1s==1)
{
flag_1s=0;
P2=tab[j];
j++;
if(j>=8)j=0;
}
}
}
voidTimer1Interrupt(void)interrupt3
{
staticuchari;
TH1=0x3C;
TL1=0x0B0;
//addyourcodehere!
i++;
if(i>=20)//50ms*20=1000ms
{
i=0;
flag_1s=1;
}
}

㈨ 很簡的51單片機C語言流水燈程序

1、51單片機C語言實現循環8個流水燈左移三次,後右移三次。
常式:
#include<reg51.h> //51單片機頭文件
#include <intrins.h> //包含有左右循環移位子函數的庫
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
sbit beep=P2^3;
void delay(uint z) //延時函數,z的取值為這個函數的延時ms數,如delay(200);大約延時200ms.
{ //delay(500);大約延時500ms.
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main() //主函數
{
uchar a,i,j;
while(1) //大循環
{
a=0xfe; //賦初值
for(j=0;j<3;j++) for(i=0;i<8;i++) //左移三次
{
P1=a; //點亮小燈
beep=0; //開啟蜂鳴器
delay(50); //延時50毫秒
beep=1; //關閉蜂鳴器
delay(50); //再延時50毫秒
a=_crol_(a,1); //將a變數循環左移一位
}
a=0x7f;
for(j=0;j<3;j++) for(i=0;i<8;i++) //右移三次
{
P1=a; //點亮小燈
beep=0; //開啟蜂鳴器
delay(50); //延時50毫秒
beep=1; //關閉蜂鳴器
delay(50); //再延時50毫秒
a=_cror_(a,1); //將a變數循環右移一位
}
}
}
2、51單片機是對所有兼容Intel
8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8031單片機,後來隨著Flash
rom技術的發展,8031單片機取得了長足的進展,成為應用最廣泛的8位單片機之一,其代表型號是ATMEL公司的AT89系列,它廣泛應用於工業測控系統之中。很多公司都有51系列的兼容機型推出,今後很長的一段時間內將佔有大量市場。51單片機是基礎入門的一個單片機,還是應用最廣泛的一種。

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

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

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

;定義變數========================
YSJS EQU 30H;延時計數器
LED EQU 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 ;匯編程序結束

(10)51單片機流水燈編程擴展閱讀:

實現流水燈的三個方法:

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

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

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

閱讀全文

與51單片機流水燈編程相關的資料

熱點內容
824頁大瓜文件pdf 瀏覽:219
朔州ios源碼 瀏覽:245
演算法邏輯電路 瀏覽:934
青少年喝酒解壓辯論賽 瀏覽:171
android如何新建activity 瀏覽:737
ntp支持的認證演算法 瀏覽:710
想做快手主播需要什麼app 瀏覽:921
阿里雲伺服器如何轉賬戶 瀏覽:901
編譯器和解釋器實現技術完全不同 瀏覽:429
虐殺原形漢化補丁怎麼解壓 瀏覽:643
文件夾驗證失敗 瀏覽:635
python是用什麼軟體編程 瀏覽:247
java並發編程教程 瀏覽:320
江鈴寶典空調壓縮機工作時間過短 瀏覽:634
自製單片機玩具車 瀏覽:901
stm32單片機模塊電源電壓 瀏覽:187
pdf層次 瀏覽:735
電腦里找不到編譯器 瀏覽:843
明茨伯格pdf 瀏覽:444
把網頁存成pdf 瀏覽:269