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

📄 1700.txt

📁 用ISD1700来实现读温度
💻 TXT
📖 第 1 页 / 共 2 页
字号:
功能:用ISD1700来实现读温度,比如27.5摄氏度,先分段录制声音:1,2,3,4,5,6,7,8,9,十,点,温度,摄氏度。读27.5摄氏度时,再分段找地址,读出相应的数。 
ISD1760的录放音程序。  
/**************************************************************************  
*    SPI操作ISD1760  
*    SPI操作ISD1760  
**************************************************************************/  

#include<SPI.H>  


uchar bdata SR0_L;  
uchar bdata SR0_H;  
uchar bdata SR1;  
uchar ID,APCL=0,APCH=0;  

/**************************************************************************  
*    函数原型: void ISD_Init(void);  
*    功    能: 初始化  
**************************************************************************/  
void   ISD_Init(void){  
        ISD_Reset();  
        do{  
                ISD_PU();  
                RdStatus();  
                DogReset();  
        }while((SR0_L&0x01)||(!(SR1&0x01)));        //if(SR0_L^0==1){system Err}<CMD_Err==1>  

        SBUF=RD_DevID();//读取芯片ID,----1760为0xa0  
        ClrInt();  
        ISD_WR_APC2(0xaf);  
        RdAPC();
}  

/**************************************************************************  
*    函数原型: void ISD_PU(void);  
*    功    能: 空间检查  
**************************************************************************/  
void ISD_CHK_MEM(void){  
        ISD_SendData(CHK_MEM);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);  
}  

/**************************************************************************  
*    函数原型: void ISD_PU(void);  
*    功    能: 上电  
**************************************************************************/  
void  ISD_PU(void){  
        ISD_SendData(PU);  
        ISD_SendData(0x00);  
        SS=1;  
    delay_ms(50);  
}  

/**************************************************************************  
*    函数原型: void ISD_Stop(void);  
*    功    能: 停止  
**************************************************************************/  
/*  
void ISD_Stop(void){  
        ISD_SendData(STOP);  
        ISD_SendData(0x00);  
        SS=1;  
    delay_ms(50);  
}  

/**************************************************************************  
*    函数原型: void ISD_Reset(void);  
*    功    能: 复位  
**************************************************************************/  
void ISD_Reset(void){  
        ISD_SendData(RESET);  
        ISD_SendData(0x00);  
        SS=1;  
    delay_ms(50);  
}  

/**************************************************************************  
*    函数原型: void ISD_PD(void);  
*    功    能: 掉电  
**************************************************************************/  
/*  
void ISD_PD(void){  
        ISD_SendData(PD);  
        ISD_SendData(0x00);  
        SS=1;  
}  

/**************************************************************************  
*    函数原型: void ISD_SendData(uchar BUF_ISD);  
*    功    能: 发送数据  
**************************************************************************/  
uchar ISD_SendData(uchar BUF_ISD){  
        uchar i,dat=BUF_ISD;  
        SCLK=1;  
        SS=0;  
        for(i=0;i<8;i++){  
                SCLK=0;  
                I_delay();  
                if(dat&0x01){  
                        MOSI=1;  
                }  
                else{  
                        MOSI=0;  
                }  
                dat>>=1;  
                if(MISO){  
                        dat|=0x80;  
                }  
                SCLK=1;  
                I_delay();  
        }  
        MOSI=0;  
//        SS=1;  
        return(dat);  
}  

/**************************************************************************  
*    函数原型: void RdStatus(void);  
*    功    能: 读取状态  
**************************************************************************/  
void RdStatus(void){  
        ISD_SendData(RD_STATUS);  
        ISD_SendData(0x00);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  
        SR0_L        =ISD_SendData(RD_STATUS);  
        SR0_H        =ISD_SendData(0x00);  
        SR1                =ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);  

}  

/**************************************************************************  
*    函数原型: void RdStatus(void);  
*    功    能: 读取ID  
**************************************************************************/  
uchar RD_DevID(void){  
        ISD_SendData(RD_DEVID);  
        ISD_SendData(0x00);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  
        SR0_L        =ISD_SendData(RD_DEVID);  
        SR0_H        =ISD_SendData(0x00);  
        ID                =ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);  
        return(ID);  
}  

