You are on page 1of 66

DC MOTOR SPEED CONTROL THROUGH PC (P.W.M TECHNIQUE) 1.

INTRODUCTION

This project mainly deals with the speed control of a DC Motor using a PC. The type of speed control that has been chosen here is pulse width modulation PWM. This project deals with development of DC MOTOR control using PC using PWM. 12V DC Motor drives widely use Micro controllers and The project detail design and complete hardware based high performance DC drive control system will be implemented. Most recently new requirements have arisen. These include faster torque control update with flexible design capability of motion peripherals for high performance military drive applications. Pulse width modulation type of speed control is chosen here because of high accuracy, high reliability, quick response and high efficiency. Our project deals with the types of problems that we face due to disturbances in supply voltage or load on the motor and enables us to overcome these difficulties by helping us with the appropriate software and hardware. We propose to design an embedded controller that helps us maintain the speed of the DC machine within the specific limits and a remote operate the embedded controller. Here, the pulses from the remote are sensed by sensor and are transmitted to the embedded controller. This controller contains a programmable PWM port. The output of this PWM port is used to control power delivered by a power regulating device

1:2 HARDWARE COMPONENTS: 1. POWERSUPPLY UNIT (TRANSFORMER, 7805 & 7812 REGULATORS, CAPACITOR 1000mf) 2. 89C52 MICROCONTROLLER 3. DC MOTOR 4. ULN 2803 DRIVER IC 5. DB 9 CONNECTOR 6. MAX 232 IC
7. Voltage regulator 7805. 8. Diode IN4007 9. Serial communication used for downloading the hex code. 10 .16X2 LCD interfacing

1:3 SOFTWARE:

Soft Ware developed for this project in Embedded C using KEIL-3.


A KEIL Cross compiler for compiling and linking the code written for AT89C52. Serial communication software for downloading code to AT89C52. Operating system: Windows XP

2. EMBEDDED SYSTEMS

2.1 DEFINITIONS: Embedded system is a combination of hardware and software, it is also named as Firm ware. An embedded system is a special purpose computer system, which is completely encapsulated by the device it controls. It is a computercontrolled system An embedded system is a specialized system that is a part of a larger system or machine. As a part of a larger system it largely determines its functionality. Embedded systems are electronic devices that incorporate microprocessors with in their implementations. The main purpose of the microprocessors are simplify the system design and improve flexibility. In the embedded systems, the software is often stored in a read only memory (RAM) chip. Embedded systems provide several major functions including monitoring of the analog environment by reading data from sensors and controlling actuators.

Inputs (actuator)

(sensor)

Embedded System

Outputs

Figure 2.1 A real time system interacts with environment

2.2 EXAMPLES OF EMBEDDED SYSTEMS:

Embedded systems are found in wide range of application areas. Originally they were used only for expensive industrial control applications, but as technology brought down the cost of dedicated processors, they began to appear in moderately expensive applications such as automobiles, communication and office equipments and television Today's embedded systems are so inexpensive that they are used in almost every electronic product in our life. Embedded systems are often designed for mass production. Some examples of embedded systems: Automatic Teller Machines Cellular telephone and telephone switches Computer network equipment Computer printers Disk drives Engine controllers and antilock break controllers for automobiles Home automation products Handheld calculators Household appliances Medical equipment Measurement equipment Multifunction wrist watches Multifunction printers Mobile phones with additional capabilities Programmable Logic Controllers

2.3 MICROPROCESSOR AND MICROCONTROLLER: Microprocessors and microcontrollers are used in embedded system products. An embedded product uses a microprocessor (or microcontroller) to do one task and one task only. Microprocessor as the term come to be known is a general purpose digital computer central processing unit. Although popularly known as a "computer on chip", the microprocessor is in no sense a complete digital computer. Microprocessor CPU contains Arithmetic Logical Unit, a program counter, a stack pointer, some working registers, a clock timing circuits and interrupt circuit. To make complete microcomputer memory must add, usually Read Only Memory, Random Access Memory, memory decoders and an Input/Output devices. In addition special purpose devices such as interrupts, counters may be added to relieve the CPU from time consuming counting or timing chores. The hardware design of microprocessor CPU is arranged so that a small or very large system can be configured around the CPU as the application demands. The internal CPU architecture as well as the resultant machine level code that operates that architecture is comprehensive but as flexible as possible. The prime use of microprocessor is to read data perform extensive calculations on that data and store those calculations in mass storage

devices or display the results for user use. The program is used by microprocessor are stored in the mass storage devices and loaded into RAM as the user directs. A microcontrollers is a computer on a single chip .Micro suggest that the device is small and controller tells that the device is used to control objects, process or events Microcontroller is a highly integrated chip that contains all the devices comprising a computer. Typically this includes a CPU, RAM, Input/ Output ports, timers, interrupts. So microcontroller is also called as "true computer on a chip". Unlike a general purpose computer which also includes all of these devices. A microcontroller is designed for a very specific task to control a particular system. A microcontroller is a general purpose device but one that is meant to read data, perform limited calculations on that data and control its environment based on those calculations. The prime use of microcontroller is to control the operation of machine using a fixed program that is stored in ROM that does not change over the life time of the system. The advantages of microcontroller over microprocessor are cost is less speed is more power consumption is less compact device external components are minimum

2.4 MICROPROCESSOR VERSES MICROCONTROLLER:

The contrast between microprocessor and microcontroller is best exemplified by the fact that: Most microprocessor have operational codes for moving data from external memory to CPU, microcontroller may have one or two. Microprocessor may have one or two types of bit handling instructions microcontroller will have many. Microprocessor concerned with rapid movement of code and data from external address to the chip, microcontroller is concerned with rapid data movement of bits with in chip. Microcontroller can function as a computer with out addition of external devices, but microprocessor must have many additions to operate a computer.

3. PC BASED DC MOTOR SPEED CONTROL BLOCK DIAGRAM

MAX 232

8 0 5 2

Dc motor ULN 2803 Driver

PC

