0% found this document useful (1 vote)
154 views

Arduino SAS Host

This code initializes serial communication between an Arduino and an LCD screen. It defines constants, includes libraries, and sets up the LCD screen. The main loop writes data to the serial port and reads the serial input, displaying any characters received on the LCD screen. It also includes functions to initialize UART communication, write data to the serial port, and read data from the serial port.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
154 views

Arduino SAS Host

This code initializes serial communication between an Arduino and an LCD screen. It defines constants, includes libraries, and sets up the LCD screen. The main loop writes data to the serial port and reads the serial input, displaying any characters received on the LCD screen. It also includes functions to initialize UART communication, write data to the serial port, and read data from the serial port.
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include <stdio.

h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define BAUD 19200 //Baud rate


#include <util/setbaud.h>

int inChar;
int inChar1;

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

//Initialise the LCD


lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);

//Initialise serial comm


Serial.begin(19200);
USART_Init();

void loop() {

//Write data to serial


unsigned int data=0x80;
uart_putchar(data);
delay(20);
unsigned int data2=0x81;
uart_putchar(data2);

//Read serial input


if(bit_is_set(UCSR1A, UDRE1)){
delay(100); //allows all serial sent to be received together
lcd.clear();
while(!(UCSR1A & (1<<RXC1))){
//Serial.println("OK......");
inChar = uart_getchar();
inChar1 = uart_getchar();
lcd.print(inChar);
lcd.print(inChar1);
}
}
delay(30000);
}

//Initialise UART1,Per example in Atmel datasheet


void USART_Init(void)
{

UBRR1H = UBRRH_VALUE;
UBRR1L = UBRRH_VALUE;
#if USE_2x
UCSR1A |= _BV(U2X1);
#else
UCSR1A &= ~(_BV(U2X1));
#endif

UCSR1B = _BV(UCSZ12);
UCSR1C = _BV(UCSZ11)| _BV(UCSZ10);
UCSR1B = _BV(RXEN1) | _BV(TXEN1);

//Per example in Atmel datasheet at page 232


void uart_putchar(unsigned int data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR1A & (1<<UDRE1)))
;
/* Copy 9th bit to TXB8 */
UCSR1B &= ~(1<<TXB81);
if ( data & 0x0100 )
UCSR1B |= (1<<TXB81);

/* Put data into buffer, sends the data */


UDR1 = data;
}

//Per example in Atmel datasheet at page 235


unsigned int uart_getchar(void)

{
unsigned char resh, resl;

//wait for data to be received


while ( !(UCSR1A & (1<<RXC1)) );

//Get 9th bit, then data from buffer


resh = UCSR1B;
resl = UDR1;

//Filter the 9th bit, then return


resh = (resh >>1) & 0x01;
return ((resh << 8) | resl);

You might also like