Charles Tritt
/
21_7segmentTest2_v5
Modified, multi-file version of my orginal 7-segment test program.
Diff: main.cpp
- Revision:
- 112:2af5a1ac47d5
- Parent:
- 111:47b0267b8dd4
--- a/main.cpp Tue Nov 09 20:33:18 2021 +0000 +++ b/main.cpp Wed Nov 10 14:51:10 2021 +0000 @@ -1,6 +1,9 @@ /* - Project: 21_7segmentTest_v5 (Lab Wk 10) - File: main.cpp + Project: 21_7segmentTest2_v5 (Lab Wk 10) + File: main.cpp (v. 1.0) + + This is a modified, multi-file version of my original 7-segment display + test program. This test program confirms hardware operation and demonstrates use of the 7-segement display. It will also be used as the starting point for the @@ -17,61 +20,33 @@ Created: 11/9/21 (v. 1.0) */ #include "mbed.h" - -void display(int disVal, BusOut &disBus); - -Serial pc(USBTX, NC, 9600); // Use for debugging. +#include "display.h" const int SLP_TIME = 1000; // Update once per second. int main(void) { + Serial pc(USBTX, NC, 9600); // Use for debugging. // Note that bit sequence is the oposite of what I initially thought they // would be. That is, pins are listed in low order to high order sequence. BusOut disBus(D9, D8, D7, D6, D5, D4, D3, D2); // The display. int myCount = 0; // Loop count. Rolls over at 18. // Test the wiring. + display(18, disBus); // All on (binary). - ThisThread::sleep_for(2000); // Test even bars for 0.4 seconds. + pc.printf("Wiring test. All segments on.\n"); // Status message. + ThisThread::sleep_for(2000); // Light all segments for 2 seconds. display(17, disBus); // All off (binary). - ThisThread::sleep_for(2000); // Test even bars for 0.4 seconds. + pc.printf("Wiring test All segments off.\n"); // Status message. + ThisThread::sleep_for(2000); // Turn off all segments for 2 seconds. // Enter main loop. while(true) { display(myCount, disBus); // Display myCount (count). - pc.printf("In main myCount = %d.\n", myCount); // Send count to PC. + pc.printf("In main myCount = %x.\n", myCount); // Send count to PC. myCount++; // Increment the count. if (myCount > 18) myCount = 0; // Rollover! ThisThread::sleep_for(SLP_TIME); // Display value for 1 second. } -} - -void display(int disVal, BusOut &disBus){ - // 7-segment, active low look-up-table. Displays Hex 0 to F, dp, all off - // and all on. - const int lutAL[] = { - 0b00000011, // 0 = 0 - 0b10011111, // 1 = 1 - 0b00100101, // 2 = 2 - 0b00001101, // 3 = 3 - 0b10011001, // 4 = 4 - 0b01001001, // 5 = 5 - 0b01000001, // 6 = 6 - 0b00011111, // 7 = 7 - 0b00000001, // 8 = 8 - 0b00001001, // 9 = 9 - 0b00010001, // 10 = a - 0b11000001, // 11 = b - 0b11100101, // 12 = c - 0b10000101, // 13 = d - 0b01100001, // 14 = e - 0b01110001, // 15 = f - 0b11111110, // 16 = dp - 0b11111111, // 17 = All off - 0b00000000 // 18 = All on - //abcdefg_dp – 7-segement output codes 0 to 18. - }; - disBus = lutAL[disVal]; - pc.printf("In display, disVal = %d\n", disVal); } \ No newline at end of file