Relógio em tempo real com opção de alarme usando AT89S52 e DS1307 IC

Relógio em tempo real com opção de alarme usando AT89S52 e DS1307 IC

Relógio de tempo real é um relógio digital que exibe o tempo real em um display LCD 16×2. Aqui neste circuito também podemos definir alarme e hora. O relógio serial em tempo real (RTC) DS1307 é um relógio/calendário decimal completo com codificação binária (BCD) de baixo consumo de energia mais 56 bytes de NV SRAM. Endereço e dados são transferidos serialmente através de um barramento bidirecional I²C. O ck/calendar fornece informações sobre segundos, minutos, horas, dia, data, mês e ano. A data do final do mês é ajustada automaticamente para meses com menos de 31 dias, incluindo correções para anos bissextos. O relógio funciona no formato de 24 ou 12 horas com indicador AM/PM. O DS1307 possui um circuito de detecção de energia integrado que detecta falhas de energia e alterna automaticamente para a fonte de backup. A operação de cronometragem continua enquanto a peça opera a partir da fonte de reserva.

Diagrama de circuito do microcontrolador 8051 e relógio de tempo real baseado em IC DS1307

Fig. 1: Diagrama de circuito do microcontrolador 8051 e relógio de tempo real baseado em IC DS1307

Figura 1.1: Circuito Proteus do relógio digital em tempo real

Descrição:-

Neste circuito, a porta 2 do microcontrolador conectada aos pinos de dados do display LCD 16×2 e os bits P3 ^ 0 e P3 ^ 1 da porta 3 conectados ao pino de comando do display LCD 16 × 2 rs e en respectivamente. E dados seriais SDA e pino SCL de clock do ds1307 conectados a P1 ^ 0 e P1 ^ 1 do microcontrolador, respectivamente. 4 interruptores/botões também usados ​​para definir a hora e o alarme. Os bits P3^2, P3^3,P3^4 e P1^2 são configurados como dígito de incremento, valor de incremento, ajuste de tempo e ajuste de alarme respectivamente. E um LED indicador de alarme também conectado a P1^3 para indicar alarme. Quando a hora do alarme coincidirá com o tempo real do relógio então o led será ativado. Neste relógio, o RTC é usado no modo 24 horas, o que fornece a hora precisa e pode ser exibido no LCD através do microcontrolador. O microcontrolador lê continuamente os dados do RTC. O programa lê continuamente os dados do ds1307 e mostra no display. O bit P3 ^ 4 é ativado em nível baixo quando um sinal baixo chega às chamadas do programa, função de configuração de tempo e os bits P3 ^ 2 e P3 ^ 3 também são ativados em nível baixo para definir hora / data / dia, bem como a hora do alarme após pressionar o bit P1 ^ 2.

Visão geral do microcontrolador 8051 e do relógio de tempo real baseado em IC DS1307

Fig. 2: Visão geral do microcontrolador 8051 e do relógio de tempo real baseado em IC DS1307

Figura 1.3: Diagrama de circuito do RTC

Componente usado

Componente usado: –

Microcontrolador 89S52

A microcontrolador é um pequeno computador em um único circuito integrado contendo um núcleo de processador, memória e periféricos de entrada/saída programáveis. A memória de programa na forma de flash NOR ou ROM OTP também costuma ser incluída no chip, bem como uma quantidade normalmente pequena de RAM. Os microcontroladores são projetados para aplicações embarcadas, em contraste com os microprocessadores usados ​​em computadores pessoais ou outras aplicações de uso geral.

Imagem típica do microcontrolador AT89S52 8051

Fig. 3: Imagem típica do microcontrolador AT89S52 8051

LCD 16×2

A tela LCD (Liquid Crystal Display) é um módulo de exibição eletrônico e encontra uma ampla gama de aplicações. Um display LCD 16×2 é um módulo muito básico e muito comumente usado em vários dispositivos e circuitos. Esses módulos são preferidos a sete segmentos e outros LEDs multisegmentados. As razões são: os LCDs são econômicos; facilmente programável; não tem limitação de exibição de caracteres especiais e até personalizados (ao contrário de sete segmentos), animações e assim por diante.

Um LCD 16×2 significa que pode exibir 16 caracteres por linha e existem 2 dessas linhas. Neste LCD, cada caractere é exibido em uma matriz de 5×7 pixels. Este LCD possui dois registros, a saber, Comando e Dados.

O registrador de comando armazena as instruções de comando fornecidas ao LCD. Um comando é uma instrução dada ao LCD para executar uma tarefa predefinida, como inicializá-lo, limpar a tela, definir a posição do cursor, controlar a exibição, etc.

O registro de dados armazena os dados a serem exibidos no LCD. Os dados são o valor ASCII do caractere a ser exibido no LCD. Clique para saber mais sobre a estrutura interna de um LCD.

Diagrama de pinos do LCD de caracteres 16X2

Fig. 4: Diagrama de pinos do LCD de 16X2 caracteres

DS1307

