Autor Tema: ayuda con un rtc y lcd "reloj digital"  (Leído 2116 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado andreslg06

  • PIC10
  • *
  • Mensajes: 3
ayuda con un rtc y lcd "reloj digital"
« en: 18 de Noviembre de 2012, 00:51:02 »
hola a todos , solicito una pequeña ayuda estoy realizando un proyecto escolar sobre un reloj digital
con alarmas programadas con un rtc-ds1307,lcd y un pic 16f628A en si ya esta listo pero esta trabajando en modo de 24 horas y quiero hacer que trabaje en modo de 12 horas ya vi su hoja de datos y eso pero aun así no me ubico como hacerlo en modo de 12 horas les dejo el codigo realizado en microcode.

Código: [Seleccionar]
; definiciones del ds1307 y lcd
@ DEVICE PIC16F628A
@ device mclr_off
@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,WDT_OFF,PWRT_ON,BOD_OFF,LVP_OFF,CPD_OFF

;define i2c_sclout 1
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
define LCD_BITS 4
define LCD_LINES 2
DEFINE LCD_COMMANDUS 1000
Define LCD_DATUS 50


;puertos a utilizar
trisb= %00000011
trisa= %00000011
sda VAR Porta.0 ;pin señal de reloj I2C
scl VAR Porta.1 ;pin de datos I2C
push1 var portb.0
push2 var portb.1
timbre var porta.2
high timbre

; variables
segundos VAR BYTE
minutos  VAR BYTE
horas    VAR BYTE
b0       var byte
no       con %11010000
si       con %11010001

;reloj de inicio
s con  $55
m con  $59
h con  $12


inicio:
LCDOUT $fe,1
lcdout "Buenos dias:)"
pause 500
LCDOUT $fe,1
lcdout "Tecnica #29"
pause 500
pause 10
I2CWRITE sda,scl,no,0,[s]
pause 10 
I2CWRITE sda,scl,no,1,[m]
pause 10
I2CWRITE sda,scl,no,2,[h]
pause 10
gosub ini

 
ini:
gosub horarios
pause 10
I2CREAD sda,scl,si,0,[segundos]
pause 10
I2CREAD sda,scl,si,1,[minutos]
pause 10 
I2CREAD sda,scl,si,2,[horas]
LCDOUT $FE,1
lcdout $FE, 1, "Hora:",hex2 horas,":",hex2 minutos,":",hex2 segundos
LCDOUT $FE, $C0,"tec#29"

if minutos=9 then minutos=15
if minutos=25 then minutos=31
if minutos=41 then minutos= 47
if minutos=57 then minutos= 63
if minutos=73 then minutos= 79
if minutos= 89 then minutos=-1
if push1=0 then
minutos= minutos+1
pause 10
I2CWRITE sda,scl,no,1,[minutos]
endif


if horas=9 then horas=15
if horas=18 then horas=0
if push2=0 then
horas=horas+1
pause 10
I2CWRITE sda,scl,no,2,[horas]
endif
goto ini

horarios:
if horas=$07 and minutos=$00 and segundos=$00 then low timbre
gosub duracion

if horas=$07 and minutos=$50 and segundos=$00 then low timbre
gosub duracion

if horas=$08 and minutos=$40 and segundos=$00 then low timbre
gosub duracion

if horas=$09 and minutos=$30 and segundos=$00 then low timbre
gosub duracion

if horas=$10 and minutos=$20 and segundos=$00 then low timbre
gosub duracion

if horas=$10 and minutos=$40 and segundos=$00 then low timbre
gosub duracion

if horas=$11 and minutos=$20 and segundos=$00 then low timbre
gosub duracion

if horas=$12 and minutos=$10 and segundos=$00 then low timbre
gosub duracion

if horas=$01 and minutos=$00 and segundos=$00 then low timbre
gosub duracion

if horas=$01 and minutos=$40 and segundos=$00 then low timbre
gosub duracion
return

duracion:
if segundos=$30 then high timbre
return             
end

Desconectado fantaxmax

  • PIC16
  • ***
  • Mensajes: 107
    • Libertycraft - Minecraft
Re: ayuda con un rtc y lcd "reloj digital"
« Respuesta #1 en: 22 de Noviembre de 2012, 20:32:53 »
te dejo esto, lee eso y la pagina siguiente, haber si con eso te aclaras un poco

Registros del DS1307
"El presente es suyo, El futuro es mio" N.T.
El conocimiento es gratuito e ilimitado, solo debes saber donde buscarlo.