GroupA / Mbed 2 deprecated Lab_6_WaG

Dependencies:   mbed

Fork of WaG by GroupA

display.cpp

Committer:
phn10
Date:
2018-02-22
Revision:
8:d8bc78bda829
Parent:
7:161fe3793ddb
Child:
9:06c0d5737e5c

File content as of revision 8:d8bc78bda829:

/******************************************************************************
* EECS 397
*
* Assignment Name: Lab 4: display_test2
* 
* Authors: Sam Morrison and Phong Nguyen 
* File name: display.cpp
* Purpose: Contain function definitions
* 
* Created: 02/21/2018
* Last Modified: 02/21/2018
*
******************************************************************************/
#include "mbed.h"
#include "io_pins.h"
#include "display.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int bcd[4];


/*
 * void initial_setup(DigitalOut SS, int data_length, int frequency);
 * Description: setup spi data length (in bit), spi frequency, set LED 
 *              display to normal operation, and set all display numbers
 *              to 0.
 * 
 * Inputs: 
 *      Parameters:
 *          SPI spi: spi object 
 *          DigitalOut SS: chip select pin
 *          int data_length: spi data length in bit
 *          int frequency: frequency of SPI communication
 *      
 * Outputs:
 *      Returns: void
*/
void initial_setup(DigitalOut SS, int data_length, int frequency) {
    SS = 1; 
    spi.format(data_length, 0);
    spi.frequency(frequency);
    
    SS = 0;
    spi.write(0x0C01); //normal operation
    SS = 1;
    
    SS = 0;
    spi.write(0x090F); //decode to bits 0:3
    SS = 1;
    
    SS = 0;
    spi.write(0x0F00); //set to normal mode
    SS = 1;
    
    SS = 0;
    spi.write(0x0A0F); //intensity set to max
    SS = 1;
    
    SS = 0;
    spi.write(0x0B04); //display digits 0:4
    SS = 1;
    
    SS = 0;
    spi.write(0x0100); //set digit 1 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0200); //set digit 2 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0300); //set digit 3 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0400); //set digit 4 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0500); //set digit 5 to 0
    SS = 1;
}

/*
 * void mod_bcd(int num);
 * Description: 
 *
 * Inputs: 
 *      Parameters:
 *          int num: 
 *      Globals:
 *      
 * Outputs:
 *      Parameters:
 *      Globals:
 *      Returns: void
*/
void mod_bcd(int num) {
    int size = 4;
    int dec_arr[size];
    int place = 0;
    while (num != 0) { //converts decimal input to decimal array using %mod
        int val = num % 10;
        dec_arr[place] = val;
        num = num/10;
        place++;
    }
    for (int i = 0; i < size; i++) { //converts decimal array to binary array
        bcd[i] = convert(dec_arr[i]);
    }
}

/*
 * int convert(int dec);
 * Description: 
 *
 * Inputs: 
 *      Parameters:
 *          int dec: 
 *      Globals:
 *      
 * Outputs:
 *      Parameters:
 *      Globals:
 *      Returns: void
*/
int convert(int dec) {//convert decimal to binary
    if (dec == 0) //function complete
        return 0; 
    else //recursive call until converted
        return (dec % 2 + 10 * convert(dec / 2)); 
}

/*
 * char to_command(char input, int place);
 * Description: 
 *
 * Inputs: 
 *      Parameters:
 *          char input:
 *          int place: 
 *      Globals:
 *      
 * Outputs:
 *      Parameters:
 *      Globals:
 *      Returns: char
*/
char to_command(char input, int place) {
    return 'a';
}