terça-feira, 4 de fevereiro de 2014

Relogio digital através de um PIC16F628a e um LCD 16X2


Circuito do sistema é bem simples ,como mostra a figura a baixo.Se precisar de ajuda é só comentar.


OBS:Na imagem a cima não aparece aonde deve ligar o polo positivo e o polo negativo no PIC e no LCD .A do PIC deve ligar o polo positivo no pino 14 e o polo negativo no pino 5 .Já o o LCD deve-se ver o datasheet do seu LCD 16x2 ,pois você deve ligar um polo positivo e um negativo e um potenciometro.Se tiver alguma duvida quanto a isso comente que eu respondo como fazer essas ligações.

Lógica do sistema

Eu utilizei o PIC C COMPILER para fazer a linguagem em C como mostra a baixo:

#fuses INTRC_IO,NOWDT,PUT,BROWNOUT,NOMCLR,NOLVP
#use delay (clock=4174000)
////4172000
#include
int x;
int y;
int z;
int k;
int t;
int v;
int i;
void main(){
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  setup_timer_1(T1_DISABLED);
  setup_timer_2(T2_DISABLED,0,1);
  setup_comparator(NC_NC_NC_NC);
  setup_vref(FALSE);
  lcd_init();
  x=48;
  y=48;
  z=48;
  k=48;
  t=48;
  v=48;
  lcd_gotoxy(1,1);
  lcd_putc("RELOGIO");
  lcd_gotoxy(1,2);
  lcd_putc("DIGITAL");
  delay_ms(2000);
  lcd_gotoxy(1,1);
  lcd_putc("        ");
  lcd_gotoxy(1,2);
  lcd_putc("        ");
  delay_ms(10);
  lcd_gotoxy(1,1);
  lcd_putc("MKK ELE-");
  lcd_gotoxy(1,2);
  lcd_putc("TRONICA");
  delay_ms(2000);
  lcd_gotoxy(1,1);
  lcd_putc("        ");
  lcd_gotoxy(1,2);
  lcd_putc("        ");
  delay_ms(10);

  while(1){

 if(!input(pin_a0)){

 ////HORA

 ///aumentar hora

   if(!input(pin_a7)){
  t++;
  delay_ms(500);
  if(t==58){
  v++;
  t=48;
  }

   if((t==52)&&(v==50)){
  t=48;
  v=48;
  }
  }
 ///diminuir hora
  if(!input(pin_a3)){
 t--;
 delay_ms(500);
 if(t==47){
 v--;
 t=57;
 if(v==47){
 v=50;
 t=51;
  }
  }
 if(v==47){
 v=48;
  }
  }

  ///MINUTO
  ///aumentar minuto

  if(!input(pin_a6)){
  z++;
  delay_ms(500);
  if(z==58){
  k++;
  z=48;
  if(k==54){
  k=48;
  }
  }
  if(k==54){
  k=48;
  }
  }
  ////diminuir minuto
  if(!input(pin_a2)){
  z--;
 delay_ms(500);
 if(z==47){
 k--;
 z=57;
 if(k==47){
 z=57;
 k=53;
  }
  }
 if(k==47){
 k=48;
  }
  }

 ///SEGUNDO
 ///aumentar segundo
 if(!input(pin_a1)){
 y++;
 delay_ms(500);
 if(y==58){
 x++;
 y=48;
 if(x==54){
 x=48;
 }
 }
 if(x==54){
 x=48;
  }
  }
 ////diminuir segundo
 if(!input(pin_a4)){
 y--;
 delay_ms(500);
 if(y==47){
 x--;
 y=57;
 if(x==47){
 y=57;
 x=53;
 }
 }
 if(x==47){
 x=48;
 }
 }
 }
  lcd_gotoxy(1,1);
  lcd_putc(v);
  lcd_gotoxy(2,1);
  lcd_putc(t);
  lcd_gotoxy(3,1);
  lcd_putc(":");
  lcd_gotoxy(4,1);
  lcd_putc(k);
  lcd_gotoxy(5,1);
  lcd_putc(z);  lcd_gotoxy(6,1);
  lcd_putc(":");
  lcd_gotoxy(7,1);
  lcd_putc(x);
  lcd_gotoxy(8,1);
  lcd_putc(y);
  if(input(pin_a0)){
  for(y=48;y<=57;y++){
  lcd_gotoxy(8,1);
  lcd_putc(y);
  delay_ms(1000);
  }
  if(y=57){
  x++;
  if(x==54){
 x=48;
 z++;
 if((v==50)&&(t==51)&&(k==53)&&(z==58)&&(y=57)){
  x=48;
  y=48;
  z=48;
  k=48;
  t=48;
  v=48;
  }
  }
 if((z==58)&&(y=57)){
 z=48;
 k++;
 }
 if((k==54)&&(y=57)){
 k=48;
  t++;
  } 
 if((t==58)&&(y=57)){
 t=48;
 v++;
  }
  }  }
  }
  }

 Agora é o código que você deve gravar no seu microcontrolador PIC16F62a , que é o arquivo .hex



