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

📄 key.c

📁 音乐控制程序
💻 C
字号:
#include<AT89x55.H> 
#include <stdio.h>
#include <INTRINS.H> 
#include  "bt1029.h"
#define uint  unsigned int
#define uchar unsigned char
sbit ir=P1^6;
//keyandout
sbit keyadd=P3^4;
sbit keysub=P3^5;
sbit keystby=P3^6;
sbit stby=P1^4;
uchar VOL;
bit  VOLon;
sbit ledblue=P2^4;
sbit ledred=P2^3;
//***********************
uchar irdata[4];
uint count0,count1;
uchar count10,count11;
bit    flag,flag1,flag0;
//*********************************
//t*2us   4.5ms  equ 561   9ms equ 1124  0.56ms equ 69 
//*********************************
void delay(uint t)
     { while(--t);
	 }
/**********************************************/
 /* 工作状态灯*/
 void blueout()
       {ledblue=1;
	    delay(500);
		ledblue=0;
		}
 void redout()
       {if(VOLon)
          {ledred=0;
           ledblue=1;
          }
	    else
          {ledred=1;
           ledblue=0;
          }
		}
 /************************************************/
//串口传输初始化
/***********************************************/
void uart_init()
{

   SCON  = 0xDA;        // SCON: mode 1, 8-bit UART, enable rcvr      */
   TMOD |= 0x20;        // TMOD: timer 1, mode 2, 8-bit reload        */
   TH1   = 0xFD;         // TH1:  reload value for 1200 baud @ 12MHz   */
   TR1   = 1;           // TR1:  timer 1 run                          */
   TI    = 1;           // TI:   set TI to send first char of UART    */
   
}
/*************************************************/
//串口发送
/************************************************/
void send(unsigned char ch)
   {SBUF=ch;
    while(TI==0);
    TI=0;
    }
/************************************************/
/*********************************************/
/*红外线接收处理*/
 /********************************************/
 void irchuli()
      { uchar c1,c2;
	   if(irdata[2]=~irdata[3])
	       {  blueout();
		      send(irdata[2]);
			  c1=irdata[2]/10;
	          c2=irdata[2]%10;
	          send('0'+c1);
	          send('0'+c2);
			}
	   }
 /*********************************************/
//*********************************
//红外线接收扫描
//*********************************
//*********************************
//
//*********************************
void checkhead()
     {   while(ir==0)
	        {count0++;
	         }
         if(count0>140)
             {flag0=1;
             }
	      count0=0; 
		  if(flag0==1)
		     { flag0=0;
			   while(ir==1)
	                {count1++;
	                }
	          if(count1>350)
                    {flag1=1;
                    }
	          count1=0; 
			   if(flag1==1)
	               {flag=1; 
		            flag1=0;
                    }
	         
     		 }
	  }
uchar irshou(uchar *data1)
{ //uchar data1,BitCnt,i;
   uchar i,j;
   checkhead();
	    if(flag==1)
          { 
		   flag=0;
		   for(i=0;i<4;i++) //共4个字节
		   {   //1
		       *data1=0;
			 for(j=0;j<8;j++)
              { while(ir==0)
	              { count10++;
			      }
				  if(count10>20)
                       {(*data1)<<=1;
                        }
			   //0
			   while(ir==1)
	               {count11++;
			         }
			    if(count11<60)
                    {*data1|=1;
                     }
				count10=0;
			    count11=0;
			   }
			   
              data1++;
		   }
         irchuli(); 
	   }
 
   return 0; 
}

//键盘扫描
void keyscan()
     { if((P3&&0x70)!=0x70)
	      {   if(!keyadd)
		         {  delay(10);
                    if(!keyadd)
                     { if(ledblue==0)
                        {
                           if(VOL<84)
			                 {VOL++;
				              }
				           blueout();
	 			           SendBT1029(0,VOL);
                         }
                      }	 
			       }
			   if(!keysub)
                  {delay(10);
                    if(!keysub)
                     { if(ledblue==0)
                        {
		                   if(VOL>0)
			                  {VOL--;
				               }
				            blueout();
				            SendBT1029(0,VOL);
                          }
                      }	 
			       }
			   if(!keystby)
			     {
                    delay(10);
                    if(!keystby)
                     {VOLon=~VOLon;
				      stby=VOLon;
				      //ledred=~ledred;
                       redout();
                      }
				 }
              }
			}
 
 /********************************************/
 
void main()
{  
	uart_init();
    ledred=0;
    ledblue=1;
    delay(50000);
    ledred=1;
    ledblue=0;
	while(1)
	{ keyscan();
     irshou(&irdata);  	 
	 }
}

⌨️ 快捷键说明

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