4.MICROCONTROLLER
4:1 A BRIEF HISTORY OF 8051: In 1981, Intel Corporation introduced an 8 bit microcontroller called 8051. this microcontroller had 128 bytes of RAM, 4K bytes of chip ROM, two timers, one serial port, and four ports all on a single chip. At the time it was also referred as A SYSTEM ON A CHIP The 8051 is an 8-bit processor meaning that the CPU can work only on 8 bits data at a time. Data larger than 8 bits has to be broken into 8 bits pieces to be processed by the CPU. The 8051 has a total of four I\O ports each 8 bit wide. There are many versions of 8051 with different speeds and amount of onchip ROM and they are all compatible with the original 8051. this means that if you write a program for one it will run on any of them. The 8051 is an original member of the 8051 family. There are two other members in the 8051 family of microcontrollers. They are 8052 and 8031. All the three microcontrollers will have the same internal architecture, but they differ in the following aspects. 8031 has 128 bytes of RAM, two timers and 6 interrupts. 8051 has 4K ROM, 128 bytes of RAM, two timers and 6 interrupts. 8052 has 8K ROM, 128 bytes of RAM, three timers and 8

interrupts. Of the three microcontrollers, 8051 is the most preferable. Microcontroller supports both serial and parallel communication.

In the concerned project 8052 microcontroller is used. Here microcontroller used is AT89C52, which is manufactured by ATMEL laboratories.

4:2 Description of 89C52 Microcontroller:

The AT89C52 provides the following standard features: 8Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full duplex serial port, onchip oscillator, and clock circuitry. In addition, the AT89C52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port, and interrupt system to continue functioning. The Power down Mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next hardware reset. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is a powerful microcomputer which provides a highly flexible and cost effective solution to many embedded control applications.

4:3 Features of Microcontroller (8052): Compatible with MCS-51 Products 8 Kbytes of In-System Reprogrammable Flash Memory
10

Endurance: 1,000 Write/Erase Cycles Fully Static Operation: 0 Hz to 24 MHz Three-Level Program Memory Lock 256 x 8-Bit Internal RAM 32 Programmable I/O Lines Three 16-Bit Timer/Counters Eight vector two level Interrupt Sources Programmable Serial Channel Low Power Idle and Power Down Modes

In addition, the AT89C52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes.

The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator disabling all other chip functions until the next hardware reset.

11

4:4 Block Diagram of Microcontroller:

Figure 4.1 Block Diagram Of 8052

12

4.5 Pin Configurations:

Figure 4.2 Pin Diagram of 8952

4.6 Pin Description:

VCC : Pin 40 provides Supply voltage to the chip. The voltage source is +5v

GND : Pin 20 is the grounded

13

Port 0: Port 0 is an 8-bit open drain bidirectional I/O port from pin 32 to 39. As an output port each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs. Port 0 may also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode P0 has internal pull-ups. Port 0 also receives the code bytes during Flash programming, and outputs the code bytes during program verification. External pull-ups are required during program verification.

Port 1: Port 1 is an 8-bit bidirectional I/O port with internal pull-ups from pin 1 to 8. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pull-ups. Port 1 also receives the low-order address bytes during Flash programming and program verification. Port 2: Port 2 is an 8-bit bidirectional I/O port with internal pull-ups from pin 21 to 28. The Port 2 output buffers can sink / source four TTL inputs. When 1s are written to Port 2 pins they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 2 pins that are

14

externally being pulled low will source current (IIL) because of the internal pull-ups.

Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @ DPTR). In this application it uses strong internal pull-ups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification.

Port 3: Port 3 is an 8-bit bidirectional I/O port with internal pull-ups from pin 10 to 17. The Port 3 output buffers can sink / source four TTL inputs. When 1s are written to Port 3 pins they are pulled high by the internal pull-ups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pull-ups.

Port 3 also serves the functions of various special features of the AT89C51 as listed below:

15

Table 4.1 Special Features of 89C52

Port 3 also receives some control signals for Flash programming and programming verification.
RST:

Pin 9 is the Reset input. It is active high. Upon applying a high pulse to this pin, the microcontroller will reset and terminate all activities. A high on this pin for two machine cycles while the oscillator is running resets the device.

ALE/PROG: Address Latch is an output pin and is active high. Address Latch Enable

output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming. In normal operation ALE is emitted at a constant rate of 1/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC

16

instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller is in external execution mode.

PSEN:

Program Store Enable is the read strobe to external program memory. When the AT89C52 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory.

EA/VPP:

External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset. EA should be strapped to VCC for internal program executions. This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming, for parts that require 12-volt VPP.

XTAL1:

Input to the inverting oscillator amplifier and input to the internal clock operating circuit.
XTAL2:

Output from the inverting oscillator amplifier. 4.7 Oscillator Characteristics:

17

XTAL1 and XTAL2 are the input and output, respectively, of an inverting amplifier which can be configured for use as an on chip oscillator, as shown in Figure 5.3. Either a quartz crystal or ceramic resonator may be used. To drive the device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven as shown in Figure.4.1

Figure: crystal connections

Figure: 4.3 External Clock Drive Configuration

There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by two flip-

18

flop, but minimum and maximum voltage high and low time specifications must be observed.

4.8 TIMERS: Timer 0 and 1: Timer 0 and Timer 1 in the AT89C52 operate the same way as Timer 0 and Timer 1 in the AT89C51.

Timer 2: Timer 2 is a 16-bit Timer/Counter that can operate as either a timer or an event counter. The type of operation is selected by bit C/T2 in the SFR T2CON. Timer 2 has three operating modes: capture, auto-reload (up or down counting), and baud rate generator. The modes are selected by bits in T2CON, as shown in Table 5.2. Timer 2 consists of two 8-bit registers, TH2 and TL2. In the Timer function, the TL2 register is incremented every machine cycle. Since a machine cycle consists of 12 oscillator periods, the count rate is 1/12 of the oscillator frequency.

Table: 4.8.1 Timer 2 Operating Modes In the Counter function, the register is incremented in response to a 1-to-0 transition at its corresponding external input pin, T2. In this function, the external input is sampled during S5P2 of every machine cycle. When the

