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.

Interfacing ATMega32 to 74HC595 shift register
ATMega16 ATMega32 Experiment Board PCB from PCBWay

No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)