:1000000000308A00272900000A108A100A1182078E

:1000100028340C34013406340A108A100A1182077D

:10002000523445344C344F34473449344F3400341F

:100030000A108A100A11820744344934473449347B

:10004000543441344C3400340A108A100A118207A7

:100050002034203420342034203420342034203400

:1000600000340A108A100A1182074D344B344B3485

:10007000203445344C3445342D3400340A108A1071

:100080000A118207543452344F344E3449344334C5

:10009000413400340A108A100A1182073A340034BD

:1000A0002930840083130008031964280130F80004

:1000B000F701F70B5928F80B58285930F700F70BC0

:1000C0005F280000800B56280034300EF039F7000E

:1000D0000F30060577048600000006146F2806100E

:1000E00000340608F700060E0F39F80000348316B6

:1000F000061086100611831286100F30831606052F

:10010000F0388600831206150000061400007120E6

:100110007808B0000610000006140000712078086E

:10012000AF0006100F308316060586008312300ECE

:10013000F700F030F70577082F04F8007808AF00D3

:10014000AF1B7D282D1C86102D188614000006116B

:10015000000006102E0EAF000F30AF052F08B000C4

:1001600065202E080F39AF00B000652000340F3035

:100170008316060586000610861006118312861067

:10018000061106100F30A90050200130A7002708E3

:10019000033C031CD3280330B00065200530A900C0

:1001A0005020A70AC7280230B00065200530A900FA

:1001B0005020A7012708033C031CE7282708042038

:1001C000A800AD012808AE007720A70ADA284D293B

:1001D0002A0BEB28EE284030AB00EF28AB010130B2

:1001E0002902AB072B088038AC00AD012C08AE000B

:1001F000772000342808073A031908290B3A031915

:100200000D29063A03191529023A03191B29202939

:100210000130A900AA00E8202629AD010130AE0076

:1002200077200230A900502026290130A900023091

:10023000AA00E8202629AD011030AE00772026293B

:100240000130AD002808AE00772026290034840153

:1002500083131F30830583168E15073083129F008A

:1002600083160108C73908388100831290010030D5

:10027000F8009200003083169200073083129F002E

:10028000831605080330F700F70B442983121F0873

:100290000C1383169F018312B7283030A000A100F1

:1002A000A200A300A400A5000130A900AA00E82034

:1002B000A70127080C20003803196229A70AA80003

:1002C000FA2059290130A9000230AA00E820A7012C

:1002D00027081820003803197129A70AA800FA2056

:1002E00068290830A700FA30A9005020A70B73290D

:1002F0000130A900AA00E820A7012708242000381F

:1003000003198629A70AA800FA207D290130A9002F

:100310000230AA00E820A70127082420003803198A

:100320009529A70AA800FA208C290A30A900502094

:100330000130A900AA00E820A701270831200038D1

:100340000319A629A70AA800FA209D290130A900AF

:100350000230AA00E820A70127083E200038031930

:10036000B529A70AA800FA20AC290830A700FA305E

:10037000A9005020A70BB7290130A900AA00E82046

:10038000A7012708242000380319CA29A70AA800B2

:10039000FA20C1290130A9000230AA00E820A701F3

:1003A0002708242000380319D929A70AA800FA2011

:1003B000D0290A30A900502083160514831205188D

