51单片机学习——语音模块

 最近淘宝上买了一个JQ8900-16P语音模块,用谱中教育的开发板操作了一下。

主要通过IO按键控制语音模块的IO的7首歌曲播放。


#include<reg52.h>
#include<intrins.h>	
typedef unsigned int u16;
typedef unsigned char u8;
#define music_in P1
#define music_out P0
sbit k1 = P1^0;
sbit k2 = P1^1 ;
sbit k3 = P1^2 ;
sbit k4 = P1^3 ;
sbit k5 = P1^4	;
sbit k6 = P1^5	;
sbit k7 = P1^6	;
sbit k8 = P1^7	 ;

sbit led1 =  P0^1;
sbit led2 =  P0^2;
sbit led3 =  P0^3;
sbit led4 =  P0^4;
sbit led5 =  P0^5;
sbit led6 =  P0^6;
sbit led7 =  P0^7;




void delay10ms(void)   //延迟10ms
{
    u8 a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}
void delay1s(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
void keypros()
{
	if(k1==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k1==0)	 //再次判断按键是否按下
		{
			led1=~led1;	  //led状态取反
			delay1s(); 
			led1=~led1;
		}
		while(!k1);	 //检测按键是否松开
	}

	if(k2==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k2==0)	 //再次判断按键是否按下
		{
			led2=~led2;	  //led状态取反
			delay1s(); 
			led2=~led2;

		}
		while(!k2);	 //检测按键是否松开
	}
	if(k3==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k3==0)	 //再次判断按键是否按下
		{
			led3=~led3;	  //led状态取反
			delay1s(); 
			led3=~led3;	
		}
		while(!k3);	 //检测按键是否松开
	}
	if(k4==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k4==0)	 //再次判断按键是否按下
		{
			led4=~led4;	  //led状态取反
			delay1s(); 
			led4=~led4;
		}
		while(!k4);	 //检测按键是否松开
	}
	if(k5==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k5==0)	 //再次判断按键是否按下
		{
			led5=~led5;	  //led状态取反
			delay1s(); 
			led5=~led5;	
		}
		while(!k5);	 //检测按键是否松开
	}
	if(k6==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k6==0)	 //再次判断按键是否按下
		{
			led6=~led6;	  //led状态取反
			delay1s(); 
			led6=~led6;	
		}
		while(!k6);	 //检测按键是否松开
	}
	if(k7==0)		  //检测按键K1是否按下
	{	
		delay10ms();   //消除抖动 一般大约10ms
		if(k7==0)	 //再次判断按键是否按下
		{
			led7=~led7;	  //led状态取反
			delay1s(); 
			led7=~led7;	 
		}
		while(!k7);	 //检测按键是否松开
	}

	
			
} 
void main()
{
	music_out=0xff;
//led1 =0;
	while(1)
	{	
		keypros();  //按键处理函数	
	}		
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值