19

samples show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3P1 of the cycle following the one in which the transition was detected. Since two machine cycles (24 oscillator periods) are required to recognize a 1-to-0 transition, the maximum count rate is 1/24 of the oscillator frequency. To ensure that a given level is sampled at least once before it changes, the level should be held for at least one full machine cycle. There are no restrictions on the duty cycle of external input signal, but it should for at least one full machine to ensure that a given level is sampled at least once before it changes Interrupts: The AT89C52 has a total of six interrupt vectors: two external interrupts (INT0 and INT1), three timer interrupts (Timers 0, 1, and 2), and the serial port interrupt. These interrupts are all shown in Figure.

Figure: 4.4 Interrupts source

20

Each of these interrupt sources can be individually enabled or disabled by setting or clearing a bit in Special Function Register IE. IE also contains a global disable bit, EA, which disables all interrupts at once. Note that Table 3 shows that bit position IE.6 is unimplemented. In the AT89C51, bit position IE.5 is also unimplemented. User software should not write 1s to these bit positions, since they may be used in future AT89 products.

4.8.2 Table 3 Interrupts Enable Register:

Timer 2 interrupt is generated by the logical OR of bits TF2 and EXF2 in register T2CON. Neither of these flags is cleared by hardware when the service routine is vectored

21

to. In fact, the service routine may have to determine whether it was TF2 or EXF2 that generated the interrupt, and that bit will have to be cleared in software. The Timer 0 and Timer 1 flags, TF0 and TF1, are set at S5P2 of the cycle in which the timers overflow. The values are then polled by the circuitry in the next cycle. However, the Timer 2 flag, TF2, is set at S2P2 and is polled in the same cycle in which the timer overflows.

Idle Mode: In idle mode, the CPU puts itself to sleep while all the on-chip peripherals remain active. The mode is invoked by software. The content of the on-chip RAM and all the special functions registers remain unchanged during this mode. The idle mode can be terminated by any enabled interrupt or by a hardware reset. It should be noted that when idle is terminated by a hardware reset, the device normally resumes program execution, from where it left off, up to two machine cycles before the internal reset algorithm takes control. On-chip hardware inhibits access to internal RAM in this event, but access to the port pins is not inhibited. To eliminate the possibility of an unexpected write to a port pin when Idle is terminated by reset, the instruction following the one that invokes Idle should not be one that writes to a port pin or to external memory.

Power down Mode:

22

In the power down mode the oscillator is stopped, and the instruction that invokes power down is the last instruction executed. The on-chip RAM and Special Function Registers retain their values until the power down mode is terminated. The only exit from power down is a hardware reset. Reset redefines the SFRs but does not change the on-chip RAM. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize.

Table 4.8.3 Status of External Pins during Idle and Power down Mode

Program Memory Lock Bits: On the chip are three lock bits which can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the table 4.8.3 When lock bit 1 is programmed, the logic level at the EA pin is sampled and latched during reset. If the device is powered up without a reset, the latch initializes to a random value, and holds that value until reset is activated. It is necessary that the latched value of EA be in agreement with the current logic level at that pin in order for the device to function properly.

23

Table 4.8.4 Lock Bit Protection Modes

Programming the Flash: The AT89C51 is normally shipped with the on-chip Flash memory array in the erased state (that is, contents = FFH) and ready to be programmed. The programming interface accepts either a high-voltage (12-volt) or a low-voltage (VCC) program enable signal. The low voltage programming mode provides a convenient way to program the AT89C51 inside the users system, while the high-voltage programming mode is compatible with conventional third party Flash or EPROM programmers. The AT89C51 is shipped with either the high-voltage or low voltage programming mode enabled. The respective top-side marking and device signature codes are listed in the following table.

Table: 4.8.5 5 Top side marking and Device Signature Codes

24

The AT89C52 code memory array is programmed byte-by-byte in either programming mode. To program any non-blank byte in the on-chip Flash Memory, the entire memory must be erased using the Chip Erase Mode.

Programming Algorithm: Before programming the AT89C52, the address, data and control signals should be set up according to the Flash programming mode table and Figures 3 and 4. To program the AT89C52, take the following steps. 1. Input the desired memory location on the address lines. 2. Input the appropriate data byte on the data lines. 3. Activate the correct combination of control signals. 4. Raise EA/VPP to 12 V for the high-voltage programming mode. 5. Pulse ALE/PROG once to program a byte in the Flash array or the lock bits. The byte-write cycle is self-timed and typically takes no more than 1.5 ms. Repeat steps 1 through 5, changing the address and data for the entire array or until the end of the object file is reached. Data Polling: The AT89C52 features Data Polling to indicate the end of a write cycle. During a write cycle, an attempted read of the last byte written will result in the complement of the written datum on PO.7. Once the write cycle has been completed, true data are valid on all outputs, and the next cycle may begin. Data Polling may begin any time after a write cycle has been initiated.

25

Ready/Busy: The progress of byte programming can also be monitored by the RDY/BSY output signal. P3.4 is pulled low after ALE goes high during programming to indicate BUSY. P3.4 is pulled high again when programming is done to indicate READY.

Program Verify: If lock bits LB1 and LB2 have not been programmed, the programmed code data can be read back via the address and data lines for verification. The lock bits cannot be verified directly. Verification of the lock bits is achieved by observing that their features are enabled.

Chip Erase: The entire Flash array is erased electrically by using the proper combination of control signals and by holding ALE/PROG low for 10 ms. The code array is written with all "1"s. The chip erase operation must be executed before the code memory can be re-programmed.

Reading the Signature Bytes: The signature bytes are read by the same procedure as a normal verification of locations 030H, 031H, and 032H, except that P3.6 and P3.7 must be pulled to a logic low. The values returned are as follows. (030H) = 1EH indicates manufactured by Atmel (031H) = 51H indicates 89C51

26

(032H) = FFH indicates 12 V programming (032H) = 05H indicates 5 V programming

