[活动专区] 【赛元95F】 + 6、SC95F8617 5方向按键测试

[复制链接]
1009|1
 楼主| tlled 发表于 2020-3-23 17:17 | 显示全部楼层 |阅读模式
    测试5方向按键开关。


     一、电路图


    使用SC95F8617的P2.3-P2.7口作为按键输入端口。
   
    102.png
    103.png


    二、程序


    2.1、main.c
  1. #include "config.h"

  2. void main(void)
  3. {
  4.         uint i=0;
  5.         uchar key;
  6.         Init_led();
  7.         Init_key();
  8.         Init_uart(32, 9600);
  9.         uart_chl(1);   //USB-TTL
  10.         while(1)
  11.         {
  12.                 key=Scan_key();
  13.                 if(key!=0)
  14.                 {
  15.                         switch (key)
  16.       {
  17.               case UP_KEY:
  18.                                         uart_send_string("sc95f8617 up_key press \r\n");
  19.                       break;
  20.               case DOWN_KEY:
  21.                                         uart_send_string("sc95f8617 down_key press \r\n");
  22.                       break;
  23.                                 case LEFT_KEY:
  24.                                         uart_send_string("sc95f8617 left_key press \r\n");
  25.                       break;
  26.                                 case RIGHT_KEY:
  27.                                         uart_send_string("sc95f8617 right_key press \r\n");
  28.                       break;
  29.                                 case CENTER_KEY:
  30.                                         uart_send_string("sc95f8617 center_key press \r\n");
  31.                       break;
  32.               default:
  33.                       break;
  34.       }
  35.                 }
  36.         }
  37. }


    2.2、key.c
  1. #include "config.h"


  2. void Init_key(void)
  3. {
  4.         P2CON &= 0x03   ;// 1111 1100
  5.         P2PH  |= 0xfc;
  6. }

  7. uchar Scan_key(void)
  8. {
  9.         uint ki;
  10.         uchar ky;
  11.         ky = P2&0xfc;
  12.         if(ky!=0xfc)
  13.         {
  14.                 for(ki=0;ki<65530;ki++);
  15.                 if(ky!=0xfc)
  16.                 {
  17.                         return ky;
  18.                 }
  19.         }
  20.         return 0;
  21. }


    1.3、key.h
  1. #ifndef _KEY_H_
  2. #define _KEY_H_

  3. #define UP_KEY  0xEC
  4. #define DOWN_KEY 0xDC
  5. #define LEFT_KEY 0xF4
  6. #define RIGHT_KEY 0x5C
  7. #define CENTER_KEY 0xBC

  8. void Init_key(void);
  9. uchar Scan_key(void);
  10.        

  11. #endif


    三、测试结果

    按下按键,串口输出相应的按键数据

    101.png
   
xiaoqizi 发表于 2020-4-3 18:24 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

132

主题

701

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部