⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dianzhiqin.c

📁 开发环境
💻 C
字号:
#include <reg52.h>
sbit P2_0=P2^0;
sbit q3=P3^3;
unsigned char i,j,m;
void delay()
{
   for(i=0;i<255;i++)
   {
      for(j=0;j<255;j++);

   }
}

void delay1()
{
   for(i=0;i<255;i++);

}
int delayfayin(int t)
{
     int i1,j1;
     for(i1=0;i1<t;i1++)
      for(j1=0;j1<200;j1++);
}
//各个音符的方波的计数初值
void fangbof(int y)
{
switch(y)
{
       case 0:       //停止
            P2_0=1 ;
            break;
       case 1:       //1
            TH0=0x4d;
            TL0=0xf7;
            break;
       case 2:      //2
            TH0=0x24;
            TL0=0xf8;
            break;
      case 3:
            TH0=0xfa;
            TL0=0x12;
             break;
      case 4:
              TH0=0xfa;
              TL0=0x67;
              break;
      case 5:
              TH0=0xfb;
              TL0=0x03;
               break;
      case 6:
              TH0=0xfb;
              TL0=0x8f;
               break;
      case 7:
                TH0=0xfc;
                TL0=0x0b;
                 break;
      }
}
void dyf(int x)
{
      int m;
      fangbof(x);
      switch(x)
       {
          case 0:
          TR0=0;  //0停止计数
          break;
          default:
               TR0=1;        //否则计数
               break;
       }
       m=1;
     while(m)
     {
        delayfayin(100);
         m=0;
      }
     TR0=0;
     P2_0=1;
}
main()
{
TMOD=0x01;
EA=1;ET0=1;
while(1)
{
       P1=0xFF;
       P2=0xFF;
       q3=0;
       while(P2==0xFF);
       m=P2&0xFC;
       if(m==0x7C)      //按一键 显示一
       {
            delay1();      //短时沿去抖动
            if(m==0x7C)
            {
               P2=0x7F;
               P0=0xF9;
               dyf(1);
               delay();
               
               P2=0xFF;
               P0=0xFF;
            }
       }
       if(m==0xBC)        //按二键 显示二
       {
            delay1();      //短时沿去抖动
            if(m==0xBC)
            {
               P2=0xBF;
               P0=0xA4;
               dyf(2);
               delay();
               P2=0xFF;
               P0=0xFF;
            }
       }
       if(m==0xDC)          //按三键 显示三
       {
            delay1();      //短时沿去抖动
            if(m==0xDC)
            {
               P2=0xDF;
               P0=0xB0;
               dyf(3);
               delay();
               P2=0xFF;
               P0=0xFF;
            }
       }
       if(m==0xEC)          //按四键 显示四
       {
            delay1();      //短时沿去抖动
            if(m==0xEC)
            {
               P2=0xEF;
               P0=0x99;
               dyf(4);
               delay();
               P2=0xFF;
               P0=0xFF;
            }
       }
       if(m==0xF4)         //按五键 显示五
       {
            delay1();      //短时沿去抖动
            if(m==0xF4)
            {
               P2=0xF7;
               P0=0x92;
               dyf(5);
               delay();
               P2=0xFF;
               P0=0xFF;
            }
       }
       if(m==0xF8)      //按六键 显示六
       {
            delay1();      //短时沿去抖动
            if(m==0xF8)
            {
               P2=0xFB;
               P0=0x82;
               dyf(6);
               delay();
               P2=0xFF;
               P0=0xFF;
            }
       }
          
  
}
}
void mop(void) interrupt 1
{
     P2_0=~P2_0;
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -