Menu

Adskeeper - header widge

728x90

Menu

Wednesday, May 13, 2020

Reading The Digital Inputs From 74HC165 Parallel-Load Shift Register With PIC16F84A

When the digital inputs of an MCU is used up, we can expand the digital inputs using various digital communication ICs such as I2C, SPI etc.

With a simple digital IC 74HC165 8-bit parallel-load shift register, reading  digital input is such an easy way.

This IC commonly found in any photocopier machine.

Reading The Digital Inputs From 74HC165 Parallel-Load Shift Register With PIC16F84A
A common SN74HC165 DIP Package.
It come with 16 pins DIP, ease of breadboard prototyping.


The SH/~LD load the 8 parallel inputs from Low to High transition.

The 8-bit parallel input labels from A to H. The internal circuitry start loading these parallel inputs at 4th clock (CLK) pulse, and shift out via QH pin.

A working waveform of 74HC165 simulated in Proteus VSM.

In this example, I use PIC16F84A to read the digital input from SN74HC165. PortB of PIC16F84A uses to output the reading the data.

PIC16F84A clocks at 4 MHz, reads the digital inputs from 74HC165.

PORTB displays the digital output to Bar graph LEDs.

The 74HC165 reads the digital inputs from DIP switches, and commanded to

shift out the data from PIC16F84A.

 The communication initiated by only three lines from PIC16F84A:


  • CLK : clock line feds to SN74HC165
  • ~EN : the Enable line feds to SH/~LD pin of SN74HC165

  • DI : the QH (SO) serial data output line from SN74HC165

The program is driven by the 74165.c driver of CCS PICC compiler. We can use more than one 74HC165 IC as we need.

C source code could be downloaded here:

/*
Digital Input expanding Using 74HC165 SPI
*/
#include<16F84A.h>
#fuses XT
#use delay(clock=4M)
//Pre-Define Parameters For 74165.c
#define EXP_IN_ENABLE   PIN_A1
#define EXP_IN_CLOCK    PIN_A0
#define EXP_IN_DI       PIN_A2
#define NUMBER_OF_74165 1
#include<74165.c>
void main(void){
   char readInput;
   output_b(0x00);
   set_tris_b(0x00);
   while(1){
      read_expanded_inputs(&readInput);
      output_b(readInput);
      delay_ms(100);
   }
}

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

Navbar

Electronics and Programming Tutorials

DIY Electronic Projects And Instruments

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (40) Analog Comparator (1) Arduino (16) ARM (32) AT89C52 (7) ATMega32 (59) ATMega644P (27) AVR (88) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (5) Display (157) Distance Sensor (3) dot matrix (1) ds1307 (10) DS18B20 (6) ds3231 (2) ds3232 (2) dsPIC (16) dsPIC30F1010 (3) dsPIC30F2010 (15) EEPROM (5) Environment Sensor (6) ESP32 (1) esp8266 (1) Graphical LCD (3) HD44780 (13) I2C (40) ILI9341 (1) Input/Output (85) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (3) LCD (88) LM35 (4) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) MikroC ARM (1) MikroC dsPIC (11) MikroC PIC (2) Module PCB (2) Motor (15) MPLABX (73) Nokia 5110 LCD (5) OLED (2) One-Wire (7) Oscillator (8) PCB (13) PCD8544 (3) PCF8574 (13) PIC (122) PIC12F (3) PIC16 (105) PIC16F628A (3) PIC16F630 (2) PIC16F716 (4) PIC16F818 (11) PIC16F818/819 (3) PIC16F84A (16) PIC16F876A (2) PIC16F877A (9) PIC16F88 (2) PIC16F887 (60) PIC18 (19) PIC18F1220 (5) PIC18F2550 (5) PIC18F4550 (14) PICKit2 (1) PICMicro PCB (4) Pin Change Interrupt (1) PLL (1) PWM (12) RTC (13) SBN0064G (1) Sensor (15) SH1106 (3) Shift Register (15) Shift Registers (19) SN74HC595N (9) Software SPI (1) Software TWI (3) SPI (44) sprinf (3) ST7735 (1) STM32 (29) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (23) STM32CubeIDE (32) STM32F103C8T6 (9) STM32F103R6 (18) STM32F401CCU6 (1) SysTick (7) temperature sensor (15) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (11) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)