Read an Excerpt
  PIC in Practice 
 A Project-Based Approach 
 By D. W. Smith 
 Newnes 
  Copyright © 2006   Dave Smith 
All right reserved.
 ISBN: 978-0-08-046498-5 
    Chapter One 
  Introduction to the PIC  microcontroller    
  A microcontroller is a computer control system on a single chip. It has  many electronic circuits built into it, which can decode written instructions and  convert them to electrical signals. The microcontroller will then step through  these instructions and execute them one by one. As an example of this a  microcontroller could be instructed to measure the temperature of a room and  turn on a heater if it goes cold.  
  Microcontrollers are now changing electronic designs. Instead of hard wiring  a number of logic gates together to perform some function we now use  instructions to wire the gates electronically. The list of these instructions given  to the microcontroller is called a program.  
  
  The aim of the book  
  The aim of the book is to teach you how to build control circuits using  devices such as switches, keypads, analogue sensors, LEDs, buzzers, 7 segment  displays, alpha-numeric displays, radio transmitters etc. This is done by introducing  graded examples, starting off with only a few instructions and gradually  increasing the number of instructions as the complexity of the examples  increases.  
  Each chapter clearly identifies the new instructions added to your vocabulary.  
  The programs use building blocks of code that can be reused in many different  program applications.  
  Complete programs are provided so that an application can be seen working.  The reader is then encouraged to modify the code to alter the program in order  to enhance their understanding.  
  Throughout this book the programs are written in a language called assembly  language which uses a vocabulary of 35 words called an instruction set.  In order to write a program we need to understand what these words mean and  how we can combine them.  
  The complete instruction set is shown in Chapter 19 Instruction Set, Files and  Registers.  
  All of the programs illustrated in the book are available from:  books.elsevier.com/uk//newnes/uk/subindex.asp?maintarget=  companions/defaultindividual.asp&isbn=0750648120  
  You will of course need a programmer to program the instructions into the  chip. The assembler software, MPASM, which converts your text to the  machine code is available from Microchip on microchip.com this website  is a must for PIC programmers.  
  
  Program memory  
  Inside the microcontroller the program we write is stored in an area  called EPROM (Electrically Programmable Read Only Memory), this  memory is non-volatile and is remembered when the power is switched off.  The memory is electrically programmed by a piece of hardware called  a programmer.  
  The instructions we program into our microcontroller work by moving  and manipulating data in memory locations known as user files and registers.  This memory is called RAM, Random Access Memory. For example in  the room heater we would measure the room temperature by instructing the  microcontroller via its Analogue to Digital Control Register (ADCON0)  the measurement would then be compared with our data stored in one of  the user files. A STATUS Register would indicate if the temperature was  above or below the required value and a PORT Register would turn the  heater on or off accordingly. The memory map of the 16F84 chip is shown in  Chapter 6.  
  PIC Microcontrollers are 8 bit micros, which means that the memory locations,  the user files and registers are made up of 8 binary digits shown in Figure 1.1.  
  Bit 0 is the Least Significant Bit (LSB) and Bit 7 is the Most Significant  Bit (MSB).  
  The use of these binary digits is explained in Appendix C.  
  When you make an analogue measurement, the digital number, which results,  will be stored in a register called ADRES. If you are counting the number  of times a light has been turned on and off, the result would be stored as an  8 bit binary number in a user file called, say, COUNT.  
  
  Microcontroller clock  
  In order to step through the instructions the microcontroller needs a clock  frequency to orchestrate the movement of the data around its electronic  circuits. This can be provided by 2 capacitors and a crystal or by an internal  oscillator circuit.  
  In the 16F84 microcontroller there are 4 oscillator options.  
   An RC (Resistor/Capacitor) oscillator which provides a low cost solution.  
   An LP oscillator, i.e. 32kHz crystal, which minimises power consumption.  
   XT which uses a standard crystal configuration.  
   HS is the high-speed oscillator option.  
  
  Common crystal frequencies would be 32kHz, 1MHz, 4MHz, 10MHz  and 20MHz.  
  Newer microcontrollers, such as the 16F818 and 12F629, have an oscillator  built on the chip so we do not need to add a crystal to them.  
  Inside the Microcontroller there is an area where the processing (the clever  work), such as mathematical and logical operations are performed, this is  known as the central processing unit or CPU. There is also a region where  event timing is performed and another for interfacing to the outside world  through ports.  
  
  The microcontroller system  
  The block diagram of the microcontroller system is shown in Figure 1.2.  
   The input components would consist of digital devices such as, switches,  push buttons, pressure mats, float switches, keypads, radio receivers etc. and  analogue sensors such as light dependant resistors, thermistors, gas sensors,  pressure sensors, etc.  
   The control unit is of course the microcontroller. The microcontroller will  monitor the inputs and as a result the program would turn outputs on and  off. The microcontroller stores the program in its memory, and executes the  instructions under the control of the clock circuit.  
   The output devices would be made up from LEDs, buzzers, motors, alpha  numeric displays, radio transmitters, 7 segment displays, heaters, fans etc.  
  
  The most obvious choice then for the microcontroller is how many  digital inputs, analogue inputs and outputs does the system require.  This would then specify the minimum number of inputs and outputs (I/O)  that the microcontroller must have. If analogue inputs are used then the  microcontroller must have an Analogue to Digital (A/D) module inside.  
  The next consideration would be what size of program memory storage  is required. This should not be too much of a problem when starting out,  as most programs would be relatively small. All programs in this book fit into  a 1k program memory space.  
  The clock frequency determines the speed at which the instructions are  executed. This is important if any lengthy calculations are being undertaken.  The higher the clock frequency the quicker the micro will finish one task and  start another.  
  Other considerations are the number of interrupts and timer circuits required,  how much data EEPROM if any is needed. These more complex operations are  considered later in the text.  
  In this book the programs requiring analogue inputs have been implemented  on the 16F818 and 16F872 micros. Programs requiring only digital  inputs have used the 16F84 and 16F818. The 16F818 and 16F84 devices  have 1k of program memory and have been run using a 32.768kHz clock  frequency or the internal oscillator on the 16F818. There are over 100 PIC  microcontrollers, the problem of which one to use need not be considered until  you have understood a few applications.  
  
  Types of microcontroller  
  The list of PIC Microcontrollers is growing almost daily. They include devices  for all kinds of applications, for example the 18F8722 has 64k of EPROM  memory, 3938 bytes of RAM (User files), 1024 bytes of EEPROM, 16 10-bit  A/D channels, a voltage reference, 72 inputs and outputs (I/O), 3–16 bit and  2–8 bit timers.  
  There are basically two types of microcontrollers, Flash devices and One  Time Programmable Devices (OTP).  
  The flash devices can be reprogrammed in the programmer whereas OTP  devices once programmed cannot be reprogrammed. All OTP devices however  do have a windowed variety, which enables them to be erased under ultra violet  light in about 15 minutes, so that they can be reprogrammed. The windowed  devices have a suffix JW to distinguish them from the others.  
  The OTP devices are specified for a particular oscillator configuration R-C,  LP, XT or HS. See Appendix A Microcontroller Data.  
  16C54 configurations are:  
  16C54JW    Windowed device  16C54RC    OTP, R-C oscillator  16C54LP    OTP, LP oscillator, 32kHz  16C54XT    OTP, XT oscillator, 4MHz  16C54HS    OTP, HS oscillator, 20Mhz  
  
  In this book the two main devices investigated are the 16F84 and the 16F818  flash devices. The 16F84 at present is the main choice for beginners, but  should be replaced in popularity by the better and cheaper 16F818. They  have their program memory made using Flash technology. They can be  programmed, tested in a circuit and reprogrammed if required without the need  for an ultra violet eraser.  
  
  Microcontroller specification  
  You specify a device with its Product Identification Code.  This code specifies:  
   The device number.  
   If it is a Windowed, an OTP, or flash device. The windowed device is  specified by a JW suffix. OTP devices are specified by Oscillator Frequency,  and the Flash devices are specified with an F such as 16F84.  
   The oscillation frequency, usually 04 for devices working up to 4MHz.,  10 up to 10MHz or 20 up to 20MHz. 20MHz devices are of course more  expensive than 4MHz devices.  
   Temperature range, for general applications 0°C to +70°C is usually  specified.  
  
  The Product Identification System for the PIC Micro is shown in Figure 1.3.  
  
  Using the microcontroller  
  In order to use the microcontroller in a circuit there are basically two areas  you need to understand:  
  1. How to connect the microcontroller to the hardware.  
  2. How to write and program the code into the microcontroller.  
  
  1 Microcontroller hardware  
  The hardware that the microcontroller needs to function is shown in  Figure 1.4. The crystal and capacitors connected to pins 15 and 16 of the  16F84 produce the clock pulses that are required to step the microcontroller  through the program and provide the timing pulses. (The crystal and capacitor  can be omitted if using an on board oscillator in e.g. 16F818). The 0.1mF  capacitor is placed as close to the chip as possible between 5v and 0v. Its role is  to divert (filter) any electrical noise on the 5v power supply line to 0v, thus  bypassing the microcontroller. This capacitor must always be connected to  stop any noise affecting the normal running of the microcontroller.  
  
  Microcontroller power supply  
  The power supply for the microcontroller needs to be between 2v and 6v. This  can easily be provided from a 6v battery as shown in Figure 1.5.  
  The diode in the circuit drops 0.7v across it reducing the applied voltage to  5.3v. It provides protection for the microcontroller if the battery is accidentally  connected the wrong way round. In that case the diode would be reversed  biased and no current would flow.  
  
  7805, Voltage regulator circuit  
  Probably the most common power supply connection for the microcontroller  is a 3 terminal voltage regulator, I.C., the 7805. The connection for this is  shown in Figure 1.6.  
  The supply voltage, Vin, to the 7805 can be anything from 7v to 30v.  
  The output voltage will be a fixed 5v and can supply currents up to 1amp.  So battery supplies such as 24v, 12v, 9v etc. can be accommodated.  
  
  Power dissipation in the 7805  
  Care must be taken when using a high value for Vin. For example if Vin = 24v  the output of the 7805 will be 5v, so the 7805 has 24 - 5 = 19v across it. If  it is supplying a current of 0.5amp to the circuit then the power dissipated  (volts × current) is 19 × 0.5 = 9.5watts. The regulator will get hot! and will  need a heat sink to dissipate this heat.  
  If a supply of 9v is connected to the regulator it will have 4v across it and  would dissipate 4 × 0.5 = 2watts.  
  In the circuits used in this book the microcontroller only requires a current  of 15µA so most of the current drawn will be from the outputs. If the output  current is not too large say >100mA (0.1A) then with a 9v supply the  power dissipated would be 4 × 0.1 = 0.4watts and the regulator will stay cool  without a heatsink.  
  
  Connecting switches to the microcontroller  
  The most common way of connecting a switch to a microcontroller is via  a pull-up resistor to 5v as shown in Figure 1.7.  
  When the switch is open, 5v, a logic 1 is connected to the micro.  
  When the switch is closed, 0v, a logic 0 is connected to the micro.  
  (Continues...)  
  
     
 
 Excerpted from PIC in Practice by D. W. Smith  Copyright © 2006   by Dave Smith.   Excerpted by permission of Newnes. All rights reserved. No part of this excerpt may be reproduced or reprinted without permission in writing from the publisher.
Excerpts are provided by Dial-A-Book Inc. solely for the personal use of visitors to this web site.