Solutions for the 7-Segment Display experiments for LPC812 MAX

Dependencies:   lpc812_exp_lib_PCF8591 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalIn button(D0);
00004 
00005 DigitalOut segA(D4);
00006 DigitalOut segB(D7);
00007 DigitalOut segC(D8);
00008 DigitalOut segD(D10);
00009 DigitalOut segE(D11);
00010 DigitalOut segF(D12);
00011 DigitalOut segG(D13);
00012 DigitalOut segDP(D9);
00013 
00014 static void show(int val) {
00015     // turn off all segments
00016     segA = segB = segC = segD = segE = segF = segG = 1;
00017     
00018     // turn on segments depending on what to show
00019     switch (val) {
00020         case 0: segA = segB = segC = segD = segE = segF =        0; break;
00021         case 1:        segB = segC =                             0; break;
00022         case 2: segA = segB =        segD = segE =        segG = 0; break;
00023         case 3: segA = segB = segC = segD =               segG = 0; break;
00024         case 4:        segB = segC =               segF = segG = 0; break;
00025         case 5: segA =        segC = segD =        segF = segG = 0; break;
00026         case 6: segA =        segC = segD = segE = segF = segG = 0; break;
00027         case 7: segA = segB = segC =                             0; break;
00028         case 8: segA = segB = segC = segD = segE = segF = segG = 0; break;
00029         case 9: segA = segB = segC = segD =        segF = segG = 0; break;
00030         
00031         case 'A': segA = 0; break;
00032         case 'B': segB = 0; break;
00033         case 'C': segC = 0; break;
00034         case 'D': segD = 0; break;
00035         case 'E': segE = 0; break;
00036         case 'F': segF = 0; break;
00037         case 'G': segG = 0; break;
00038     }
00039 }
00040 
00041 static void experiment2_alt1()
00042 {
00043     // Enter forever loop
00044     while(1) {
00045         for (int i = 0; i < 10; i++) {
00046             // Delay a specified period of time or wait for push-button to be pressed
00047             wait(0.3);
00048             
00049             show(i);
00050         }
00051     }
00052 }
00053 
00054 static void experiment2_alt2()
00055 {
00056     // Enable button
00057     button.mode(PullUp);
00058  
00059     // Enter forever loop
00060     while(1) {
00061         for (int i = 0; i < 10; i++) {
00062             // Delay a specified period of time or wait for push-button to be pressed
00063             while(button);
00064             while(!button);
00065             
00066             show(i);
00067         }
00068     }
00069 }
00070 
00071 static void experiment2_alt3()
00072 {
00073     // Enter forever loop
00074     while(1) {
00075         for (int i = 'A'; i < 'G'; i++) {
00076             // Delay a specified period of time or wait for push-button to be pressed
00077             wait(0.3);
00078             
00079             show(i);
00080         }
00081     }
00082 }
00083 
00084 
00085 int main()
00086 {
00087     // turn off all segments
00088     segA = segB = segC = segD = segE = segF = segG = segDP = 1;
00089     
00090     //experiment2_alt1(); // Automatic counting
00091     //experiment2_alt2(); // Push button advances counting
00092     experiment2_alt3(); // Automatic running one
00093 }