Amruta (talk) 13:22, 17 March 2015 (IST)


Basics

LPC1768 has 4 UARTS out of which UART0, UART2, UART3 are very similar while UART1 is little bit different from all these.

Registers

Let's have a brief review through some of the important UART registers.

RBR ( Receiver Buffer Register )

The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register

THR ( Transmit Holding Register )

The Divisor Latch Access Bit (DLAB) in LCR must be zero in order to access this register

DLL ( Divisor Latch LSB register )

The Divisor Latch Access Bit (DLAB) in LCR must be onein order to access this register

DLM ( Divisor Latch MSB register )

The Divisor Latch Access Bit (DLAB) in LCR must be one in order to access this register

FCR ( FIFO Control Register )

LCR ( Line Control Register )

LSR ( Line Status Register )

Schematic

Code

Let's make a Decimal Counter with UART .

Initialize the UART0 with 9600 baud-rate.

Display the initial message and go on displaying incremented count taking some pause.

To know more about UART library, check this.

#include "lpc17xx.h" //Device specific header file
#include "uart.h"	//Explore Embedded UART library which contains the uart routines
#include "delay.h" //Explore Embedded  library containing the delay routines
 
/* start the main program */
int main()
{
	uint16_t cnt=0;
 
        /* Setup and initialize the microcontroller system */
	SystemInit();
 
	/* Initialize the UART before Transmitting/Receiving any data */
	UART_Init(UART0,9600);
 
	UART_Printf("5digit decimal counter: ");
 
	/* Transmit the counter till 9999 */
	while(cnt < 9999)
	{
		/* Transmit the 4-digit counter value and go to next line */
		UART_Printf("\n\r%4u",cnt);
 
		/* Increment the counter value after 1-sec */
		DELAY_sec(1);
		cnt++;
	}
	while(1);
}