批注 2019-12-27 192545.png (20.77 KB, 下載次數: 39)
下載附件
2019-12-27 19:26 上傳
單片機源程序如下:
- /***************************************************************************/
- /***************************************************************************/
- /**************ISD1700系列開發板主控程序 Ver2.0*****************************/
- // 功能描述:
- // 單片機與語音芯片之間采用SPI通信;
- // 錄音板與上位機通過串口通信;
- // 上位機(錄音軟件)能對語音芯片進行相關操作;
- // 包括識別芯片ID、能進行錄音、播放、擦除、讀取語音段地址等;
- // 具體使用請參考《ISD17xx系列錄音板使用手冊Ver2.1》
- /***************************************************************************/
- // 硬件說明:
- // MCU:AT89C51/STC系列
- // 晶振:11.0592MHz
- // 串口波特率:1200bps
- /***************************************************************************/
- /***************************************************************************/
- /*頭文件*/
- #include "reg51.h"
- #include "sound.h"
- #include "ISD1700.H"
- #define uchar unsigned char
- #define uint unsigned int
- /*********函數聲明**************/
- extern void spi_pu (void);
- extern void comm_sate(void);
- extern void spi_stop (void);
- extern void spi_fwd (void);
- extern void spi_play(void);
- extern void isd1700_7byte_comm(uchar comm_par, uint star_addr, uint end_addr);
- void init(void);
- void PlaySoundTick(uchar number);
- void LEDShow(void);
- void delay_isd(uint time);
- /*********SPI通信接口**********/
- sbit ISD_SS=P0^7;
- sbit ISD_MISO=P0^4;
- sbit ISD_MOSI=P0^5;
- sbit ISD_SCLK=P0^6;
- sbit RUN_LED = P0^3; //運行指示燈
- uchar RunLedTime;
- bit playflg;
- void main(void)
- {
- init(); //器件初始化
- while(1)
- {
- comm_sate(); //與上位機通信
- if(playflg) //播放標志位
- {
- playflg = 0; //清0
- spi_fwd(); //播放指針指向下一曲
- delay_isd(30000); //延時
- spi_play(); //播放當前
- }
- }
- }
- void init(void)
- {
- TMOD=0x21;
- SCON=0x50;
- TL0=0x00; //25ms
- TH0=0x70; //25ms
- TH1=0xE8;
- TL1=0xE8; //12M/1200bit/s/E6 11.0592M/E8
- ET0=1;
- EA=1;
- TR0=1;
- TR1=1;
- IT0 = 0;
- EX0 = 1;
- spi_pu();
- P3 = 0xff;
- RunLedTime = 25;
- }
- /************外部中斷0服務函數**************/
- void int0(void) interrupt 0
- {
- playflg = 1; //播放標志位置1,允許播放
- }
- void tim0_sever(void) interrupt 1
- {
- TL0=0x00;
- TH0=0x70; //重新賦初值
- if(RunLedTime != 0)
- {
- if( --RunLedTime == 0)
- {
- RUN_LED=~RUN_LED; //1秒鐘取反一次
- RunLedTime = 25;
- }
- }
- }
- void delay_isd(uint time)
- {
- while(time--!=0);
- }
- /**************獲取指定語音段地址并播放,用戶可根據實際需要進行增減******************/
- /**************對應的語音段地址在SOUND.H文件里,具體地址從錄音軟件中讀取*************/
- void GetSound(uchar soundtick)
- {
- ISD_SS=0;
- switch(soundtick)
- {
- case 0:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_0A, sound_0B); }break;
- case 1:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_1A, sound_1B); }break;
- case 2:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_2A, sound_2B); }break;
- case 3:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_3A, sound_3B); }break;
- case 4:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_4A, sound_4B); }break;
- case 5:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_5A, sound_5B); }break;
- case 6:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_6A, sound_6B); }break;
- case 7:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_7A, sound_7B); }break;
- case 8:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_8A, sound_8B); }break;
- case 9:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_9A, sound_9B); }break;
- case 10:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_10A, sound_10B); }break;
- case 11:{ isd1700_7byte_comm(ISD1700_SET_PLAY|ISD_LED, sound_11A, sound_11B); }break;
- default: break;
- }
- ISD_SS=1;
- }
- /**********播放指定語音段************/
- void PlaySoundTick(uchar number)
- {
- spi_stop ();
- delay_isd(30000);
- GetSound(number);
- }
復制代碼
所有資料51hei提供下載:
資料.7z
(3.02 MB, 下載次數: 49)
2023-3-30 00:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|