[go: up one dir, main page]

0% found this document useful (0 votes)
26 views14 pages

ESP Report 9

The document details the use of the Synchronous Serial Interface (SSI) to connect a Tiva microcontroller to a Nokia5110 LCD for displaying images. It includes initialization procedures, algorithms for a 6-bit DAC, and example code for displaying an image, specifically the IIITDM logo. The document also outlines the steps to convert an image into an array format suitable for the LCD.

Uploaded by

abinavsuresht
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views14 pages

ESP Report 9

The document details the use of the Synchronous Serial Interface (SSI) to connect a Tiva microcontroller to a Nokia5110 LCD for displaying images. It includes initialization procedures, algorithms for a 6-bit DAC, and example code for displaying an image, specifically the IIITDM logo. The document also outlines the steps to convert an image into an array format suitable for the LCD.

Uploaded by

abinavsuresht
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Experiment Report - 9

Benedict I
EC23I2004
Theory:
SSI (Synchronous Serial Interface)
A Synchronous serial interface (SSI) module is used to interface the Tiva
microcontroller to a Nokia5110 LCD. An image of choice is displayed
using the LCD.
SSI Module Introduc on
 The TM4C123 microcontrollers has 4 Synchronous Serial Interface or SSI
modules.
 Two devices communica ng with synchronous serial interfaces (SSI) operate
from the same clock (synchronized)
 The SSI protocol includes four I/O lines a nega ve logic control signal from
master to slave signal signifying the channel is ac ve.
 A 50% duty cycle clock generated by the master.
 A data line driven by the master and received by the slave.
 A data line driven by the slave and received by the master.
SSI Ini aliza on
RCGC1

SSI0_CR1_R
SSI0_CC_R

SSIO_CPSR_R

SSIO_CR0_R
SSIO_DR_R

Algorithm for 6 bit DAC


 Include head files
 Ini alize Port A for SSI
 Enable the required LCD peripheral se ngs
 Write func ons to
 Set cursor posi on on LCD.
 Clear LCD
 Draw image on LCD.
 In the main, call all the ini aliza on func ons.
 Display an image of your choice.
Procedure to convert image to array
 Draw or load a simple black and white picture in paint.
 Resize it to the nokiaLCD dimensions (Pixels: horizontal = 84, ver cal = 48)
 Save the resized image as type ‘Monochrome bitmap .bmp’
 Load this image in the LCDAssistant so ware and save output.
 Open the output file using notepad. The array in it will help create the
required image on the LCD.
Example Exercise:
Display the IIITDM logo in the Texas Nokia Peripheral.
Code:
/*Nokia LCD Display*/

#include "tm4c123gh6pm.h"
#include <stdint.h>
#include "PLL.h"

#define CONTRAST 0xB1

#define SCREENW 84
#define SCREENH 48

#define DC (*((vola le uint32_t *)0x40004100))


#define DC_COMMAND 0
#define DC_DATA 0x40
#define RESET (*((vola le uint32_t *)0x40004200))
#define RESET_LOW 0
#define RESET_HIGH 0x80

enum typeOfWrite{
COMMAND, // the transmission is an LCD command
DATA // the transmission is data
};

void sta c lcdwrite(enum typeOfWrite type, uint8_t message){


if(type == COMMAND){
// wait un l SSI0 not busy/transmit FIFO empty
while((SSI0_SR_R&0x00000010)==0x00000010){};
DC = DC_COMMAND;
SSI0_DR_R = message; // command out
// wait un l SSI0 not busy/transmit FIFO empty
while((SSI0_SR_R&0x00000010)==0x00000010){};
} else{
while((SSI0_SR_R&0x00000002)==0){}; // wait un l transmit FIFO not full
DC = DC_DATA;
SSI0_DR_R = message; // data out
}
}

void sta c lcddatawrite(uint8_t data){


while((SSI0_SR_R&0x00000002)==0){}; // wait un l transmit FIFO not full
DC = DC_DATA;
SSI0_DR_R = data; // data out
}

