embedded-systems-labs/LCD Display/LCDLab.c

82 lines
2.1 KiB
C
Raw Normal View History

2019-12-03 15:18:11 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include "TM4C123GH6PM.h"
#include "ez123G.h"
char str[100];
int main(void)
{
PEZOBJ_LCD lcd;
uint16_t i = 0;
int array[]= {10, 35, 65, 43, 32, 86, 44, 9, 18};
// Enable GPIOD[3:0] and GPIOE[3:1]
// Config for GPIOD and GPIOE
// 1. Enable Clock on GPIOs
SYSCTL->RCGCGPIO |= 0x18;
// allow time for clock to stabilize
while ((SYSCTL->PRGPIO & 0x18) != 0x18) {};
// 2. Unlock PD7
GPIOD->LOCK = 0x4C4F434B;
GPIOD->CR |= 0x80;
// 3. Config AMSEL to disable analog function
GPIOD -> AMSEL = 0x00;
GPIOE -> AMSEL = 0x00;
// 4. Config PCTL to select GPIO
GPIOD -> PCTL = 0x00;
GPIOE -> PCTL = 0x00;
// 5. Set DIR to 0 for input, 1 for output
GPIOD -> DIR |= 0x0F;
GPIOE -> DIR |= 0x0E;
// 6. Set AFSEL bits to 0
GPIOD -> AFSEL = 0x00;
GPIOE -> AFSEL = 0x00;
// 7. Set PUE bits to 1 to enable internal pull-up (Skipped)
// 8. Set DEN bits to 1 to enable data pins
GPIOD -> DEN |= 0x0F;
GPIOE -> DEN |= 0x0E;
lcd = ezLCD_Create();
ezLCD_Connect_DataPort(lcd, GPIOD, PIN_3_0);
ezLCD_Connect_ENPin(lcd, GPIOE, PIN1);
ezLCD_Connect_RSPin(lcd, GPIOE, PIN2);
ezLCD_Connect_RWPin(lcd, GPIOE, PIN3);
ezLCD_Start(lcd);
ezLCD_LoadVerticalBargraphFonts(lcd);
ezLCD_ClearDisplay(lcd);
int j = 0;
float a;
int s = 0, M = array[0], m = array[0];
int total = 0;
while(j <= 8){
ezLCD_ClearDisplay(lcd);
s += array[j];
if(array[j] > M) M = array[j];
if(array[j] < m) m = array[j];
a = s / (j + 1);
ezLCD_Position(lcd, 0, 0);
sprintf(str, "S=%d", s);
ezLCD_PrintString(lcd, str);
ezLCD_Position(lcd, 0, 8);
sprintf(str, "M=%d", M);
ezLCD_PrintString(lcd, str);
ezLCD_Position(lcd, 1, 0);
sprintf(str, "A=%.2f", a);
ezLCD_PrintString(lcd, str);
ezLCD_Position(lcd, 1, 8);
sprintf(str, "m=%d", m);
ezLCD_PrintString(lcd, str);
timer_waitMillis(500);
j++;
}
}