21346226-Pic-Report

download 21346226-Pic-Report

of 69

description

pic based summer training report

Transcript of 21346226-Pic-Report

ACKNOWLEDGEMENT

First of all I would like to thank almighty GOD who has given this wonderful gift of life to us. He is the one who is guiding us in right direction to follow noble path of humanity. In my six weeks industrial training it is a wonderful experience to be a part of HCL TECHNOLOGIES where I have opportunity to work under brilliant minds. I owe my deep regards for the supporting and kind staff authorities who are helping me in my lean patches during these six weeks. The knowledge I am gaining throughout my studies have the practical implementation during this period. I am grateful to all the staff of HCL and for their timely support and sharing of their experience with me. I would like to express my heartiest concern for Mr. RAJNEESH KUMAR for his able guidance and for his inspiring attitude, praiseworthy attitude and honest support. Not to forget the pain staking efforts of our college training and placement cell and specially my training and placement officer Mr. v. Last but not the least I would express my utmost regards for the electronics and communication department of our Institute.

CONTENTS

1) Company profile2) Embedded Systems What is Embedded System Applications Difference between microprocessor & micro controller Types of microcontroller Architectures Difference between CISC & RISC3) PIC microcontrollers PIC 16F77A features Pin diagram of PIC16F77A Pin description of PIC16F77A Core Architecture Electrical Characterstics4) Programming of PIC Compiler Used-mikroC Features Projects Functionality5) Programming and Interfacing Advantages of C over Assembly language programming Project no. 1- LED interfacing and its blinking(port programming) Project no. 2- seven segment interfacing and display Project no. 3- Interfacing and control of stepper motor with PIC 16F77A Project no. 4-LCD interfacing and display with PIC 16F77A Project no. 5-Builtin ADC of PIC16F77A(Temperature Monitoring) Project no. 6-To study switching action of PIC pins. Project no. 7-Interfacing of keyboard matrix Project no. 8-Serial communication [b/w PC & Microcontroller]

COMPANY PROFILE HCL Technologies is an organization which is established in the field of Network Support, Network training and Embedded systems. It provides support and training in the field of networking solutions (CISCO, LINUX) and embedded systems (Micro controller based design, Electronics system design).HCL Technologies also provide Technical Research & Development support and consultancy to some Electronics companies.

Support Area (Networking Solutions)

a) LINUX / UNIX networksb) SUN networksc) CISCO devices (Routers, Switches, Firewalls, Cache Engine, RAS etc)d) Bandwidth Manager software and hardware e) Radio Linksf) Security Solutions

Design Services (Embedded Systems)a) AVR family b) MCS 51c) ELECTRONIC SYSTEM DESIGN

Network Traininga) CISCO CCNA, CCNPb) RED HAT LINUXc) SUN SOLARISd) WINDOWS 2000, 2003

HCL Technologies is a leader in education services and developer of innovative embedded solutions. To meet the demands of Post PC era HCL provides complete solutions as well as design-to-order services to satisfy its customers.

EMBEDDED SYSTEM What is Embedded System? Embedded system employs a combination of software & hardware to perform a specific function. It is a part of a larger system which may not be a computerWorks in a reactive & time constrained environment.Any electronic system that uses a CPU chip, but that is not a general-purpose workstation, desktop or laptop computer is known as embedded system. Such systems generally use microprocessors; microcontroller or they may use custom-designed chips or both. They are used in automobiles, planes, trains, space vehicles, machine tools, cameras, consumer and office appliances, cell phones, PDAs and other handhelds as well as robots and toys. The uses are endless, and billions of microprocessors are shipper every year for a myriad of applications.

In embedded systems, the software is permanently set into a read-only memory such as a ROM or flash memory chip, in contrast to a general-purpose computer that loads its programs into RAM each time. Sometimes, single board and rack mounted general-purpose computers are called "embedded computers" if used to cont

Embedded System Applications :- Consumer electronics, e.g., cameras, cell phones etc. Consumer products, e.g. washers, microwave ovens etc. Automobiles (anti-lock braking, engine control etc.) Industrial process controller & defense applications. Computer/Communication products, e.g. printers, FAX machines etc. Medical Equipments. ATMs Aircrafts

