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@0:ee6e5c60dd2d, 2018-02-20 (annotated)
- Committer:
- spm71
- Date:
- Tue Feb 20 16:39:34 2018 +0000
- Revision:
- 0:ee6e5c60dd2d
- Child:
- 1:1b05289d0bf5
Initial commit
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 | |
| 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 | 0:ee6e5c60dd2d | 23 | int main(void) { |
| spm71 | 0:ee6e5c60dd2d | 24 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 25 | |
| spm71 | 0:ee6e5c60dd2d | 26 | spi.format(16,0); |
| spm71 | 0:ee6e5c60dd2d | 27 | spi.frequency(1000000); |
| spm71 | 0:ee6e5c60dd2d | 28 | |
| spm71 | 0:ee6e5c60dd2d | 29 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 30 | spi.write(0x0C01); //normal operation |
| spm71 | 0:ee6e5c60dd2d | 31 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 32 | |
| spm71 | 0:ee6e5c60dd2d | 33 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 34 | spi.write(0x090F); //decode to bits 0:3 |
| spm71 | 0:ee6e5c60dd2d | 35 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 36 | |
| spm71 | 0:ee6e5c60dd2d | 37 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 38 | spi.write(0x0F00); //set to normal mode |
| spm71 | 0:ee6e5c60dd2d | 39 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 40 | |
| spm71 | 0:ee6e5c60dd2d | 41 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 42 | spi.write(0x0A0F); //intensity set to max |
| spm71 | 0:ee6e5c60dd2d | 43 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 44 | |
| spm71 | 0:ee6e5c60dd2d | 45 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 46 | spi.write(0x0B04); //display digits 0:4 |
| spm71 | 0:ee6e5c60dd2d | 47 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 48 | |
| spm71 | 0:ee6e5c60dd2d | 49 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 50 | spi.write(0x0100); //set digit 1 to 0 |
| spm71 | 0:ee6e5c60dd2d | 51 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 52 | |
| spm71 | 0:ee6e5c60dd2d | 53 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 54 | spi.write(0x0200); //set digit 2 to 0 |
| spm71 | 0:ee6e5c60dd2d | 55 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 56 | |
| spm71 | 0:ee6e5c60dd2d | 57 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 58 | spi.write(0x0300); //set digit 3 to 0 |
| spm71 | 0:ee6e5c60dd2d | 59 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 60 | |
| spm71 | 0:ee6e5c60dd2d | 61 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 62 | spi.write(0x0400); //set digit 4 to 0 |
| spm71 | 0:ee6e5c60dd2d | 63 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 64 | |
| spm71 | 0:ee6e5c60dd2d | 65 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 66 | spi.write(0x0500); //set digit 5 to 0 |
| spm71 | 0:ee6e5c60dd2d | 67 | |
| spm71 | 0:ee6e5c60dd2d | 68 | float command = 0x0100; |
| spm71 | 0:ee6e5c60dd2d | 69 | char input[4]; |
| spm71 | 0:ee6e5c60dd2d | 70 | char command_text[10] = "0x0"; |
| spm71 | 0:ee6e5c60dd2d | 71 | while(1) { |
| spm71 | 0:ee6e5c60dd2d | 72 | pc.printf("Select a digit between 0 and 9999:\n"); |
| spm71 | 0:ee6e5c60dd2d | 73 | input = getchar(); |
| spm71 | 0:ee6e5c60dd2d | 74 | while (input < 48 or input > 57) { //ask for input until 0-9 is selected |
| spm71 | 0:ee6e5c60dd2d | 75 | pc.printf("Select a digit between 0 and 9999:\n"); |
| spm71 | 0:ee6e5c60dd2d | 76 | scanf("%d", &input); |
| spm71 | 0:ee6e5c60dd2d | 77 | } |
| spm71 | 0:ee6e5c60dd2d | 78 | |
| spm71 | 0:ee6e5c60dd2d | 79 | command_text[3] = place + '0'; |
| spm71 | 0:ee6e5c60dd2d | 80 | command_text[4] = '0'; |
| spm71 | 0:ee6e5c60dd2d | 81 | command_text[5] = input; |
| spm71 | 0:ee6e5c60dd2d | 82 | |
| spm71 | 0:ee6e5c60dd2d | 83 | command = atof(command_text); //converts string to float |
| spm71 | 0:ee6e5c60dd2d | 84 | |
| spm71 | 0:ee6e5c60dd2d | 85 | pc.printf("command: %s\n", command_text); |
| spm71 | 0:ee6e5c60dd2d | 86 | |
| spm71 | 0:ee6e5c60dd2d | 87 | |
| spm71 | 0:ee6e5c60dd2d | 88 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 89 | spi.write(command); |
| spm71 | 0:ee6e5c60dd2d | 90 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 91 | //pc.printf("command: &f\n", commmand); |
| spm71 | 0:ee6e5c60dd2d | 92 | } |
| spm71 | 0:ee6e5c60dd2d | 93 | /* |
| spm71 | 0:ee6e5c60dd2d | 94 | SS = 0; |
| spm71 | 0:ee6e5c60dd2d | 95 | spi.write(0x0100); //set digit 0 to 0 |
| spm71 | 0:ee6e5c60dd2d | 96 | SS = 1; |
| spm71 | 0:ee6e5c60dd2d | 97 | */ |
| spm71 | 0:ee6e5c60dd2d | 98 | } |
| spm71 | 0:ee6e5c60dd2d | 99 |