Programming Interface: Every code byte in the Flash array can be written and the entire array can be erased by using the appropriate combination of control signals. The write operation cycle is self-timed and once initiated, will automatically time itself to completion.

4.8.6 Flash programming modes

27

5. POWER SUPPLY UNIT


DC power supply is the soul of electronic circuits, so we should be very cautious while designing power supply. For that we have chosen fixed IC voltage regulators to maintain constant voltage with out any fluctuations to convert A.C into D.C we are using step down transformer of 12v.In our system we need two separate voltages i.e. +5V and +12V. So to get such voltages we ate going for the fixed IC voltage regulators. We are using IC 7805 and IC 7812 with properly designed filter circuit. These are versatile, relatively inexpensive and are available with features such as programmable o/p, current/voltage boosting and floating operation for high voltage application. IC 78XX: These are fixed voltage regulators, which are having three terminals, positive voltage regulators; its having the o/p voltage options such as 5, 6, 8,12,15,18 and 24V. In 78XX, the last two numbers (XX) indicate the o/p voltage. The standard 78XX is also called as monolithic voltage regulators.

28

78XX

C1

C2

Where input capacitor C1 is used to cancel the inductive effects due to long distribution leads and the o/p capacitor C2 improves the transient response. It is intended for use as fixed voltage-regulator in a wide range of applications FEATURES: 1. Maximum current output: 0.8 Amps. 2 .No external components are required. 3. Internal thermal over load protection. 4. Internal short circuit current limiting. ABSOLUTE MAXIMUM RATINGS: 1. 2. 3. Input voltage: Max-35V OC Operating Temperature: -20 c to 80 c Internal power dissipation: Internally limited.

Power supply:

29

There are many types of power supply. Most are designed to convert high voltage AC mains electricity to a suitable low voltage supply for electronics circuits and other devices. A power supply can by broken down into a series of blocks, each of which performs a particular function.

For example a 5V regulated supply can be shown as below

Fig:5.1 Block Diagram of a Regulated Power Supply System

Similarly, 12v regulated supply can also be produced by suitable selection of the individual elements. Each of the blocks is described in detail below and the power supplies made from these blocks are described below with a circuit diagram and a graph of their output: Transformer: A transformer steps down high voltage AC mains to low voltage AC. Here we are using a center-tap transformer whose output will be sinusoidal with 36volts peak to peak value.

30

Fig: Output Waveform of transformer The low voltage AC output is suitable for lamps, heaters and special AC motors. It is not suitable for electronic circuits unless they include a rectifier and a smoothing capacitor. The transformer output is given to the rectifier circuit. Rectifier: A rectifier converts AC to DC, but the DC output is varying. There are several types of rectifiers; here we use a bridge rectifier. The Bridge rectifier is a circuit, which converts an ac voltage to dc voltage using both half cycles of the input ac voltage. The Bridge rectifier circuit is shown in the figure. The circuit has four diodes connected to form a bridge. The ac input voltage is applied to the diagonally opposite ends of the bridge. The load resistance is connected between the other two ends of the bridge. For the positive half cycle of the input ac voltage, diodes D1 and D3 conduct, whereas diodes D2 and D4 remain in the OFF state. The conducting diodes will be in series with the load resistance R L and hence the load current flows through RL. For the negative half cycle of the input ac voltage, diodes D2 and D4 conduct whereas, D1 and D3 remain OFF. The conducting diodes D2 and D4 will be in series with the load resistance RL and hence the current flows through R L in the same direction as in the previous half cycle. Thus a bi-directional wave is converted into unidirectional.

31

5.2 Fig the output waveform of the rectifier is shown as below

The varying DC output is suitable for lamps, heaters and standard motors. It is not suitable for electronic circuits unless they include a smoothing capacitor. Smoothing: The smoothing block smoothes the DC from varying greatly to a small ripple. The ripple voltage is defined as the deviation of the load voltage from its DC value. Smoothing is also named as filtering. Filtering is frequently effected by shunting the load with a capacitor. The action of this system depends on the fact that the capacitor

32

stores energy during the conduction period and delivers this energy to the loads during the no conducting period. In this way, the time during which the current passes through the load is prolonging Ted, and the ripple is considerably decreased. The action of the capacitor is shown with the help of waveform.

Fig: 5.3 The waveform of the rectified output after smoothing is given below:

Regulator:

33

Regulator eliminates ripple by setting DC output to a fixed voltage.Voltage regulator ICs are available with fixed (typically 5, 12 and 15V) or variable output voltages. Negative voltage regulators are also available Many of the fixed voltage regulator ICs has 3 leads (input, output and high impedance). They include a hole for attaching a heat sink if necessary. Zener diode is an example of fixed regulator which is shown here.

REGULATOR

34

Transformer + Rectifier + Smoothing + Regulator:

6. PWM THE TECHNIQUE


PWM is a way of digitally encoding analog signal levels. Through the use of high-resolution counters, the duty cycle of a square wave is modulated to encode a specific analog signal level. The PWM signal is still digital because, at any given instant of time, the full DC supply is either fully on or fully off. The voltage or current source is supplied to the analog load by means of a repeating series of and off pulse. The on time is the time during which the DC supply is applied to the load and the off time is the period during which that supplies is switched off. Given a sufficient bandwidth, any analog value can be encoded with PWM. Many micro controllers include PWM controllers. For example, Microchips PIC16C67 includes two, each of which has a selectable ontime and period. The duty cycle is the ratio of the on-time to the period.

35

6.1 ADVANTAGES OF PWM:

PWM is economical, space saving. The signal remains digital all the way from the processor to the controlled system. necessary. By keeping the signal No digital-to analog conversion is

digital, noise immunity is yet another benefit of choosing PWM over analog control and is the principal reason PWM is sometimes used for communication.

6.2 APPLICATIONS OF PWM: PWM is employed in a wide variety of applications, ranging from measurement and communication to power control and conversion. As a concrete example consider a PWM-controlled brake. To put it simply, a brake is a device that clamps down hard on something in many brakes, the amount of clamping pressure is controlled with an analog input signal. The more voltage or current thats applied to the brake, the more pressure the brake will exert. The output of a PWM controller could be connected to a switch between the supply and the brake to produce more stopping power, the software need only increase the duty cycle of the PWM output.

