久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5919|回復: 5
收起左側

isd4004與stc89C52單片機對應腳怎么接?

[復制鏈接]
ID:380971 發(fā)表于 2018-8-2 21:39 | 顯示全部樓層 |閱讀模式
3黑幣
isd4004與stc89C52對應腳怎么接?請大神指點,以下是錄音筆圖紙及代碼,都是復制別人的
原理圖.PNG




制作出來實物圖如下:


單片機源程序如下:
  • // 以ISD4004-8錄音時間為8分鐘,即8*60=480S根據(jù)4004的資料,480秒可分為2400段,也就是1S的段數(shù)為
  • //  5段,即從,0000-0005H的內容為1秒。0X0000-0X012C ;0X012D-0X0258;0X259-0X0384;0X0385-0X04B0.
  • #include <reg52.h>
  • #include <intrins.h>
  • #include"1602.c"
  • #include"eeprom.h"
  • #define uchar unsigned  char
  • #define uint  unsigned  int
  • bit playbit,recbit;        //定義兩個位變量,放音和錄音位
  • ////////定義放音命令,定義常量//////
  • #define ISDPOWERUP      0X20           //ISD4004上電
  • #define ISDSTOP         0X10           //ISD4004下電
  • #define OPERSTOP        0X30           //ISD4004停止當前操作
  • #define PLAYSET         0XE0           //ISD4004從指定地址開始放音
  • #define PLAYCUR         0XF0           //ISD4004從當前地址開始放音
  • #define RECSET          0XA0                 //ISD4004從指定地址開始錄音
  • #define RECCUR          0XB0                   //ISD4004從當前地址開始錄音
  • sbit   SCLK=P3^7;
  • sbit   SS=P3^6;            //LOW IS ACTIVELY
  • sbit   MOSI=P3^5;
  • //sbit   MISO=P3^4;
  • sbit   K1=P1^2;
  • sbit   K2=P1^3;
  • sbit   K3=P1^4;                  //按鍵輸入
  • sbit   LED1=P1^0;
  • sbit   LED2=P1^1;          //指示燈
  • uchar aa,bb,cc,dd,ee;
  • uchar num_rec=0;
  • void  delayms(uchar ms);
  • uchar playcout,reccout;         //放音和錄音次數(shù)。
  • ////////////////放音部分子程序,放音地址由ADDR決定////
  • void play(uint addr)
  • {         uint y;
  •         SS=0;
  •         MOSI=0;//發(fā)送開始
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0x20>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }//發(fā)送結束
  •         SS=1;//上電結束
  •         delayms(50);
  •         SS=0;
  •         MOSI=0;//發(fā)送地址
  •         SCLK=0;
  •         for(y=0;y<16;y++)
  •         {
  •                 SCLK=0;
  •                 if((addr>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                  SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }//發(fā)送地址結束
  •         MOSI=0;//放音
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0xe0>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }
  •         SS=1;
  •         SS=0;
  •         MOSI=0;//放音
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0xf0>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }
  •         SS=1;          }
  • //////////////////////////lu音部分子程序,地址由ADDR決定/////////////////////////
  • void rec(addr)
  • {         uint y;
  •         SS=0;
  •         MOSI=0;//發(fā)送開始
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0x20>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }//發(fā)送結束
  •         SS=1;//上電結束
  •         delayms(50);
  •         SS=0;
  •         MOSI=0;//發(fā)送開始
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0x20>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }//發(fā)送結束
  •         SS=1;//上電結束
  •         delayms(50);
  •         delayms(50);
  •         SS=0;
  •         MOSI=0;//發(fā)送地址
  •         SCLK=0;
  •         for(y=0;y<16;y++)
  •         {
  •                 SCLK=0;
  •                 if((addr>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }//發(fā)送地址結束
  •         MOSI=0;
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0xa0>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }
  •         SS=1;
  •         SS=0;
  •         MOSI=0;
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0xb0>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }
  •         SS=1;          }
  • ////////////////////////////////////
  • ////////////////////////////////
  • void stop()
  • {
  •     uchar y;
  •         SS=1;
  •         SS=0;
  •         MOSI=0;//放音
  •         SCLK=0;
  •         for(y=0;y<8;y++)
  •         {
  •                 SCLK=0;
  •                 if((0x30>>y)&0x01)MOSI=1;
  •                 else MOSI=0;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •                 SCLK=1;
  •                 _nop_();
  •                 _nop_();
  •                 _nop_();
  •         }
  •         SS=1;
  • }
  • ////////////////////////////////////
  • ////////////////////////////////////
  • void delayms(uchar ms)
  • // 延時子程序
  • {
  •         uchar j;
  •         while(ms--)
  •         {
  •                 for(j = 0; j < 120; j++);
  •         }
  • }
  • ////////////////////////////////
  • void playsound()        ///錄放音子函數(shù)
  • {
  •   if(playbit)
  •   {
  •      playbit=0;
  •      switch(playcout)
  •     {                         ///////////====每段60S=====////////////////
  •          case 0x01:{play(0x0000);LCD_write_str(0,0,"NUM:1 Playing  ");}break;        //此處第一段音樂的開始地址為0X00,到0X012d地址結束,約為60秒。
  •      case 0x02:{play(0x012d);LCD_write_str(0,0,"NUM:2 Playing  ");}break;
  •      case 0x03:{play(0x0259);LCD_write_str(0,0,"NUM:3 Playing  ");}break;
  •      case 0x04:{play(0x0385);LCD_write_str(0,0,"NUM:4 Playing  ");}break;
  •     }
  •    }
  •   if(recbit)
  •    {
  •     recbit=0;
  •     switch(reccout)
  •         {
  •              case 0x01:{rec(0x0000); LCD_write_str(0,0,"NUM:1 Recording");aa=1;}break;
  •              case 0x02:{rec(0x012d);LCD_write_str(0,0,"NUM:2 Recording");aa=1;}break;
  •              case 0x03:{rec(0x0259);LCD_write_str(0,0,"NUM:3 Recording");aa=1;}break;
  •              case 0x04:{rec(0x0385);LCD_write_str(0,0,"NUM:4 Recording");aa=1;}break;
  •      }
  •     }
  • }
  • bit key_bit1=0,key_bit2=0;
  • uchar num11;
  • uchar  play_count=4,rec_count=4;
  • ////////////////////////////////////
  • void keyscan()  //直控鍵盤掃描子程序。
  • {
  •                    if(K1==0)
  •               {
  •                     while(K1==0);
  •                         key_bit1=1;
  •                     recbit=1;
  •                     reccout++;
  •                          LED2=0;LED1=1;
  •                     if(reccout>rec_count)          //
  •                     reccout=1;
  •                   }
  •                   if(K2==0&&key_bit2==0)
  •                     {
  •                            while(K2==0);
  •                            key_bit1=1;
  •                            playbit=1;
  •                        playcout++;
  •                            LED1=0;LED2=1;
  •                            if(playcout>play_count)
  •                            playcout=1;
  •                 //           reccout=num_rec;
  •                    }
  •                  if(K3==0&&key_bit1==1)
  •                     {
  •                           while(K3==0);
  •                           stop();
  •                           LED2=1;
  •                           LED1=1;
  •                           if(aa==1){
  •                           num_rec++;
  •                           aa=0;
  •                           if(num_rec>4){
  •                                  num_rec=1;
  •                                 key_bit1=0;
  •                           }
  •                           }
  •                           ISP_ERASE(0x2c00);                //注意:字節(jié)編程時必須要先要擦除整個扇區(qū)
  •                           ISP_PROGRAM(0x2c00, num_rec);        //寫入eeprom 掉電保存
  •                           ISP_PROGRAM(0x2c01, reccout);
  •                           play_count=num_rec;                //保存播放的段數(shù)
  •                       reccout=num_rec;                //從第幾段錄起
  •                           LCD_write_str(0,0,"                ");
  •                           key_bit1=0;
  •                   }
  • ////////////////////////////////////////////////////////////////////////////////////////////////
  •                  if(K3==0&&key_bit1==0)                                        //選擇播放哪段
  •                     {
  •                            while(K3==0&&key_bit1==0);
  •                                 key_bit2=1;
  •                             num11++;
  •                            if(num11>play_count)
  •                            {
  •                                    num11=0;
  •                                    bb=0;cc=0;dd=0;
  •                                    key_bit2=0;
  •                                    LCD_write_str(0,0,"                ");
  •                            }
  •                                 switch(num11)
  •                           {
  •                                      case 1:{LCD_write_str(0,0,"NUM:1 Rec    ");bb=1;cc=0;dd=0;ee=0;}break;
  •                                      case 2:{LCD_write_str(0,0,"NUM:2 Rec    ");bb=0;cc=1;dd=0;ee=0;}break;
  •                                      case 3:{LCD_write_str(0,0,"NUM:3 Rec    ");cc=0;bb=0;dd=1;ee=0;}break;
  •                                      case 4:{LCD_write_str(0,0,"NUM:4 Rec    ");cc=0;bb=0;dd=0;ee=1;}break;
  •                       }
  •                         }
  •                         if(bb==1){
  •                                   if(K2==0&&key_bit2==1)
  •                           {
  •                                     while(K2==0);
  •                                         key_bit1=1;
  •                                         play(0x0000);
  •                                         LCD_write_str(0,0,"NUM:1 Playing  ");
  •                                   }
  •                          }
  •                          if(cc==1){
  •                                   if(K2==0&&key_bit2==1)
  •                           {
  •                                     while(K2==0);
  •                                         key_bit1=1;
  •                                         play(0x012d);
  •                                         LCD_write_str(0,0,"NUM:2 Playing  ");
  •                                   }
  •                          }
  •                          if(dd==1){
  •                                   if(K2==0&&key_bit2==1)
  •                           {
  •                                     while(K2==0);
  •                                         key_bit1=1;
  •                                         play(0x0259);
  •                                         LCD_write_str(0,0,"NUM:3 Playing  ");
  •                                   }
  •                          }
  •                      if(ee==1){
  •                                   if(K2==0&&key_bit2==1)
  •                           {
  •                                     while(K2==0);
  •                                         key_bit1=1;
  •                                         play(0x0385);
  •                                         LCD_write_str(0,0,"NUM:4 Playing  ");
  •                                   }
  •                          }
  • }
  • ////////////////////////////////////////////////
  • /////////以下部分為主程序///////////////////
  • void main()
  • {
  •    num_rec = ISP_READ(0x2c00);  //保存數(shù)值回讀
  •    reccout = ISP_READ(0x2c01);
  •    play_count=num_rec;                //保存條數(shù)
  •    init1602();                                 //液晶初始化
  •    LCD_write_str(0,1,"N:");
  •    stop();
  •         while(1)
  •            {
  •               keyscan();           //按鍵掃描
  •               playsound();           //錄播放
  •                   Write_num(0xC2,num_rec);        //顯示條數(shù)
  •                    }
  • }




