7-segment mission-4

Dependencies:   mbed

Committer:
leejieun
Date:
Fri Apr 22 07:24:49 2022 +0000
Revision:
1:d5a26a9f0707
Parent:
0:56f6b651effc
7-segment mission-4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leejieun 0:56f6b651effc 1 #include "mbed.h"
leejieun 0:56f6b651effc 2
leejieun 0:56f6b651effc 3 DigitalOut greenLed(LED1);
leejieun 0:56f6b651effc 4 BusOut my7Seg(PA_8, PA_9, PA_10, PC_9, PC_8, PC_7, PC_6, PA_11);
leejieun 0:56f6b651effc 5 //DigitalIn exButton(PC_11);
leejieun 0:56f6b651effc 6
leejieun 0:56f6b651effc 7
leejieun 0:56f6b651effc 8 DigitalOut inLed(LED1);
leejieun 0:56f6b651effc 9 DigitalOut exLed(PA_12);
leejieun 0:56f6b651effc 10 DigitalIn inButton(PC_13);
leejieun 0:56f6b651effc 11 DigitalIn exButton(PC_11);
leejieun 0:56f6b651effc 12
leejieun 0:56f6b651effc 13
leejieun 0:56f6b651effc 14 Serial pc(SERIAL_TX, SERIAL_RX);
leejieun 0:56f6b651effc 15 //Serial pc(PA_2, PA_3);
leejieun 0:56f6b651effc 16 //Serial pc(USBTX, USBRX);
leejieun 0:56f6b651effc 17
leejieun 0:56f6b651effc 18 DigitalOut myled(LED1);
leejieun 0:56f6b651effc 19
leejieun 0:56f6b651effc 20 void WriteData(int event)
leejieun 0:56f6b651effc 21 {
leejieun 0:56f6b651effc 22 myled = !myled;
leejieun 0:56f6b651effc 23 }
leejieun 0:56f6b651effc 24
leejieun 0:56f6b651effc 25 #define EX4
leejieun 0:56f6b651effc 26
leejieun 0:56f6b651effc 27 #ifdef EX4
leejieun 0:56f6b651effc 28 char rxData[4];
leejieun 0:56f6b651effc 29 bool flagRx = 0;
leejieun 0:56f6b651effc 30
leejieun 0:56f6b651effc 31 void ReceiveInt()
leejieun 0:56f6b651effc 32 {
leejieun 0:56f6b651effc 33 char inChar;
leejieun 0:56f6b651effc 34 static char rxCount = 0;
leejieun 0:56f6b651effc 35 static char rxBuf[4];
leejieun 0:56f6b651effc 36
leejieun 0:56f6b651effc 37 while(1 == pc.readable()) {
leejieun 0:56f6b651effc 38 inChar = pc.getc();
leejieun 0:56f6b651effc 39 if ('<' == inChar)
leejieun 0:56f6b651effc 40 {
leejieun 0:56f6b651effc 41 rxCount = 1;
leejieun 0:56f6b651effc 42 }
leejieun 0:56f6b651effc 43 else if (rxCount > 0 && rxCount < 5)
leejieun 0:56f6b651effc 44 {
leejieun 0:56f6b651effc 45 rxBuf[rxCount-1] = inChar;
leejieun 0:56f6b651effc 46 rxCount++;
leejieun 0:56f6b651effc 47 }
leejieun 0:56f6b651effc 48 else if (5 == rxCount && '>' == inChar)
leejieun 0:56f6b651effc 49 {
leejieun 0:56f6b651effc 50 rxCount = 0;
leejieun 0:56f6b651effc 51 flagRx = 1;
leejieun 0:56f6b651effc 52 memcpy(rxData, rxBuf, 4);
leejieun 0:56f6b651effc 53 // myled = !myled;
leejieun 0:56f6b651effc 54 // pc.putc(rxData[0]);
leejieun 0:56f6b651effc 55 // pc.putc(rxData[1]);
leejieun 0:56f6b651effc 56 // pc.putc(rxData[2]);
leejieun 0:56f6b651effc 57 // pc.putc(rxData[3]);
leejieun 0:56f6b651effc 58
leejieun 0:56f6b651effc 59 // pc.puts(rxData);
leejieun 0:56f6b651effc 60 }
leejieun 0:56f6b651effc 61
leejieun 0:56f6b651effc 62 }
leejieun 0:56f6b651effc 63 }
leejieun 0:56f6b651effc 64
leejieun 0:56f6b651effc 65
leejieun 0:56f6b651effc 66 int main()
leejieun 0:56f6b651effc 67 {
leejieun 0:56f6b651effc 68 pc.baud(115200);
leejieun 0:56f6b651effc 69
leejieun 0:56f6b651effc 70 pc.puts("\nStart!\n");
leejieun 0:56f6b651effc 71 pc.printf("<LD01> : 0 ~ <LD15> : F\n");
leejieun 0:56f6b651effc 72 pc.attach(&ReceiveInt, Serial::RxIrq); // RxIrq, TxIrq
leejieun 0:56f6b651effc 73 // pc.attach(&ReceiveInt); // This operates same function like the above line
leejieun 0:56f6b651effc 74
leejieun 0:56f6b651effc 75 char tmpCommand[3];
leejieun 0:56f6b651effc 76 int rxVal;
leejieun 0:56f6b651effc 77 my7Seg = 0xFF;
leejieun 0:56f6b651effc 78 greenLed = 1;
leejieun 0:56f6b651effc 79
leejieun 0:56f6b651effc 80 int myseg;
leejieun 0:56f6b651effc 81 char temp7Seg;
leejieun 0:56f6b651effc 82
leejieun 0:56f6b651effc 83 int n = 0;
leejieun 0:56f6b651effc 84 int preStatus = 0;
leejieun 0:56f6b651effc 85 float tempVal = 0;
leejieun 0:56f6b651effc 86
leejieun 0:56f6b651effc 87 while(1)
leejieun 0:56f6b651effc 88 {
leejieun 0:56f6b651effc 89 if (1 == flagRx)
leejieun 0:56f6b651effc 90 {
leejieun 0:56f6b651effc 91 flagRx = 0;
leejieun 0:56f6b651effc 92 tmpCommand[0] = rxData[0];
leejieun 0:56f6b651effc 93 tmpCommand[1] = rxData[1];
leejieun 0:56f6b651effc 94 tmpCommand[2] = 0;
leejieun 0:56f6b651effc 95 rxVal = atoi(rxData+2);
leejieun 0:56f6b651effc 96
leejieun 0:56f6b651effc 97 if (0 == strcmp(tmpCommand, "LD")) {
leejieun 0:56f6b651effc 98
leejieun 0:56f6b651effc 99 pc.printf("val = %d\n", rxVal);
leejieun 0:56f6b651effc 100 n = rxVal;
leejieun 0:56f6b651effc 101 myled = (1 == rxVal)? 1:0;
leejieun 0:56f6b651effc 102 // myled = rxVal? 1:0;
leejieun 0:56f6b651effc 103 }
leejieun 0:56f6b651effc 104 }
leejieun 0:56f6b651effc 105
leejieun 0:56f6b651effc 106
leejieun 0:56f6b651effc 107 preStatus = exButton;
leejieun 0:56f6b651effc 108
leejieun 0:56f6b651effc 109 switch(n) {
leejieun 0:56f6b651effc 110 case 0:
leejieun 0:56f6b651effc 111 temp7Seg = ~0x3F;
leejieun 0:56f6b651effc 112 break;
leejieun 0:56f6b651effc 113 case 1:
leejieun 0:56f6b651effc 114 temp7Seg = ~0x06;
leejieun 0:56f6b651effc 115 break;
leejieun 0:56f6b651effc 116 case 2:
leejieun 0:56f6b651effc 117 temp7Seg = ~0x5B;
leejieun 0:56f6b651effc 118 break;
leejieun 0:56f6b651effc 119 case 3:
leejieun 0:56f6b651effc 120 temp7Seg = ~0x4F;
leejieun 0:56f6b651effc 121 break;
leejieun 0:56f6b651effc 122 case 4:
leejieun 0:56f6b651effc 123 temp7Seg = ~0x66;
leejieun 0:56f6b651effc 124 break;
leejieun 0:56f6b651effc 125 case 5:
leejieun 0:56f6b651effc 126 temp7Seg = ~0x6D;
leejieun 0:56f6b651effc 127 break;
leejieun 0:56f6b651effc 128 case 6:
leejieun 0:56f6b651effc 129 temp7Seg = ~0x7D;
leejieun 0:56f6b651effc 130 break;
leejieun 0:56f6b651effc 131 case 7:
leejieun 0:56f6b651effc 132 temp7Seg = ~0x07;
leejieun 0:56f6b651effc 133 break;
leejieun 0:56f6b651effc 134 case 8:
leejieun 0:56f6b651effc 135 temp7Seg = ~0x7F;
leejieun 0:56f6b651effc 136 break;
leejieun 0:56f6b651effc 137 case 9:
leejieun 0:56f6b651effc 138 temp7Seg = ~0x6F;
leejieun 0:56f6b651effc 139 break;
leejieun 0:56f6b651effc 140 case 10:
leejieun 0:56f6b651effc 141 temp7Seg = ~0x77;
leejieun 0:56f6b651effc 142 break;
leejieun 0:56f6b651effc 143 case 11:
leejieun 0:56f6b651effc 144 temp7Seg = ~0x7C;
leejieun 0:56f6b651effc 145 break;
leejieun 0:56f6b651effc 146 case 12:
leejieun 0:56f6b651effc 147 temp7Seg = ~0x39;
leejieun 0:56f6b651effc 148 break;
leejieun 0:56f6b651effc 149 case 13:
leejieun 0:56f6b651effc 150 temp7Seg = ~0x5E;
leejieun 0:56f6b651effc 151 break;
leejieun 0:56f6b651effc 152 case 14:
leejieun 0:56f6b651effc 153 temp7Seg = ~0x79;
leejieun 0:56f6b651effc 154 break;
leejieun 0:56f6b651effc 155 case 15:
leejieun 0:56f6b651effc 156 temp7Seg = ~0x71;
leejieun 0:56f6b651effc 157 break;
leejieun 0:56f6b651effc 158
leejieun 0:56f6b651effc 159
leejieun 0:56f6b651effc 160 }
leejieun 0:56f6b651effc 161 greenLed = !greenLed;
leejieun 0:56f6b651effc 162 my7Seg = (temp7Seg & 0x7F) | ((greenLed & 0x01)<<7);
leejieun 0:56f6b651effc 163
leejieun 0:56f6b651effc 164 wait(0.25);
leejieun 0:56f6b651effc 165
leejieun 0:56f6b651effc 166 }
leejieun 0:56f6b651effc 167 }
leejieun 0:56f6b651effc 168
leejieun 0:56f6b651effc 169 #endif // end of ex4
leejieun 0:56f6b651effc 170
leejieun 0:56f6b651effc 171
leejieun 0:56f6b651effc 172
leejieun 0:56f6b651effc 173
leejieun 0:56f6b651effc 174