36

7 .Serial communication between PC and Microcontroller


7.1 INTRODUCTION: When a processor communicates with the outside world, it provides data in byte sized chunks. Computers transfer data in two ways: parallel and serial. In parallel data transfers, often more lines are used to transfer data to a device and 8 bit data path is expensive. The serial communication transfer uses only a single data line instead of the 8 bit data line of parallel communication which makes the data transfer not only cheaper but also makes it possible for two computers located in two different cities to communicate over telephone. Serial data communication uses two methods, asynchronous and synchronous. The synchronous method transfers data at a time while the asynchronous transfers a single byte at a time. There are some special IC chips made by many manufacturers for data communications. These chips are commonly referred to as UART (universal asynchronous receiver-transmitter) and USART (universal synchronous asynchronous receiver transmitter). The AT89C51 chip has a built in UART.

37

In asynchronous method, each character is placed between start and stop bits. This is called framing. In data framing of asynchronous communications, the data, such as ASCII characters, are packed in between a start and stop bit. We have a total of 10 bits for a character: 8 bits for the ASCII code and 1 bit each for the start and stop bits. The rate of serial data transfer communication is stated in bps or it can be called as baud rate. To allow the compatibility among data communication equipment made by various manufacturers, and interfacing standard called RS232 was set by the Electronics industries Association in 1960. Today RS232 is the most widely used I/O interfacing standard. This standard is used in PCs and numerous types of equipment. However, since the standard was set long before the advent of the TTL logic family, its input and output voltage levels are not TTL compatible. In RS232, a 1 bit is represented by -3 to -25V, while a 0 bit is represented +3 to +25 V, making -3 to +3 undefined. For this reason, to connect any RS232 to a microcontroller system we must use voltage converters such as MAX232 to connect the TTL logic levels to RS232 voltage levels and vice versa. MAX232 ICs are commonly referred to as line drivers.

The RS232 cables are generally referred to as DB-9 connector. In labeling, DB-9P refers to the plug connector (male) and DB-9S is for the socket
38

connector (female). The simplest connection between a PC and microcontroller requires a minimum of three pin, TXD, RXD, and ground. Many of the pins of the RS232 connector are used for handshaking signals. They are bypassed since they are not supported by the 8051 UART chip.

IBM PC/ compatible computers based on x86(8086, 80286, 386, 486 and Pentium) microprocessors normally have two COM ports. Both COM ports have RS232 type connectors. Many PCs use one each of the DB-25 and DB-9 RS232 connectors. The COM ports are designated as COM1 and COM2. We can connect the serial port to the COM 2 port of a PC for serial communication experiments. We use a DB9 connector in our arrangement. The AT89C51 has two pins that are used specifically for transferring and receiving data serially. These two pins are called TXD and RXD and are part of the port3 (P3.0 and P3.1). These pins are TTL compatible; therefore they require a line driver to make them RS232 compatible. One such line driver is the MAX232 chip. One advantage of MAX232 chip is that it uses a +5v power source which is the same as the source voltage for the at89c51. The MAX232 has two sets of line drivers for receiving and transferring data. The line drivers for TXD are called T1 and T2 while the line drivers for RXD are designated as R1 and R2. T1 and R1 are used for TXD and RXD of the 89c51 and the second set is left unused. In MAX232 that the TI line driver has a designation of T1 in and T1 out on pin numbers 11 and 14, respectively. The T1 in pin is the TTL side and is connected to TXD of the microcontroller, while TI out is the RS232 side that is connected to the RXD pin of the DB9 connector.

39

To allow data transfer between PC and the microcontroller system without any error, we must make sure that the baud rate of the 8051 system matches the baud rate of the PCs COM port.

8. ULN DC MOTOR DRIVER


ULN is mainly suited for interfacing between low-level circuits and multiple peripheral power loads, The series ULN20XX high voltage, high current Darlington arrays feature continuous load current ratings. The driving circuitry in- turn decodes the coding and conveys the necessary data to the stepper motor, this module aids in the movement of the arm through steppers.

40

The driver makes use of the ULN2003 driver IC, which contains an array of 7 power Darlington arrays, each capable of driving 500mA of current. At an approximate duty cycle, depending on ambient temperature and number of drivers turned on, simultaneously typical power loads totaling over 230w can be controlled. The device has base resistors, allowing direct connection to any common logic family. All the emitters are tied together and brought out to a separate terminal. Output protection diodes are included; hence the device can drive inductive loads with minimum extra components. Typical loads include relays, solenoids, stepper motors, magnetic print hammers, multiplexed LED, incandescent displays and heaters.

41

8.1.1 The main features of ULN2003 are as follows: 1. Seven Darlington per package 2. Output current 500ma per driver (600ma peak) Output voltage 50v 3. Integrated suppression diodes for inductive loads 4. Outputs can be paralleled for high current TTL/CMOS/DTL compatible inputs 5. Inputs pinned opposite outputs to simplify layout. Transient protected outputs 6. Dual In-Line plastic package or small-Outline IC package.

9. DC MOTOR
DC motors are configured in many types and sizes, including brush less, servo, and gear motor types. A motor consists of a rotor and a permanent magnetic field stator. The magnetic field is maintained using either permanent magnets or electromagnetic windings. DC motors are most commonly used in variable speed and torque. Motion and controls cover a wide range of components that in

42

