Maison  >  Article  >  tutoriels informatiques  >  Tutoriel sur l'écriture de boutons pour contrôler le cycle de clignotement de la lumière LED d'un microcontrôleur

Tutoriel sur l'écriture de boutons pour contrôler le cycle de clignotement de la lumière LED d'un microcontrôleur

WBOY
WBOYavant
2024-01-22 17:18:06749parcourir

Tutoriel sur lécriture de boutons pour contrôler le cycle de clignotement de la lumière LED dun microcontrôleur

Apprenez à écrire un programme pour contrôler le cycle de clignotement de la lumière LED d'un microcontrôleur via des boutons

Quel microcontrôleur utilisez-vous ?

Je pense que vous parlez d'un chapiteau, je vais vous donner le plus courant, un microcontrôleur 51 et un programme chapiteau C.

Je peux vous en donner plus si nécessaire, je suis ingénieur en développement matériel.

J'espère l'adopter.

Par exemple, il s'agit d'un programme C chapiteau pour un microcontrôleur 51, qui a été simulé sur le logiciel PROTEUS

#inclure

void delay(int);

void main()

{

int i;

P0=0x01;

délai(500);

pendant(1)

{

pour(i=0;i

{

P0

délai(500);

}

P0=0x01;

délai(500);

}

}

annuler le délai (intx)

{

int i,j;

pour(i=x;i>0l;i--)

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

}

 : 

#inclure

void delay(int);

void main()

{

int i;

P0=0x01;

délai(500);

pendant(1)

{

pour(i=0;i

{

P0

délai(500);

}

P0=0x01;

délai(500);

}

}

annuler le délai (intx)

{

int i,j;

pour(i=x;i>0l;i--)

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

}

Programme de portes tournantes MCU

//==============

#inclure

#définir le compte 11

char TAB[]={ 0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x83,0xf8,0x80,0x98,

0xff};

char disp[11][4]={ {10,10,10,10},

{1,10,10,10},{10,1,10,10},{10,10,1,10},{10,10,10,1},

{2,10,10,1},{10,2,10,1},{10,10,2,1},

{3,10,2,1},{10,3,2,1},

{4,3,2,1}};

void delay1ms(int);

scanner vide (char);

//=================

principale()

{char i=0;

pendant(1)

{

si(i==0)

{ pour(i=0;i

scanner(i);

}

autre

{ pour(i=10;i>=0;i--)

{

scanner(i);

if(i==0)break;}

}

}

}

//=================

void delay1ms(int x )

{int i,j;

pour(i=0;i

pour(j=0;j

}

//====================

scanner vide (char x)

{ char i,j,scan,BCD;

pour(i=0;i

{scan=1;

pour(j=0;j

{ P0=0xff;

P2=~scanner;

BCD=disp[x][j];

P0=TAB[BCD];

délai1ms(4);

scan

}

}

}

Comment faire un chapiteau avec un microcontrôleur

#inclure

sbit LED1 = P1^0;

sbit LED2 = P1^1;

sbit LED3 = P1^2;

sbit LED4 = P1^3;

sbit LED5 = P1^4;

sbit LED6 = P1^5;

sbit LED7 = P1^6;

sbit LED8 = P1^7;

annuler le délai()

{

char non signé i,j;

pour(i=0;i

pour(j=0;j

}

void main()

{

pendant(1)

{

P1 = 0xff;

LED1 = 0;

Délai();

LED2 = 0;

LED1 = 1;

Délai();

LED3 = 0;

LED2 = 1;

Délai();

LED4 = 0;

LED3 = 1;

Délai();

LED5 = 0;

LED4 = 1;

Délai();

LED6 = 0;

LED5 = 1;

Délai();

LED7 = 0;

LED6 = 1;

Délai();

LED8 = 0;

LED7 = 1;

Délai();

}

}

Programme de marque MCU

org 0000h

jmp start

org 0030h

début :

mov a,#0ffh ;

clr c ;

mov r2,#08h ; boucle huit fois.

boucle : rlc a ; décalage vers la gauche avec report.

mov p1,a ; Sortie vers le port P1.

délai d'appel;retard pendant un certain temps

djnz r2, boucle ; boucle à plusieurs reprises

mov r2,#07h ; puis boucle en arrière.

loop1 : rrc a ; décalage vers la droite avec carry

mov p1,a ; Sortie vers le port P1.

délai d'appel;retard pendant un certain temps

djnz r2,loop1; boucle à plusieurs reprises

jmp start;recommencez

delay : mov r3,#20 ; sous-programme de retard

d1 : mouvement r4,#20

d2 : mouvement r5,#248

djnz r5,$

djnz r4,d2

djnz r3,d1

ret

fin

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer