近那個寶上買了一個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(); //按鍵處理函數
}
}
————————————————
|