O relógio serial em tempo real (RTC) DS1307 é um relógio/calendário decimal completo com codificação binária (BCD) de baixo consumo de energia mais 56 bytes de NV SRAM. Endereço e dados são transferidos serialmente através de um barramento bidirecional I²C. O relógio/calendário fornece informações sobre segundos, minutos, horas, dia, data, mês e ano. A data do final do mês é ajustada automaticamente para meses com menos de 31 dias, incluindo correções para anos bissextos. O relógio funciona no formato de 24 ou 12 horas com indicador AM/PM. O DS1307 possui um circuito de detecção de energia integrado que detecta falhas de energia e alterna automaticamente para a fonte de backup. A operação de cronometragem continua enquanto a peça opera a partir da fonte de reserva.

Imagem típica do DS1307 RTC IC

Fig. 5: Imagem típica do DS1307 RTC IC

Código fonte do projeto

###

#include
sbit rs=P3^0;
sbit en=P3^1; 
sbit SDA=P1^0;              //data pin for ds1307 bi-directional bit
sbit SCL=P1^1;             //clock pin for ds1307 output bit
sbit alarm_set=P1^2;       //set alarm input bit
sbit alarm_beep=P1^3;      //alarm indicator output bit
sbit next=P3^2;            //increament digit
sbit inc=P3^3;            //increament value input bit
sbit set=P3^4;           //set time input bit
void set_time ;        //time/date/day set function
void display ;          //time/date/day display function 
void alarm ;            //alarm set function
char ack;
unsigned char day1=1;
unsigned char k,x;
unsigned int date=1, mon=1, year=0x14, hour=0, min=0, sec=0; 
unsigned int alarm_min, alarm_hour; 
void I2CStart 
{
SDA=1;SCL=1,SDA=0,SCL=0;
}                             //"start" function for communicate with ds1307 RTC
void I2CStop 
{
SDA=0,SCL=1,SDA=1;
}                                //"stop" funci=tion for communicate wit ds1307 RTC
unsigned char I2CSend(unsigned char Data)      //send data to ds1307 
{
char i;
static bit ack_bit;
for(i=0;i<8;i++)
{
if(Data & 0x80) SDA=1;
else SDA=0;
SCL=1;
Data<<=1;
SCL=0;
}
SDA=1,SCL=1;
ack_bit=SDA;
SCL=0;
return ack_bit;
}
unsigned char I2CRead(char ack)           //receive data from ds1307
{
unsigned char i, Data=0;
SDA=1;
for(i=0;i<8;i++)
{
Data<<=1;
do{SCL=1;}
while(SCL==0);
if(SDA) Data =1;
SCL=0;
}
if(ack)SDA=0;
else SDA=1;
SCL=1;
SCL=0;
SDA=1;
return Data;
}
void delay(unsigned int time)                // delay function
{
unsigned int i,j;
for(i=0;i
//without time and alarm set

#include
sbit rs=P3^0;
sbit en=P3^1; 
sbit SDA=P1^0;
sbit SCL=P1^1;
char ack;
char array(7);
void I2CStart {SDA=1;SCL=1,SDA=0,SCL=0;}
void I2CStop {SDA=0,SCL=1,SDA=1;}
unsigned char I2CSend(unsigned char Data)
{
char i;
static bit ack_bit;
for(i=0;i<8;i++)
{
if(Data & 0x80) SDA=1;
else SDA=0;
SCL=1;
Data<<=1;
SCL=0;
}
SDA=1,SCL=1;
ack_bit=SDA;
SCL=0;
return ack_bit;
}
unsigned char I2CRead(char ack)
{
unsigned char i, Data=0;
SDA=1;
for(i=0;i<8;i++)
{
 Data<<=1;
 do{SCL=1;}
 while(SCL==0);
 if(SDA) Data =1;
 SCL=0;
}
if(ack)SDA=0;
else SDA=1;
SCL=1;
SCL=0;
SDA=1;
return Data;
}
void delay(int time)
{unsigned int i,j;
for(i=0;i

Diagramas de circuito

Diagrama de circuito-8051-Microcontrolador-DS1307-IC-Based-Real-Time-Clock
Diagrama de circuito-8051-Microcontrolador-DS1307-IC-Based-Real-Time-Clock

Vídeo do projeto

https://www.youtube.com/watch?v=I5kWgN_wW1I

Conteúdo Relacionado

Uma rede de sensores é incorporada em todos os...
O controlador do motor é um dos componentes mais...
ESP32-CAM é um módulo de câmera compacto que combina...
A evolução dos padrões USB foi fundamental para moldar...
A SCHURTER anuncia um aprimoramento para sua conhecida série...
A Sealevel Systems anuncia o lançamento da Interface Serial...
A STMicroelectronics introduziu Diodos retificadores Schottky de trincheira de...
Determinar uma localização precisa é necessário em várias indústrias...
O novo VIPerGaN50 da STMicroelectronics simplifica a construção de...
A Samsung Electronics, fornecedora de tecnologia de memória avançada,...
O mercado embarcado tem uma necessidade de soluções de...
Você provavelmente já se deparou com o termo 'arrastar'...
Você provavelmente tem um Isolador de suporte Se você...
Você provavelmente já viu permanecer um isolante sente-se em...
Você provavelmente já viu Isoladores de manilha entronizados em...
Você provavelmente já passou por situações em que o...
返回網誌

發表留言

請注意,留言須先通過審核才能發佈。