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

📄 isd4004ceshi.c

📁 本科毕业设计做的一个小玩意。设计的语音播报记事器系统使用AT89S52单片机为微控制器
💻 C
字号:
#include <reg51.h>
#include <intrins.h>


 sbit _cs  = P1^0;
 sbit _sclk= P1^3;
 sbit _mosi= P1^1;
 sbit _miso= P1^2;
 sbit _rac = P1^4;
 sbit _int = P1^5;


 void delay(unsigned int i)  //延时程序
 {
   while(i--);
 }

void stopmode()   //停止
{
   unsigned char m,i,j;
   _cs=1;
   _sclk=0;
   _cs=0;

   m=0x30;
   for(i=0;i<8;i++)
   {
      m=_cror_(m,1);
      j=m<<1;
      _mosi=CY;
      _sclk=0;
      _sclk=1;
   }
   _cs=1;
}
void powerdown()   //下电
{
    unsigned char m,i,j;
    _cs=1;
   _sclk=0;
   _cs=0;

   m=0x10;
   for(i=0;i<8;i++)
   {
      m=_cror_(m,1);
      j=m<<1;
      _mosi=CY;
      _sclk=0;
      _sclk=1;
   }
   _cs=1;
}

void powerup()   //上电
{
   unsigned char m,i,j;
   _cs=1;
   _sclk=0;
   _cs=0;

   m=0x20;
   for(i=0;i<8;i++)  //参照8位命令格式
   {
      m=_cror_(m,1); //循环右移
      j=m<<1;
      _mosi=CY;  //主控器应在串行时钟上升沿之前半个周期将数据送到本端
      _sclk=0;
      _sclk=1;
   }
   _cs=1;
}
void record4004(unsigned int address)  //录音  address--录音地址 0---2400
{
     unsigned char i,m,j;
     unsigned char datasoute=0;


      powerup();
      delay(6000);//上电延时54us
      powerup();
      delay(6000);//上电延时
      delay(6000);//上电延时
      _cs=1;
      _sclk=0;
      m=0xa0;
      _cs=0;
       for(i=0;i<16;i++)             //发地址为00的SETREC命令
     {
         address=_iror_(address,1);
         datasoute=address<<1;
         _mosi=CY;
         _sclk=0;
         _sclk=1;
     }
      for(i=0;i<8;i++)
     {
         m=_cror_(m,1);
         j=m<<1;
         _mosi=CY;
         _sclk=0;
         _sclk=1;
     }
     _cs=1;
     _sclk=0;
     m=0xb0;
     _cs=0;

     for(i=0;i<8;i++)     //发REC指令
     {
        m=_cror_(m,1);
        j=m<<1;
        _mosi=CY;
        _sclk=0;
        _sclk=1;
     }
     _cs=1;
     P1=0xff;
     datasoute=0;
  while(_int==1)       //存储地址换行标志
  {
   if(_rac) {delay(44444); datasoute++; }  //记录本次录音所占的行数(也就是本次录音有多大)
   if(datasoute==0x96)                     //delay(44444)是延时0.4s
     {                                     //录音60s
       stopmode();                         //0x32是20s
       _int=0;                                        //
     }                                      //  在这里应该加上自己的程序,就是录音退出程序
                                           //
  }
}//while end;

void audioout(unsigned int address)  //放音程序
{
    unsigned char i,m,j;
    unsigned int datasoute;


    powerup();
    _cs=1;
    _sclk=0;
    _cs=0;
    m=0xe0;
      for(i=0;i<16;i++)
    {
        address=_iror_(address,1);
        datasoute=address<<1;
        _sclk=0;
        _mosi=CY;
        _sclk=1;
    }
    for(i=0;i<8;i++)
    {
         m=_cror_(m,1);
         j=m<<1;
         _sclk=0;
         _mosi=CY;
         _sclk=1;
    }

    _cs=1;
     _sclk=0;
     m=0xf0;
    _cs=0;
    for(i=0;i<8;i++)
    {
       m=_cror_(m,1);
       j=m<<1;
       _sclk=0;
       _mosi=CY;
       _sclk=1;
    }
    _cs=1;

     P1=0xff;
    while(_int==1)
    {
    }//while end;
}

main()
{
  record4004(175);
  audioout(0);
  while(1);
}

⌨️ 快捷键说明

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