Vjezba7_6
Dependencies: mbed
main.cpp@0:fdb541b7fd1c, 2016-11-17 (annotated)
- Committer:
- tomislav11
- Date:
- Thu Nov 17 17:53:32 2016 +0000
- Revision:
- 0:fdb541b7fd1c
VT3_Tomislav_Kurtanjek
Who changed what in which revision?
User | Revision | Line number | New 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 | } |