проблема с PCF8583.

B

bpanjkov

Guest
У меня проблема с RTC.

Код:'************************************************* *****************************

'Проект: КПМ

'

"Этот проект является простая демонстрация, как

'Читать дату и время PCF8583 RTC (часы реального времени).

'Этот код может быть использован с любым MCU, который MSSP модуля на portc.

'

'Дата и время выводятся на ЖК-дисплее.
Для того чтобы использовать, например,

'Контактный адрес а0 PCF8583 должен быть установлен на 0.

'************************************************* *****************************Программа PCFближнего Sec As Byte

Мин ближнего как байт

ближнего гривен в виде байт

День ближнего как байт

Mn ближнего как байт

ближнего год в виде байт

TXT ближнего как Char [15]Вызов процедуры Zero_fill (ближнего значения ByRef как Char [10]) 'заполнения текста repesentation

Если длина (стоимость) = 1 Then 'с лидирующим нулем

значение [2] = значение [1]

значение [1] = 48

значение [0] = 2

End If

End Sub'Читает даты и времени с RTC (PCF8583)

Вызов процедуры Read_time (ближнего ByRef Sec как байт,

ближнего ByRef Мин как байт,

ближнего ByRef гривен в виде байт,

ближнего ByRef День как байт,

ближнего ByRef Mn как байт,

ближнего ByRef год в виде байт)

I2C_start

I2C_Wr ($ A0)

I2C_Wr (2)

I2C_Repeated_Start

I2C_Wr ($ A1)

I2C_Rd сек = (1)

а I2C_Is_Idle = 0 NOP Wend

мин = I2C_Rd (1)

а I2C_Is_Idle = 0 NOP Wend

HR = I2C_Rd (1)

а I2C_Is_Idle = 0 NOP Wend

I2C_Rd день = (1)

а I2C_Is_Idle = 0 NOP Wend

Mn = I2C_Rd (0)

а I2C_Is_Idle = 0 NOP Wend

I2C_Stop

End SubВызов процедуры Transform_time (ближнего ByRef Sec как байт,

ближнего ByRef Мин как байт,

ближнего ByRef гривен в виде байт,

ближнего ByRef День как байт,

ближнего ByRef Mn как байт,

ближнего ByRef год в виде байт)

сек = ((сек и $ F0)>> 4) * 10 (SEC и $ 0F) 'формата даты и времени

мин = ((минут и $ F0)>> 4) * 10 (мин и $ 0F)

HR = ((час и $ F0)>> 4) * 10 (HR и $ 0F)

года = ((день и $ C0))>> 6

в день = ((день и $ 30)>> 4) * 10 (день и $ 0F)

Mn = ((млн. и $ 10)>> 4) * 10 (млн. и $ 0F)

End SubВызов процедуры Display_time (ближнего Sec как байт,

Мин ближнего и байт,

Hr ближнего и байт,

День ближнего и байт,

Mn ближнего и байт,

Год как ближнего байт)

"Выход значений ЖК-дисплей

ByteToStr (день, 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 год)

ByteToStr (HR, TXT)

LCD_Out (2,6, TXT)

ByteToStr (мин, TXT)

Zero_fill (TXT)

LCD_Out (2,9, TXT)

ByteToStr (SEC, TXT)

Zero_fill (TXT)

LCD_Out (2,12, TXT)

End SubInit югу процедура

OPTION_REG = $ 7F

'TRISD = 0' PORTD назначить в качестве выходного

LCD_init (PORTB) 'Initialize ЖК-дисплей на PORTD

I2C_init (100000) 'Initialize I2C

TXT = "Дата:" подготовить и вывода статического текста на ЖК -

LCD_Out (1,1, TXT) '

Lcd_Chr (1,8 ,":") '

Lcd_Chr (1,11 ,":")

TXT = "Время:"

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 SubГлавная:

Init 'выполнять инициализацию

в то время как истинный

Read_Time (SEC, Мин, Hr, день, Mn, год) 'читать время от RTC (PCF8583)

Transform_Time (SEC, Мин, Hr, день, Mn, год) 'формат данных и время

Display_Time (SEC, Мин, Hr, день, Mn, год) 'подготовить и отображения на ЖК -

Delay_ms (1000) 'ждать 1S

Венд

конец.

 
Привет bpanjkov,

Есть ли у вас подтянуть резисторов по ПДД и СХК?Вы должны использовать 4.7k.Если они не существуют часов не будет работать правильно.

BobK

 
Да, я подтягиваний.

Я забыл сказать MCU является: 16f877A @ 4 МГц

 

Welcome to EDABoard.com

Sponsor

Back
Top