/**************************************************************************  
*    函数原型: void RD_APC(void);  
*    功    能: 读取APC  
**************************************************************************/  
void RdAPC(void){  
        ISD_SendData(RD_APC);  
        ISD_SendData(0x00);  
        ISD_SendData(0x00);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  

        SR0_L        =ISD_SendData(RD_APC);  
        SR0_H        =ISD_SendData(0x00);  
        APCL        =ISD_SendData(0x00);  
        APCH        =ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  
/*  
        SBUF=SR0_L;  
        delay_ms(1);  
        SBUF=SR0_H;  
        delay_ms(1);  
        SBUF=APCL;  
        delay_ms(1);  
        SBUF=APCH;  
*/  
}  

/**************************************************************************  
*    函数原型: void ClrInt(void);  
*    功    能: 清除中断  
**************************************************************************/  
void ClrInt(void){  
        ISD_SendData(CLI_INT);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  
}  

/**************************************************************************  
*    函数原型: void ISD_WR_APC2(uchar voiceValue);  
*    功    能: 设置APC2  
**************************************************************************/  
void ISD_WR_APC2(uchar voiceValue){  
        ISD_SendData(WR_APC2);  
        ISD_SendData(0xa8|voiceValue);                //0xa8声音最大,0xaf声音最小  
        ISD_SendData(0x0c);                //D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,执行到第一个EOM自动跳到第二段开始  
        SS=1;  
        delay_ms(10);               //延迟10ms  
        ISD_WR_NVCFG();                        //永久写入寄存器  
}  

/**************************************************************************  
*    函数原型: void ISD_WR_NVCFG(void);  
*    功    能: 永久写入寄存器  
**************************************************************************/  
void ISD_WR_NVCFG(void){  
        ISD_SendData(WR_NVCFG);  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  
}  

/**************************************************************************  
*    函数原型: void GetToneAdd(uchar cNum, Uint * ipStartAdd, Uint * ipEndAdd);  
*    功    能: 取出当前语音的首末地址  
**************************************************************************/  
/*  
void GetToneAdd(uchar cNum, uint * ipStartAdd, uint * ipEndAdd){  

        *ipStartAdd=caToneAdd[cNum*2];  
        *ipEndAdd=caToneAdd[cNum*2+1];  
}  

/**************************************************************************  
*    函数原型: void SetPLAY(uchar cNum);  
*    功    能: 定点播放  
**************************************************************************/  
void SetPLAY(uchar cNum){  

        uint Add_ST, Add_ED;  
        uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;  

        do{  
                RdStatus();  
                DogReset();  
        }while((SR0_L&0x01)||(!(SR1&0x01)));        //if(SR0_L^0==1){system Err}<CMD_Err==1>  

        ClrInt();  

        GetToneAdd(cNum, &Add_ST, &Add_ED);  

        Add_ST_L=(uchar)(Add_ST&0x00ff);  
        Add_ST_H=(uchar)((Add_ST>>8)&0x00ff);  
        Add_ED_L=(uchar)(Add_ED&0x00ff);  
        Add_ED_H=(uchar)((Add_ST>>8)&0x00ff);  
/*  
delay_ms(1);  
SBUF=Add_ST_L;  
delay_ms(1);  
SBUF=Add_ST_H;  
delay_ms(1);  
SBUF=Add_ED_L;  
delay_ms(1);  
SBUF=Add_ED_H;  
delay_ms(1);  
*/  
        ISD_SendData(SET_PLAY);  
        ISD_SendData(0x00);  
        ISD_SendData(Add_ST_L);                 //S7:S0  开始地址  
        ISD_SendData(Add_ST_H);                  //S10:S8  
        ISD_SendData(Add_ED_L);                  //E7:E0  结束地址  
        ISD_SendData(Add_ED_H);                  //E10:E8  
        ISD_SendData(0x00);  
        SS=1;  
        delay_ms(10);               //延迟10ms  

        do{  
                RdStatus();  

⌨️ 快捷键说明

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