Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The project aims to create a program to shows a scoreboard on the microcontrolle

ID: 3655409 • Letter: T

Question


The project aims to create a program to shows a scoreboard on the microcontroller. The following program is my menu to shows the scoreboard,please help me check my program

scoreboard layout

Program:

#include <p18f46K20.h>

#include <stdio.h>

#include <stdlib.h>

#include <stdio.h>

#include "delays.h"

#include "oled_interface.h"

#include "oled_jib.h"

#include "oled_cmd.h"

#include <math.h>


#define switch1 PORTBbits.RB0

#define switch2 PORTBbits.RB1

#define switch3 PORTBbits.RB2

#define switch4 PORTBbits.RB3


enum type {main,Home_Team,Guests_Team};


char echo[100];

unsigned int argument[6];


int x=0,y=0,m=0,n=0;

//x, y stand for two teams score and m,n stand for match


/************* D E C L A R A T I O N S *******************/

void InitializeSystem(void);

void scoreboard(void);

unsigned char scoreboard(void);

int Getkey(void); //A blocking function that waits for a key to be pressed. This function handles the [MENU] key.

void InitializeSystem(void);


void main(void)

{

char temp;

int x,y,m,n;

int x=0;

int y=0;

int m=0;

int n=0;

enum type state = MAIN;

InitializeSystem();


delay = 30000;

while(delay--);


// These are the functions you need to use to initialise the display

oled_init();

oled_clear();

oled_refresh();


//Type the match of sports event

typedef struct

{

char scoreHome_Team; //Home team win in the period

char scoreGuests_Team;

}match_t;


//Type the points of sports event in one match

typedef struct

{

char Home_Teamn; //Home team got 1 point in the match

char Guests_Teamn;

match_t match[7]; // Maximum 7 matches

}score_t;


}


while (1)

{

switch(state)

{

case (MAIN):

{

Delay10KTCYx(250);

oled_clear();

oled_fixeds_1x("Team Period Digits Home Guest");

oled_refresh();


} break;

Explanation / Answer

; put data in RAM &nbsp; &nbsp; &nbsp; &nbsp; MOV 30H, #'0' &nbsp; &nbsp; &nbsp; &nbsp; MOV 31H, #'0' &nbsp; &nbsp; &nbsp; &nbsp; MOV 32H, #'0' &nbsp; &nbsp; &nbsp; &nbsp; MOV 33H, #'0' &nbsp; &nbsp; &nbsp; &nbsp; MOV 34H, #0; end of data marker ; initialise the display ; see instruction set for details &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; clear RS - indicates that instructions are being sent to the module ; function set&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | high nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; CALL delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; wait for BF to clear&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; function set sent for first time - tells module to go into 4-bit mode ; Why is function set high nibble sent twice? See 4-bit operation on pages 39 and 42 of HD44780.pdf. &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; same function set high nibble sent a second time &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; low nibble set (only P1.7 needed to be changed) &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; function set low nibble sent &nbsp; &nbsp; &nbsp; &nbsp; CALL delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; wait for BF to clear ; entry mode set ; set to increment with no shift &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | high nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; |low nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; CALL delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; wait for BF to clear ; display on/off control ; the display is turned on, the cursor is turned on and blinking is turned on &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | high nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | low nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; CALL delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; wait for BF to clear ; send data &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; clear RS - indicates that data is being sent to module &nbsp; &nbsp; &nbsp; &nbsp; MOV R1, #30H&nbsp; &nbsp; ; data to be sent to LCD is stored in 8051 RAM, starting at location 30H loop: &nbsp; &nbsp; &nbsp; &nbsp; MOV A, @R1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; move data pointed to by R1 to A &nbsp; &nbsp; &nbsp; &nbsp; JZ finish &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; if A is 0, then end of data has been reached - jump out of loop &nbsp; &nbsp; &nbsp; &nbsp; CALL sendCharacter&nbsp; &nbsp; &nbsp; ; send data in A to LCD module &nbsp; &nbsp; &nbsp; &nbsp; INC R1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; point to next piece of data &nbsp; &nbsp; &nbsp; &nbsp; JMP loop&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; repeat finish: &nbsp; &nbsp; &nbsp; &nbsp; JMP $ sendCharacter: &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.7&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.7, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.6&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.6, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.5&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.5, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.4, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | high nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.3&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.7, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.6, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.5, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV C, ACC.0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; MOV P1.4, C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | low nibble set &nbsp; &nbsp; &nbsp; &nbsp; SETB P1.2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | &nbsp; &nbsp; &nbsp; &nbsp; CLR P1.2&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; | negative edge on E &nbsp; &nbsp; &nbsp; &nbsp; CALL delay&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; wait for BF to clear delay: &nbsp; &nbsp; &nbsp; &nbsp; MOV R0, #50 &nbsp; &nbsp; &nbsp; &nbsp; DJNZ R0, $ &nbsp; &nbsp; &nbsp; &nbsp; RET &nbsp;