728x90

728x90

Monday, June 1, 2020

Interfacing 74HC165 parallel in serial out shift register to ATMega32

74HC165 is a parallel in serial out shift registers, commonly use for digital inputs expanding. It has an easy to prototype 16-pin DIP package. It's communication interface is SPI. However, without an SPI module we can use a software bit banging in the microcontroller program. The communication takes only three pins. It can handle 8 digital inputs per IC. But we can use more than 8 digital inputs by adding more ICs.

For timing detail of 74HC165 see this post.

In this example, I use PA0 to PA2 to interface with 74HC165.

Interfacing 74HC165 parallel in serial out shift register to ATMega32
Schematic diagram


Atmel Studio 7 source code:

#include <avr/io.h>
/*74HC165 read function*/
volatile char readInput(void){
 char reader=0;
 /*PINB2 as input*/
 DDRA=0x03;
 /*Raise LD pin*/
 PORTA|=(1<<1);
 for (int i=0;i<8;i++)
 {
  reader<<=1;   /*Get a one-bit digital input*/
  reader|=((PINA&0x04)?1:0);
  /*Clock the register*/
  PORTA&=~(1<<0);
  for(int i=0;i<200;i++);
  PORTA|=(1<<0);
 }
 /*Low the LD pin*/
 PORTA&=~(1<<1);
 return reader;
}
int main(void)
{
    DDRB=0xFF;
    while (1) 
    {
  PORTB=readInput();
    }
}

Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.

Interfacing 74HC165 parallel in serial out shift register to ATMega32
A running program screen shot

Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.



If you want a standard PCB for ATMega32 micro-controller, you can order my AVR Microcontroller project from PCBWay with a reasonable price. Click here to get a free $5 credit for new account.


No comments:

Post a Comment

320x50

Search This Blog

tyro-728x90