正文

矩阵式键盘按键音 - 8051单片机C51语言实现2013-02-01 12:12:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/enc999/54111.html

分享到:

/**本程序由 www.ecn999.com 整理自互联网,仅供学习参考
欢迎光临8051单片机学习交流频道:    www.ecn999.com

#include<reg51.h>   //包含51单片机寄存器定义的头文件
sbit sound=P3^7;    //将sound位定义为P3.7

/**************************************************************
函数功能:蜂鸣器发声延时约120ms
**************************************************************/
 void delay_sound(void)  
{
   unsigned char i;
 for(i=0;i<250;i++)
        ;
 }
/**************************************************************
函数功能:软件延时子程序约20ms
**************************************************************/
 void delay20ms(void)  
{
   unsigned char i,j;
 for(i=0;i<100;i++)
  for(j=0;j<60;j++)
           ;
 }
/**************************************************************
函数功能:主函数
**************************************************************/
 void main(void)
 {
   EA=1;                  //开总中断
 ET0=1;                 //定时器T0中断允许      
   TMOD=0x01;             //使用定时器T0的模式1
 TH0=(65536-500)/256;   //定时器T0的高8位赋初值
 TL0=(65536-500)%256;   //定时器T0的高8位赋初值
 TR0=1;                 //启动定时器T0       
 while(1)               //无限循环,等待键盘按下
  ;

}
/**************************************************************
函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位
**************************************************************/
 void time0_interserve(void) interrupt 1 using 1    //定时器T0的中断编号为1,使用第一组寄存器
  {
    unsigned char i;
     TR0=0;                   //关闭定时器T0
     P1=0xf0;                 //所有行线置为低电平"0",所有列线置为高电平"1"
   if((P1&0xf0)!=0xf0)      //列线中有一位为低电平"0",说明有键按下
      delay20ms();           //延时一段时间、软件消抖
   if((P1&0xf0)!=0xf0)      //确实有键按下
     {
          for(i=0;i<200;i++)  //让P3.7引脚电平不断取反输出音频
           {
              sound=0;
             delay_sound();
       sound=1;
      delay_sound();
    } 
       }
     TR0=1;                    //开启定时器T0
     TH0=(65536-500)/256;      //定时器T0的高8位赋初值
   TL0=(65536-500)%256;      //定时器T0的高8位赋初值  
 }

阅读(2497) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册