Arduino kontrollerade ljus dimmer (10 / 15 steg)
Steg 10: 8051 kontrollerade lightdimmer: programvara
Man kan naturligtvis använda 8051 mikrokontroller serien också för att styra dimmer.
Som jag inte har ett 8051 utvecklingssystem längre, jag kan inte testa någon kod, men om du vill utveckla detta för en 8051, kan följande exempel vara till hjälp:
//
Kontrollera AC med en 8051
Otestad kod
Sammanställer med MicroC Pro för 8051
int dimmring;
int x;
int i;
void ex0_isr(void) iv IVT_ADDR_EX0 ilevel 0 ics ICS_AUTO {
/*===================================================*/
int dimtime=(75*dimming);
delay_us(dimtime);
P0 = 0XFF; uppsättningar hela PORT 0 hög, kan också använda t.ex. P0_1 = 1;
delay_us(10); propagationdelay
P0 = 0X00;
}
void fördröjning (int maal) {
för (x = 1; x < maal; x ++) {
delay_us(75); 65 för 60Hz
}
}
/*===================================================*/
void main)
{
/*------------------------
Konfigurera INT0 (externa avbrott 0) att generera
ett avbrott i faller-utkanten av INT0 (P3.2).
Aktiverar EX0 avbrottet och aktivera sedan den
globala avbrott flagga.
------------------------------------------------*/
IT0_bit = 1; Konfigurera avbrott 0 för fallande kant på INT0 (P3.2)
EX0_bit = 1; Aktivera EX0 avbrott
EA_bit = 1; Aktivera Global avbrott flaggan
P0 = 0X00; alla stift i PORT0 deklareras som utdata
samtidigt (1)
{
för (jag = 5; jag < 128; i ++) {
mörkläggning = i.
fördröjning (10), //arbitrary fördröjning mellan stegen
}
}
}
Jag kan inte garantera denna kod ska fungera så jag har ingen möjlighet att testa den. Bör någon prova det och har resultat jag skulle bli glad att höra den.
En ansökan anteckning om en fläktkontroll enligt samma princip, kan hittas här.