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
main.cpp
- Committer:
- spm71
- Date:
- 2018-02-21
- Revision:
- 3:293ff9cb705d
- Parent:
- 2:b444464ebe67
- Child:
- 4:0ed77d8b3e42
File content as of revision 3:293ff9cb705d:
/******************************************************************************
* EECS 397
*
* Assignment Name: Lab 4: display_test2
*
* Authors: Sam Morrison and Phong Nguyen
*
* Purpose: Configures the board for 5-digit display
*
* Last Modified: 02/19/2018
*
******************************************************************************/
#include "mbed.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
DigitalOut SS(PC_7);
SPI spi(PA_7, PA_6, PA_5);
Serial pc(USBTX, USBRX);
bool num_range(char input[5]);
char to_command(char input, int place);
int main(void) {
SS = 1;
spi.format(16,0);
spi.frequency(1000000);
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
float command = 0x0100;
int input;
//char command_text[10] = "0x0";
while(1) {
pc.printf("Select a digit between 0 and 9999:\n");
bool check = scanf("%d", &input);
while (check != 1) {
pc.printf("Select a digit between 0 and 9999:\n");
check = scanf("%d", &input);
}
/*
while (num_range(input) == false) { //ask for input until 0-9999 is selected
pc.printf("Select a digit between 0 and 9999:\n");
scanf("%d", input);
}
command_text[3] = place + '0';
command_text[4] = '0';
command_text[5] = input;
command = atof(command_text); //converts string to float
*/
pc.printf("command: %s\n", command_text);
SS = 0;
spi.write(command); // need to cycle 4 times
SS = 1;
//pc.printf("command: &f\n", commmand);
}
/*
SS = 0;
spi.write(0x0100); //set digit 0 to 0
SS = 1;
*/
}
bool num_range(char input[5]) {
bool result = true;
for (int i = 1; i < 6; i++) {
if (i > 4)
if (input[i] != 0) //checks for number larger than 9999
result = false;
if (input[i] < 48 or input[i] > 57) //checks for digits outside 0-9
result = false;
}
return result;
}
int mod_bcd(int num) {
int bcd_arr[4];
int place = 4;
int bcd = 0;
int mult = 1;
while (num != 0) {
int val = num % 10;
bcd_arr[place] = val;
num = num/10;
}
for (int i = 1; i < 5; i++) {
bcd = bcd + bcd_arr[i]*mult;
mult = mult * 10;
}
return bcd;
}
char to_command(char input, int place) {
}
