download do desafio: http://www.4shared.com/office/smNmEAtl/desafio_2_unico.html?
CRIAMOS O PROGRAMA NO KEIL.
#include <lpc213x.h>
#include "E:\Douglas\TEC. ELETRONICA\SISTEMAS MICROCONTROLADOS\KEIL\lcd.h"
#define botao_liga_desliga (1<<15)
#define valvula_admissao (1<<16)
#define sensor_porta (1<<16)
#define bomba_expurgo (1<<17)
#define motor_1 (1<<18)
#define motor_2 (1<<19)
#define sensor_nivel (1<<20)
int tempo (void)
{
int d;
for (d=0;d<100000;d++);
}
int main (void)
{
IODIR0 = 0XFFFEFFFF;
IODIR1 = 0XFFEFFFFF;
init_lcd();
if (IOPIN0&(botao_liga_desliga)) // liga a maquina
{
IOCLR1 = valvula_admissao; // desliga bomba de agua
lcd_clr(); //limpa tela do lcd
lcd_puts("maquina desligada"); //mensagem do lcd
}
if (!(IOPIN0&(sensor_porta))) // porta fechada a maquina liga
{
IOSET1 = valvula_admissao; // liga bomba de agua
lcd_clr (); // limpa a tela do lcd
lcd_puts("admitindo agua"); // mensagem da tela
}
else
{
IOCLR1 = valvula_admissao; // desliga bomba de agua
lcd_clr(); //limpa tela do lcd
lcd_puts("porta aberta"); //mensagem do lcd
while (1);
}
if(!(IOPIN0&(sensor_porta)))
{
IOSET1 = valvula_admissao;
lcd_clr();
lcd_puts("Admitindo Agua");
IOCLR1 = valvula_admissao;
IOSET1 = motor_1;
lcd_clr();
lcd_puts("lavando para direita");
tempo();
IOCLR1 = motor_1;
IOSET1 = motor_2;
lcd_clr();
lcd_puts("lavando para esquerda");
tempo();
IOCLR1 = motor_2;
tempo();
IOCLR1 = motor_2;
IOSET1 = bomba_expurgo;
lcd_clr();
lcd_puts("esvaziando agua");
IOCLR1 = bomba_expurgo;
IOSET1 = valvula_admissao;
lcd_clr();
lcd_puts("enxaguando");
IOCLR1 = valvula_admissao;
IOSET1 = bomba_expurgo;
tempo();
IOCLR1 = bomba_expurgo;
IOSET1 = motor_1;
IOSET1 = motor_2;
lcd_clr();
lcd_puts("centrifugando");
IOCLR1 = motor_1;
IOCLR1 = motor_2;
lcd_clr();
lcd_puts("FIM DO CICLO");
while (1);
}
}
Após criar o programa no keil montamos o circuito no Proteus e verificamos o funcionamento conforme o vídeo.

Nenhum comentário:
Postar um comentário