some way are used to generate and/or control motion. Areas within this category include bearings and bushings, clutches and brakes, controls and drives, drive components, encoders and resolves, Integrated motion control, limit switches, linear actuators, linear and rotary motion components, linear position sensing, motors (both AC and DC motors), orientation position sensing, pneumatics and pneumatic components, positioning stages, slides and guides, power transmission (mechanical), seals, slip rings, solenoids, springs. Motors are the devices that provide the actual speed and torque in a drive system. This family includes AC motor types (single and multiphase motors, universal, servo motors, induction, synchronous, and gear motor) and DC motors (brush less, servo motor, and gear motor) as well as linear, stepper and air motors, and motor contactors and starters. In any electric motor, operation is based on simple electromagnetism. A current-carrying conductor generates a magnetic field; when this is then placed in an external magnetic field, it will experience a force proportional to the current in the conductor, and to the strength of the external magnetic field. As you are well aware of from playing with magnets as a kid, opposite (North and South) polarities attract, while like polarities (North and North, South and South) repel. The internal configuration of a DC motor is designed to harness the magnetic interaction between a current-carrying conductor and an external magnetic field to generate rotational motion. Let's start by looking at a simple 2-pole DC electric motor (here red represents a magnet or winding with a "North" polarization, while green represents a magnet or winding with a "South" polarization).

43

Every DC motor has six basic parts -- axle, rotor (a.k.a., armature), stator, commutator, field magnet(s), and brushes. In most common DC motors (and all that Beamers will see), the external magnetic field is produced by high-strength permanent magnets1. The stator is the stationary part of the motor -- this includes the motor casing, as well as two or more permanent magnet pole pieces. The rotor (together with the axle and attached commutator) rotates with respect to the stator. The rotor consists of windings (generally on a core), the windings being electrically connected to the commutator. The above diagram shows a common motor layout -- with the rotor inside the stator (field) magnets. The geometry of the brushes, commutator contacts, and rotor windings are such that when power is applied, the polarities of the energized winding and the stator magnet(s) are misaligned, and the rotor will rotate until it is almost aligned with the stator's field magnets. As the rotor reaches alignment, the brushes move to the next commutator contacts, and energize the next winding. Given our example two-pole motor, the rotation reverses the direction of current through the rotor winding, leading to a "flip" of the rotor's magnetic field, and driving it to continue rotating. In real life, though, DC motors will always have more than two poles (three is a very common number). In particular, this avoids "dead spots" in the commutator. You can imagine how with our example two-pole motor, if the rotor is exactly at the middle of its rotation (perfectly aligned with the field magnets), it will get "stuck" there. Meanwhile, with a two-pole motor, there is a moment where the commutator shorts out the power supply (i.e., both brushes
44

touch both commutator contacts simultaneously). This would be bad for the power supply, waste energy, and damage motor components as well. Yet another disadvantage of such a simple motor is that it would exhibit a high amount of torque ripple" (the amount of torque it could produce is cyclic with the position of the rotor).

So since most small DC motors are of a three-pole design, let's tinker with the workings of one via an interactive animation (JavaScript required):

You'll notice a few things from this -- namely, one pole is fully energized at a time (but two others are "partially" energized). As each brush transitions from one commutator contact to the next, one coil's field will rapidly collapse, as the next coil's field will rapidly charge up (this occurs within a few microsecond). We'll see more about the effects of this later, but in the meantime you can see that this is a direct result of the coil windings' series wiring:

45

There's probably no better way to see how an average dc motor is put together, than by just opening one up. Unfortunately this is tedious work, as well as requiring the destruction of a perfectly good motor. This is a basic 3-pole dc motor, with 2 brushes and three commutator contacts. Furthermore, modular design allows the software designer to limit the required changes whenever a module needs to be modified or extended. The functional separation main issue is to isolate as much as possible the application itself from the user interface and the underlying hardware. The user interface is the set of functions that allow the interaction between the user and the software application.

The Keil 8051 Development Tools are designed to solve the complex problems facing embedded software developers. Keil development tools for the

46

8051 Microcontroller Architecture support every level of software developer and learning about embedded software development. keil C is an integrated development system for writing embedded software. keil C comes with many function libraries, all in source code. It supports realtime programming, machine level I/O

9.1 Features of keil C:

When starting a new program, simply select the microcontroller from the Device Database and the Vision sets all compilers, assembler, linker, and memory options depending on the selections. The Keil Vision provides Debugger which accurately simulates on-chip peripherals (UART, SPI, Interrupts, I/O Ports, A/D Converter, D/A Converter, and PWM Modules) of your 8051 device. Simulation helps in understanding hardware configurations and avoids time wasted on setup problems. Additionally, with simulation, we can write and test applications before target hardware is available.

After compiling and debugging process, the program will execute in the run state and the result can be observed physically or through the configurations made depending on selections made. Numerous example programs are included to help getting started with the most popular embedded 8051 devices.

47

Keil development tools for microcontrollers are easy to learn and use, yet powerful enough for the most demanding embedded applications. The keil c Vision compiler helps you create robust, sophisticated embedded applications. The keilc Vision Debugger accurately simulates a complete microcontroller including peripherals and enables application testing without target hardware.

9.2 PROGRAMMING THE CHIP: The chip can be programmed using INTELLIGENT

UNIVERSAL PROGRAMMER from Advantech, which connects to PCs parallel port. The LabTool-48UXP features a 48-pin universal pin driver and an expandable TTL pin driver, an on-board processor lets it handle todays (and tomorrows) complicated DIP-type silicon PLDs, microprocessors and high density memory chips. The LabTool-48XP is developed for both laboratory and massproduction applications. It supports over 7000 different devices, including PAL, GAL, CPLD, EPLD, PEEL, MAX, MACH, pLSI, microprocessors, EPROM, series EPROM, PROM and Flash memory.

The LabTool-48XP performs device insertion and contact checks before it programs each device. It can detect poor pin contact and incorrect insertion, thus saving expensive chip damage due to operator error. Many EPROM and Flash memories have a built-in device and manufacturer ID. The LabTool-48XP can read this
48

information, making it useful when working with secondhand chips and devices that have had their part number removed.

9.2.1 Intelligent Universal Programmer

9.3 FEATURES OF IUP:


High Speed USB port interface. Supports 5V, 3.3V & 1.8V Devices Less that 2 seconds per M bit Programming speed No adapter required for DIL devices up to 48-pin. 48-pin universal pin driver and current limit Device insertion / continuity check Supports Windows 95/98, Windows 2000, Windows XP &

