Rob Toulson / Mbed 2 deprecated PE_06-03_KeyPressDisplay

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
robt
Date:
Mon Oct 15 21:23:00 2012 +0000
Commit message:
by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Oct 15 21:23:00 2012 +0000
@@ -0,0 +1,56 @@
+/* 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;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Oct 15 21:23:00 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/cd19af002ccc
\ No newline at end of file