void Nokia5110_Init(void){
vola le uint32_t delay;
SYSCTL_RCGC1_R |= 0x00000010; // ac vate SSI0
SYSCTL_RCGC2_R |= 0x00000001; // ac vate port A
delay = SYSCTL_RCGC2_R; // allow me to finish ac va ng
GPIO_PORTA_DIR_R |= 0xC0; // make PA6,7 out
GPIO_PORTA_AFSEL_R |= 0x2C; // enable alt funct on PA2,3,5
GPIO_PORTA_AFSEL_R &= ~0xC0; // disable alt funct on PA6,7
GPIO_PORTA_DEN_R |= 0xEC; // enable digital I/O on PA2,3,5,6,7
GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0xFF0F00FF)+0x00202200; //
configure PA2,3,5 as SSI
GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0x00FFFFFF)+0x00000000; //
configure PA6,7 as GPIO
GPIO_PORTA_AMSEL_R &= ~0xEC; // disable analog func onality on
PA2,3,5,6,7
SSI0_CR1_R &= ~(0x00000002); // disable SSI
SSI0_CR1_R &= ~(0x00000004); // master mode
// configure for system clock/PLL baud clock source
SSI0_CC_R &= ~(0x0000000F);
// clock divider for 3.33 MHz SSIClk (80 MHz PLL/24)
// SysClk/(CPSDVSR*(1+SCR))
// 80/(24*(1+0)) = 3.33 MHz (slower than 4 MHz)
SSI0_CPSR_R = (SSI0_CPSR_R&~(0x000000FF))+24; // must be even number
SSI0_CR0_R &= ~(0x0000FFF0); // SCR = 0 (3.33 Mbps data rate) // SPH = 0 //
SPO = 0

// FRF = Freescale format


SSI0_CR0_R |= 0x00000007; // DSS = 8-bit data
SSI0_CR1_R |= 0x00000002; // enable SSI

RESET = RESET_LOW; // reset the LCD to a known state


for(delay=0; delay<10; delay=delay+1);// delay minimum 100 ns
RESET = RESET_HIGH; // nega ve logic

lcdwrite(COMMAND, 0x21); // chip ac ve; horizontal addressing mode (V


= 0); use extended instruc on set (H = 1)
// set LCD Vop (contrast), which may require some
tweaking:
lcdwrite(COMMAND, CONTRAST); // try 0xB1 (for 3.3V red SparkFun), 0xB8
(for 3.3V blue SparkFun), 0xBF if your display is too dark, or 0x80 to 0xFF if
experimen ng
lcdwrite(COMMAND, 0x04); // set temp coefficient
lcdwrite(COMMAND, 0x14); // LCD bias mode 1:48: try 0x13 or 0x14

lcdwrite(COMMAND, 0x20); // we must send 0x20 before modifying the


display control mode
lcdwrite(COMMAND, 0x0C); // set display control to normal mode: 0x0D
for inverse
}

void Nokia5110_SetCursor(uint8_t newX, uint8_t newY){


if((newX > 11) || (newY > 5)){ // bad input
return; // do nothing
}
// mul ply newX by 7 because each character is 7 columns wide
lcdwrite(COMMAND, 0x80|(newX*7)); // se ng bit 7 updates X-posi on
lcdwrite(COMMAND, 0x40|newY); // se ng bit 6 updates Y-posi on
}

void Nokia5110_Clear(void){
int i;
for(i=0; i<(MAX_X*MAX_Y/8); i=i+1){
lcddatawrite(0x00);
}
Nokia5110_SetCursor(0, 0);
}

void Nokia5110_DrawFullImage(const uint8_t *ptr){


int i;
Nokia5110_SetCursor(0, 0);
for(i=0; i<(MAX_X*MAX_Y/8); i=i+1){
lcddatawrite(ptr[i]);
}
}

// image of a IIITDM logo