DIFFERENCE BETWEEN MICROPROCESSORS AND MICROCONTROLLERS: A Microprocessor is a general purpose digital computer central processing unit(C.P.U) popularly known as CPU on the chip. The Microprocessors contain no RAM, no ROM, and no I/P O/P ports on the chip itself. On the other hand a Microcontroller has a C.P.U(microprocessor) in addition to a fixed amount of RAM, ROM, I/O ports and a timer all on a single chip. In order to make a Microprocessor functional we must add RAM, ROM, I/O Ports and timers externally to them,i.e any amount of external memory can be added to it. But in controllers there is a fixed amount of memory which makes them ideal for many applications. The Microprocessors have many operational codes(opcodes) for moving data from external memory to the C.P.U Whereas Microcontrollers may have one or two operational codes.

DISADVANTAGES OF MICROPROCESSORSOVER MICROCONTROLLERS System designed using Microprocessors are bulky They are expensive than Microcontrollers We need to add some external devices such as PPI chip, Memory, Timer/counter chip, Interrupt controller chip,etc. to make it functional.

TYPES OF MICROCONTROLLER ARCHITECTURE:

There are two types of Microcontroller architecture designed for embedded system development. These are:1)RISC- Reduced instruction set computer 2)CISC- Complex instruction set computerDIFFERENCE BETWEEN CISC AND RISC: CISC stands for Complex Instruction Set Computer. Most PC's use CPU based on this architecture. For instance Intel and AMD CPU's are based on CISC architectures. Typically CISC chips have a large amount of different and complex instructions. In common CISC chips are relatively slow (compared to RISC chips) per instruction, but use little (less than RISC) instructions. MCS-51 family microcontrollers based on CISC architecture. RICS stands for Reduced Instruction Set Computer. The philosophy behind it is that almost no one uses complex assembly language instructions as used by CISC, and people mostly use compilers which never use complex instructions. Therefore fewer, simpler and faster instructions would be better, than the large, complex and slower CISC instructions. However, more instructions are needed to accomplish a task. Atmells AVR microcontroller based on RISC architecture.

PIC MICROCONTROLLER

PIC 16 SERIES-PIC16F77AFIG.1PIC is a family of Harvard architecture microcontrollers made by Microchip Technology, derived from the PIC1640 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to "Peripheral Interface Controller".It is available in different configurations viz 8bit,16 bit,32 bit with instructions set as given below :Under 8 bit comes-PIC10 xxxx, PIC12 xxxx, PIC16 xxxx, PIC18 xxxx.(12 bit instruction set)Under 16 bit comes-PIC24H,DSPIC30,DSPIC33. (14 bit instruction set)Under 32 bit comes-PIC32xxxx. (16 bit instruction set)PICs are popular with developers and hobbyists alike due to their low cost, wide availability, large user base, extensive collection of application notes, availability of low cost or free development tools, and serial programming (and re-programming with flash memory) capability.Special Microcontroller Features: High performance RISC CPU. Only 35 single word instructions to learn. All single cycle instructions except for program branches which are two-cycle. Operating speed: DC - 20 MHz clock input DC - 200 ns instruction cycle. Up to 8K x 14 words of FLASH Program Memory, Up to 368 x 8 bytes of Data Memory (RAM). Interrupt capability (up to 12 sources). Eight level deep hardware stack. Direct, Indirect and Relative Addressing modes. Processor read access to program memory. Power-on Reset (POR). Power-up Timer (PWRT) and Oscillator Start-up Timer (OST). Watchdog Timer (WDT) with its own on-chip RC oscillator for reliable operation. Programmable code protection Power saving SLEEP mode Selectable oscillator options In-Circuit Serial Programming (ICSP) via two pins.Peripheral Features: Timer0: 8-bit timer/counter with 8-bit prescaler. Timer1: 16-bit timer/counter with prescaler, can be incremented during SLEEP via external crystal/clock. Timer2: 8-bit timer/counter with 8-bit period register, prescaler and postscaler. Two Capture, Compare, PWM modules- Capture is 16-bit, max. resolution is 12.5 ns- Compare is 16-bit, max. resolution is 200 ns- PWM max. resolution is 10-bit. 8-bit, up to 8-channel Analog-to-Digital converter. Synchronous Serial Port (SSP) with SPI (Master mode) and I2C(Slave). Universal Synchronous Asynchronous Receiver Transmitter (USART/SCI). Parallel Slave Port (PSP), 8-bits wide with external RD, WR and CS controls (40/44-pin only). Brown-out detection circuitry for Brown-out Reset (BOR).CMOS Technology: Low power, high speed CMOS FLASH technology. Fully static design. Wide operating voltage range: 2.0V to 5.5V. High Sink/Source Current: 25 Ma. Industrial temperature range. Low power consumption:- < 2 mA typical @ 5V, 4 MHz

