VT3_Mario_Sekulić

Dependencies:   mbed

Committer:
msekulic
Date:
Thu Nov 17 18:02:44 2016 +0000
Revision:
0:2f783aa11c1d
VT3_Mario_Sekuli?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
msekulic 0:2f783aa11c1d 1
msekulic 0:2f783aa11c1d 2 // main program code for Exercise 7-6
msekulic 0:2f783aa11c1d 3 #include "mbed.h"
msekulic 0:2f783aa11c1d 4 Serial pc(USBTX, USBRX); // comms to host PC
msekulic 0:2f783aa11c1d 5 BusOut Seg1(p5,p6,p7,p8,p9,p10,p11,p12); // A,B,C,D,E,F,G,DP
msekulic 0:2f783aa11c1d 6 BusOut Seg2(p13,p14,p15,p16,p17,p18,p19,p20); // A,B,C,D,E,F,G,DP
msekulic 0:2f783aa11c1d 7 void SegInit(void); // function prototype
msekulic 0:2f783aa11c1d 8 void HostInit(void); // function prototype
msekulic 0:2f783aa11c1d 9 char GetKeyInput(void); // function prototype
msekulic 0:2f783aa11c1d 10 char SegConvert(char SegValue); // function prototype
msekulic 0:2f783aa11c1d 11 char data1, data2; // variable declarations
msekulic 0:2f783aa11c1d 12 int main() // main program
msekulic 0:2f783aa11c1d 13 {
msekulic 0:2f783aa11c1d 14 SegInit(); // call function to initialise the 7-seg displays
msekulic 0:2f783aa11c1d 15 HostInit(); // call function to initialise the host terminal
msekulic 0:2f783aa11c1d 16 while (1) { // infinite loop
msekulic 0:2f783aa11c1d 17 data2 = GetKeyInput(); // call function to get 1st key press
msekulic 0:2f783aa11c1d 18 Seg2=SegConvert(data2); // call function to convert and output
msekulic 0:2f783aa11c1d 19 data1 = GetKeyInput(); // call function to get 2nd key press
msekulic 0:2f783aa11c1d 20 Seg1=SegConvert(data1); // call function to convert and output
msekulic 0:2f783aa11c1d 21 pc.printf(" "); // display spaces between 2 digit numbers
msekulic 0:2f783aa11c1d 22 }
msekulic 0:2f783aa11c1d 23 }
msekulic 0:2f783aa11c1d 24 // functions for Exercise 7-6
msekulic 0:2f783aa11c1d 25 void SegInit(void)
msekulic 0:2f783aa11c1d 26 {
msekulic 0:2f783aa11c1d 27 Seg1=SegConvert(0); // initialise to zero
msekulic 0:2f783aa11c1d 28 Seg2=SegConvert(0); // initialise to zero
msekulic 0:2f783aa11c1d 29 }
msekulic 0:2f783aa11c1d 30 void HostInit(void)
msekulic 0:2f783aa11c1d 31 {
msekulic 0:2f783aa11c1d 32 pc.printf("\n\rType two digit numbers to be displayed on the 7-seg display\n\r");
msekulic 0:2f783aa11c1d 33 }
msekulic 0:2f783aa11c1d 34 char GetKeyInput(void)
msekulic 0:2f783aa11c1d 35 {
msekulic 0:2f783aa11c1d 36 char c = pc.getc(); // get keyboard data (note num. ascii range 0x30-0x39)
msekulic 0:2f783aa11c1d 37 pc.printf("%c",c); // print ascii value to host PC terminal
msekulic 0:2f783aa11c1d 38 return (c&0x0F); // return value as non-ascii (bitmask c with value 0x0F)
msekulic 0:2f783aa11c1d 39 }
msekulic 0:2f783aa11c1d 40 char SegConvert(char SegValue) // function 'SegConvert'
msekulic 0:2f783aa11c1d 41 {
msekulic 0:2f783aa11c1d 42 char SegByte=0x00;
msekulic 0:2f783aa11c1d 43 switch (SegValue) { //DPGFEDCBA
msekulic 0:2f783aa11c1d 44 case 0 :
msekulic 0:2f783aa11c1d 45 SegByte = 0x3F;
msekulic 0:2f783aa11c1d 46 break; // 00111111 binary
msekulic 0:2f783aa11c1d 47 case 1 :
msekulic 0:2f783aa11c1d 48 SegByte = 0x06;
msekulic 0:2f783aa11c1d 49 break; // 00000110 binary
msekulic 0:2f783aa11c1d 50 case 2 :
msekulic 0:2f783aa11c1d 51 SegByte = 0x5B;
msekulic 0:2f783aa11c1d 52 break; // 01011011 binary
msekulic 0:2f783aa11c1d 53 case 3 :
msekulic 0:2f783aa11c1d 54 SegByte = 0x4F;
msekulic 0:2f783aa11c1d 55 break; // 01001111 binary
msekulic 0:2f783aa11c1d 56 case 4 :
msekulic 0:2f783aa11c1d 57 SegByte = 0x66;
msekulic 0:2f783aa11c1d 58 break; // 01100110 binary
msekulic 0:2f783aa11c1d 59 case 5 :
msekulic 0:2f783aa11c1d 60 SegByte = 0x6D;
msekulic 0:2f783aa11c1d 61 break; // 01101101 binary
msekulic 0:2f783aa11c1d 62 case 6 :
msekulic 0:2f783aa11c1d 63 SegByte = 0x7D;
msekulic 0:2f783aa11c1d 64 break; // 01111101 binary
msekulic 0:2f783aa11c1d 65 case 7 :
msekulic 0:2f783aa11c1d 66 SegByte = 0x07;
msekulic 0:2f783aa11c1d 67 break; // 00000111 binary
msekulic 0:2f783aa11c1d 68 case 8 :
msekulic 0:2f783aa11c1d 69 SegByte = 0x7F;
msekulic 0:2f783aa11c1d 70 break; // 01111111 binary
msekulic 0:2f783aa11c1d 71 case 9 :
msekulic 0:2f783aa11c1d 72 SegByte = 0x6F;
msekulic 0:2f783aa11c1d 73 break; // 01101111 binary
msekulic 0:2f783aa11c1d 74 }
msekulic 0:2f783aa11c1d 75 return SegByte;
msekulic 0:2f783aa11c1d 76 }