回復

使用道具 舉報

ID:96682 發(fā)表于 2018-8-3 12:17 | 顯示全部樓層
源碼不是已經(jīng)標注了么,
回復

使用道具 舉報

ID:377872 發(fā)表于 2018-8-4 14:43 | 顯示全部樓層
源程序20行到23行就是連接方法
回復

使用道具 舉報

ID:505153 發(fā)表于 2020-4-20 22:42 | 顯示全部樓層
圖上只畫了3個引腳的網(wǎng)絡標號。另外一個腳去哪里了
回復

使用道具 舉報

ID:964497 發(fā)表于 2021-9-7 05:35 | 顯示全部樓層
有連接好的原理圖嘛?
回復

使用道具 舉報

ID:964497 發(fā)表于 2021-9-11 23:30 | 顯示全部樓層
單片機廢物 發(fā)表于 2021-9-7 05:35
有連接好的原理圖嘛?

有仿真圖嗎?能分享一下嘛
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品久久久久久 | 精品国产乱码久久久久久久久 | 成人精品国产免费网站 | 成人在线视频免费观看 | www.99热.com | 作爱视频免费看 | 另类 综合 日韩 欧美 亚洲 | 亚洲精品国产偷自在线观看 | 午夜精品久久久久久久久久久久久 | 国产免费福利 | 亚洲视频免费一区 | 日韩中字幕| 欧洲高清转码区一二区 | 成人精品国产免费网站 | 成人欧美一区二区三区白人 | 男女羞羞免费网站 | 99国产精品久久久久久久 | 亚洲一区二区三区视频 | 黄在线免费观看 | 欧美爱爱视频网站 | 久久久久久久久一区 | 在线看日韩 | 成人免费小视频 | 成人在线精品视频 | 精品国产欧美一区二区 | hsck成人网 | 国产欧美久久精品 | 色姑娘综合网 | 97伦理影院| 国产一级一级国产 | 激情欧美日韩一区二区 | 伊人网在线播放 | 亚洲精品乱码久久久久久黑人 | 国产精品久久久久久久久久三级 | 理论片免费在线观看 | 91精品国产一区 | 欧美激情欧美激情在线五月 | 欧美一区二区三区在线观看视频 | 一级少妇女片 | 亚洲欧美中文日韩在线v日本 | 国产一级片网站 |