PIN DIAGRAM

FIG.2PIN DESCRIPTION

CORE ARCHITECTURE

Figure 3: Showing a typical microcontroller device and its different subunitsThe PIC architecture is distinctively minimalist. It is characterized by the following features: Separate code and data spaces (Harvard architecture) A small number of fixed length instructions Most instructions are single cycle execution (4 clock cycles), with single delay cycles upon branches and skips A single accumulator (W), the use of which (as source operand) is implied (i.e. is not encoded in the opcode) All RAM locations function as registers as both source and/or destination of math and other functions. A hardware stack for storing return addresses A fairly small amount of addressable data space (typically 256 bytes), extended through banking Data space mapped CPU, port, and peripheral registers The program counter is also mapped into the data space and writable (this is used to implement indirect jumps). Unlike most other CPUs, there is no distinction between memory space and register space because the RAM serves the job of both memory and registers, and the RAM is usually just referred to as the register file or simply as the registers

ELECTRICAL CHARACTERISTICS

Absolute Maximum Ratings Ambient temperature under bias...................................... .-55 to +125C

Storage temperature.................................................... -65C to +150C

Voltage on any pin with respect to VSS (except VDD, MCLR. and RA4) ......................................... -0.3V to (VDD + 0.3V)

Voltage on VDD with respect to VSS............................. -0.3 to +6.5V

Voltage on MCLR with respect to VSS (Note2)..........................0 to +13.5V

Voltage on RA4 with respect to Vss ..................................0 to +12V

Total power dissipation (Note 1)................................................1.0W

Maximum current out of VSS pin................................................300 mA

Maximum current into VDD pin .....................................................250 mA

Input clamp current, IIK (VI < 0 or VI > VDD)............................ 20 mA

Output clamp current, IOK (VO < 0 or VO > VDD) ...................... 20 mA

Maximum output current sunk by any I/O pin..................................25 mA

Maximum output current sourced by any I/O pin ............................25 mA

Maximum current sunk by PORTA, PORTB, and PORTE (combined) (Note 3).....................................200 mA

Maximum current sourced by PORTA, PORTB, and PORTE (combined) (Note 3) ..............................................200 mAMaximum current sunk by PORTC and PORTD (combined) (Note 3) ..................................................................200 mAMaximum current sourced by PORTC and PORTD (combined) (Note 3).............................................................200 mANote 1: Power dissipation is calculated as follows: Pdis = VDD x {IDD - IOH} + {(VDD - VOH) x IOH} + (VOl x IOL)2: Voltage spikes below VSS at the MCLR pin, inducing currents greater than 80 mA, may cause latch-up. Thus,a series resistor of 50-100 should be used when applying a low level to the MCLR pin, rather than pullingthis pin directly to VSS.3: PORTD and PORTE are not implemented on the PIC16F77A/76 devices.

