Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of Lab_6_WaG by
display.cpp
- Committer:
- spm71
- Date:
- 2018-02-22
- Revision:
- 10:ae0a262ba48d
- Parent:
- 9:06c0d5737e5c
- Child:
- 11:6751b9406142
File content as of revision 10:ae0a262ba48d:
/******************************************************************************
* 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>
#define VERSION1
//#define VERSION2
/*
* 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;
}
#ifdef VERSION1
/*
* void bin2bcd_array(int num);
* Description:
*
* Inputs:
* Parameters:
* int num:
* Globals:
*
* Outputs:
* Parameters:
* Globals:
* Returns: void
*/
void bin2bcd_array(int num, char bcd[]) {
int size = 4;
int dec_arr[size];
int place = 3;
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 = size - 1; i >= 0; i--) { //converts decimal array to binary array
bcd[i] = convert(dec_arr[i]);
}
}
#endif
/*
* 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) + ' ');
}
#ifdef VERSION2
/*
* void bin2bcd_array(int num);
* Description: converts a number from binary format to binary coded
* decimal array using sprintf() method
*
* Inputs:
* Parameters:
* int num: number in binary format
* int &bcd: pointer to bcd (binary coded decimal) array
*
* Outputs:
* Returns: void
*/
void bin2bcd_array(int num, char bcd[]) {
char tmp_array[4];
sprintf(tmp_array, "%d", num);
int i = 0;
while (tmp_array[i] != '\0') {
bcd[3 - i] = tmp_array[i];
i++;
}
}
#endif
/*
* 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';
}
