problème avec PCF8583.

B

bpanjkov

Guest
J'ai des problèmes avec CCF.

Code:'************************************************* *****************************

'Project: PCF

'

«Ce projet est simple démonstration la façon de

»Lire la date et l'heure de PCF8583 RTC (horloge temps réel).

'Le code peut être utilisé avec n'importe quel MCU qui a MSSP module à PORTC.

'

«La date et l'heure sont imprimées à cristaux liquides.
Pour utiliser l'exemple,

'A0 broches adresse du PCF8583 doit être mis à 0V.

'************************************************* *****************************programme pcfDIM Sec As Byte

DIM Min As Byte

dim Hr As Byte

dim Jour As Byte

DIM Mn As Byte

DIM Année As Byte

dim txt en tant que char [15]procédure Sub Zero_fill (valeur ByRef As char [10]) 'fill REPRÉSENTATION texte

if (length value) = 1 Then 'par un zéro

valeur [2] = valeur [1]

valeur [1] = 48

Valeur [0] = 2

End If

End Sub», Lit-heure et la date du CCF (PCF8583)

procédure Sub Read_time (ByRef DIM Sec As Byte,

DIM byref Min As Byte,

dim Hr ByRef As Byte,

dim Jour ByRef As Byte,

DIM Mn ByRef As Byte,

DIM Année ByRef As Byte)

I2C_START

I2C_Wr ($ A0)

I2C_Wr (2)

I2C_Repeated_Start

I2C_Wr ($ A1)

sec = I2C_Rd (1)

tout I2C_Is_Idle = 0 nop Wend

= min I2C_Rd (1)

tout I2C_Is_Idle = 0 nop Wend

hr = I2C_Rd (1)

tout I2C_Is_Idle = 0 nop Wend

= jour I2C_Rd (1)

tout I2C_Is_Idle = 0 nop Wend

= mn I2C_Rd (0)

tout I2C_Is_Idle = 0 nop Wend

I2C_STOP

End Subprocédure Sub Transform_time (ByRef DIM Sec As Byte,

DIM byref Min As Byte,

dim Hr ByRef As Byte,

dim Jour ByRef As Byte,

DIM Mn ByRef As Byte,

DIM Année ByRef As Byte)

sec = ((sec et F0 $)>> 4) * 10 (SEC et 0F $) 'les formats de date et heure

= min ((min et F0 $)>> 4) * 10 (min et 0F $)

hr = ((hr et F0 $)>> 4) * 10 (RH et 0F $)

year = ((jour et C0 $))>> 6

= jour ((jour et 30 $)>> 4) * 10 (jour et 0F $)

mn = ((mn et 10 $)>> 4) * 10 (mn et 0F $)

End Subprocédure Sub Display_time (DIM Sec As Byte,

DIM Min As Byte,

dim Hr As Byte,

dim Jour As Byte,

DIM Mn As Byte,

DIM Année As Byte)

«Valeurs de sortie pour écran LCD

ByteToStr (jour, txt)

Zero_fill (txt)

LCD_Out (1,6, txt)

ByteToStr (Mn, txt)

Zero_fill (txt)

LCD_Out (1,9, txt)

LCD_Chr (1,15,52 an)

ByteToStr (hr, txt)

LCD_Out (2,6, txt)

ByteToStr (min, txt)

Zero_fill (txt)

LCD_Out (2,9, txt)

ByteToStr (sec, txt)

Zero_fill (txt)

LCD_Out (2,12, txt)

End Subprocédure Sub Init

OPTION_REG = $ 7F

'TRISD = 0' PORTD désigner comme la production

Lcd_init (PORTB) 'Initialize LCD sur PORTD

I2C_init (100000) 'initialize I2C

txt = "Date:" 'élaborer et de sortie texte statique sur l'écran LCD

LCD_Out (1,1, txt) '

Lcd_Chr (1,8 ,":") '

Lcd_Chr (1,11 ,":")

txt = "Heure:"

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 Subprincipaux:

Init 'effectuer une initialisation

while true

Read_Time (Sec, Min, Hr, Day, Mn, année) »lire temps de RTC (PCF8583)

Transform_Time (Sec, Min, Hr, Day, Mn, année) »format de données et le temps

Display_Time (Sec, Min, Hr, Day, Mn, année) »préparer et d'afficher sur l'écran LCD

Delay_ms (1000) 'wait 1s

Wend

fin.

 
Salut bpanjkov,

Avez-vous des résistances de le SDA et le SCK?Vous devez utiliser 4.7K.Si elles ne sont pas là l'horloge ne fonctionne pas à droite.

BobK

 
Oui, je pull-up.

J'oublie dire MCU est: 16F877A @ 4 MHz

 

Welcome to EDABoard.com

Sponsor

Back
Top