:1003C000A62A831685178312851B002AA40A0230E9

:1003D000A700FA30A9005020A70BE92924083A3CCD

:1003E000031DF529A50A3030A4002408343C031D60

:1003F000002A2508323C031D002A3030A400A50045

:100400008316851583128519222AA4030230A700BA

:10041000FA30A9005020A70B082A24082F3C031DFE

:100420001C2AA5033930A40025082F3C031D1C2AD3

:100430003230A5003330A40025082F3C031D222AAA

:100440003030A500831605178312051B422AA20A25

:100450000230A700FA30A9005020A70B2A2A220850

:100460003A3C031D3C2AA30A3030A2002308363C44

:10047000031D3C2A3030A3002308363C031D422ACA

:100480003030A3008316051583120519642AA203D0

:100490000230A700FA30A9005020A70B4A2A2208F0

:1004A0002F3C031D5E2AA3033930A20023082F3CF2

:1004B000031D5E2A3930A2003530A30023082F3CEB

:1004C000031D642A3030A300831685148312851817

:1004D000842AA10A0230A700FA30A9005020A70BF5

:1004E0006C2A21083A3C031D7E2AA00A3030A10064

:1004F0002008363C031D7E2A3030A0002008363C00

:10050000031D842A3030A000831605168312051AB5

:10051000A62AA1030230A700FA30A9005020A70B99

:100520008C2A21082F3C031DA02AA0033930A100EA

:1005300020082F3C031DA02A3930A1003530A0002F

:1005400020082F3C031DA62A3030A0000130A9004E

:10055000AA00E8202508A800FA200230A9000130EE

:10056000AA00E8202408A800FA200330A9000130DE

:10057000AA00E820A70127084A2000380319C42A46

:10058000A70AA800FA20BB2A0430A9000130AA005B

:10059000E8202308A800FA200530A9000130AA00AD

:1005A000E8202208A800FA200630A9000130AA009D

:1005B000E820A70127084A2000380319E32AA70AE0

:1005C000A800FA20DA2A0730A9000130AA00E820A2

:1005D0002008A800FA200830A9000130AA00E8206D

:1005E0002108A800FA20831605148312051C5C2B31

:1005F0003030A1002108393C031C0F2B0830A90022

:100600000130AA00E8202108A800FA200430A70041

:10061000FA30A9005020A70B082BA10AFA2A39307A

:10062000A100A10803195C2BA00A2008363C031D79

:10063000382B3030A000A20A2508323C031D382B8D

:100640002408333C031D382B2308353C031D382B6D

:1006500022083A3C031D382B3930A100A1080319A8

:10066000382B3030A000A100A200A300A400A500F8

:1006700022083A3C031D442B3930A100A10803197C

:10068000442B3030A200A30A2308363C031D502B14

:100690003930A100A1080319502B3030A300A40A5F

:1006A00024083A3C031D5C2B3930A100A108031932

:0C06B0005C2B3030A400A50ADC2963009C

:02400E00503F21

:00000001FF

;PIC16F628A


Como trasnformar esses numeros e letras em arquivo .hex para você gravar no seu microcontrolador PIC16F628a?
Basta você copiar esses numeros e letras no bloco de notas.Daí você vai na opção SALVAR COMO .Vai abrir o local que você deseja salvar.Você escolhe o local e coloca o nome que você quer para o arquivo mas depois de escrever o nome coloque a expressão ".hex" Exemplo: relogio.hex 
Pronto você ja pode gravar em seu microcontrolador.Eu utilizo o WINPIC800 para gravar no microcontrolador.

Como funciona o sistema depois de ter feito tudo isso?
Você vai ligar em uma voltagem de 5V.Vai aparecer na tela DO LCD "RELOGIO DIGITAL MKK ELETRONICA" e logo o relogio "00:00:00".Para configurar a hora você deve apertar e segurar o botão "configurar hora e minuto",(no circuito está "configurar hora e minuto" mas pode configurar o segundo também),e esperar até que a unidade do segundo chegue a 9 ("00:00:09").Com o botão "configurar hora e minuto" sempre pressionado vá apertando os outros botões até configurar a sua hora desejada.


Bom projeto para você!!!

Um comentário: