programmation du PCF8583 (Horloge temps réel)

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Logiciels -> MikroPascal
AuteurMessage
Tunisia.png bassem
Modérateur



Messages : 3
Inscrit(e) le: 18/12/2007
Posté le 24/12/2007 17:23  
1198513438.zip (71 Ko)
programmation du PCF8583 (Horloge temps réel)
suite à une demande des utilisateurs de TECHNOLOGUE pro
voici un programme en mikropascal pour commander un PCF8583
voici tout d'abord le schéma de simulation :

le programme est le suivant, il a été testé sur le 16F877 mais avec quelque modification il fonctionnemra bien sur d'autres µC

Code :

program pcf;
var Sec, Min, Hr, Day, Mn, Year : byte;
txt : string[15];
procedure Zero_fill(var value: array[3] of char);
begin
if value[1]=' ' then value[1] := 48;
value[0] := ':';
end;
procedure Read_time(var Sec, Min, Hr, Day, Mn, Year : byte);
begin
I2C_start;
I2C_Wr($A0);
I2C_Wr(2);
I2C_Repeated_Start;
I2C_Wr($A1);
sec :=I2C_Rd(1);
while I2C_Is_Idle = 0 do nop;
min :=I2C_Rd(1);
while I2C_Is_Idle = 0 do nop;
hr :=I2C_Rd(1);
while I2C_Is_Idle = 0 do nop;
day :=I2C_Rd(1);
while I2C_Is_Idle = 0 do nop;
mn :=I2C_Rd(0);
while I2C_Is_Idle = 0 do nop;
I2C_Stop;
end;
procedure Transform_time(var Sec, Min, Hr, Day, Mn, Year : byte);
begin
sec := ((sec and $F0) shr 4)*10 + (sec and $0F);
min := ((min and $F0) shr 4)*10 + (min and $0F);
hr := ((hr and $F0) shr 4)*10 + (hr and $0F);
year := ((day and $C0)) shr 6;
day := ((day and $30) shr 4)*10 + (day and $0F);
mn := ((mn and $10) shr 4)*10 + (mn and $0F);
end;

procedure Display_time(Sec, Min, Hr, Day, Mn, Year : byte);
begin
ByteToStr(day,txt);
Zero_fill(txt);
LCD_Out(1,5,txt);
ByteToStr(mn,txt);
Zero_fill(txt);
LCD_Out(1,8,txt);
LCD_Chr(1,15,52+year);
ByteToStr(hr,txt);
Zero_fill(txt);
LCD_Out(2,5,txt);
ByteToStr(min,txt);
Zero_fill(txt);
LCD_Out(2,8,txt);
ByteToStr(sec,txt);
Zero_fill(txt);
LCD_Out(2,11,txt);
end;

procedure Init;
begin
OPTION_REG := $7F;
LCD_Config(portb,0,2,1,6,5,4,3);
I2C_init(100000);
txt := 'Date:';
LCD_Out(1,1,txt);
Lcd_Chr(1,8,':');
Lcd_Chr(1,11,':');
txt := 'Time:';
LCD_Out(2,1,txt);
Lcd_Chr(2,8,':');
Lcd_Chr(2,11,':');
txt := '200';
LCD_Out(1,12,txt);
Lcd_Cmd(LCD_CURSOR_OFF);
end;

begin
Init;
while true do
begin
Read_Time(Sec, Min, Hr, Day, Mn, Year);
Transform_Time(Sec, Min, Hr, Day, Mn, Year);
Display_Time(Sec, Min, Hr, Day, Mn, Year);
Delay_ms(10);
end;

end.


et finalement vous pouvez voir La connexion du PCF sur le PIC

Revenir en haut | Permalien
 chaa500
Junior Member



Messages : 34
Inscrit(e) le: 30/06/2008
Posté le 24/04/2009 10:10  
RE : programmation du PCF8583 (Horloge temps réel)
BONJOUR JE VEUT SAVOIR COMMENT REGLER LA DATE CAR LA DATE AFFICHER EST 24-04-2005 MEME POUR LE TEMPS EN CAS DERGLER ET MERCI D'AVANCE

Revenir en haut | Permalien

Haut de page

© 2024 Technologue pro, cours électricité électronique informatique · © 2007 - 2024 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos