Rob Toulson / Mbed 2 deprecated PE_06-03_KeyPressDisplay

Dependencies:   mbed

main.cpp

Committer:
robt
Date:
2012-10-15
Revision:
0:f2b51b7dab8f

File content as of revision 0:f2b51b7dab8f:

/* Program Example 6.3: Host keypress to 7-seg display
                                                              */
#include "mbed.h"
Serial pc(USBTX, USBRX);                         // comms to host PC
BusOut Seg1(p5,p6,p7,p8,p9,p10,p11,p12);         // A,B,C,D,E,F,G,DP
BusOut Seg2(p13,p14,p15,p16,p17,p18,p19,p20);    // A,B,C,D,E,F,G,DP

void SegInit(void);                          // function prototype
void HostInit(void);                         // function prototype
char GetKeyInput(void);                      // function prototype
char SegConvert(char SegValue);              // function prototype
char data1, data2;                           // variable declarations

int main() {         // main program
  SegInit();         // call function to initialise the 7-seg displays 
  HostInit();        // call function to initialise the host terminal              
  while (1) {                 // infinite loop
    data2 = GetKeyInput();    // call function to get 1st key press
    Seg2=SegConvert(data2);   // call function to convert and output
    data1 = GetKeyInput();    // call function to get 2nd key press
    Seg1=SegConvert(data1);   // call function to convert and output
    pc.printf("  ");          // display spaces between numbers
  }
}
// functions
void SegInit(void) {
  Seg1=SegConvert(0);        // initialise to zero
  Seg2=SegConvert(0);        // initialise to zero
}

void HostInit(void) {
  pc.printf("\n\rType two digit numbers to be displayed\n\r");
}

char GetKeyInput(void) {
  char c = pc.getc();      // get keyboard data (ascii 0x30-0x39)
  pc.printf("%c",c);       // print ascii value to host PC terminal
  return (c&0x0F);         // apply bit mask to convert to decimal, and return 
}

char SegConvert(char SegValue) {        // function 'SegConvert'
  char SegByte=0x00;
  switch (SegValue) {                   //DP G F E D C B A
    case 0 : SegByte = 0x3F;break;      // 0 0 1 1 1 1 1 1 binary
    case 1 : SegByte = 0x06;break;      // 0 0 0 0 0 1 1 0 binary
    case 2 : SegByte = 0x5B;break;      // 0 1 0 1 1 0 1 1 binary
    case 3 : SegByte = 0x4F;break;      // 0 1 0 0 1 1 1 1 binary
    case 4 : SegByte = 0x66;break;      // 0 1 1 0 0 1 1 0 binary
    case 5 : SegByte = 0x6D;break;      // 0 1 1 0 1 1 0 1 binary
    case 6 : SegByte = 0x7D;break;      // 0 1 1 1 1 1 0 1 binary
    case 7 : SegByte = 0x07;break;      // 0 0 0 0 0 1 1 1 binary
    case 8 : SegByte = 0x7F;break;      // 0 1 1 1 1 1 1 1 binary
    case 9 : SegByte = 0x6F;break;      // 0 1 1 0 1 1 1 1 binary
  }
    return SegByte;
}