Lab 6 code.

Dependencies:   mbed

Fork of WaG by GroupA

Committer:
spm71
Date:
Tue Feb 20 17:17:55 2018 +0000
Revision:
1:1b05289d0bf5
Parent:
0:ee6e5c60dd2d
Child:
2:b444464ebe67
Updated input and set up for two BCD conversion functions

Who changed what in which revision?

UserRevisionLine numberNew contents of line
spm71 0:ee6e5c60dd2d 1 /******************************************************************************
spm71 0:ee6e5c60dd2d 2 * EECS 397
spm71 0:ee6e5c60dd2d 3 *
spm71 0:ee6e5c60dd2d 4 * Assignment Name: Lab 4: display_test2
spm71 0:ee6e5c60dd2d 5 *
spm71 0:ee6e5c60dd2d 6 * Authors: Sam Morrison and Phong Nguyen
spm71 0:ee6e5c60dd2d 7 *
spm71 0:ee6e5c60dd2d 8 * Purpose: Configures the board for 5-digit display
spm71 0:ee6e5c60dd2d 9 *
spm71 0:ee6e5c60dd2d 10 * Last Modified: 02/19/2018
spm71 0:ee6e5c60dd2d 11 *
spm71 0:ee6e5c60dd2d 12 ******************************************************************************/
spm71 0:ee6e5c60dd2d 13 #include "mbed.h"
spm71 0:ee6e5c60dd2d 14 #include <stdlib.h>
spm71 0:ee6e5c60dd2d 15 #include <stdio.h>
spm71 0:ee6e5c60dd2d 16 #include <string.h>
spm71 0:ee6e5c60dd2d 17
spm71 0:ee6e5c60dd2d 18 DigitalOut SS(PC_7);
spm71 0:ee6e5c60dd2d 19
spm71 0:ee6e5c60dd2d 20 SPI spi(PA_7, PA_6, PA_5);
spm71 0:ee6e5c60dd2d 21 Serial pc(USBTX, USBRX);
spm71 0:ee6e5c60dd2d 22
spm71 1:1b05289d0bf5 23 bool num_range(char input[5]);
spm71 1:1b05289d0bf5 24 char to_command(char input, int place);
spm71 1:1b05289d0bf5 25
spm71 0:ee6e5c60dd2d 26 int main(void) {
spm71 0:ee6e5c60dd2d 27 SS = 1;
spm71 0:ee6e5c60dd2d 28
spm71 0:ee6e5c60dd2d 29 spi.format(16,0);
spm71 0:ee6e5c60dd2d 30 spi.frequency(1000000);
spm71 0:ee6e5c60dd2d 31
spm71 0:ee6e5c60dd2d 32 SS = 0;
spm71 0:ee6e5c60dd2d 33 spi.write(0x0C01); //normal operation
spm71 0:ee6e5c60dd2d 34 SS = 1;
spm71 0:ee6e5c60dd2d 35
spm71 0:ee6e5c60dd2d 36 SS = 0;
spm71 0:ee6e5c60dd2d 37 spi.write(0x090F); //decode to bits 0:3
spm71 0:ee6e5c60dd2d 38 SS = 1;
spm71 0:ee6e5c60dd2d 39
spm71 0:ee6e5c60dd2d 40 SS = 0;
spm71 0:ee6e5c60dd2d 41 spi.write(0x0F00); //set to normal mode
spm71 0:ee6e5c60dd2d 42 SS = 1;
spm71 0:ee6e5c60dd2d 43
spm71 0:ee6e5c60dd2d 44 SS = 0;
spm71 0:ee6e5c60dd2d 45 spi.write(0x0A0F); //intensity set to max
spm71 0:ee6e5c60dd2d 46 SS = 1;
spm71 0:ee6e5c60dd2d 47
spm71 0:ee6e5c60dd2d 48 SS = 0;
spm71 0:ee6e5c60dd2d 49 spi.write(0x0B04); //display digits 0:4
spm71 0:ee6e5c60dd2d 50 SS = 1;
spm71 0:ee6e5c60dd2d 51
spm71 0:ee6e5c60dd2d 52 SS = 0;
spm71 0:ee6e5c60dd2d 53 spi.write(0x0100); //set digit 1 to 0
spm71 0:ee6e5c60dd2d 54 SS = 1;
spm71 0:ee6e5c60dd2d 55
spm71 0:ee6e5c60dd2d 56 SS = 0;
spm71 0:ee6e5c60dd2d 57 spi.write(0x0200); //set digit 2 to 0
spm71 0:ee6e5c60dd2d 58 SS = 1;
spm71 0:ee6e5c60dd2d 59
spm71 0:ee6e5c60dd2d 60 SS = 0;
spm71 0:ee6e5c60dd2d 61 spi.write(0x0300); //set digit 3 to 0
spm71 0:ee6e5c60dd2d 62 SS = 1;
spm71 0:ee6e5c60dd2d 63
spm71 0:ee6e5c60dd2d 64 SS = 0;
spm71 0:ee6e5c60dd2d 65 spi.write(0x0400); //set digit 4 to 0
spm71 0:ee6e5c60dd2d 66 SS = 1;
spm71 0:ee6e5c60dd2d 67
spm71 0:ee6e5c60dd2d 68 SS = 0;
spm71 0:ee6e5c60dd2d 69 spi.write(0x0500); //set digit 5 to 0
spm71 0:ee6e5c60dd2d 70
spm71 0:ee6e5c60dd2d 71 float command = 0x0100;
spm71 1:1b05289d0bf5 72 char input[5];
spm71 1:1b05289d0bf5 73 //char command_text[10] = "0x0";
spm71 0:ee6e5c60dd2d 74 while(1) {
spm71 0:ee6e5c60dd2d 75 pc.printf("Select a digit between 0 and 9999:\n");
spm71 1:1b05289d0bf5 76 scanf("%5s", input);
spm71 1:1b05289d0bf5 77 while (num_range(input) == false) { //ask for input until 0-9999 is selected
spm71 0:ee6e5c60dd2d 78 pc.printf("Select a digit between 0 and 9999:\n");
spm71 1:1b05289d0bf5 79 scanf("%5s", input);
spm71 0:ee6e5c60dd2d 80 }
spm71 0:ee6e5c60dd2d 81
spm71 1:1b05289d0bf5 82 /*
spm71 0:ee6e5c60dd2d 83 command_text[3] = place + '0';
spm71 0:ee6e5c60dd2d 84 command_text[4] = '0';
spm71 0:ee6e5c60dd2d 85 command_text[5] = input;
spm71 0:ee6e5c60dd2d 86
spm71 0:ee6e5c60dd2d 87 command = atof(command_text); //converts string to float
spm71 1:1b05289d0bf5 88 */
spm71 0:ee6e5c60dd2d 89
spm71 0:ee6e5c60dd2d 90 pc.printf("command: %s\n", command_text);
spm71 0:ee6e5c60dd2d 91
spm71 0:ee6e5c60dd2d 92
spm71 0:ee6e5c60dd2d 93 SS = 0;
spm71 1:1b05289d0bf5 94 spi.write(command); // need to cycle 4 times
spm71 0:ee6e5c60dd2d 95 SS = 1;
spm71 0:ee6e5c60dd2d 96 //pc.printf("command: &f\n", commmand);
spm71 0:ee6e5c60dd2d 97 }
spm71 1:1b05289d0bf5 98
spm71 0:ee6e5c60dd2d 99 /*
spm71 0:ee6e5c60dd2d 100 SS = 0;
spm71 0:ee6e5c60dd2d 101 spi.write(0x0100); //set digit 0 to 0
spm71 0:ee6e5c60dd2d 102 SS = 1;
spm71 0:ee6e5c60dd2d 103 */
spm71 0:ee6e5c60dd2d 104 }
spm71 1:1b05289d0bf5 105
spm71 1:1b05289d0bf5 106 bool num_range(char input[5]) {
spm71 1:1b05289d0bf5 107 bool result = true;
spm71 1:1b05289d0bf5 108 for (int i = 1; i < 6; i++) {
spm71 1:1b05289d0bf5 109 if (i > 4)
spm71 1:1b05289d0bf5 110 if (input[i] != 0) //checks for number larger than 9999
spm71 1:1b05289d0bf5 111 result = false;
spm71 1:1b05289d0bf5 112 if (input[i] < 48 or input[i] > 57) //checks for digits outside 0-9
spm71 1:1b05289d0bf5 113 result = false;
spm71 1:1b05289d0bf5 114 }
spm71 1:1b05289d0bf5 115 return result;
spm71 1:1b05289d0bf5 116 }
spm71 1:1b05289d0bf5 117
spm71 1:1b05289d0bf5 118 char to_command(char input, int place) {
spm71 1:1b05289d0bf5 119
spm71 1:1b05289d0bf5 120 }
spm71 0:ee6e5c60dd2d 121