NT

3 years hardware warranty.

49

FREE software updates via the web. Serialization for Memory and Micro's Memory buffer H / L byte swap Project file save and load function
User Selectable verify VCC with one or two-pass verify voltage Automatic file format detection and conversion Pin swapping table provided for all adapters Universal adapters, for example one 44 pin PLCC adapter will

program 44 pin memory and micro devices.

9.4 Driving a dc motor: 1. The four leads of the stator winding are controlled by the four bits of the 8051 port (p1.0-p1.3). However, since the 8051 lacks sufficient current to drive the stepper motor windings, we must use a driver such as uln2003a to energize the stator. Instead of the uln2003a, we could have used transistors as drivers. 2. However, notice that if transistors are used as drivers, we must also use diodes to take care of inductive current generated when the coil is turned off. One reason that the uln2003a is preferable to the use of transistors as drivers is that the uln2003 has as internal diode to take care of back emf.

50

10.LIQUID CRYSTAL DISPLAY UNIT (LCD)


Introduction: Liquid Crystal Displays are created by sandwiching a thin (10-12 micro mm) layer of a liquid crystal fluid between two glass plates. A transparent, electrically conductive film or back plane is put up on the rear glass sheet. The transparent sections of the conductive film in the shape of the desired characters are coated on the front glass plate. When a voltage is applied between a segment and the back plane, an electric field is created in the region under the segment. The is electric field changes the transmission of light through the region under the segment film. 10.1 Liquid Crystal Display Description: In this project, JHD 162A Liquid Crystal Display (16x2), which is shown in Figure 3.9, is interfaced with the CPU.

Figure 10.1.1 JHD 162A Liquid Crystal Display

The features of JHD 162A LCD is as follows: 16 Characters x 2 Lines

51

5x7DotswithCursor Built-in controller +5v Power Supply 1/16 Duty Circle.


The pin description of the JHD 162A LCD without backlight is as shown in Table 2.13. If the LCD is having Backlight, then it will have two more pins with pin numbers 15 & 16 connected to VCC and GND respectively. Pin number 1 2 3 4 5 6 7 8 9 10 11 12 13 Symbol Level I/O Function Vss Vcc Vee RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 0/1 0/1 I I Power supply (GND) Power supply (+5V) Contrast adjust 0= Instruction input 1 = Data input 0 = Write to LCD module 1 = Read from LCD module Enable signal

1, 1->0 I 0/1 0/1 0/1 0/1 0/1 0/1 0/1

I/O Data bus line 0 (LSB) I/O Data bus line 1 I/O Data bus line 2 I/O Data bus line 3 I/O Data bus line 4 I/O Data bus line 5 I/O Data bus line 6

14 DB7 0/1 I/O Data bus line 7 (MSB) Table 10.1.2 Pin assignment for <= 80 character displays

An LCD allows an application to output a very specific message (or prompt) to the user, making the application much more user friendly and impressive. LCD's are invaluable for displaying status messages and
52

information during application debug. ASCII-input LCDs even though they have these advantages, they have a reputation of being difficult to hook up and get to work. Most alphanumeric LCD's use a common controller chip and a common connector interface. Both of these actions have resulted in alphanumeric LCDs that range in size from 8 characters to 80 (arranged as 40 b 2 or 20 b 4) and are interchangeable, without requiring hardware or software changes. The ASCII code to be displayed is 8 bits long and is sent to the LCD either 4 or 8 bits at time. If the 4-bit mode is used, two nibbles of data (sent high 4 bits then low 4 bits with an E clock pulse with each nibble) are sent to make up a full 8-bit transfer. The "E" clock is used to initiate the data transfer within the LCD. In the LCD there is a cursor, This specifies where the next data character is to be written. This cursor can be moved or be made invisible to blink. The blinking function is very rarely used because it is pretty obnoxious. Sending parallel data either as 4 or 8 bits are the two primary modes of operation. While there are secondary considerations and modes deciding how to send the data to the LCD is more critical decision to be made for an LCD interface application. 4-bit mode is best used when the speed required in an application and at least 10 I/O pins are available. 4bit mode requires minimum 6 bits. To wire a Microcontroller to an LCD 4-bit mode, just the top 4-bits (DB4-7) are written as shown in the Figure 10.1.3 below:

53

Figure 10.1.3 Data Transfer using a 4-Bit Interface

Using a shift register so that a minimum of three I/O pins is required can further reduce this. 8-bit mode could be used with a shift register, but a ninth bit (which will be used as R/S) will be required. The display contains two internal byte-wide registers, one for command (RS=0) and the second for the characters to be displayed (RS=1). The R/S bit is used to select whether data or an instruction is being transferred between the Microcontroller and the LCD. If the bit is set, the byte at the current LCD cursor position can be read or written When the bit is reset, either an instruction is being sent to the LCD or the execution status of the last instruction is read back (whether it has completed or not). The display contains two internal byte-wide registers, one for command (RS=0) and the second for characters to be displayed (RS=1). It also contains a user programmed RAM area (the character RAM) that can be programmed to generate a desired character that can be formed using a dot matrix.
54

To distinguish between these two data areas, the hex command byte 80 will be used to signify that the display RAM address 00h is chosen.
Port 1 is used to furnish the commands or data byte and ports 3.2 to 3.4 furnish register select and read/write levels. The display takes varying amounts of time to accomplish the functions. LCD bit 7 is monitored for a long high (bus) to ensure the display is not over written. A slightly more complicated LCD display (4 lines* 40 characters) is currently being used in medical diagnostic systems to run a very familiar program. 10.2 Getting The LCD To Display Text: After successfully initializing the LCD and turning the display ON,one can begin to display messages on the LCD by sending the correct instructions to it. Getting the LCD to display text is a two-step process. First, the LCD's cursor must be moved to the LCD address where the character is to be displayed. This is done with the "DDRAM Address Set" command. Second, the actual character must be written to the cursor in order to store it in the DDRAM at the cursor's location. This is performed with the "CGRAM/DDRAM Data Write" command.

