Fork me on GitHub

14/04/14

One-Wire com 74HC595

One-Wire com 74HC595



Navegando pela internet, achei um projeto muito interessante na qual utilizava um registrador de deslocamento, o 74HC595, comunicando com o PIC através apenas de 1 pino.( One-Wire )

Com um pequeno circuito RC, proporciona um tempo de atraso para a linha de dados. Pulsos muito curto significa que foi deslocado o bit 1. Pulsos um pouco mais longo, significa bit 0. Pulsos muito longo é usado para pulsar o latch atualizando as saídas do registrador.

Veja o projeto completo aqui.

Observações:
Funciona com clock superior ou igual à 8MHz;
O Pino Q0 do 74HC595 será sempre 0.

Criei uma biblioteca mais enxuta. Veja:

BIBLIOTECA
MikroC PRO PIC
extern sfr sbit Ow74HC595_Out;
extern sfr sbit Ow74HC595_Out_Direction; void OneWire74HC595_Init() { Ow74HC595_Out_Direction = 0; Ow74HC595_Out = 1; } void OneWire74HC595_Write( char wData ) { char i; Ow74HC595_Out = 1; for( i = 0; i < 8; i++ ) { if( wData.B7 ) { Ow74HC595_Out = 0; Delay_us( 1 ); Ow74HC595_Out = 1; Delay_us( 15 ); } else { Ow74HC595_Out = 0; Delay_us( 15 ); Ow74HC595_Out = 1; Delay_us( 30 ); } wData <<= 1; Delay_us( 30 ); } //Latch Ow74HC595_Out = 0; Delay_us( 200 ); Ow74HC595_Out = 1; Delay_us( 300 ); }
Exemplo:

sbit Ow74HC595_Out at RD0_Bit;
sbit Ow74HC595_Out_Direction at TRISD0_Bit;

//copie e cole o código da biblioteca aqui!!!

void main()
{
char i = 0;
 OneWire74HC595_Init();
 
 while( 1 )
 {
     OneWire74HC595_Write( i++ );
     Delay_ms( 1000 );
 }
}

Nenhum comentário:

Postar um comentário

Postagens Relacionadas!!