problema z PCF8583.

B

bpanjkov

Guest
Imam problem z RTC.

Koda:'************************************************* *****************************

"Projekt: PCF

"

"Ta projekt je preprosta predstavitev, kako se

"Beri uro in datum iz PCF8583 RTC (Real-time clock).

"Ta številka se lahko uporablja s katerim koli MCU, ki je MSSP modul na portc.

"

"Datum in čas sta natisnjeni na LCD.
Da bi lahko uporabljali na primer,

"Naslov pin A0 za PCF8583 mora biti nastavljen na 0V.

'************************************************* *****************************Program PCFZamutiti Sec kot bajt

Zamutiti Min kot bajt

Zamutiti Hr kot bajt

Zamutiti Dan kot bajt

Zamutiti Mn kot bajt

Zamutiti Leto kot bajt

Zamutiti txt kot char [15]sub postopek Zero_fill (Zamutiti byref vrednost kot char [10]) "napolni besedilo repesentation

če je dolžina (vrednost) = 1, nato "z ničlami

vrednost [2] = vrednost [1]

vrednost [1] = 48

vrednost [0] = 2

namen, če

end sub'Se glasi, čas in datum podatke od RTC (PCF8583)

sub postopek Read_time (Zamutiti byref Sec kot bajt,

Zamutiti byref Min kot bajt,

Zamutiti byref Hr kot bajt,

Zamutiti byref dan kot bajt,

Zamutiti byref Mn kot bajt,

Zamutiti byref Leto kot byte)

I2C_start

I2C_Wr ($ A0)

I2C_Wr (2)

I2C_Repeated_Start

I2C_Wr ($ A1)

sec = I2C_Rd (1)

medtem ko I2C_Is_Idle = 0 nop Nanašati

min = I2C_Rd (1)

medtem ko I2C_Is_Idle = 0 nop Nanašati

hr = I2C_Rd (1)

medtem ko I2C_Is_Idle = 0 nop Nanašati

dan = I2C_Rd (1)

medtem ko I2C_Is_Idle = 0 nop Nanašati

mn = I2C_Rd (0)

medtem ko I2C_Is_Idle = 0 nop Nanašati

I2C_Stop

end subsub postopek Transform_time (Zamutiti byref Sec kot bajt,

Zamutiti byref Min kot bajt,

Zamutiti byref Hr kot bajt,

Zamutiti byref dan kot bajt,

Zamutiti byref Mn kot bajt,

Zamutiti byref Leto kot byte)

sec = ((sec and $ F0)>> 4) * 10 (sec and $ 0F) "formate datuma in časa

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

h = ((hr and $ F0)>> 4) * 10 (hr and $ 0F)

leta = ((dan in $ C0))>> 6

dan = ((dan in $ 30)>> 4) * 10 (dan in $ 0F)

MN = ((Mn in $ 10)>> 4) * 10 (Mn in $ 0F)

end subsub postopek Display_time (Zamutiti Sec kot byte,

Zamutiti Min kot byte,

Zamutiti Hr kot byte,

Zamutiti Dan kot byte,

Zamutiti Mn kot byte,

Zamutiti Leto kot byte)

"Izhodne vrednosti na LCD zaslonu

ByteToStr (dan, 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 leto)

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 subsub postopek inIT

OPTION_REG = $ 7f

"TRISD = 0" imenuje portd kot proizvodnja

LCD_init (PORTB) "inicializacijo LCD na portd

I2C_init (100000) "inicializacijo I2C

txt = "Datum:", "priprava in proizvodnja statičnega besedila na LCD

LCD_Out (1,1, txt)

Lcd_Chr (1,8 ,":") "

Lcd_Chr (1,11 ,":")

txt = "Ura:"

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

InIT "opravlja inicializacijo

hkrati pa res

Read_Time (Sec, Min, Hr, Day, Mn, Year) "glasi času od RTC (PCF8583)

Transform_Time (Sec, Min, Hr, Day, Mn, leto) ", format podatkov in čas

Display_Time (Sec, Min, Hr, Day, Mn, Year) "priprava in izpis na LCD

Delay_ms (1000) 'počakaj 1s

Nanašati

konec.

 
Zdravo bpanjkov,

Imate pull up upori na SDA in SCK?Morala bi uporabljati 4.7K.Če oni ni ure ne bo delovalo v redu.

BobK

 
Da sem "pull-up.

Pozabil sem povedati MCU je: 16f877A @ 4 MHz

 

Welcome to EDABoard.com

Sponsor

Back
Top