找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4432|回复: 1
收起左侧

51单片机学习—JQ8900-16P语音模块源程序

[复制链接]
ID:767950 发表于 2020-6-18 23:31 | 显示全部楼层 |阅读模式
近那个宝上买了一个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();  //按键处理函数        
        }               
}

————————————————


回复

使用道具 举报

ID:975220 发表于 2022-2-3 13:42 | 显示全部楼层
大佬,线咋接啊,i/o都接上吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表