查看: 4476|回复: 8

[原创] 【智能生活-KL25Z】基于KL25Z的按键控制处理

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
    发表于 2016-9-19 00:43:53 | 显示全部楼层 |阅读模式
    在菜单式MP3点播器的设计中,除了显示器件不可或缺外,键控处理也是必不可少的,它与显示器件的配合才能完成功能和歌曲的选择。为了简化操作并有效缩减按键的数量,故只设置3个按键,分别是K1K2K3键。伴随操作进程的不同,它们被赋予的作用也不同。
    根据的功能需要,按键主要分为两类操作,一类是歌曲的选择,另一类则是音量的控制等。为此,功能符号的作用如下:
    ∧ 选择上一首  
    ∨ 选择下一首
    <  减小音量
    >  加大音量  
    =  暂停/继续  
    其中,“选择上一首”“选择下一首”用于播放前;而“减小音量”、“加大音量”、“暂停/继续”则用于播放过程中。  
    添加键控环节后的整体结构如图1所示。
    图片1.png
    1 添加键控环节后的构成
    在上电后,首先显示主界面,如图2所示。随后,进入键控处理。为了便于歌曲的显示与下载,分别将每首歌的名称设计成一个函数,以便使用时调用。
    图片2.png
    2 主界面
    测试的菜单函数如下:
    1. void jmz(void)
    2. {
    3.    // 主界面
    4.         LCD_clear();
    5.         LCD_write_english_string(0,0,"  MP3",0);
    6.         LCD_write_hanzi(38,0,3);
    7.         LCD_write_hanzi(50,0,4);
    8.         LCD_write_hanzi(62,0,5);
    9.         LCD_write_english_string(10,3,"JINGLIXIXI",0);
    10. }
    11. void jma(void)
    12. {
    13.         // 莫斯科郊外的晚上
    14.         LCD_write_english_string(0,0,"  MP3",0);
    15.         LCD_write_hanzi(38,0,3);
    16.         LCD_write_hanzi(50,0,4);
    17.         LCD_write_hanzi(62,0,5);
    18.        
    19.         LCD_write_hanzi(2,2,6);
    20.         LCD_write_hanzi(14,2,7);
    21.         LCD_write_hanzi(26,2,8);
    22.         LCD_write_hanzi(38,2,9);
    23.         LCD_write_hanzi(50,2,10);
    24.         LCD_write_hanzi(62,2,11);
    25.         LCD_write_hanzi(2,4,12);
    26.         LCD_write_hanzi(14,4,13);
    27. }
    28. void jmb(void)
    29. {
    30.         // 等待
    31.         LCD_write_english_string(0,0,"  MP3",0);
    32.         LCD_write_hanzi(38,0,3);
    33.         LCD_write_hanzi(50,0,4);
    34.         LCD_write_hanzi(62,0,5);
    35.         LCD_write_hanzi(2,2,14);
    36.         LCD_write_hanzi(14,2,15);

    37. }
    38. void jmc(void)
    39. {
    40.         // 鸿雁
    41.         LCD_write_english_string(0,0,"  MP3",0);
    42.         LCD_write_hanzi(38,0,3);
    43.         LCD_write_hanzi(50,0,4);
    44.         LCD_write_hanzi(62,0,5);
    45.         LCD_write_hanzi(2,2,16);
    46.         LCD_write_hanzi(14,2,17);
    47. }
    48. void jmg(void)
    49. {
    50.         // 功能符号显示
    51.         LCD_write_hanzi(2,4,23);
    52.         LCD_write_hanzi(14,4,24);
    53.         LCD_write_hanzi(26,4,21);
    54.         LCD_write_hanzi(38,4,22);
    55. }
    复制代码
    实现键控处理的程序如下:
    1. int  main (void)
    2. {
    3. unsigned char zt=0,jc=0,n=0,m=15;
    4.      SystemCoreClockUpdate();
    5.      SIM_SCGC5 |= (SIM_SCGC5_PORTA_MASK
    6.                   | SIM_SCGC5_PORTB_MASK
    7.                   | SIM_SCGC5_PORTC_MASK
    8.                   | SIM_SCGC5_PORTD_MASK
    9.                   | SIM_SCGC5_PORTE_MASK );   

    10.      PORT_ENABLE_CLK(MKL_PORTB);     
    11.      PORT_ENABLE_CLK(MKL_PORTD);
    12.    
    13.      IO_FUN_SEL(MKL_PORTB,18,1);                                                
    14.      IO_FUN_SEL(MKL_PORTB,19,1);
    15.      IO_FUN_SEL(MKL_PORTD,1,1);   
    16.      IO_FUN_SEL(MKL_PORTD,2,1);
    17.      IO_FUN_SEL(MKL_PORTD,3,1);
    18.          IO_FUN_SEL(MKL_PORTD,5,1);
    19.        
    20.      GPIO_DDR_OUTPUT(MKL_PORTB,18);                                          
    21.      GPIO_DDR_OUTPUT(MKL_PORTB,19);
    22.      GPIO_DDR_OUTPUT(MKL_PORTD,1);
    23.          GPIO_DDR_INPUT(MKL_PORTD,2);
    24.      GPIO_DDR_INPUT(MKL_PORTD,3);
    25.          GPIO_DDR_INPUT(MKL_PORTD,5);
    26.                
    27.      GPIO_SET(MKL_PORTB,18);                                                   
    28.      GPIO_SET(MKL_PORTB,19);
    29.      GPIO_SET(MKL_PORTD,1);   
    30.          SPI_CONFIG();
    31.          LCD_init();
    32.          jmz();
    33.          myDelay(2000);
    34.          while(1)
    35.     {  
    36.             if(jc==0)
    37.       {
    38.             if(n==0)   jma();
    39.         if(n==1)   jmb();
    40.         if(n==2)   jmc();

    41.                         if(GPIO_GET_VALUE(MKL_PORTD,2)==0)
    42.                         {
    43.                                  n++;
    44.          if(n>2) n=0;
    45.                                  myDelay(500);
    46.                                  LCD_clearp();
    47.                         }               
    48.             if(GPIO_GET_VALUE(MKL_PORTD,3)==0)
    49.       {
    50.          if(n>0) n--;
    51.          else n=2;
    52.                                  myDelay(500);
    53.                                 LCD_clearp();
    54.       }       
    55.             if(GPIO_GET_VALUE(MKL_PORTD,5)==0)
    56.       {
    57.                                  jmg();
    58.                                  myDelay(500);
    59.                  jc=1;
    60.       }       
    61.       }
    62.       else
    63.       {
    64.       if(GPIO_GET_VALUE(MKL_PORTD,2)==0)
    65.       {
    66.          m++;
    67.          if(m>29) m=30;
    68.          myDelay(100);
    69.          //  加大音量并显示m
    70.       }                   
    71.           if(GPIO_GET_VALUE(MKL_PORTD,3)==0)
    72.       {
    73.          if(m>0) m--;
    74.          myDelay(100);
    75.          //  减小音量并显示m
    76.         }       
    77.           if(GPIO_GET_VALUE(MKL_PORTD,5)==0)
    78.       {
    79.          myDelay(100);
    80.          if(zt==0)   //   暂停播放
    81.          else       //   继续播放
    82.       }       
    83.       }
    84.        myDelay(100);
    85.        //  更新zt
    86.     }
    87. }
    复制代码



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4900

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6324
    最后登录
    2025-8-6
    发表于 2016-9-19 06:39:51 | 显示全部楼层
    很好,谢谢分享
    开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16857
    最后登录
    1970-1-1
    发表于 2016-9-19 07:39:29 | 显示全部楼层
    多谢分享
    回复

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2016-9-19 08:47:27 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-12 00:23
  • 签到天数: 745 天

    连续签到: 1 天

    [LV.9]以坛为家II

    27

    主题

    1万

    帖子

    26

    金牌会员

    Rank: 6Rank: 6

    积分
    6868
    最后登录
    2020-7-15
    发表于 2016-9-19 08:52:41 | 显示全部楼层
    不错,赞一个!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
     楼主| 发表于 2016-9-19 10:43:07 | 显示全部楼层
    lising 发表于 2016-9-19 08:52
    不错,赞一个!

    多谢各位了!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-7-31 08:40
  • 签到天数: 43 天

    连续签到: 1 天

    [LV.5]常住居民I

    299

    主题

    876

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    14839
    最后登录
    2020-3-1
    发表于 2016-9-19 11:12:21 | 显示全部楼层
    不错哟,这个你是不是还做了STM32的版本在st社区看到过
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7125
    最后登录
    2023-4-20
     楼主| 发表于 2016-9-19 21:13:59 | 显示全部楼层
    doatello 发表于 2016-9-19 11:12
    不错哟,这个你是不是还做了STM32的版本在st社区看到过

    哈,让你给发现了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-27 20:36
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    0

    主题

    47

    帖子

    0

    注册会员

    Rank: 2

    积分
    102
    最后登录
    2016-12-4
    发表于 2016-10-20 20:10:53 | 显示全部楼层
    感谢楼主的分享!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-3 01:25 , Processed in 0.101710 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表