PROGRAMMING OF PICCOMPILER USED-mikroCIntroduction to mikroCmikroC is a powerful, feature rich development tool for PICmicros. It is designed to provide the programmer with the easiest possible solution for developing applications for embedded systems, without compromising performance or control. FIG.4mikroC IDEPIC and C fit together well: PIC is the most popular 8-bit chip in the world, used in a wide variety of applications, and C, prized for its efficiency, is the natural choice for developing embedded systems. mikroC provides a successful match featuring highly advanced IDE, ANSI compliant compiler, broad set of hardware libraries, comprehensive documentation, and plenty of ready-to-run examples.FeaturesmikroC allows you to quickly develop and deploy complex applications: Write your C source code using the built-in Code Editor (Code and Parameter Assistants, Syntax Highlighting, Auto Correct, Code Templates, and more) Use the included mikroC libraries to dramatically speed up the development: data acquisition, memory, displays, conversions, communications Practically all P12, P16, and P18 chips are supported. Monitor your program structure, variables, and functions in the Code Explorer. Generate commented, human-readable assembly, and standard HEX compatible with all programmers. Inspect program flow and debug executable logic with the integrated Debugger. Get detailed reports and graphs: RAM and ROM map, code statistics, assembly listing, calling tree, and more We have provided plenty of examples for you to expand, develop, and use as building bricks in your projects. Copy them entirely if you deem fit thats why we included them with the compiler. ProjectsmikroC organizes applications into projects, consisting of a single project file (extension .ppc) and one or more source files (extension .c). You can compile source files only if they are part of a project. The project file carries the following information: project name and optional description, target device, device flags (config word), device clock,

FIG.5New ProjectThe easiest way to create project is by means of New Project Wizard, drop-down menu ProjectNew Project. Just fill the dialog with desired values (project name and description, location, device, clock, config word) and mikroC will create the appropriate project file . Also, an empty source file named after the project will be created by default. mikroC does not require you to have source file named same as the project, its just a matter of convenience.Edit ProjectLater, you can change project settings from the drop-down menu ProjectEdit Project. You can rename the project, modify its description, change chip, clock, config word, etc.To delete a project, simply delete the folder in which the project file (extension .ppc) is stored.Add/Remove Files from ProjectA project can contain any number of source files (extension .c). The list of relevant source files is stored in the project file (extension .ppc).To add source file to your project, select ProjectAdd to Project from the drop-down menu, or click the Add to Project Icon . Each added source file must be self-contained, i.e. it must have all the necessary definitions after preprocessing.To remove file(s) from your project, select ProjectRemove from Project from the drop-down menu, or click the Remove from Project Icon .Note: For inclusion of the header files (extension .h), use the preprocessor directive #include. See File Inclusion for more information.Extended functionality of the Project Files tabBy using the Project Files' new features, you can reach all the output files (.lst, .asm) by a single click. You can also include in project the library files (.mcl), for libraries, either your own or compiler default, that are project-specific.

Libraries (.mcl) now have different, more compact format, compared to mikroC version 2. This, however, means that library formats are now incompatible. The users that are making transition from version 2 to 5, must re- build all their previously written libraries in order to use them in the new version. All the source code written and tested in previous versions should compile correctly on version 5.0, except for the asm{} blocks, which are commented in the asm section of help. Project Level Defines:Project Level Defines(.pld) files can also be added to project. Project level define files enable you to have defines that are visible in all source files in the project. A file must contain one definition per line in the following form: [=[]] [=[]] Define a macro named symbol. To specify a value, use =. If = is omitted, 1 is assumed. Do not enter white-space characters immediately before "=". If a white- space character is entered immediately after "=", the macro is defined as zero token. This option can be specified repeatedly. Each appearance of symbol will be replaced by the value before compilation. There are two predefined project level defines see predefined project level defines..

