最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 电脑DIY > 电脑DIY >

也跟风!做一把可编程机械小键盘(2)

时间:2017-05-16 12:38来源:数码之家 作者:江小g 点击:
break; case 3: DDRD|= (13); PORTD = ~(13); break; case 4: DDRD|= (14); PORTD = ~(14); break; case 5: DDRD|= (15); PORTD = ~(15); break; } } 修改为: 复制代码 /* Column configuration * col: 0123 * pin
  •             break;
  •         case 3:
  •             DDRD  |= (1<<3);
  •             PORTD &= ~(1<<3);
  •             break;
  •         case 4:
  •             DDRD  |= (1<<4);
  •             PORTD &= ~(1<<4);
  •             break;
  •         case 5:
  •             DDRD  |= (1<<5);
  •             PORTD &= ~(1<<5);
  •             break;
  •     }
  • }
  • 修改为:
    复制代码
    1. /* Column configuration
    2. * col: 0    1    2    3
    3. * pin: PB1  PB3  PB2  PB6
    4. */
    5. static void  init_cols(void)
    6. {
    7.     // Input with pull-up(DDR:0, PORT:1)
    8.     DDRB  &= ~(1<<PB1 | 1<<PB3 | 1<<PB2 | 1<<PB6);
    9.     PORTB |=  (1<<PB1 | 1<<PB3 | 1<<PB2 | 1<<PB6);
    10.     
    11. }
    12.  
    13. /* Column configuration
    14. * col: 0    1    2    3
    15. * pin: PB1  PB3  PB2  PB6
    16. */
    17. static matrix_row_t read_cols(void)
    18. {
    19.     return (PINB&(1<<PB1) ? 0 : (1<<0)) |
    20.            (PINB&(1<<PB3) ? 0 : (1<<1)) |
    21.            (PINB&(1<<PB2) ? 0 : (1<<2)) |
    22.            (PINB&(1<<PB6) ? 0 : (1<<3));
    23. }
    24.  
    25. /* Lotpad Row configuration
    26. * row: 0    1    2    3    4
    27. * pin: PC6  PD7  PE6  PB4  PB5
    28. */
    29. static void unselect_rows(void)
    30. {
    31.     // Hi-Z(DDR:0, PORT:0) to unselect
    32.     DDRD  &= ~0b10000000;
    33.     PORTD &= ~0b10000000;
    34.     
    35.     DDRC  &= ~0b01000000;
    36.     PORTC &= ~0b01000000;
    37.     
    38.     DDRB  &= ~0b00110000;
    39.     PORTB &= ~0b00110000;
    40.     
    41.     DDRE  &= ~0b01000000;
    42.     PORTE &= ~0b01000000;
    43. }
    44.  
    45. /* Row configuration
    46. * row: 0    1    2    3    4
    47. * pin: PC6  PD7  PE6  PB4  PB5
    48. */
    49. static void select_row(uint8_t row)
    50. {
    51.     // Output low(DDR:1, PORT:0) to select
    52.     switch (row) {
    53.         case 4:
    54.             DDRC  |= (1<<6);
    55.             PORTC &= ~(1<<6);
    56.             break;
    57.         case 3:
    58.             DDRD  |= (1<<7);
    59.             PORTD &= ~(1<<7);
    60.             break;
    61.         case 2:
    62.             DDRE  |= (1<<6);
    63.             PORTE &= ~(1<<6);
    64.             break;
    65.         case 1:
    66.             DDRB  |= (1<<4);
    67.             PORTB &= ~(1<<4);
    68.             break;
    69.         case 0:
    70.             DDRB  |= (1<<5);
    71.             PORTB &= ~(1<<5);
    72.             break;
    73.     }
    74. }
    如果你的IO不同,请自行修改。
    然后是修改Config.h,这里是定义按键个数的:
    复制代码
    1. /* key matrix size */
    2. #define MATRIX_ROWS 6
    3. #define MATRIX_COLS 4
    改为:
    复制代码
    1. /* key matrix size */
    2. #define MATRIX_ROWS 5
    3. #define MATRIX_COLS 4
    之后是修改keymap_common.h
    复制代码
    1. /* GHPad keymap definition macro
    2. */
    3. #define KEYMAP( \
    4.     K0A, K0B, K0C, K0D, \
    5.     K1A, K1B, K1C, K1D, \
    6.     K2A, K2B, K2C, K2D, \
    7.     K3A, K3B, K3C, K3D, \ (责任编辑:admin)
    织梦二维码生成器
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    栏目列表
    推荐内容