10.3 LCD Busy Flag Polling: The LCD will not accept new commands while it is busy with some internal operation. This condition must be tested before sending a new command to the LCD. The "Busy Flag/Address Read" instruction should be used for this purpose. The BF bit in this instruction is the busy flag. When this bit is 1, LCD controller is busy. When BF is 0, LCD is ready for the next command. In addition to busy flag polling, this instruction is used to determine where the address of the LCD cursor is. Examples for Busy Flag testing using both 4-bit and 8-bit interfaces are shown in figures 10.3.1 and 10.3.2 respectively.

55

Figure 10.3.1 Example of busy flag testing using a 4-bit interface.

Figure 10.3.2 Example of busy flag testing using an 8-bit interface.

56

10.4 Defining LCD Custom Characters: One of the nice features of the LCD is that it allows for the creation and use of up to eight unique, user-defined characters. Character Generator RAM (CGRAM) has been added to the LCD for this purpose. Before a custom character can be used it must be created. Each character that can be displayed by the LCD is composed of a 5 x 8 grid of pixels or dots. Each of these dots can be turned either ON or OFF when a character is being displayed. Therefore, in order for the LCD controller to display a character, it must have a definition of which of the character dots need to be turned ON.

10.5 Interfacing of LCD with 89s52 Microcontroller : In this project, the JHD 162A LCD is interfaced with the 89s52 Microcontroller. Port1 pins of 89s52 are used to read and write the data from LCD by interfacing P0.0 - P0.7 lines to D0-D7 lines of LCD. Similarly Port3 pins (P3.2P3.4) are connected to control pins of LCD i.e. E, R/W and RS pins respectively.

57

11. PROJECT

CODE

#include<reg52.h> #include <STDIO.H> //////////////////////////////////////////////// #define lcd P0 ///////////////////////////////////////////////// void init_lcd(void); void cmd_lcd(unsigned char); void lcd_data(unsigned char); void display_lcd(unsigned char *); void delay_ms(unsigned int); bit receive=0; unsigned char flag; void pwm(unsigned int); void config(unsigned int value); sbit motor12=P2^7; unsigned char vall; /////////////////////////////////////////////////////////////////////////// unsigned char a;unsigned int keypress; void serial_int(void)interrupt 4 { if(RI) { RI = 0; vall = SBUF; if(vall == 'A') { flag=0; keypress=1; } if(vall == 'B') { flag=0; keypress=2; } if(vall == 'C') {flag=0; keypress=3; } if(vall == 'D') { flag=0;

58

keypress=4; } if(vall == 'E') { flag=0; keypress=5; } if(vall == 'F') { flag=0; keypress=6; }

} } void main(void) { motor12=0; TMOD = 0x20; SCON = 0x50; TH1 = 0xFD; TR1 = 1; TH0=0x00; TL0=0x00; IE = 0x92; motor12=0; init_lcd(); init_lcd(); init_lcd();

cmd_lcd(0x80); display_lcd("PC BASED DC MOTOR"); cmd_lcd(0xC0); display_lcd("SPEED CONTROLLING "); delay_ms(1000); //cmd_lcd(0x01);

59

while(1) { //delay_ms(100); pwm(keypress); } } void pwm(unsigned int d) { switch (d) { case 1: motor12=1; config(100); motor12=0; config(1); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor rotating"); cmd_lcd(0xc0); display_lcd("with max speed"); flag++; d=0; } break; case 2: motor12=1; config(30); motor12=0; config(70); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor rotating"); cmd_lcd(0xc0); display_lcd("with Med speed"); flag++;d=0; } break; case 3:

60

motor12=1; config(40); motor12=0; config(60); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor rotating"); cmd_lcd(0xc0); display_lcd("with Low 1 speed"); flag++;d=0; } break; case 4: motor12=1; config(60); motor12=0; config(40); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor rotating"); cmd_lcd(0xc0); display_lcd("with Low 2speed"); flag++;d=0; } break;

case 5: motor12=1; config(80); motor12=0; config(20); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor rotating"); cmd_lcd(0xc0); display_lcd("with Low 3speed"); flag++;d=0; } break;

61

case 6: motor12=0; config(00); motor12=0; config(00); if(flag==0) { cmd_lcd(0x01); cmd_lcd(0x80); display_lcd("Motor stop"); //cmd_lcd(0xc0); //display_lcd("with Low 3speed"); flag++;d=0; } break;

break; default: break; } } void config(unsigned int value ) { unsigned int I ; while(value) { I = 115; while(I >0) I -- ; value--; } } /////////////////////////////////////////////////////////////// void init_lcd(void) { cmd_lcd(0x28); cmd_lcd(0x0c); cmd_lcd(0x06); cmd_lcd(0x01); delay_ms(10); } void cmd_lcd(unsigned char c) { lcd = ((c & 0xf0) | 0x08); lcd = 0; lcd = ((c<<4)|0x08); lcd = 0; delay_ms(2);

62

} void lcd_data(unsigned char c) { lcd = ((c&0xf0)|0x0a); lcd = 0; lcd = ((c<<4)|0x0a); lcd = 0; delay_ms(2); } void display_lcd(unsigned char *s) { while(*s) lcd_data(*s++); } void delay_ms(unsigned int i) { unsigned int j; while(I -->0) { for(j=0;j<500;j++); } }

12. RESULT

63

PROJECT CIRCUIT DIAGRAM:

64

13.BIBILIOGRAPHY

REFERENCES: BOOKS:

65

1. MICRO CONTROLLERS BY RAMESH.S.GAONKR 2. DATA SHEETS OF VARIOUS ICS

3 .The 8051 Microcontroller Architecture, Programming & Applications Kenneth J Ayala


4. 8051 MANUAL WEB SITE: 1. WWW.CHIP.COM 2. WWW.GOOGLEARCH.COM 3. WWW.EMBEDDEDSYSTEMS.COM 4. WWW.VISUALBASIC.COM

5. www.8051 free projectsinfo.com

LIST OF FIGURES Fig No. Figure. Page N o.

66

You might also like