working keypad

Dependencies:   mbed

Committer:
andrewbw01
Date:
Fri Feb 12 11:10:52 2021 +0000
Revision:
0:97427cf843b1
working keypad

Who changed what in which revision?

UserRevisionLine numberNew 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