Um exemplo de I2C usando o DS1307 e LCD com o Atmega8

Olá a todos,

de novo com mais um exemplo, desta vez I2C que nos permite num bus de dados comunicar com vários dispositivos em “simultâneo”, neste exemplo usa-se um LCD e um DS1307 RTC.

as livrarias são da autoria de Peter Fleury adaptadas de modo a conseguir-se comunicar com vários dispositivos, neste exemplo apenas temos 2 dispositivos, mais a frente iremos incrementar outros dispositivos.

Sugere-se esta pagina que explica muito bem o funcionamento do I2C.

Já sabem o código fonte é a pedido.

 Fiquem Atentos!!

I2C with LCD & DS1307
/*
 * iic_PCF8574.c
 *Author: Norlinux
 *http://www.microelectronic.pt
 *https://www.facebook.com/MundoDosMicrocontroladores/
 *http://maquina.96.lt
 *Released under GPLv3.
 *Please refer to LICENSE file for licensing information.
 *which can be found at http://www.gnu.org/licenses/gpl.txt
 */

#include <avr/io.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#ifndef F_CPU
# define F_CPU 8000000UL
#endif
#include <util/delay.h>
#include "lcdpcf8574/lcdpcf8574.h"
#include "ds1307/DS1307.h"

int main(void)
{
	sei();
char data[8], time[8];
	//init lcd
	lcd_init(LCD_DISP_ON );
	//lcd go home
	lcd_home();
	//set data
	//DS1307_setDate(19,11,17);
	while(1) {
			
			DS1307ReadDATA(data); //Read date from DS1307 I2C clock.
			lcd_gotoxy(0,0); // x = horizontal, y = vertical (line).
			lcd_puts(data);
			DS1307ReadHOUR(time); //Read  time from DS1307 I2C clock.
			lcd_gotoxy(0,1);// x = horizontal, y = vertical (line).
			lcd_puts(time);
			_delay_ms(100);	
	}
}

 

Deixe uma resposta

Your email address will not be published.

www.000webhost.com