Also mikroC has some pre defined functions:1). Delay_ms(time)-it provides a delay of spcified time in ms.Its internal code is similar to code given below:Void delay_ms(){int I;While (i !=0){i--;}Also PIC has a internal TRIS register which controls the flow of insructions from the corresponding port.

PROGRAMMING AND INTERFACINGAdvantages of C over Assembly language programming: Knowledge of the processor instruction set is not required. Details like register allocation and addressing of memory and data is managed by the compiler. Programs get a formal structure and can be divided into separate functions. Programming and program test time is drastically reduced, this increases efficiency. Keywords and operational functions can be used that come closer to how humans think. The supplied and supported C libraries contain many standard routines such as numeric conversions. Reusable code: Existing program parts can be more easily included into new programs, because of the comfortable modular program construction techniques. The C language based on the ANSI standard is very portable. Existing programs can be quickly adapted to other processors as needed.

PROJECT NO-1

LED INTERFACING AND ITS BLINKING(PORT PROGRAMMING)

FIG.6the interfacing of LED is shown in the figure above.it is given Vcc through resistors of 330E.also a darlington pair IC is also used i.e.ULN 2803 which shift the dc level of volage coming from port of pic microcontroller.Now to glow the desired LED ,proper hexadecimal code for its binary is programmed in pic.eg.to glow alternative LEDs the binary code will be10101010 and its corresponding hexadecimal code will be 0xAA.So,0xAA is fed to controller with coding.Also PIC has a internal TRIS register which controls the flow of insructions from the corresponding port i.ee PORT will behave as input(if =1) and as output(if=0).CODING FOR BLINKING

void main(){ PORTC = 0; // Initialize PORTCTRISC = 0; // Configure PORTC as output

while(1) { PORTC = OxAA; // gives code 10101010 to PORTC Delay_ms(1000); // one second delay }}Thus LED Blinking practical is done sucessfully.

PROJECT NO-2SEVEN SEGMENT INTERFACING AND DISPLAY

A Seven segment display consists of seven LEDs arranged in pattern of digit like 8 .

FIG.8We use a bcd to seven segment decoder which saves pin of microcontroller from seven(one for each Led) to four.So we have to give bcd code for desired digit to be displayed on it.Now also we can display more then one seven segment display simultaneously.but it will take a number of pins of controller.So we use two pins from controller to control the display of seven segment one by one from same port such that it appears to be displaying simultaneously.Tdis is done by providing a very small delay such that our eyes cant even detect the change over from one display to another.CODING FOR DISPLAY

void main(){ TRISB=0xf0; TRISC=0xf0; PORTC=0x00; while(1) { PORTB=0x00 ; //code for 0 delay_ms(1000);

PORTB=0x08 ; //code for 1 delay_ms(1000); PORTB=0x04 ; //code for 2 delay_ms(1000); PORTB=0x0c ; //code for 3 delay_ms(1000); PORTB=0x02 ; //code for 4 delay_ms(1000); PORTB=0x09 ; //code for 5 delay_ms(1000); PORTB=0x06 ; //code for 6 delay_ms(1000); PORTB=0x0e ; //code for 7 delay_ms(1000); PORTB=0x01 ; //code for 8 delay_ms(10000);

PORTB=0x09 ; //code for 9 delay_ms(10000); } }the above program will display 0 to 9 on one seven segment display with a delay of one second between it.\NOW TO DISPLAY ON FOUR DISPLAYS CONNECTED..CODE ISvoid main(){ TRISB=0xf0; TRISC=0xf0; PORTC=0x00; while(1) { PORTB=0x00 ; //code for 0PORTC=0xfe ; //DISPLAYS ON FIRST 11111110 delay_ms(100);

PORTB=0x08 ; //code for 1 PORTC=0xfd ; //DISPLAYS ON SECOND 11111101 delay_ms(100);PORTB=0x04 ; //code for 2PORTC=0xfb ; //DISPLAYS ON THIRD 11111011 delay_ms(100);PORTB=0x0C ; //code for 3PORTC=0xf7 ; //DISPLAYS ON FIRST 11110111 delay_ms(100);

} }

Thus program for both single seven segment and multiple seven segment displays has been studied.

PROJECT NO-3INTERFACING AND CONTROL OF STEPPER MOTOR WITH PIC 16F77A

FIG.7

Stepper motor are those which rotates in steps.like all motors it is also based on electromagnetic induction i.e. electric field produces a magnetic field whose variation causes a torque which rotates the motor.A stepper motor is a brushless, synchronous electric motor that can divide a full rotation into a large number of steps. The motor's position can be controlled precisely, without any feedback mechanism (see open loop control). Stepper motors are similar to switched reluctance motors, which are very large stepping motors with a reduced pole count, and generally are closed-loop commutated.Fundamentals of OperationStepper motors operate much differently from normal DC motors, which rotate when voltage is applied to their terminals. Stepper motors, on the other hand, effectively have multiple "toothed" electromagnets (a.k.a. phases) arranged around a central gear-shaped piece of iron. The electromagnets are energized by an external control circuit, such as a microcontroller. To make the motor shaft turn, first one electromagnet is

given power, which makes the gear's teeth magnetically attracted to the electromagnet's teeth. When the gear's teeth are thus aligned to the first electromagnet, they are slightly offset from the next electromagnet. So when the next electromagnet is turned on and the first is turned off, the gear rotates slightly to align with the next one, and from there the process is repeated. Each of those slight rotations is called a "step." In that way, the motor can be turned a precise angle.Now to run the motor we have to feed the binary code to turn on the current of that windingFor pair 1st-00000011(binary)-0x03For pair 2nd-00000110(binary)-0x06For pair 3rd -000001100(binary)-0x0cFor pair 4th -00011000(binary)-0x09

CODE ISvoid forward();void reverse();int i;void main(){TRISB=0xf0;PORTB=0x00;while(1){forward();delay_ms(400);reverse();delay_ms(400);}}

void forward(){for(i=0;i 0-5000mV ch = tlong / 1000; // extract volts digitLCD_Chr(2,9,48+ch); // write ASCII digit at 2nd row, 9th column LCD_Chr_CP('.');

ch = (tlong / 100) % 10; // extract 0.1 volts digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor point

ch = (tlong / 10) % 10; // extract 0.01 volts digitLCD_Chr_CP(48+ch); // write ASCII digit at cursor point

ch = tlong % 10; // extract 0.001 volts digit LCD_Chr_CP(48+ch); // write ASCII digit at cursor pointLCD_Chr_CP('V');delay_ms(3000) ;delay_ms(1); }}

PROJECT NO-6TO STUDY SWITCHING ACTION OF PIC PINS.As in AT89s51,the way of addressing pins is by p0.0,p0.1..so on.Similarly in PIC it is possible to address pins using Syntax: PORT( NAME).F(0 to 7)Now pin can be put ON or OFF according to via resistor.Internally,when pin is high its flip flop is sat.when external switch is closed ,it forces no current or voltage to enter to pin and also lowers the pin from 1 to 0.Thus when switch is pressed ,the pin becomes zero.so ,implementing this in practical.The swiches whose one end are connected to pins of nontroller are shown FIG.11

The coding will be as follos:

#define s0 PORTC.F0#define s1 PORTC.F1#define s2 PORTC.F2#define s3 PORTC.F3#define s4 PORTC.F4

void main(){TRISB=0x00; \\ PORT B AS OUTPUTTRISC=0xff; \\PORT C as inputPORTC=0xff; \\ ALL F/FS TO SET do{if(s0==0) \\1st switch is pressed{PORTB=0x80; \\1st LED glowsdelay_ms(600);}if(s1==0) \\2nd switch is pressed{PORTB=0x40; \\2nd LED glowsdelay_ms(600);}if(s2==0) \\3rd switch is pressed{PORTB=0x20; \\3rd LED glowsdelay_ms(600);}if(s3==0) \\4th switch is pressed{PORTB=0x10; \\4th LED glowsdelay_ms(600);}else{PORTB=0xff;}}while(1);}Thus switching action is studied.

PROJECT NO-7

INTERFACING OF KEYBOARD MATRIXAs in last practical,we use one switch per pinof controller.So,to use 8 pins for 8 switches.While if it is desired to have more options for a pin,a matrix is formed in which row and column are made such that each pin can contol more than one switch or vice versa.The coding for keyboard (4*4) matrix is as follows:#define row0 PORTC.F0#define row1 PORTC.F1#define row2 PORTC.F2#define row3 PORTC.F3#define col0 PORTC.F4#define col1 PORTC.F5#define col2 PORTC.F6#define col3 PORTC.F7void main(){TRISB=0x00;TRISC=0xff;PORTC=0xff;LCD_INIT(&PORTB);LCD_OUT(1,1,"SWITCH=");do{LCD_OUT(1,8," ");if(row0==0 && col0==0){lcd_out(1,8,"k0");delay_ms(600);}if(row0==0 && col1==0){lcd_out(1,8,"k1");delay_ms(600);}if(row0==0 && col2==0){lcd_out(1,8,"k2");delay_ms(600);}if(row0==0 && col3==0){lcd_out(1,8,"k3");delay_ms(600);}if(row1==0 && col0==0){lcd_out(1,8,"k4");delay_ms(600);}if(row1==0 && col1==0){lcd_out(1,8,"k5");delay_ms(600);}if(row1==0 && col2==0){lcd_out(1,8,"k6");delay_ms(600);}if(row1==0 && col3==0){lcd_out(1,8,"k7");delay_ms(600);}if(row2==0 && col0==0){lcd_out(1,8,"k8");delay_ms(600);}

if(row2==0 && col1==0){lcd_out(1,8,"k9");delay_ms(600);}if(row2==0 && col2==0){lcd_out(1,8,"k10");delay_ms(600);}if(row2==0 && col3==0){lcd_out(1,8,"k11");delay_ms(600);}else{Lcd_out(1,8," ");}}while(1);}Thus,the keyboard matrx practical is performed.

PROJECT NO-8SERIAL COMMUNICATION(B/W PC ANDMICROCONTROLLER)To send data via single line through a bit stream is known as serial communication.Reception is of type SIPO-Serial Input Parallel Output.Transmission is of type PISO-Parallel Input Serial Output.

Clock used in serial communication is called BAUD RATE.

FIG.12

PIC has two buffers and it allows full duplex communication.to change settings we have to re configure TXSTA registerThe Universal Synchronous Asynchronous Receiver Transmitter (USART) module is one of the two serial I/O modules. (USART is also known as a Serial Communications Interface or SCI.) The USART can be configuredas a full duplex asynchronous system that can communicate with peripheral devices, such as CRT terminals and personal computers, or it can be configured as a half duplex synchronous system that can communicate with peripheral devices, such as A/D or D/A integratedcircuits, serial EEPROMs, etc.The USART can be configured in the following modes:

Asynchronous (full duplex) Synchronous - Master (half duplex) Synchronous - Slave (half duplex)

Bit SPEN (RCSTA) and bits TRISC have to be set in order to configure pins RC6/TX/CK and RC7/RX/DT as the Universal Synchronous Asynchronous Receiver Transmitter.

TXSTA: TRANSMIT STATUS AND CONTROL REGISTER (ADDRESS 98h

R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 R-1 R/W-0CSRCTX9TXENSYNC BRGHTRMTTX9D

bit 7 CSRC: Clock Source Select bit Asynchronous mode: Dont care Synchronous mode: 1 = Master mode (Clock generated internally from BRG) 0 = Slave mode (Clock from external source)

bit 6 TX9: 9-bit Transmit Enable bit 1 = Selects 9-bit transmission 0 = Selects 8-bit transmissionbit 5 TXEN: Transmit Enable bit 1 = Transmit enabled 0 = Transmit disabled

bit 4 SYNC: USART Mode Select bit 1 = Synchronous mode 0 = Asynchronous mode

bit 3 Unimplemented: Read as '0'

bit 2 BRGH: High Baud Rate Select bit Asynchronous mode: 1 = High speed 0 = Low speed Synchronous mode: Unused in this mode

bit 1 TRMT: Transmit Shift Register Status bit 1 = TSR empty 0 = TSR full

bit 0 TX9D: 9th bit of transmit data. Can be parity bit

Now coding 1).to transmit data..void main(){usart_init(2400);while(1){usart_write('s');usart_write('a');usart_write('g');usart_write('a');usart_write('r');delay_ms(600);}}2).to transmit as well as readunsigned int i;void main(){usart_init(2400);while(1){if(usart_data_ready() ){ i= usart_read(); usart_write('i');}usart_write('s');usart_write('a');usart_write('g');usart_write('a');usart_write('r');delay_ms(600);}3). To send an array unsigned char arr[] =("sagar$");void display(unsigned char*s);

void main(){Usart_Init(2400);while(1){display(arr);delay_ms(600);}}void display(unsigned char*s){while(*s!='$'){usart_Write(*s);delay_ms(10);s++;}}Thus serial communication has been studied successfully. BIBLIOGRAPHY

Wikipedia MicroC Manuals www.talkingelectronics.com www.howstuffworks.com The Art of Electronics (Book)

lxvii