Bits and Bytes + Controlling 8 LED with 3 Pins Binary Counting and Shift Registers.

14
Bits and Bytes + Controlling 8 LED with 3 Pins Binary Counting and Shift Registers

Transcript of Bits and Bytes + Controlling 8 LED with 3 Pins Binary Counting and Shift Registers.

Bits and Bytes+

Controlling 8 LED with 3 Pins

Binary Countingand

Shift Registers

Decimal vs Binary

In our everyday lives we use a base 10 systems. Every time we get to 10, we start counting again and basically we add all the “clumps” of 10 and anything less than 10, to designate a value so for instances the number, 11 = 10+1 or the number, 157 = 10 +10+10+10+10+10+10+10+10+10+10+10+10+10+10 + 7.

In a computer, we use a base 2 or binary system.Every time we get to 2, we start counting again andlike with the decimal system, we add all the“clumps”of 2 and anything less than 10, to designate a value. Electrical signals can be high or low, on or off andbinary with its number of 0 and 1, can easily betranslated so a set of instructions can be transmittedto the various circuits of a computer.

Data and values are stored in bytes. A bit is a single part of a byte.

A bit is so small it can only have 2 values.

0 or 1

If a bit is 0, it is “on”

If a bit is 1, it is “off”

A byte is made of up 8 individual bits.

A byte is the unit most computers use to represent a character such as a letter, number, or typographic symbol (for example, "g", "5", or "?"). A byte can also hold a string of bits that need to be used in some larger unit for application purposes (for example, the stream of bits that constitute a visual image for a program that displays images or the string of bits that constitutes the machine code of a computer program). In some computer systems, four bytes constitute a word, a unit that a computer processor can be designed to handle efficiently as it reads and processes each instruction

By combining the bits in a byte and turning ones on or off, we

can represent in a byte any number between 0 and 255.

By using multiple bytes or bits we can represent ever larger

numbers.

Binary is the basis of how a microcontroller such as an communicates with its devices.Think about the Blink program and how it sends HIGH and LOW to turn an LED on and off. What if you ran out of inputs and outputs on the Arduino or want to use the I/O to control peripherals more Arduino’s 13 digital and 6 analog I/Os. You can use a chip calleda shift register. The one we are using today is called the 74HC595, allows you to control 8 LEDs using only 3 pins on the Arduino. The 74HC595 is an 8 bit shit register meaning that it can receive 8 bits of information or a series of 8 0s and 1s that can be turned on or off.

The 74HC595 is a series to parallel shift register meaning that is takes in a stream of 8 0s and 1s and then sends each values to one of the pins on the shift register. Let’s take a look at oneand then understand how it works.

SHIFT REGISTERS

Q0-Q7 are where each of the 8bits of data are distributed. A streamof 8 zeros and ones comes into the chip as a group and then eachzero or one is shunted to one ofThe Q pins—serial input, parallel output.And in the case of lighting an LED, each one of 8 can be controlled with the incoming 0 or 1.

The pins are numbered counterclockwise starting from the upper left. The top of thechip usually has a notch in it.

The process is initiated by the SH_CP, pin 11, or the shift register clock pin which pulse a signal. Simultaneously, the data is sent by pin 15, DS, or Serial data input. Each pulse of the clock denotes the beginning and the end of a bit. After 8 bits ofdata have been sent and “collected”, the latch pin or pin 12, the storage register clock pin, releases all 8 bits to populated Q0-Q7.

How this all works is through something called "synchronous serial communication," i.e. you can pulse one pin up and down thereby communicating a data byte to the register bit by bit. It's by pulsing second pin, the clock pin, that you delineate between bits.

This is in contrast to using the "asynchronous serial communication" of the Serial.begin() function which relies on the sender and the receiver to be set independently to an agreed upon specified data rate.

Once the whole byte is transmitted to the register the HIGH or LOW messages held in each bit get parceled out to each of the individual output pins. This is the "parallel output" part, having all the pins do what you want them to do all at once.

Channel 2 is the clock.Channel 1 is the data.Channel 0 is the latch.

VCC is connected to 3.3 V as is pin 10, MasterReclear, Active Low. Pin 13 or OE or Output enable, active low and pin 8, GND goes to Ground. Pin 9 or Q7 (Serial Out) is not connectedBecause we are not sending anything out in thisCase.