基于单片机的sd卡录音笔设计与实现毕业设计(编辑修改稿)内容摘要:
开发操作过程 从 [开始 ]菜单内启动工具; 选择 [File]→[Open Project] ,在 „打开 ‟对话框内选择所 要打开的工程; 14 窗口(工作区窗口)显示在工具的左半边,在这个窗口内,用户可以看到当前工程所包含的所有文件; 选择 [Build]→[Rebuild All] ,进行源文件的编译和链接。 编译过程里的语法错误显示在 Output 窗口内; 选择 [Build]→[Start Debug]→[Download] ,把程序加载到 RAM,然后,用户可以用 Debug 菜单内所提供的调试命令来优化和运行程序。 选择 [Build]→[Start Debug]→[Go] ,在调试器内运行程序。 15 3 录音笔总体 设计方案及硬件设计 总体设计方案 硬件设计总体框图 系统采用 SPCE061A 做为主控制器,使用其通用 I/O 口控制 SD卡设备,实现存储器扩展;利用电路板上的三个按键对录放音进行控制;利用 SPCE061A 带有 AGC 的专用 A/D 转换通道做为音频输入,完成语音录制功能;利用 SPCE061A 的 D/A 进行音频输出,实现语音播放功能。 图 为硬件总体框图。 图 硬件总体框图 输入指令 麦克风 扬声器 电源线 录音 放音 电源 SD 卡 SPCE061A 储存或删除数字信号 提取数字信号 按键键盘 16 系统软件设计架构 软件 系统包括以下 部分: 主程序:完成系统的初始化,处理按键信息,并根据按键,在语音文件操作管理程序的配合下,创建语音文件进行录音,或控制读取语音文件进行回放。 按键扫描程序:完成对 IOA 口低八位的 18 按键进行扫描,并完成去抖、判断长 /短按键等功能。 SD 卡驱动程序:该部分完成对 SD 卡的初始化、得到卡的容量信息、读写操作、擦除操作等。 语音文件操作管理程序:该部分完成对多段录音的管理。 每增加一段录音,程序会将起始地址、终止地址等相关信息保存,以便可以回放。 录 /放音程序:实现对 A/D 采样数据的编码和存储,以及从 SD 卡读取录 音数据并解码然后送至 D/A 播放等操作。 17 系统硬件设计 系统硬件连接实物图 系统主要由 SPCE061A 单片机,麦克风,扬声器,电源及储存器构成。 SPCE061A 单片机控制板作为整个系统的主控板,对麦克风采集来的声音信号进行数字处理并储存号功能。 图 为硬件连接实物图。 系统硬件连接实物图 SPCE061A 最小系统 本设计选用的单片机模块为 SPCE061A 单片机模块,该模块包括SPCE061A 芯片( MCU)、片内 FLASH 和其外围的基本模 块。 外围 18 模块有:电机驱动电路板、锁相环外围电路( PLL)、复位电路( RESET)等。 SPCE061A 的主控芯片,负责构建语音录放的数据结构,并在单片机内部 Flash 中保存有语音内容和相关语音信息。 SPCE061A 控制端口输出控制信息,并控制喇叭输出声音信息。 实现对整个系统的控制。 通过本系统中的音频输入电路和 MIC,可以采集语音信号并处理。 图 为 SPCE061A 最小系统图。 图 SPCE061A 最小系统图 19 按键电路 本系统使用三个按键完成录放音控制。 图 为按键电路图。 Key1 为 “下一曲 ”键, Key2 为 “上一曲 ”键, Key3 为 “录音键 ”。 图 按键电路图 音频输出电路 SPCE061A 内置 2 路 10 位精度的 DAC,只需要外接功放电路即可完成语音的播放。 电路中 SPY0030 是凌阳公司一款音频放大芯片。 它和 LM386 相比, LM386 工作电压需在 4V以上 , SPY0030 仅需 即可工作 (两颗电池即可工作 ); LM386 输出功率 100mW以下 , SPY0030约 700mW。 图 为音频输出电路图。 图 音频输出电路 图 20 SD 卡模组电路 在本系统中, SPCE061A 通过 SPI 总线实现对 SD 卡设备的访问。 SD 卡模组同时提供卡插入检测和写保护检测接口。 图 为 SD 卡模组电路图。 图 SD 卡模组电路图 21 4 系统软件设计 主程序设计 主程序 采用的是汇编语言和 C 语言混合编程。 主程序 流程图 如 图。 系统初始化 检测 SD 卡是否插入。 否 检查 SD 卡是否写保护。 置写保护标志 播放 “SD 卡写保护 ” 是 否 初始化 SD 卡 按键处理 系统状态处理 是 播放 “ 注意 SD 卡没有插入 ” 检测 SD 卡是否插入。 否 是 播放 “ 就绪 ” 语音 提示 程序 开始 22 图 主程序流程图 主程序完成系统初始化后检测 SD卡是否插入以及是否有写保护,并有相应的语音提示,告 知用户当前的系统状态。 如果 SD 卡正确插入,则系统根据用户的不同按键进行录 /放音控制。 同时,在循环中对系统当前的状态进行检测,控制系统在录制语音时不至于超出存储器容量限制,或控制系统在放音时播放至文件尾部自动停止播放。 部分程序如下: 23 按键处理程序流程 按键处理程序中 , 当检测到有 SD 卡写保护 时,会播放 “卡有写保护 ”的提示音,对按键不做处理。 按键处理流程图如图。 SACM_DVR1600_Initial()。 // 语音初始化 if(0 == SD_ChkCard()) // 检测卡是否插入 PlaySnd(VOICE_ATTENTION, DAC1 + DAC2)。 PlaySnd(VOICE_SDCARDNOTINSERT, DAC1 + DAC2)。 while(0 == SD_ChkCard())。 // 等待卡插入 if(1 == SD_ChkCardWP()) // 检测卡是否有写保护 WriteProtect = 1。 else FS_Init()。 // 没有写保护,执行初始化操作 PlaySnd(VOICE_READY, DAC1 + DAC2)。 // 播放 就绪 // while(1) KeyProcess()。 // 按键处理 StatusProcess()。 // 系统状态处理 SACM_DVR1600_ServiceLoop()。 // 录 /放音服务 24 图 按键处理流程图 部分程序如下 : 当按下录音键时,若为短按键且 SD 卡未满,提示录音开始并置录音标志,开始录音。 “录音”按键处理程序的流程图如图 所示。 初始化 判断是否有写保护标志。 否 判断按键 Key3 录音键 是 Key2 上一曲 键 Key1 下一曲 键 返回 开始 Key = KeyScan_GetKey(amp。 KeyType)。 if(1 == WriteProtect) // 卡有写保护,拒绝按键操作 if((C_SReleaseKeyState == KeyType) || (C_LReleaseKeyState == KeyType)) return。 switch(Key) 25 图 录音键流程图 部分程序如下 : 正在播放。 短按键。 是 是 停止播放,关闭读取 SD 卡 系统状态置空闲 SD 卡已 满。 否 是 否 系统空闲。 否 启动写入 SD 卡,开始录音 系统状态置录音 否 是 正在录音。 结束录音,录音收尾 是 否 开始 返回 case C_Record: // Record if(C_SReleaseKeyState == KeyType) // 短按键,录 /放音控制 if(PLAY == Status) 26 SACM_DVR1600_Stop()。 // 如果正在放音,则先停止播放 FS_CloseOpenFile()。 Status = IDLE。 if(IDLE == Status) if((g_FileNum = FS_MAX_FILENUM) || (FS_GetUnusedSecNum() = 0)) // 文件已满,退出 PlaySnd(VOICE_DANG, DAC1 + DAC2)。 Status = RECORD。 else if(RECORD == Status) SACM_DVR1600_Stop()。 while(RECORD == Status) // 等待完成录音收尾工作 SACM_DVR1600_ServiceLoop()。 PlaySnd(VOICE_OVER, DAC1 + DAC2)。 27 当按下上一曲键,短按键(小于一秒)播放上一曲,长按键清 除SD 卡上所有录音。 “上一曲 ”按键处理程序的流程图 如 图。 图 上一曲键流程图 部分程序如下 : 正在录音。 正在播放。 是 判断是否有文件 ? 结束放音 是 否 短按键。 否 否 是 长按键。 是 清除 SD 卡内所有文件 系统状态置空闲 读取语音段,启动声音播放上一曲 系统状态置播放 否 是 否 开始 返回 if(PLAY == Status) // 如果正在放音,则先停止播放 28 当按下下一曲键,短按键(小于一秒)播放下一曲,长按键停止放音。 “下一曲 ”按键处理程序的流程图如图。 图 下一曲键流程图 正在录音。 当前有录音片段。 是 是 停止播放 正在播放。 否 否 短按键。 否 长按键。 否 系统状态置空闲 是 启动声音播放下一曲 系统状态置播放 否 是 是 开始 返回 SACM_DVR1600_Stop()。 FS_CloseOpenFile()。 else if(RECORD == Status) // 如果正在录音则不处理 if(C_LReleaseKeyState == KeyType)//长按键,擦除所有语音段 FS_Init()。 Status = IDLE。 else if(C_SReleaseKeyState == KeyType)// 短按键播放上一曲 29 部分程序如下 : 系统状态处理程序主要完成在录音时判断是否超出 SD 卡容量限制,或者在放音时当前语音是否播放完毕。 系统状态流程图如图。 图 系统状态处理流程图 检查 SD 卡是否已满。 是否正在录音。 播放是否结束。 停止录音 系统状态置空闲 是否正在播放。 停止读取 系统状态置空闲 是 否 否 否 是 是 是 否 返回 开始 case C_Next: // Play Next if((C_SReleaseKeyState != KeyType) amp。 amp。 (C_LReleaseKeyState != KeyType)) if(g_FileNum 0) if(PLAY == Status) //如果正在放音,则先停止播放 SACM_DVR1600_Stop()。 FS_CloseOpenFile()。 else if(RECORD == Status) // 如果正在录音则不处理 if(C_LReleaseKeyState == KeyType)// 长按键,停止当前播放 Status = IDLE。 else if(C_SReleaseKeyState == KeyType)// 短按键,播放下一曲 30 部分程序如下: 按键扫描程序 系统使用 1024Hz 时基中断对 IOA 口低八位进行扫描,并进行去抖、长短按键判断等工作。 时基中断中的。基于单片机的sd卡录音笔设计与实现毕业设计(编辑修改稿)
相关推荐
STC89C52引脚图 管脚说明: :供电电压。 :接地。 : P0口为一个 8位漏级开路双向 I/O口,每脚可吸收 8TTL 门电流。 当 P1口的管脚第一次写 1时,被定义为高阻输入。 P0能够用于外部程序数据存储器,它可以被定义为数据 /地址的第八位。 在 FIASH 编程时, P0 口 作为原码输入口,当 FIASH 进行校验时, P0输出原码,此时 P0外部必须被拉高。 :
息,天线的有效电磁场范围就是系统的工作区域。 声音提示及显示部分 非接触式 IC 卡读写器进行读写 操作时发出提示音,发声的器件选用蜂鸣器,该器件使用方便、价格便宜。 单片机的 IO 口驱动能力有限,不能直接驱动蜂鸣器发声,通过三极管来驱动蜂鸣器。 显示部分采用 LCD12864 液晶显示模块。 第五章 读卡器系统软件 驱动程序 设计 读卡器硬件必须在软件的控制下进行工作, 第四章
1 2 3 4 5 6ABCD654321DCBAT i t l eN um be r R e vi s i onS i z eBD a t e : 24 M a y 2020 S he e t o f F i l e : C : \ D oc um e nt s a nd S e t t i ngs \ G ue s t \桌面 \ M y D e s i g r a w n B y
由于在 PC 上修改原理电路图要比在实验箱上修改硬件电路容易得多,而且还可以根据设计要求采用不同元器件,或者修改元器件参数以获得不同输出结果,在成功进行虚拟仿真并获得期望结果的条件下,再制作实际硬件进行在线调试,可以获得事半功倍的效果。 学生普遍反映,在 Proteus 软件平台上学习单片机知识,比以往单纯学习书本知识更易于接受,以原理图虚拟模型进行程序仿真调试,更易于提高单片机编程能力
83。 18 参考文献 19 2 论文 题目: 基于单片机的 LED 汉字显示屏设计 专 业 : 应用电子技术二班 姓 名 : 李志辉 学 号 : 093001484 摘 要 LED 显示屏是一种新型信息显示媒体,集微电子技术、光电子技术、计算机技术、信息处理技术于一体的大型显示系统。 以其色彩鲜艳,动态范围广,亮度高,寿命长,工作性能稳定特点,广泛应用于广告、证券、信息传播、新闻发布等方面。
对 LED 显示屏的发展过程中出现的问题进行了适当的规范和引导。 国家多个部门联合出台了相关的文件规范使得LED 显示屏走向标准化、规范化。 相关的标准规定等也在不断完善。 我国 LED 显示屏的发展现状 我国 LED 产业经历了十余年的成长历程, LED 显示屏产业中,一些支柱型企业相继诞生。 据行业协会给出的统计信息来看,自十九世纪九十年代末,我国 LED 显示屏行业持续快速发展