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@7:161fe3793ddb, 2018-02-22 (annotated)
- Committer:
- phn10
- Date:
- Thu Feb 22 02:06:07 2018 +0000
- Revision:
- 7:161fe3793ddb
- Parent:
- 6:749a691e2abf
- Child:
- 8:d8bc78bda829
remove function bool num_range() because it's no longer necessary.; move all function definitions to .cpp file
Who changed what in which revision?
User | Revision | Line number | New 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 | |
phn10 | 6:749a691e2abf | 18 | DigitalOut SS(CHIP_SELECT); |
spm71 | 0:ee6e5c60dd2d | 19 | |
phn10 | 6:749a691e2abf | 20 | SPI spi(MOSI, MISO, SCLK); |
spm71 | 0:ee6e5c60dd2d | 21 | Serial pc(USBTX, USBRX); |
spm71 | 0:ee6e5c60dd2d | 22 | |
spm71 | 1:1b05289d0bf5 | 23 | bool num_range(char input[5]); |
spm71 | 4:0ed77d8b3e42 | 24 | int convert(int dec); |
spm71 | 1:1b05289d0bf5 | 25 | char to_command(char input, int place); |
spm71 | 4:0ed77d8b3e42 | 26 | int bcd[4]; |
spm71 | 1:1b05289d0bf5 | 27 | |
spm71 | 0:ee6e5c60dd2d | 28 | int main(void) { |
spm71 | 0:ee6e5c60dd2d | 29 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 30 | |
spm71 | 0:ee6e5c60dd2d | 31 | spi.format(16,0); |
spm71 | 0:ee6e5c60dd2d | 32 | spi.frequency(1000000); |
spm71 | 0:ee6e5c60dd2d | 33 | |
spm71 | 0:ee6e5c60dd2d | 34 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 35 | spi.write(0x0C01); //normal operation |
spm71 | 0:ee6e5c60dd2d | 36 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 37 | |
spm71 | 0:ee6e5c60dd2d | 38 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 39 | spi.write(0x090F); //decode to bits 0:3 |
spm71 | 0:ee6e5c60dd2d | 40 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 41 | |
spm71 | 0:ee6e5c60dd2d | 42 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 43 | spi.write(0x0F00); //set to normal mode |
spm71 | 0:ee6e5c60dd2d | 44 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 45 | |
spm71 | 0:ee6e5c60dd2d | 46 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 47 | spi.write(0x0A0F); //intensity set to max |
spm71 | 0:ee6e5c60dd2d | 48 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 49 | |
spm71 | 0:ee6e5c60dd2d | 50 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 51 | spi.write(0x0B04); //display digits 0:4 |
spm71 | 0:ee6e5c60dd2d | 52 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 53 | |
spm71 | 0:ee6e5c60dd2d | 54 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 55 | spi.write(0x0100); //set digit 1 to 0 |
spm71 | 0:ee6e5c60dd2d | 56 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 57 | |
spm71 | 0:ee6e5c60dd2d | 58 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 59 | spi.write(0x0200); //set digit 2 to 0 |
spm71 | 0:ee6e5c60dd2d | 60 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 61 | |
spm71 | 0:ee6e5c60dd2d | 62 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 63 | spi.write(0x0300); //set digit 3 to 0 |
spm71 | 0:ee6e5c60dd2d | 64 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 65 | |
spm71 | 0:ee6e5c60dd2d | 66 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 67 | spi.write(0x0400); //set digit 4 to 0 |
spm71 | 0:ee6e5c60dd2d | 68 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 69 | |
spm71 | 0:ee6e5c60dd2d | 70 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 71 | spi.write(0x0500); //set digit 5 to 0 |
spm71 | 0:ee6e5c60dd2d | 72 | |
spm71 | 0:ee6e5c60dd2d | 73 | float command = 0x0100; |
spm71 | 2:b444464ebe67 | 74 | int input; |
spm71 | 1:1b05289d0bf5 | 75 | //char command_text[10] = "0x0"; |
spm71 | 0:ee6e5c60dd2d | 76 | while(1) { |
spm71 | 0:ee6e5c60dd2d | 77 | pc.printf("Select a digit between 0 and 9999:\n"); |
spm71 | 2:b444464ebe67 | 78 | bool check = scanf("%d", &input); |
spm71 | 2:b444464ebe67 | 79 | while (check != 1) { |
spm71 | 0:ee6e5c60dd2d | 80 | pc.printf("Select a digit between 0 and 9999:\n"); |
spm71 | 2:b444464ebe67 | 81 | check = scanf("%d", &input); |
spm71 | 0:ee6e5c60dd2d | 82 | } |
spm71 | 0:ee6e5c60dd2d | 83 | |
spm71 | 1:1b05289d0bf5 | 84 | /* |
spm71 | 2:b444464ebe67 | 85 | while (num_range(input) == false) { //ask for input until 0-9999 is selected |
spm71 | 2:b444464ebe67 | 86 | pc.printf("Select a digit between 0 and 9999:\n"); |
spm71 | 2:b444464ebe67 | 87 | scanf("%d", input); |
spm71 | 2:b444464ebe67 | 88 | } |
spm71 | 2:b444464ebe67 | 89 | |
spm71 | 2:b444464ebe67 | 90 | |
spm71 | 0:ee6e5c60dd2d | 91 | command_text[3] = place + '0'; |
spm71 | 0:ee6e5c60dd2d | 92 | command_text[4] = '0'; |
spm71 | 0:ee6e5c60dd2d | 93 | command_text[5] = input; |
spm71 | 0:ee6e5c60dd2d | 94 | |
spm71 | 0:ee6e5c60dd2d | 95 | command = atof(command_text); //converts string to float |
spm71 | 1:1b05289d0bf5 | 96 | */ |
spm71 | 0:ee6e5c60dd2d | 97 | |
spm71 | 0:ee6e5c60dd2d | 98 | pc.printf("command: %s\n", command_text); |
spm71 | 0:ee6e5c60dd2d | 99 | |
spm71 | 0:ee6e5c60dd2d | 100 | |
spm71 | 0:ee6e5c60dd2d | 101 | SS = 0; |
spm71 | 1:1b05289d0bf5 | 102 | spi.write(command); // need to cycle 4 times |
spm71 | 0:ee6e5c60dd2d | 103 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 104 | //pc.printf("command: &f\n", commmand); |
spm71 | 0:ee6e5c60dd2d | 105 | } |
spm71 | 1:1b05289d0bf5 | 106 | |
spm71 | 0:ee6e5c60dd2d | 107 | /* |
spm71 | 0:ee6e5c60dd2d | 108 | SS = 0; |
spm71 | 0:ee6e5c60dd2d | 109 | spi.write(0x0100); //set digit 0 to 0 |
spm71 | 0:ee6e5c60dd2d | 110 | SS = 1; |
spm71 | 0:ee6e5c60dd2d | 111 | */ |
phn10 | 7:161fe3793ddb | 112 | } |