![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Banana pipe tissue nose pizza pizza pizza
main.cpp@0:0c232b9b32bb, 2020-09-28 (annotated)
- Committer:
- mygore
- Date:
- Mon Sep 28 18:46:41 2020 +0000
- Revision:
- 0:0c232b9b32bb
Lab4 pizza
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mygore | 0:0c232b9b32bb | 1 | #include "mbed.h" |
mygore | 0:0c232b9b32bb | 2 | |
mygore | 0:0c232b9b32bb | 3 | DigitalOut ROW1(PA_0); |
mygore | 0:0c232b9b32bb | 4 | DigitalOut ROW2(PA_5); |
mygore | 0:0c232b9b32bb | 5 | DigitalOut ROW3(PA_1); |
mygore | 0:0c232b9b32bb | 6 | DigitalOut ROW4(PA_2); |
mygore | 0:0c232b9b32bb | 7 | DigitalOut led1(LED1); |
mygore | 0:0c232b9b32bb | 8 | |
mygore | 0:0c232b9b32bb | 9 | DigitalIn COL1(PA_3, PullUp); |
mygore | 0:0c232b9b32bb | 10 | DigitalIn COL2(PB_6, PullUp); |
mygore | 0:0c232b9b32bb | 11 | DigitalIn COL3(PB_7, PullUp); |
mygore | 0:0c232b9b32bb | 12 | DigitalIn COL4(PD_0, PullUp); |
mygore | 0:0c232b9b32bb | 13 | |
mygore | 0:0c232b9b32bb | 14 | unsigned char keypad_scan(void); |
mygore | 0:0c232b9b32bb | 15 | int col_scan(void); |
mygore | 0:0c232b9b32bb | 16 | |
mygore | 0:0c232b9b32bb | 17 | int main() |
mygore | 0:0c232b9b32bb | 18 | { |
mygore | 0:0c232b9b32bb | 19 | int row, col; |
mygore | 0:0c232b9b32bb | 20 | while(1) |
mygore | 0:0c232b9b32bb | 21 | { |
mygore | 0:0c232b9b32bb | 22 | unsigned char key1_map = keypad_scan(); |
mygore | 0:0c232b9b32bb | 23 | printf("%c", key1_map); |
mygore | 0:0c232b9b32bb | 24 | } |
mygore | 0:0c232b9b32bb | 25 | } |
mygore | 0:0c232b9b32bb | 26 | |
mygore | 0:0c232b9b32bb | 27 | unsigned char keypad_scan(void) |
mygore | 0:0c232b9b32bb | 28 | { |
mygore | 0:0c232b9b32bb | 29 | unsigned char key_map [4][4] = |
mygore | 0:0c232b9b32bb | 30 | { |
mygore | 0:0c232b9b32bb | 31 | {'1', '2', '3','A'}, |
mygore | 0:0c232b9b32bb | 32 | {'4', '5', '6', 'B'}, |
mygore | 0:0c232b9b32bb | 33 | {'7', '8', '9', 'C'}, |
mygore | 0:0c232b9b32bb | 34 | {'*', '0', '#', 'D'}, |
mygore | 0:0c232b9b32bb | 35 | }; |
mygore | 0:0c232b9b32bb | 36 | int row, col; |
mygore | 0:0c232b9b32bb | 37 | unsigned char key = 0xFF; |
mygore | 0:0c232b9b32bb | 38 | |
mygore | 0:0c232b9b32bb | 39 | for(row =0; row<4; row++) |
mygore | 0:0c232b9b32bb | 40 | { |
mygore | 0:0c232b9b32bb | 41 | ROW1 = 1; |
mygore | 0:0c232b9b32bb | 42 | ROW2 = 1; |
mygore | 0:0c232b9b32bb | 43 | ROW3 = 1; |
mygore | 0:0c232b9b32bb | 44 | ROW4 = 1; |
mygore | 0:0c232b9b32bb | 45 | if(row == 0) |
mygore | 0:0c232b9b32bb | 46 | { |
mygore | 0:0c232b9b32bb | 47 | ROW1 = 0; |
mygore | 0:0c232b9b32bb | 48 | wait(0.005); |
mygore | 0:0c232b9b32bb | 49 | col = col_scan(); |
mygore | 0:0c232b9b32bb | 50 | wait(0.005); |
mygore | 0:0c232b9b32bb | 51 | } |
mygore | 0:0c232b9b32bb | 52 | else if(row == 1) |
mygore | 0:0c232b9b32bb | 53 | { |
mygore | 0:0c232b9b32bb | 54 | ROW2 = 0; |
mygore | 0:0c232b9b32bb | 55 | wait(0.005); |
mygore | 0:0c232b9b32bb | 56 | col = col_scan(); |
mygore | 0:0c232b9b32bb | 57 | wait(0.005); |
mygore | 0:0c232b9b32bb | 58 | } |
mygore | 0:0c232b9b32bb | 59 | else if(row == 2) |
mygore | 0:0c232b9b32bb | 60 | { |
mygore | 0:0c232b9b32bb | 61 | ROW3 = 0; |
mygore | 0:0c232b9b32bb | 62 | wait(0.005); |
mygore | 0:0c232b9b32bb | 63 | col = col_scan(); |
mygore | 0:0c232b9b32bb | 64 | wait(0.005); |
mygore | 0:0c232b9b32bb | 65 | } |
mygore | 0:0c232b9b32bb | 66 | else if(row == 3) |
mygore | 0:0c232b9b32bb | 67 | { |
mygore | 0:0c232b9b32bb | 68 | ROW4 = 0; |
mygore | 0:0c232b9b32bb | 69 | wait(0.005); |
mygore | 0:0c232b9b32bb | 70 | col = col_scan(); |
mygore | 0:0c232b9b32bb | 71 | wait(0.005); |
mygore | 0:0c232b9b32bb | 72 | } |
mygore | 0:0c232b9b32bb | 73 | else |
mygore | 0:0c232b9b32bb | 74 | { |
mygore | 0:0c232b9b32bb | 75 | return key; |
mygore | 0:0c232b9b32bb | 76 | } |
mygore | 0:0c232b9b32bb | 77 | } |
mygore | 0:0c232b9b32bb | 78 | if(col == 0 || col == 1 || col == 2 || col == 3) |
mygore | 0:0c232b9b32bb | 79 | { |
mygore | 0:0c232b9b32bb | 80 | return key_map[row][col]; |
mygore | 0:0c232b9b32bb | 81 | } |
mygore | 0:0c232b9b32bb | 82 | return key; |
mygore | 0:0c232b9b32bb | 83 | } |
mygore | 0:0c232b9b32bb | 84 | |
mygore | 0:0c232b9b32bb | 85 | int col_scan(void) |
mygore | 0:0c232b9b32bb | 86 | { |
mygore | 0:0c232b9b32bb | 87 | unsigned char key = 0xFF; |
mygore | 0:0c232b9b32bb | 88 | if(COL1 == 0) |
mygore | 0:0c232b9b32bb | 89 | { |
mygore | 0:0c232b9b32bb | 90 | return 0; |
mygore | 0:0c232b9b32bb | 91 | } |
mygore | 0:0c232b9b32bb | 92 | else if(COL2 == 0) |
mygore | 0:0c232b9b32bb | 93 | { |
mygore | 0:0c232b9b32bb | 94 | return 1; |
mygore | 0:0c232b9b32bb | 95 | } |
mygore | 0:0c232b9b32bb | 96 | else if(COL3 == 0) |
mygore | 0:0c232b9b32bb | 97 | { |
mygore | 0:0c232b9b32bb | 98 | return 2; |
mygore | 0:0c232b9b32bb | 99 | } |
mygore | 0:0c232b9b32bb | 100 | else if(COL4 == 0) |
mygore | 0:0c232b9b32bb | 101 | { |
mygore | 0:0c232b9b32bb | 102 | return 3; |
mygore | 0:0c232b9b32bb | 103 | } |
mygore | 0:0c232b9b32bb | 104 | else |
mygore | 0:0c232b9b32bb | 105 | { |
mygore | 0:0c232b9b32bb | 106 | return key; |
mygore | 0:0c232b9b32bb | 107 | } |
mygore | 0:0c232b9b32bb | 108 | } |