基于单片机的sd卡录音笔设计与实现_毕业设计论文._第1页
基于单片机的sd卡录音笔设计与实现_毕业设计论文._第2页
基于单片机的sd卡录音笔设计与实现_毕业设计论文._第3页
基于单片机的sd卡录音笔设计与实现_毕业设计论文._第4页
基于单片机的sd卡录音笔设计与实现_毕业设计论文._第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 输入指令麦克风扬声器电源线录音放音 电源SD卡SPCE061A储存或删除数字信号提取数字信号按键键盘 系统初始化 检测SD卡是否插入?否 检查SD卡是否写保护?置写保护标志播放“SD卡写保护”是否初始化SD卡按键处理系统状态处理是播放“注意SD卡没有插入” 检测SD卡是否插入?否是播放“就绪”语音提示程序开始SACM_DVR1600_Initial();/ 语音初始化if(0 = SD_ChkCard() / 检测卡是否插入PlaySnd(VOICE_ATTENTION, DAC1 + DAC2);PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2);whi

2、le(0 = SD_ChkCard();/等待卡插入if(1 = SD_ChkCardWP()/检测卡是否有写保护WriteProtect = 1;elseFS_Init();/没有写保护,执行初始化操作PlaySnd(VOICE_READY, DAC1 + DAC2); / 播放就绪/-while(1)KeyProcess();/按键处理StatusProcess();/系统状态处理SACM_DVR1600_ServiceLoop();/录/放音服务初始化 判断是否有写保护标志?否 判断按键Key3录音键是Key2上一曲键Key1下一曲键返回开始Key = KeyScan_GetKey(&K

3、eyType);if(1 = WriteProtect)/卡有写保护,拒绝按键操作if(C_SReleaseKeyState = KeyType) | (C_LReleaseKeyState = KeyType)return; switch(Key)case C_Record: / Recordif(C_SReleaseKeyState = KeyType) / 短按键,录/放音控制if(PLAY = Status)SACM_DVR1600_Stop();/如果正在放音,则先停止播放FS_CloseOpenFile();Status = IDLE;if(IDLE = Status)if(g_F

4、ileNum = FS_MAX_FILENUM) | (FS_GetUnusedSecNum() 0)if(PLAY = Status)/如果正在放音,则先停止播放SACM_DVR1600_Stop();FS_CloseOpenFile();else if(RECORD = Status)/如果正在录音则不处理if(C_LReleaseKeyState = KeyType)/长按键,停止当前播放Status = IDLE;else if(C_SReleaseKeyState = KeyType)/短按键,播放下一曲 检查SD卡是否已满? 是否正在录音? 播放是否结束?停止录音系统状态置空闲 是

5、否正在播放?停止读取系统状态置空闲是否否否是是是否返回开始switch(Status)case RECORD:if(FS_GetUnusedSecNum() 1)/检测是否超出SD卡容量范围SACM_DVR1600_Stop(); Status = IDLE;case PLAY:if(FS_CheckFileEnd()/检测当前语音是否播放完毕SACM_DVR1600_Stop();FS_CloseOpenFile();Status = IDLE;void DrvKeyInit(void)*P_KEY_Dir &= KEY_PORT_MASK;*P_KEY_Attrib &= KEY_PORT

6、_MASK;#if KEY_COM*P_KEY_Buffer &= KEY_PORT_MASK;#else*P_KEY_Buffer |= KEY_PORT_MASK;#endifunsigned int KeyScan_GetKey(unsigned int *KeyType)unsigned int Key;if(C_NullKey = ui_KeyState)Key = C_Null;elseKey = ui_KeyID;*KeyType = ui_KeyState;if(C_KeyStateFirst = ui_KeyScanState)ui_KeyID = C_Null;ui_Key

7、State = C_NullKey;return(Key);F_USER_DVR1600_GetData:F_USER_WriteWordBlock:/Start Adr:R1; Length:R2push r1, r5 to sppush r2 to sppush r1 to spcall _FS_ReadingFilesp += 2pop r1, r5 from spRETF;F_USER_DVR1600_WriteData:F_USER_ReadWordBlock:/Start Adr:R1; Length:R2push r1, r5 to sppush r2 to sppush r1

8、to spcall _FS_WritingFilesp += 2pop r1, r5 from spRETF;.public _SPI_SendByte_SPI_SendByte:.procr1 = sp + 3r1 = r1r2 = 8?L_SPI_SendByte_Lop:test r1, 0x0080jz ?L_SPI_SendByte_Bit8_0SPI_DOUT_SETjmp ?L_SPI_SendByte_Bit8_End?L_SPI_SendByte_Bit8_0:SPI_DOUT_CLR?L_SPI_SendByte_Bit8_End:SPI_SCK_CLRSPI_SCK_SE

9、Tr1 = r1 lsl 1r2 -= 1jnz ?L_SPI_SendByte_Lopretf.endp.public F_USER_DVR1600_EndRecord/.public _USER_DVR1600_SetStartAddr/.public F_USER_DVR1600_SetStartAddr.public F_USER_DVR1600_GetData.public F_USER_DVR1600_WriteData/.public F_USER_WriteWordBlock/*/.public F_USER_ReadWordBlock/*.external _FS_Readi

10、ngFile.external _FS_WritingFile.external _FS_EndEncodevoid FS_WritingFile(unsigned int *Buf, unsigned int Len)unsigned int i;Len = (SD_BLOCKSIZE - CurOffset)SD_WritingBlockData(unsigned long int)(SD_BLOCKSIZE - CurOffset), (unsigned char *)Buf);SD_WriteFinished();CurFileSec+;CurFileEndSec = CurFileS

11、ec;i = SD_BLOCKSIZE - CurOffset;CurOffset = Len - i;i = 1;SD_WriteNewBlock(CurFileSec);SD_WritingBlockData(unsigned long int)CurOffset , (unsigned char *)&Bufi);elseSD_WritingBlockData(unsigned long int)Len, (unsigned char *)Buf);CurOffset += Len;void FS_ReadingFile(unsigned int *Buf, unsigned int Len)unsigned int i;Len = (SD_BLOCKSIZE - CurOffset)SD_ReadingBlockData(unsigned long int)(SD_BLOCKSIZE - CurOffset), (unsigned char *)Buf);SD_ReadFinished();if(CurFileSec = 1;SD_ReadNewBlock(CurFileSec);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论