第十五节:矩阵键盘单个触发的压缩代码编程。(下)

  1. case 7:// 7号键 对应朱兆祺学习板的S7键  
  2.   
  3.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  4.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  5.           break;     
  6.     case 8:// 8号键 对应朱兆祺学习板的S8键  
  7.   
  8.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  9.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  10.           break;     
  11.     case 9:// 9号键 对应朱兆祺学习板的S9键  
  12.   
  13.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  14.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  15.           break;     
  16.     case 10:// 10号键 对应朱兆祺学习板的S10键  
  17.   
  18.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  19.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  20.           break;     
  21.     case 11:// 11号键 对应朱兆祺学习板的S11键  
  22.   
  23.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  24.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  25.           break;     
  26.     case 12:// 12号键 对应朱兆祺学习板的S12键  
  27.   
  28.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  29.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  30.           break;     
  31.     case 13:// 13号键 对应朱兆祺学习板的S13键  
  32.   
  33.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  34.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  35.           break;     
  36.     case 14:// 14号键 对应朱兆祺学习板的S14键  
  37.   
  38.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  39.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  40.           break;     
  41.     case 15:// 15号键 对应朱兆祺学习板的S15键  
  42.   
  43.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  44.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  45.           break;     
  46.     case 16:// 16号键 对应朱兆祺学习板的S16键  
  47.   
  48.           uiVoiceCnt=const_voice_short; //按键声音触发,滴一声就停。  
  49.           ucKeySec=0;  //响应按键服务处理程序后,按键编号清零,避免一致触发  
  50.           break;     
  51.   }                  
  52. }  
  53.   
  54.   
  55.   
  56. void T0_time() interrupt 1  
  57. {  
  58.   TF0=0;  //清除中断标志  
  59.   TR0=0; //关中断  
  60.   
  61.   key_scan(); //按键扫描函数  
  62.   
  63.   if(uiVoiceCnt!=0)  
  64.   {  
  65.      uiVoiceCnt--; //每次进入定时中断都自减1,直到等于零为止。才停止鸣叫  
  66.          beep_dr=0;  //蜂鸣器是PNP三极管控制,低电平就开始鸣叫。  
  67.   }  
  68.   else  
  69.   {  
  70.      ; //此处多加一个空指令,想维持跟if括号语句的数量对称,都是两条指令。不加也可以。  
  71.            beep_dr=1;  //蜂鸣器是PNP三极管控制,高电平就停止鸣叫。  
  72.   }  
  73.   
  74.   
  75.   TH0=0xf8;   //重装初始值(65535-2000)=63535=0xf82f  
  76.   TL0=0x2f;  
  77.   TR0=1;  //开中断  
  78. }  
  79.   
  80.   
  81. void delay_long(unsigned int uiDelayLong)  
  82. {  
  83.    unsigned int i;  
  84.    unsigned int j;  
  85.    for(i=0;i<uiDelayLong;i++)  
  86.    {  
  87.       for(j=0;j<500;j++)  //内嵌循环的空指令数量  
  88.           {  
  89.              ; //一个分号相当于执行一条空语句  
  90.           }  
  91.    }  
  92. }  
  93.   
  94.   
  95. void initial_myself()  //第一区 初始化单片机  
  96. {  
  97.   
  98.   
  99.   beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。  
  100.   
  101.   
  102.   TMOD=0x01;  //设置定时器0为工作方式1  
  103.   
  104.   
  105.   TH0=0xf8;   //重装初始值(65535-2000)=63535=0xf82f  
  106.   TL0=0x2f;  
  107.   
  108. }  
  109. void initial_peripheral() //第二区 初始化外围  
  110. {  
  111.   EA=1;     //开总中断  
  112.   ET0=1;    //允许定时中断  
  113.   TR0=1;    //启动定时中断  
  114.   
  115. }  

 

总结陈词:
    已经花了两节讲矩阵键盘的单个触发程序。那么,矩阵键盘可不可以实现类似独立按键的组合按键功能?当然可以,但是也有一些附加限制条件。欲知详情,请听下回分解-----矩阵键盘的组合按键触发。

(上半部分http://www.eeskill.com/group/topic_scan/id/466

永不止步步 发表于11-20 14:19 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363841个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号