const unsigned char IIITDMlogo [] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00,
0x00, 0x00, 0x30, 0xF8, 0xD8, 0x18, 0x30, 0x30, 0x60, 0x60, 0xC0, 0xFE, 0x7F,
0x03, 0x06, 0x06,
0x0C, 0x38, 0x30, 0x30, 0x30, 0x3C, 0x8F, 0xC3, 0xC1, 0x83, 0x1E, 0x3C, 0x30,
0x30, 0x38, 0x0C,
0x06, 0x03, 0x03, 0x7F, 0x7E, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x98, 0xE8, 0xF8,
0x10, 0x00, 0x00,
0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0,
0x60, 0x60, 0x63,
0x67, 0x6D, 0x79, 0x73, 0x33, 0x02, 0x06, 0x06, 0x07, 0x83, 0xC0, 0xC0, 0xC6,
0xC4, 0xCC, 0xC8,
0xD8, 0xD8, 0xF0, 0xB0, 0xF0, 0xE0, 0xE0, 0xE0, 0xE0, 0xC4, 0xDF, 0xFF, 0xFF, 0xDF,
0xCE, 0xE0,
0xE0, 0xE0, 0xE0, 0xF0, 0xB0, 0xF8, 0xD8, 0xD8, 0xCC, 0xCC, 0xC4, 0xC6, 0xC0,
0xC0, 0x83, 0x83,
0x06, 0x03, 0x03, 0x03, 0x31, 0x79, 0x6D, 0x67, 0x23, 0x20, 0xB0, 0xB0, 0xF0,
0xE0, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38,
0x78, 0x78, 0x59,
0xC9, 0xCB, 0xCB, 0x8E, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x81, 0xC3, 0x63, 0xB7,
0xFF, 0x7F, 0x3F,
0x1F, 0x3E, 0xFF, 0xFF, 0xF3, 0xE3, 0xC3, 0x81, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x0F, 0xCD, 0x6D,
0x6C, 0x6C, 0x2C, 0x3C, 0x38, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0C,
0x1C, 0x16, 0x16, 0x12, 0x92, 0x93, 0xD3, 0x71, 0x70, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF8, 0xFE, 0x8F,
0xE3, 0xFD, 0x7F,
0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0xFE, 0xFD, 0xC7, 0x9F,
0xFC, 0xF0, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x20, 0x78, 0x59, 0xD9, 0xDB, 0x9B, 0x1B, 0x0A, 0x0E, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x05, 0x06, 0x06, 0x86, 0xE6,
0xF6, 0x9A, 0xDE,
0xCC, 0xC0, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0x70, 0x70, 0x50, 0x76, 0x76, 0x70,
0x71, 0x71, 0x71,
0x7F, 0x5F, 0x7F, 0x7E, 0x2E, 0x7F, 0x7E, 0x73, 0x7E, 0x7B, 0x7A, 0x7E, 0x7E, 0x3E,
0x7D, 0x6F,
0x7F, 0x71, 0x71, 0x71, 0x60, 0x76, 0x66, 0x70, 0x70, 0x70, 0x70, 0xC0, 0xE0,
0x20, 0x60, 0x60,
0x44, 0xCE, 0xDF, 0xDB, 0xF2, 0x62, 0x02, 0x02, 0x06, 0x03, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0x1B, 0x08, 0x0C, 0x04,
0x06, 0x03, 0x03,
0x3F, 0x7E, 0x40, 0x60, 0x30, 0x38, 0x0C, 0x04, 0x04, 0x3C, 0x78, 0xC0, 0x80,
0xE0, 0x78, 0x1C,
0x0C, 0x04, 0x04, 0x1C, 0x18, 0x30, 0x60, 0x62, 0x7F, 0x3F, 0x03, 0x03, 0x06,
0x06, 0x0C, 0x0C,
0x0B, 0x0F, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

