Serial Communication:
BASICS OF SERIAL COMMUNICATION:
· serial communication uses single data line making it much cheaper
· enables two computers in different cities to communicate over the
telephone
· byte of data must be converted to serial bits using a
parallel-in-serial-out shift register and transmitted over a single data line
· receiving end there must be a serial-in-parallel-out shift register
· if transferred on the telephone line, it must be converted to audio
tones by modem
· for short distance the signal can be transferred using wire
· how PC keyboards transfer data to the motherboard
· 2 methods, asynchronous and synchronous
· synchronous method transfers a block of
data (characters) at a time
· asynchronous method transfers a single
byte at a time
· Uses special IC chips called UART (universal asynchronous
receiver-transmitter) and USART (universal synchronous asynchronous
receiver-transmitter)
· Half- and full-duplex transmission
· if the data can be transmitted and received, it is a duplex transmission
· simplex transmissions the computer only sends data
· duplex transmissions can be half or full duplex
· depends on whether or not the data transfer can be simultaneous
· If one way at a time, it is half duplex
· If can go both ways at the same time, it is full duplex
· full duplex requires two wire conductors for the data lines (in addition
to the signal ground)
· Asynchronous serial communication and data framing
· data coming in 0s and 1s
· to make sense of the data sender and receiver agree on a set of rules
· Protocol
· how the data is packed
· how many bits/character
· when the data begins and ends
· Start and stop bits
· asynchronous method, each character is placed between start and stop
bits
· called framing
· start bit is always one bit
· stop bit can be one or two bits
· start bit is always a 0 (low)
· stop bit(s) is 1 (high)
· LSB is sent out first
· in modern PCs one stop bit is standard
· when transferring a text file of ASCII characters using 1 stop bit there
is total of 10 bits for each character
· 8 bits for the ASCII code (1 parity bit), 1 bit each for the start and
stop bits
· for each 8-bit character there are an extra 2 bits, which gives 20%
overhead
· Data transfer rate
· rate of data transfer bps (bits per
second)
· widely used terminology for bps is baud rate
· baud and bps rates are not necessarily equal
· baud rate is defined as the number of signal changes per second
· RS232 standards
· most widely used serial I/O interfacing standard
· input and output voltage levels are not TTL compatible
· 1 bit is represented by -3 to -25 V
· 0 bit is +3 to +25 V
· -3 to +3 is undefined
· to connect RS232 to a microcontroller system must use voltage converters
such as MAX232 to convert the TTL logic levels to the RS232 voltage levels, and
vice versa
· MAX232 IC chips are commonly referred to as line drivers
·
· DTE (data terminal equipment)
· DCE (data communication equipment)
· DTE - terminals and computers that send and receive data
· DCE - communication equipment responsible for transferring the data
· simplest connection between a PC and microcontroller requires a minimum
of three pins, TxD, RxD, and ground
· many of the pins of the RS-232 connector are used for handshaking
signals
· they are not supported by the AVR UART chip
· PC/compatible COM ports
· PC/compatible computers (Pentium) microprocessors normally have two COM
ports
· both ports have RS232-type connectors
· COM ports are designated as COM 1 and COM 2 (replaced by USB ports)
· can connect the AVR serial port to the COM 2 port
AVR CONNECTION TO RS232:
· RxD and TxD pins in the AVR
· 8051 has two pins used for transferring and receiving data serially
· TxD and RxD are part of the port 3 group
· pin 11 (P3.1) is assigned to TxD
· pin 10 (P3.0) is designated as RxD
· these pins are TTL compatible
· require a line driver to make them RS232 compatible
· driver is the MAX232 chip
· MAX232
· converts from RS232 voltage levels to TTL voltage levels
· uses a +5 V power source
· MAX232 has two sets of line drivers for transferring and receiving data
· line drivers used for TxD are called T1 and T2
· line drivers for RxD are designated as R1 and R2
· T1 and R1 are used together for TxD and RxD of the AVR
· second set is left unused
· MAX233 performs the same job as the MAX232
· eliminates the need for capacitors
AVR SERIAL PORT PROGRAMMING IN C:
· serial communications of the AVR with the COM port of the PC
· must make sure that the baud rate of the AVR system matches the baud
rate of the PC's COM port
· can use Windows HyperTerminal program
Ex1(a):
Write a program to transfer letter "A" serially at 9600 baud,
continuously.
#include<avr/io.h>
#include<util/delay.h>
int main()
{
UBRRL=51;
UCSRB=0x08;
UCSRC=0x86;
while(1)
{
UDR='A';
_delay_ms(100);
while((UCSRA&0x40)==0);
}
}
Simulation:
Ex 1(b):
Write a program to transfer the message " Welcome
To All " serially at
9600 baud, 8-bit data, 1 stop bit. Do this continuously.
#include<avr/io.h>
#include<util/delay.h>
unsigned char
arr[]={"Welcome To All "};
int main()
{ int i;
UBRRL=51;
UCSRB=0x08;
UCSRC=0x86;
while(1)
{
for(i=0;i<=15;i++)
{
UDR=arr[i];
_delay_ms(100);
while((UCSRA&0x40)==0);
}
}
}
Simulation:
Ex 1(c):
Program the AVR to
receive bytes of data serially and put them on PORTB. Set the baud rate at
9600, 8-bit data, and 1 stop bit.
#include<avr/io.h>
#include<util/delay.h>
#include"lcd_header.h"
void main()
{
DDRC=0xFF;
DDRB=0xFF;
UBRRL=51;
UCSRB=0x10;
UCSRC=0x86;
init();
unsigned char x;
while(1)
{
while((UCSRA&0x80)==0);
x=UDR;
datta(x);
}
}
lcd_header.h
#include<avr/io.h>
#include<util/delay.h>
void datta(unsigned
char a)
{
PORTB=a;
PORTC=0x05;
_delay_ms(30);
PORTC=0x01;
}
void
command(unsigned char s)
{
PORTB=s;
PORTC=0x04;
_delay_ms(30);
PORTC=0x00;
}
void init()
{
command(0x38);
_delay_ms(100);
command(0x01);
_delay_ms(100);
command(0x0E);
_delay_ms(100);
command(0x80);
_delay_ms(100);
}
void
stringg(unsigned char *p)
{
while(*p!='\0')
{
datta(*p);
p++;
}
}
void num(unsigned
int i)
{
int j=1,k,l;
k=i;
while(k>=9)
{
j=j*10;
k=k/10;
}
while(j>=1)
{
l=i/j;
i=i%j;
j=j/10;
datta(l+48);
}
}
Simulation: