PIC is a Peripheral Interface Microcontroller which was developed in the year 1993 by the General Instruments Microcontrollers. It is controlled by software and programmed in such a way that it performs different tasks and controls a generation line. PIC microcontrollers are used in different new applications such as smart phones, audio accessories and advanced medical devices.
There are many PICs available in the market ranging from PIC16F84 to PIC16C84. These types of PICs are affordable flash PICs. Microchip has recently introduced flash chips with different types, such as 16F628, 16F877 and 18F452. The 16F877 costs twice the price of the old 16F84, but it is eight times more than the code size, with more RAM and much more I/O pins, a UART, A/D converter and a lot more features.
PIC Microcontrollers Architecture
The PIC microcontroller is based on RISC architecture. Its memory architecture follows the Harvard pattern of separate memories for program and data, with separate buses.
1. Memory Structure
The PIC architecture consists of two memories: Program memory and the Data memory.
Program Memory: This is a 4K*14 memory space. It is used to store 13-bit instructions, or the program code. The program memory data is accessed by the program counter register that holds the address of the program memory. The address 0000H is used as reset memory space and 0004H is used as interrupt memory space.
Data Memory: The data memory consists of the 368 bytes of RAM and 256 bytes of EEPROM. The 368 bytes of RAM consists of multiple banks. Each bank consists of general purpose registers and special function registers.
The special function registers consists of control registers to control different operations of the chip resources like Timers, Analog to Digital Converters, Serial ports, I/O ports, etc. For example, the TRISA register whose bits can be changed to alter the input or output operations of the port A.
The general purpose registers consists of registers that are used to store temporary data and processing results of the data. These general purpose registers are each 8-bit registers.
Working Register: It consists of a memory space that stores the operands for each instruction. It also stores the results of each execution.
Status Register: The bits of the status register denote the status of the ALU (arithmetic logic unit) after every execution of the instruction. It is also used to select any one of the 4 banks of the RAM.
File Selection Register: It acts as a pointer to any other general-purpose register. It consists of a register file address, and it is used in indirect addressing.
Another general purpose register is the program-counter register, which is a 13-bit register. The 5 upper bits are used as PCLATH (Program Counter Latch) to independently function as any other register, and the lower 8-bits are used as the program counter bits. The program counter acts as a pointer to the instructions stored in the program memory.
EEPROM: It consists of 256 bytes of memory space. It is a permanent memory like ROM, but its contents can be erased and changed during the operation of the microcontroller. The contents into EEPROM can be read from or written to, using special function registers like EECON1, EECON2, EEDATA, etc.
2. I/O Ports
PIC16 series consists of five ports, such as Port A, Port B, Port C, Port D and Port E.
Port A: It is a 16-bit port, which can be used as input or output port based on the status of the TRISA register.
Port B: It is an 8-bit port, which can be used as both input and output port. 4 of its bits when used as input can be changed upon interrupt signals.
Port C: It is an 8-bit port whose operation (input or output) is determined by the status of the TRISC register.
Port D: It is an 8-bit port, which apart from being an I/O port, acts as a slave port for connection to the microprocessor bus.
Port E: It is a 3-bit port that serves the additional function of the control signals to the A/D converter.
PIC microcontrollers consist of 3 timers, out of which the Timer 0 and Timer 2 are 8-bit timers and the Time-1 is a 16-bit timer, which can also be used as a counter.
4. A/D Converter
The PIC Microcontroller consists of 8-channels, 10-bit Analog to Digital Converter. The operation of the A/D converter is controlled by these special function registers: ADCON0 and ADCON1. The lower bits of the converter are stored in ADRESL (8 bits), and the upper bits are stored in the ADRESH register. It requires an analog reference voltage of 5V for its operation.
Oscillators are used for timing generation. PIC microcontrollers consist of external oscillators like crystals or RC oscillators. In case of crystal oscillators, the crystal is connected between two oscillator pins, and the value of the capacitor connected to each pin determines the mode of operation of the oscillator. The different modes are low-power mode, crystal mode and the high- speed mode. In case of RC oscillators, the value of the Resistor and Capacitor determine the clock frequency. The clock frequency ranges from 30 KHz to 4 MHz.
6. CCP module:
A CCP module works in the following three modes:
Capture Mode: This mode captures the time of arrival of a signal, or in other words, captures the value of the Timer1 when the CCP pin goes high.
Compare Mode: It acts as an analog comparator that generates an output when the timer1 value reaches a certain reference value.
PWM Mode: It provides pulse width modulated output with a 10-bit resolution and programmable duty cycle.
Other special peripherals include a Watchdog timer that resets the microcontroller in case of any software malfunction and a Brown out reset that resets the microcontroller in case of any power fluctuation and others. For better understanding of this PIC microcontroller we are giving one practical project which uses this controller for its operation.
Street Light that Glows on Detecting Vehicle Movement
This LED street light control project is designed to detect the vehicle movement on highway to switch on a block of street lights ahead of it, and to switch off the trailing lights to save energy. In this project, a PIC microcontroller programming is done by using embedded C or assembly language.
The power supply circuit gives the power to a whole circuit by stepping down, rectifying, filtering and regulating AC mains supply. When there are no vehicles on highway, all the lights remain off so that the power can be saved. The IR Sensors are placed on either side of the road as they sense vehicles’ movement and in turn send the commands to the microcontroller to switch on or off the LEDs. A block of LEDs will be on when a vehicle approaches near it and once the vehicle passes away from this route, the intensity becomes low or completely switched off.
The PIC microcontroller projects can be used in different applications, such as video games’ peripherals, audio accessories, etc. Apart from this, for any help regarding any projects, you can contact us by commenting in the comment section.