int main(void){

PLL_Init(); // set system clock to 80 MHz


Nokia5110_Init(); // Ini alize SSI
Nokia5110_Clear(); // Clear LCD screen

Nokia5110_DrawFullImage(IIITDMlogo); //print IIITDM logo

Example Exercise – IIITDM Logo

Result: Successfully displayed the IIITDM logo in the Texas Nokia Peripheral.
Exercise 1:
Display an image of your choice in the Texas Nokia peripheral.

Code:
#include "tm4c123gh6pm.h"
#include <stdint.h>
#include "PLL.h"

#define MAX_X 84
#define MAX_Y 48
#define CONTRAST 0xB1

#define SCREENW 84
#define SCREENH 48

#define DC (*((vola le uint32_t *)0x40004100))


#define DC_COMMAND 0
#define DC_DATA 0x40
#define RESET (*((vola le uint32_t *)0x40004200))
#define RESET_LOW 0
#define RESET_HIGH 0x80

enum typeOfWrite{
COMMAND, // the transmission is an LCD command
DATA // the transmission is data
};

void sta c lcdwrite(enum typeOfWrite type, uint8_t message){


if(type == COMMAND){
// wait un l SSI0 not busy/transmit FIFO empty
while((SSI0_SR_R&0x00000010)==0x00000010){};
DC = DC_COMMAND;
SSI0_DR_R = message; // command out
// wait un l SSI0 not busy/transmit FIFO empty
while((SSI0_SR_R&0x00000010)==0x00000010){};
} else{
while((SSI0_SR_R&0x00000002)==0){}; // wait un l transmit FIFO not full
DC = DC_DATA;
SSI0_DR_R = message; // data out
}
}
void sta c lcddatawrite(uint8_t data){
while((SSI0_SR_R&0x00000002)==0){}; // wait un l transmit FIFO not full
DC = DC_DATA;
SSI0_DR_R = data; // data out
}

void Nokia5110_Init(void){
vola le uint32_t delay;
SYSCTL_RCGC1_R |= 0x00000010; // ac vate SSI0
SYSCTL_RCGC2_R |= 0x00000001; // ac vate port A
delay = SYSCTL_RCGC2_R; // allow me to finish ac va ng
GPIO_PORTA_DIR_R |= 0xC0; // make PA6,7 out
GPIO_PORTA_AFSEL_R |= 0x2C; // enable alt funct on PA2,3,5
GPIO_PORTA_AFSEL_R &= ~0xC0; // disable alt funct on PA6,7
GPIO_PORTA_DEN_R |= 0xEC; // enable digital I/O on PA2,3,5,6,7
GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0xFF0F00FF)+0x00202200; // configure
PA2,3,5 as SSI
GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R&0x00FFFFFF)+0x00000000; // configure PA6,7
as GPIO
GPIO_PORTA_AMSEL_R &= ~0xEC; // disable analog func onality on PA2,3,5,6,7
SSI0_CR1_R &= ~(0x00000002); // disable SSI
SSI0_CR1_R &= ~(0x00000004); // master mode
// configure for system clock/PLL baud clock source
SSI0_CC_R &= ~(0x0000000F);
SSI0_CPSR_R = (SSI0_CPSR_R&~(0x000000FF))+24; // must be even number
SSI0_CR0_R &= ~(0x0000FFF0); // SCR = 0 (3.33 Mbps data rate) // SPH = 0 // SPO = 0
// FRF = Freescale format
SSI0_CR0_R |= 0x00000007; // DSS = 8-bit data
SSI0_CR1_R |= 0x00000002; // enable SSI

RESET = RESET_LOW; // reset the LCD to a known state


for(delay=0; delay<10; delay=delay+1);// delay minimum 100 ns
RESET = RESET_HIGH; // nega ve logic

lcdwrite(COMMAND, 0x21); // chip ac ve; horizontal addressing mode (V = 0); use


extended instruc on set (H = 1)
// set LCD Vop (contrast), which may require some tweaking:
lcdwrite(COMMAND, CONTRAST); // try 0xB1 (for 3.3V red SparkFun), 0xB8 (for 3.3V blue
SparkFun), 0xBF if your display is too dark, or 0x80 to 0xFF if experimen ng
lcdwrite(COMMAND, 0x04); // set temp coefficient
lcdwrite(COMMAND, 0x14); // LCD bias mode 1:48: try 0x13 or 0x14

lcdwrite(COMMAND, 0x20); // we must send 0x20 before modifying the display control
mode
lcdwrite(COMMAND, 0x0C); // set display control to normal mode: 0x0D for inverse
}

void Nokia5110_SetCursor(uint8_t newX, uint8_t newY){


if((newX > 11) || (newY > 5)){ // bad input
return; // do nothing
}
// mul ply newX by 7 because each character is 7 columns wide
lcdwrite(COMMAND, 0x80|(newX*7)); // se ng bit 7 updates X-posi on
lcdwrite(COMMAND, 0x40|newY); // se ng bit 6 updates Y-posi on
}
void Nokia5110_Clear(void){
int i;
for(i=0; i<(MAX_X*MAX_Y/8); i=i+1){
lcddatawrite(0x00);
}
Nokia5110_SetCursor(0, 0);
}
void Nokia5110_DrawFullImage(const uint8_t *ptr){
int i;
Nokia5110_SetCursor(0, 0);
for(i=0; i<(MAX_X*MAX_Y/8); i=i+1){
lcddatawrite(ptr[i]);
}
}
const unsigned char apple [] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xC0, 0xC0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0xF8, 0xF0, 0xF0, 0xF9, 0xE9, 0xF8, 0xF8, 0xF8, 0x78, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x05, 0x07,
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
int main(void){

PLL_Init(); // set system clock to 80 MHz


Nokia5110_Init(); // Ini alize SSI
Nokia5110_Clear(); // Clear LCD screen

Nokia5110_DrawFullImage(apple); }

Exercise 1 – Apple Logo

Result: Successfully displayed an image of the Apple Logo in the Texas Nokia
Peripheral.

You might also like