正文

矩阵式键盘按键音 - 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位赋初值    } Tags: 矩阵式键盘  按键  8051  单片机  C51  

阅读(4150) | 评论(0)


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

评论

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