Vjezba7_6

Dependencies:   mbed

Committer:
tomislav11
Date:
Thu Nov 17 17:53:32 2016 +0000
Revision:
0:fdb541b7fd1c
VT3_Tomislav_Kurtanjek

Who changed what in which revision?

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