查看: 2740|回复: 0
打印 上一主题 下一主题

ids4004上位机语音报时

[复制链接]
跳转到指定楼层
沙发
发表于 2016-6-20 19:55:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟刚学51不久,希望大家不要见笑,

ids4004操作:
#include"ids4004.h"
#include<reg52.h>
#include"delay.h"

        
#define         POWERUP    0X20
#define         SET_PLAY        0XE0
#define         SET_REC          0XA0
#define         PLAY             0XF0
#define         REC              0XB0
#define     STOP        0X30
#define     DROP        0X10
#define     MC        0XF8

void writeIsd_byte(uchar Sdata)         //ISD写操作,
{
        uchar i;
        SCL4004=0;
        for(i=0;i<8;i++)
        {
                if(Sdata & 0x01)
                {
                        MOSI=1;
                }
                else
                        MOSI=0;
                SCL4004=1;
                Sdata>>=1;
                SCL4004=0;
        }
        
}

/**************************************
设置开始录音、播放的地址,但是不能完成一个完整录放过程
***************************************/

void set_play_addr(uint addr)  //从设置开始播放的地址
{
        uchar addrH,addrL;
        addrH=(uchar)(addr>>8);
        addrL=(uchar)addr;
        SS=0;
        writeIsd_byte(addrL);
        writeIsd_byte(addrH);
        writeIsd_byte(SET_PLAY);
        SS=1;

}

void set_rec_addr(uint addr)          // 从设置开始录音的地址
{
        uchar addrH,addrL;
        addrH=(uchar)(addr>>8);
        addrL=(uchar)addr;
        SS=0;
        writeIsd_byte(addrL);
        writeIsd_byte(addrH);
        writeIsd_byte(SET_REC);
        SS=1;

}

/*******************************
发送停止、停止掉电、上电、录音和播放的指令
*********************************/

void stop()                                                                                                                                                                     
{
        SS=0;
        writeIsd_byte(STOP);
        SS=1;
}

void powerUp(void)        //发送指令,给isd4004上电
{
        SS=0;
        writeIsd_byte(POWERUP);
        SS=1;
}

void stop_power(void)           //发送停止并掉电指令
{
        SS=0;
        writeIsd_byte(DROP);
        SS=1;
}

void Send_play_com(void)        //发送录音指令
{
        SS=0;                                                                        
        writeIsd_byte(0xf0);
        SS=1;
}

void Send_rec_com (void)//发送录音指令
{
          SS=0;
        writeIsd_byte(REC);
        SS=1;
}

void fast(void)        //发送指令,给isd4004快进
{
        SS=0;
        writeIsd_byte(MC);
        SS=1;
}

/****************************

从指定的地址开始录音和播放,两者都为一个完整的操作

*******************************/
void rec4004(unsigned int addr)
{
        powerUp();
        delayXms(25);
        powerUp();
        delayXms(25);
        delayXms(25);
        set_rec_addr(addr);
    Send_rec_com();

}

void play4004(unsigned int addr)//从已经录制好的地址开始播放
{
         powerUp();
         delayXms(25);
         set_play_addr(addr);
         Send_play_com();

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

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