Andrew Bell
/
lab3_keypad
working keypad
main.cpp@0:97427cf843b1, 2021-02-12 (annotated)
- Committer:
- andrewbw01
- Date:
- Fri Feb 12 11:10:52 2021 +0000
- Revision:
- 0:97427cf843b1
working keypad
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewbw01 | 0:97427cf843b1 | 1 | #include "mbed.h" |
andrewbw01 | 0:97427cf843b1 | 2 | |
andrewbw01 | 0:97427cf843b1 | 3 | BusOut LED_Disp(p7,p11,p9,p8,p5,p6,p10,p12); |
andrewbw01 | 0:97427cf843b1 | 4 | |
andrewbw01 | 0:97427cf843b1 | 5 | |
andrewbw01 | 0:97427cf843b1 | 6 | |
andrewbw01 | 0:97427cf843b1 | 7 | DigitalOut col1 (p26); // pin 4 on keypad |
andrewbw01 | 0:97427cf843b1 | 8 | DigitalOut col2 (p28); // pin 2 |
andrewbw01 | 0:97427cf843b1 | 9 | DigitalOut col3 (p24); // pin 6 |
andrewbw01 | 0:97427cf843b1 | 10 | |
andrewbw01 | 0:97427cf843b1 | 11 | DigitalIn row1 (p27); // pin 3 |
andrewbw01 | 0:97427cf843b1 | 12 | DigitalIn row2 (p22); // pin 8 |
andrewbw01 | 0:97427cf843b1 | 13 | DigitalIn row3 (p23); // pin 7 |
andrewbw01 | 0:97427cf843b1 | 14 | DigitalIn row4 (p25); // pin 5 |
andrewbw01 | 0:97427cf843b1 | 15 | |
andrewbw01 | 0:97427cf843b1 | 16 | DigitalOut test1(LED1); |
andrewbw01 | 0:97427cf843b1 | 17 | DigitalOut test2(LED2); |
andrewbw01 | 0:97427cf843b1 | 18 | DigitalOut test3 (LED3); |
andrewbw01 | 0:97427cf843b1 | 19 | int count; |
andrewbw01 | 0:97427cf843b1 | 20 | void DisplayNumber(int); |
andrewbw01 | 0:97427cf843b1 | 21 | |
andrewbw01 | 0:97427cf843b1 | 22 | |
andrewbw01 | 0:97427cf843b1 | 23 | char keypad(void) |
andrewbw01 | 0:97427cf843b1 | 24 | { |
andrewbw01 | 0:97427cf843b1 | 25 | col1 = 1; //colunm 1 high |
andrewbw01 | 0:97427cf843b1 | 26 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 27 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 28 | |
andrewbw01 | 0:97427cf843b1 | 29 | if (row1==1) |
andrewbw01 | 0:97427cf843b1 | 30 | { |
andrewbw01 | 0:97427cf843b1 | 31 | while(row1==1){} |
andrewbw01 | 0:97427cf843b1 | 32 | |
andrewbw01 | 0:97427cf843b1 | 33 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 34 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 35 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 36 | DisplayNumber(1); |
andrewbw01 | 0:97427cf843b1 | 37 | |
andrewbw01 | 0:97427cf843b1 | 38 | |
andrewbw01 | 0:97427cf843b1 | 39 | } |
andrewbw01 | 0:97427cf843b1 | 40 | else if (row2==1) |
andrewbw01 | 0:97427cf843b1 | 41 | { |
andrewbw01 | 0:97427cf843b1 | 42 | while (row2==1){} |
andrewbw01 | 0:97427cf843b1 | 43 | |
andrewbw01 | 0:97427cf843b1 | 44 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 45 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 46 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 47 | DisplayNumber(4); |
andrewbw01 | 0:97427cf843b1 | 48 | } |
andrewbw01 | 0:97427cf843b1 | 49 | else if (row3==1) |
andrewbw01 | 0:97427cf843b1 | 50 | { |
andrewbw01 | 0:97427cf843b1 | 51 | while (row3==1){} |
andrewbw01 | 0:97427cf843b1 | 52 | |
andrewbw01 | 0:97427cf843b1 | 53 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 54 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 55 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 56 | DisplayNumber(7); |
andrewbw01 | 0:97427cf843b1 | 57 | } |
andrewbw01 | 0:97427cf843b1 | 58 | else if (row4==1) |
andrewbw01 | 0:97427cf843b1 | 59 | { |
andrewbw01 | 0:97427cf843b1 | 60 | while (row4==1){} |
andrewbw01 | 0:97427cf843b1 | 61 | |
andrewbw01 | 0:97427cf843b1 | 62 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 63 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 64 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 65 | DisplayNumber(11); |
andrewbw01 | 0:97427cf843b1 | 66 | } |
andrewbw01 | 0:97427cf843b1 | 67 | |
andrewbw01 | 0:97427cf843b1 | 68 | return(0); |
andrewbw01 | 0:97427cf843b1 | 69 | } |
andrewbw01 | 0:97427cf843b1 | 70 | |
andrewbw01 | 0:97427cf843b1 | 71 | char keypad2(void) |
andrewbw01 | 0:97427cf843b1 | 72 | { |
andrewbw01 | 0:97427cf843b1 | 73 | col1 = 0; //colunm 2 high |
andrewbw01 | 0:97427cf843b1 | 74 | col2 = 1; |
andrewbw01 | 0:97427cf843b1 | 75 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 76 | |
andrewbw01 | 0:97427cf843b1 | 77 | if (row1==1) |
andrewbw01 | 0:97427cf843b1 | 78 | { |
andrewbw01 | 0:97427cf843b1 | 79 | while(row1==1){} |
andrewbw01 | 0:97427cf843b1 | 80 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 81 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 82 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 83 | DisplayNumber(2); |
andrewbw01 | 0:97427cf843b1 | 84 | } |
andrewbw01 | 0:97427cf843b1 | 85 | else if (row2==1) |
andrewbw01 | 0:97427cf843b1 | 86 | { |
andrewbw01 | 0:97427cf843b1 | 87 | while (row2==1){} |
andrewbw01 | 0:97427cf843b1 | 88 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 89 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 90 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 91 | DisplayNumber(5); |
andrewbw01 | 0:97427cf843b1 | 92 | } |
andrewbw01 | 0:97427cf843b1 | 93 | else if (row3==1) |
andrewbw01 | 0:97427cf843b1 | 94 | { |
andrewbw01 | 0:97427cf843b1 | 95 | while (row3==1){} |
andrewbw01 | 0:97427cf843b1 | 96 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 97 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 98 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 99 | DisplayNumber(8); |
andrewbw01 | 0:97427cf843b1 | 100 | } |
andrewbw01 | 0:97427cf843b1 | 101 | |
andrewbw01 | 0:97427cf843b1 | 102 | else if (row4==1) |
andrewbw01 | 0:97427cf843b1 | 103 | { |
andrewbw01 | 0:97427cf843b1 | 104 | while (row4==1){} |
andrewbw01 | 0:97427cf843b1 | 105 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 106 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 107 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 108 | DisplayNumber(0); |
andrewbw01 | 0:97427cf843b1 | 109 | } |
andrewbw01 | 0:97427cf843b1 | 110 | return(0); |
andrewbw01 | 0:97427cf843b1 | 111 | } |
andrewbw01 | 0:97427cf843b1 | 112 | |
andrewbw01 | 0:97427cf843b1 | 113 | char keypad3(void) |
andrewbw01 | 0:97427cf843b1 | 114 | { |
andrewbw01 | 0:97427cf843b1 | 115 | col1 = 0; //colunm 3 high |
andrewbw01 | 0:97427cf843b1 | 116 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 117 | col3 = 1; |
andrewbw01 | 0:97427cf843b1 | 118 | |
andrewbw01 | 0:97427cf843b1 | 119 | if (row1==1) |
andrewbw01 | 0:97427cf843b1 | 120 | { |
andrewbw01 | 0:97427cf843b1 | 121 | while (row1==1){} |
andrewbw01 | 0:97427cf843b1 | 122 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 123 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 124 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 125 | DisplayNumber(3); |
andrewbw01 | 0:97427cf843b1 | 126 | } |
andrewbw01 | 0:97427cf843b1 | 127 | else if (row2==1) |
andrewbw01 | 0:97427cf843b1 | 128 | { |
andrewbw01 | 0:97427cf843b1 | 129 | while (row2==1){} |
andrewbw01 | 0:97427cf843b1 | 130 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 131 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 132 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 133 | DisplayNumber(6); |
andrewbw01 | 0:97427cf843b1 | 134 | } |
andrewbw01 | 0:97427cf843b1 | 135 | else if (row3==1) |
andrewbw01 | 0:97427cf843b1 | 136 | { |
andrewbw01 | 0:97427cf843b1 | 137 | while (row3==1){} |
andrewbw01 | 0:97427cf843b1 | 138 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 139 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 140 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 141 | DisplayNumber(9); |
andrewbw01 | 0:97427cf843b1 | 142 | } |
andrewbw01 | 0:97427cf843b1 | 143 | else if (row4==1) |
andrewbw01 | 0:97427cf843b1 | 144 | { |
andrewbw01 | 0:97427cf843b1 | 145 | while (row4==1){} |
andrewbw01 | 0:97427cf843b1 | 146 | col1 = 0; |
andrewbw01 | 0:97427cf843b1 | 147 | col2 = 0; |
andrewbw01 | 0:97427cf843b1 | 148 | col3 = 0; |
andrewbw01 | 0:97427cf843b1 | 149 | DisplayNumber(10); |
andrewbw01 | 0:97427cf843b1 | 150 | } |
andrewbw01 | 0:97427cf843b1 | 151 | |
andrewbw01 | 0:97427cf843b1 | 152 | return(0); |
andrewbw01 | 0:97427cf843b1 | 153 | } |
andrewbw01 | 0:97427cf843b1 | 154 | |
andrewbw01 | 0:97427cf843b1 | 155 | int main() |
andrewbw01 | 0:97427cf843b1 | 156 | { |
andrewbw01 | 0:97427cf843b1 | 157 | DisplayNumber(0); |
andrewbw01 | 0:97427cf843b1 | 158 | while(1) |
andrewbw01 | 0:97427cf843b1 | 159 | { |
andrewbw01 | 0:97427cf843b1 | 160 | keypad(); |
andrewbw01 | 0:97427cf843b1 | 161 | keypad2(); |
andrewbw01 | 0:97427cf843b1 | 162 | keypad3(); |
andrewbw01 | 0:97427cf843b1 | 163 | } |
andrewbw01 | 0:97427cf843b1 | 164 | } |
andrewbw01 | 0:97427cf843b1 | 165 | |
andrewbw01 | 0:97427cf843b1 | 166 | void DisplayNumber(int num) |
andrewbw01 | 0:97427cf843b1 | 167 | { |
andrewbw01 | 0:97427cf843b1 | 168 | switch(num) |
andrewbw01 | 0:97427cf843b1 | 169 | { |
andrewbw01 | 0:97427cf843b1 | 170 | case 0: |
andrewbw01 | 0:97427cf843b1 | 171 | LED_Disp = ~0x3F; |
andrewbw01 | 0:97427cf843b1 | 172 | break; |
andrewbw01 | 0:97427cf843b1 | 173 | case 1: |
andrewbw01 | 0:97427cf843b1 | 174 | LED_Disp = ~0x06; |
andrewbw01 | 0:97427cf843b1 | 175 | break; |
andrewbw01 | 0:97427cf843b1 | 176 | case 2: |
andrewbw01 | 0:97427cf843b1 | 177 | LED_Disp = ~0x5B; |
andrewbw01 | 0:97427cf843b1 | 178 | break; |
andrewbw01 | 0:97427cf843b1 | 179 | case 3: |
andrewbw01 | 0:97427cf843b1 | 180 | LED_Disp = ~0x4F; |
andrewbw01 | 0:97427cf843b1 | 181 | break; |
andrewbw01 | 0:97427cf843b1 | 182 | case 4: |
andrewbw01 | 0:97427cf843b1 | 183 | LED_Disp = ~0x66; |
andrewbw01 | 0:97427cf843b1 | 184 | break; |
andrewbw01 | 0:97427cf843b1 | 185 | case 5: |
andrewbw01 | 0:97427cf843b1 | 186 | LED_Disp = ~0x6D; |
andrewbw01 | 0:97427cf843b1 | 187 | break; |
andrewbw01 | 0:97427cf843b1 | 188 | case 6: |
andrewbw01 | 0:97427cf843b1 | 189 | LED_Disp = ~0x7D; |
andrewbw01 | 0:97427cf843b1 | 190 | break; |
andrewbw01 | 0:97427cf843b1 | 191 | case 7: |
andrewbw01 | 0:97427cf843b1 | 192 | LED_Disp = ~0x07; |
andrewbw01 | 0:97427cf843b1 | 193 | break; |
andrewbw01 | 0:97427cf843b1 | 194 | case 8: |
andrewbw01 | 0:97427cf843b1 | 195 | LED_Disp = ~0x7F; |
andrewbw01 | 0:97427cf843b1 | 196 | break; |
andrewbw01 | 0:97427cf843b1 | 197 | case 9: |
andrewbw01 | 0:97427cf843b1 | 198 | LED_Disp = ~0x67; |
andrewbw01 | 0:97427cf843b1 | 199 | break; |
andrewbw01 | 0:97427cf843b1 | 200 | case 10: //# |
andrewbw01 | 0:97427cf843b1 | 201 | LED_Disp = ~0x5c; |
andrewbw01 | 0:97427cf843b1 | 202 | break; |
andrewbw01 | 0:97427cf843b1 | 203 | case 11: //* |
andrewbw01 | 0:97427cf843b1 | 204 | LED_Disp = ~0x63; |
andrewbw01 | 0:97427cf843b1 | 205 | break; |
andrewbw01 | 0:97427cf843b1 | 206 | } |
andrewbw01 | 0:97427cf843b1 | 207 | } |
andrewbw01 | 0:97427cf843b1 | 208 |