录音笔的设计与制作

合集下载

声音采集课程设计

声音采集课程设计

声音采集课程设计一、课程目标知识目标:1. 让学生理解声音的基本概念,掌握声音的传播原理;2. 让学生掌握声音采集设备的使用方法和技巧;3. 让学生了解声音采集在生活、科技及媒体领域的应用。

技能目标:1. 培养学生独立操作声音采集设备的能力;2. 培养学生运用所学知识对声音质量进行初步分析和判断的能力;3. 培养学生运用声音采集技术进行创新实践的能力。

情感态度价值观目标:1. 激发学生对声音采集的兴趣,培养他们积极探索、自主学习的精神;2. 培养学生关注生活中的声音现象,提高他们对声音环境的敏感度;3. 引导学生认识到声音采集在传播信息、促进交流等方面的重要性,增强他们的社会责任感。

课程性质:本课程属于实践性较强的学科,结合理论知识与实际操作,注重培养学生的动手能力和创新能力。

学生特点:六年级学生具有较强的求知欲和好奇心,具备一定的理论基础,但实践经验相对不足。

教学要求:结合学生特点,采用讲授、示范、实践相结合的教学方法,注重激发学生的兴趣,提高他们的实践能力。

通过本课程的学习,使学生能够达到课程目标,为后续相关课程的学习打下坚实基础。

二、教学内容1. 声音基本概念:声音的定义、特性(如频率、振幅、波长)、声音的分类(如乐音、噪音)。

教材章节:第一章“声音的基本概念”2. 声音传播原理:声波传播、反射、折射、吸收、共鸣等现象。

教材章节:第二章“声音的传播”3. 声音采集设备:麦克风、录音笔、声卡等设备的工作原理、类型及使用方法。

教材章节:第三章“声音采集设备”4. 声音采集技巧:声音信号的增益、降噪、立体声录制等技巧。

教材章节:第四章“声音采集技巧”5. 声音采集应用:生活、科技、媒体等领域中的应用案例分析。

教材章节:第五章“声音采集的应用”教学安排与进度:第一课时:声音基本概念及声音传播原理第二课时:声音采集设备的学习与实践第三课时:声音采集技巧的学习与实践第四课时:声音采集应用案例分析及创新实践教学内容注重科学性和系统性,结合教材章节进行有序安排。

多功能录音笔的制作方法

多功能录音笔的制作方法

多功能录音笔的制作方法多功能录音笔是一种非常实用的电子产品,可以帮助人们实现音频录制、音频播放、数据存储等多种功能。

现在市面上的多功能录音笔种类繁多,价格也从几十元到上千元不等。

但其本质上都是通过集成电路来实现各种功能。

接下来我们就来了解一下多功能录音笔的制作方法。

一、原材料准备制作多功能录音笔,首先需要准备所需的原材料和工具。

下面是一些必要的材料:1. 集成电路:录音芯片、存储芯片、控制芯片。

2. 多功能操作按键:录音、暂停、停止、播放、音量控制等。

3. 电池:一至两个7号电池或者一个充电电池。

4. 电子元器件:电阻、电容、晶振、二极管等。

5. 麦克风:有线麦克风或插口式麦克风。

6. 插座和接口:耳机插座、USB接口、TF卡插槽等。

7. 电路板、电线、制作工具等。

二、电路设计进行电路设计需要具备一定的电路原理和电子元器件基础。

根据所需功能和复杂程度,可以选择不同的控制芯片来完成电路设计。

典型的多功能录音笔电路组成主要分为四个部分:录音、播放、数据存储、充电等。

其基本的连接方式是:1.麦克风通过P1口连接到录音芯片的MIC+和MIC-引脚。

2. 通过集成电路缓存录音数据,以防止丢失。

3. 通过录音芯片选择音频采样率和数据压缩格式。

4. 录音数据通过USB或者TF卡存储到存储芯片中。

5. 播放音频数据应该通过DAC(数字信号转模拟信号)芯片和功放芯片。

6. 充电电路通过USB接口连接充电器充电电池。

三、电路制作电路制作需要具备一定的电子元器件知识和焊接技巧。

常见制作步骤如下:1. 根据电路图选择相应元件,将电路板按照电路图进行铺线,确定元件安装位置,注意相互之间的间距。

2. 用钳子或剪刀对元器件进行正确的割线和弯曲处理,尽量使元器件与电路板紧密结合,粘贴两个板块板子3. 用铅锡焊接器将元件焊接到电路板上。

注意焊接的时间和温度,如果过面熔点过高会导致电路板损坏,过低则会导致焊接失效。

4. 经过初步测试和调试后,将电路板与电池、麦克风、按键、接口等元件进行连接,并将电路板安装在外壳中。

基于51单片机录音笔设计课件

基于51单片机录音笔设计课件
5
二、产品原理 2 原理图、程序流程图
1、原理图
2、程序流程图
TEXT
三、实施与分工 3
元 件 清 单
• • • • •
• • • • • •
1)9*15万用板 2)stc89c52单片机 3)40脚座 4)8Ω3w喇叭(高大) 5)QJ000M02录音模 块 6)128M内存卡 7)USB母头 8)驻极体 22)自锁开关 23)导线若干 24)焊锡若干
2.主要研究内容
(1)单片机对录音 模块的数据处理
(3)实现内存卡和 U盘容量数据读取
(2)单片机液晶 显示功能
(4)实现播放、暂停、 上一曲、下一曲、 音量加减等功能
3、研究思路及方案
基于单片机、录音模块、放音系统。采用录 音模块可以简化电路、设计运行稳定,单片 机对录音模块进行读写操作,液晶显示播放 状态、歌曲数目等信息,程序使用keil软件进 行编写,功能验证,完成设计。
重要的参考意义。
展望
随着科学技术发展的日新日异, 单片机已经成为当今计算机应用 中空前活跃的领域,在生活中可 以说得是无处不在。因此作为生 物医学工程专业的学生来说掌握 单片机的开发技术是十分重要的。
解决方法:用万用 表检验焊点之间的 连接,发现集成芯 片有两个管脚接触; 用吸锡器将焊锡吸 出,重新焊接后, 接通电源,录音笔 正常工作。
四、成品展示 4
项目一 图片展示
产品整体设计
项目二 视频展示
产品的使用说明 播
及功能介绍

五、总结与畅想 5
• 总结
通过这次的课程设计,我感觉收获很大。 刚刚拿到课题时自己的无措,到后来通过交 流系统理解框架。首先指定了计划, 设计 所要求控制达到的具体的技术指标,再通 过谈论和实践来检验计划的可实施性, 进 而对整个设计系统经过深入的方案论证、 计算以及联系具体的情况,确立自己的设 计方案。以及后来的工作对我来说的确是 笔宝贵的财富,它将会对我今后的人生有着

录音笔毕业设计

录音笔毕业设计

录音笔毕业设计录音笔毕业设计一、引言在现代社会中,录音笔作为一种小巧便携的音频记录设备,被广泛应用于各行各业。

无论是学生、记者、商务人士还是音乐爱好者,都可以通过录音笔方便地记录重要信息或创作灵感。

本文将探讨录音笔的设计与应用,以及如何进行一款出色的录音笔毕业设计。

二、录音笔的设计要素1. 外观设计录音笔的外观设计应该注重简洁、轻巧的特点,便于携带和操作。

同时,考虑到用户的个人喜好,可以提供多种颜色和材质选择,以满足不同用户的需求。

2. 功能设计录音笔的功能设计是其核心竞争力之一。

除了基本的录音功能外,可以考虑增加如噪音消除、语音识别、文件管理等功能,以提升用户体验。

此外,还可以加入一些创新的功能,如录音转文字、实时翻译等,进一步满足用户的需求。

3. 用户界面设计用户界面设计应该简单直观,方便用户操作。

可以采用触摸屏、物理按键或者组合方式,以适应不同用户的操作习惯。

同时,还可以提供个性化的设置选项,让用户根据自己的需求进行自定义。

三、录音笔的应用场景1. 学习助手录音笔可以帮助学生在课堂上记录老师的讲解内容,方便后续复习。

此外,还可以用于学习讨论、小组会议等场景,记录重要讨论和决策。

2. 记者采访记者在采访现场使用录音笔可以准确记录受访者的回答,避免遗漏重要信息。

同时,录音笔的便携性也使得记者可以随时随地进行采访,不受时间和地点的限制。

3. 商务会议在商务会议中,录音笔可以用来记录会议内容、决策和行动计划,方便参会人员回顾和跟进。

同时,还可以通过录音笔的文件管理功能整理和分享会议资料,提高工作效率。

4. 音乐创作对于音乐爱好者和创作人员来说,录音笔是一个重要的创作工具。

可以用来记录灵感、演奏和创作过程,方便后续编辑和制作。

一些高端录音笔还提供了高质量的音频录制功能,满足专业音乐制作的需求。

四、录音笔毕业设计的思路1. 需求分析在进行录音笔毕业设计之前,需要对目标用户的需求进行深入分析。

可以通过问卷调查、访谈等方式收集用户的意见和建议,了解他们对录音笔的期望和需求。

基于AVR单片机录音笔设计的制作原理

基于AVR单片机录音笔设计的制作原理
片选(CS):当CS脚为低电平时选通数字闪存。当器件没有被选通时,数据无法被SI脚所接收,而SO脚将会保持为高阻态。要进行某个操作,CS脚上必须有一个由高到低电平的跃变,要结束某个操作,CS脚上必须有一个由低到高电平的跃变。
写保护:如果WP脚置为低电平,主存中的前256页就无法被重写。要重写前256页的唯一方法就是将该引脚拉为高电平,然后用前面所提到的编写命令。WP脚是内部拉高的;因此若非需要,WP脚上不需连接其他引脚。然而,我们建议尽量通过外部拉高WP引脚。
4.2.3声音存储模块14
4.2.4声音输出模块16
4.3软件设计16
4.3.1软件设计思想16
4.3.2程序流程图18
4.3.3主函数方框图20
4.4系统的调试与总结21
5总结22
7附录23
附录A:系统的总体设计原理图23
附录B:系统软件设计源程序清单24
1
1.1
数码录音笔,也称为数码录音棒或数码录音机,数字录音器的一种,为了便于操作和提升录音质量造型并非以单纯的笔型为主,携带方便,同时拥有多种功能,如激光笔功能、FM调频、MP3播放等。与传统录音机相比,数码录音笔是通过数字存储的方式来记录音频的。数码录音笔通过对模拟信号的采样、编码将模拟信号通过数模转换器转换为数字信号,并进行一定的压缩后进行存储。而数字信号即使经过多次复制,声音信息也不会受到损失,保持原样不变。
1课题分析1
择3
2.1运用专门的语音芯片3
2.2运用avr自带的ADC以及PWM模块3
3芯片简介4
3.1 ATmega16芯片简介4
3.2AT45DB041B芯片简介8
4总体设计13
4.1系统设计方框图13
4.2硬件设计13

搜狗新品:便携式智能录音笔C1体验

搜狗新品:便携式智能录音笔C1体验

搜狗新品:便携式智能录音笔C1体验基于人们工作学习对于录音笔的需求,搜狗公司于2019年3月推出了一款全新的AI硬件产品:搜狗智能录音笔C1。

这款智能录音笔具有“高清录音、录音转文字、同声传译”等功能,可以说是专为采访、会议、培训等用户设计。

那么,这款智能录音笔到底有什么过人之处呢?今天就带大家来深度了解下搜狗智能录音笔C1这款产品吧。

先来看看外观设计,搜狗智能录音笔C1整体比较小巧,采用了人体工程学的设计,针对不同手型的握感进行了握持优化,而且正面采用了铝合金材质,以及阳极氧化喷砂工艺,手感方面表现不错。

如果不仔细看的话,第一眼看上去我还以为是一个MP3播放器。

另外,这款录音笔在外观设计上,还获得了2018年的IF设计大奖,用一句话来形容C1外观的话就是:小巧精致,品质感不低。

搜狗智能录音笔C1的正面上、下位置分别设有“全数字高灵敏麦克风”,同时通过深度定制的双麦克风阵列拾音算法,使C1可以实现360°的全方位高清准确拾音。

搜狗智能录音笔C1正面还设有一个指示灯,不同运行状态下颜色不同,例如:待机就是蓝灯长亮;充电,则是红灯长亮等。

搜狗智能录音笔C1的顶部为电源键,开机后同时也是录音键。

搜狗智能录音笔C1的底部为Type-C充电接口。

对于这个充电接口设计我要打个好评,现在我用的手机全是Tpye-C接口,这样就可以跟我的手机共用一根数据线,很是方便。

另外,C1的电池容量为300mAh,官方称待机时间可长达20天,持续普通降噪模式录音可以达960分钟,也就是16个小时,并且还支持边录音边充电,这个续航时间足够日常一天使用了。

搜狗智能录音笔C1还在机身背面设计了一个“背夹”,在进行采访或者录音时,你可以夹在衣领、衣袋、书本或者背包上使用,很是方便。

对于搜狗智能录音笔C1的外观设计,我们就欣赏到这里,下面来看看这款录音笔的实际体验如何。

搜狗智能录音笔C1内置了16GB的闪存与100小时云端的存储服务,当你连接上手机以后,录音笔就会自动同步录音数据到APP端,同时还会自动同步到云端,不用担心录音数据丢失。

电子工业版(安徽)信息技术五年级下册第5课《制作铃声先录音》教学设计

电子工业版(安徽)信息技术五年级下册第5课《制作铃声先录音》教学设计

电子工业版(安徽)信息技术五年级下册第5课《制作铃声先录音》教学设计一. 教材分析本课是信息技术五年级下册第5课《制作铃声先录音》,主要内容是让学生掌握用电子设备录制声音并将其应用于手机铃声的制作。

教材以实践操作为主线,引导学生掌握录音的基本操作,并通过实际操作体验铃声的制作过程。

二. 学情分析五年级的学生已经具备一定的信息技术基础,对电子设备有较高的兴趣。

但在录音和铃声制作方面,大部分学生可能还没有尝试过。

因此,在教学过程中,需要关注学生的个体差异,引导他们逐步掌握录音和铃声制作的技术。

三. 教学目标1.知识与技能:了解录音的基本操作,学会使用电子设备进行录音,并将其应用于手机铃声的制作。

2.过程与方法:通过实践操作,培养学生的动手能力,提高他们在信息技术领域的创新能力。

3.情感态度与价值观:培养学生对信息技术的学习兴趣,增强他们运用信息技术解决实际问题的意识。

四. 教学重难点1.重点:掌握录音的基本操作,学会制作手机铃声。

2.难点:如何调整音量、音效,使制作的铃声更具个性。

五. 教学方法1.任务驱动法:通过设置具体的任务,引导学生动手实践,逐步掌握录音和铃声制作技术。

2.示范教学法:教师演示录音和铃声制作的过程,学生跟随操作,加深对知识的理解。

3.小组合作法:学生分组进行实践,相互学习,共同完成任务。

六. 教学准备1.准备录音设备,如手机、录音笔等。

2.准备一个可以编辑铃声的软件,如Audacity。

3.准备一些关于铃声的素材,如音乐、音效等。

七. 教学过程1.导入(5分钟)教师通过提问方式引导学生思考:你们知道手机铃声是怎么来的吗?有没有想过自己动手制作一个独一无二的铃声呢?从而激发学生的兴趣。

2.呈现(10分钟)教师展示用Audacity软件制作铃声的过程,让学生初步了解录音和铃声制作的基本步骤。

3.操练(15分钟)学生分组进行实践,教师巡回指导。

首先,让学生用手机或录音笔录制一段声音;然后,引导学生将录制的声音导入Audacity软件进行编辑;最后,让学生尝试制作一个简单的铃声。

技术与设计的关系教案

技术与设计的关系教案

技术与设计的关系一、教材内容分析1.教材的地位和作用本节内容将技术的性质与技术设计联系起来,是由技术向设计过渡的小节。

这节内容对本册教科书涉及的设计进行了界定,有选择性地对技术与设计的关系、技术与设计的重要知识进行介绍。

它是本册教材学习的基础,也是培养兴趣的关键内容。

本节内容是让学生“理解技术与设计的关系,能分析设计在技术发明和革新中的作用”的同时,感受设计的重要性,对设计过程产生兴趣和学习的欲望。

2.教材重点:理解技术与设计的辩证关系二、教学对象分析学生在生活中已产生了一些设计的观念,但对技术与设计的关系并不了解。

而高一年级的学生较初中时期观察能力和思维能力等都有了很大的提高,同时学生的辨证思维也在发展起来,为学生对技术与设计的辩证关系的理解打下了基础。

学生在生活中虽然接触到一些设计方面的知识,有了一些有关的生活经验,但难以领会设计的丰富内涵。

因此,形成了教学中的一个难点。

三、教学目标知识与技能:1.理解技术与设计的关系,学会分析设计在技术发明和革新中的作用。

2.了解技术发展对设计产生的重要影响。

3.理解设计的丰富内涵。

过程与方法:学会多角度地思考问题,发展辨证思维能力。

情感态度与价值观:培养对技术的兴趣和想象力,提高审美情趣。

四、教学策略1. 采用“奥苏伯尔的有意义学习理论”,让学生将技术与设计的辨证关系内化到自己的认知结构中。

2.通过案例分析,组织讨论,理解设计在技术发明和革新中的作用以及技术发展对设计产生的重要影响,感受设计的重要性,领会技术与设计的辨证关系。

3.通过举例、图片和实物展示,领会设计的丰富内涵。

4.教学时间:1课时。

五、教学资源准备1. 收集手机和自行车演变的图片以及艺术设计和技术设计的图片。

2. 准备一些实物如:手机、电熨斗和电吹风等。

六、教学程序设计:七、教学反思在处理教材时,对内容我作了一些调整。

我认为,如果原原本本按照教材提供的案例进行教学,学生肯定提不起兴趣,这在上第一章第一节内容内容“技术的价值”第一节课时已有过教训。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

录音笔的设计与制作摘要:该实验设计基于AVRmega16开发板平台,介绍和分析了市场上流行的录音笔的基本原理,并做出了较为简单的录音笔模型展示其原理!主要功能有录音,存储,删除,放音等!关键字:单片机录音笔录音与放音我们的课程设计是基于该系列的单片机,在硬件滤波的基础上,实现录音笔的各项功能!所作的录音笔具有可移植性强,功能简单,可以简单继续添加更多相关功能的模型!对市场上流行已久的录音笔,我们有着学习相关知识以及制作的兴趣,又加上单片机课程给我们提供了相关的实验器材,所以说我们的目的最主要是学习,当然也有好奇的心理在里面。

我们制作的录音笔能够进行简单语音信号的采集,存储与播放。

对于应用于实际生活中的各种语音信号的处理,还有很大差距,这有待于系统设计的进一步完善和改进,功能的进一步扩充。

硬件部分:电路图如下:硬件设计思想:用麦克风采集音频信号,经过一次功放,然后用电容进行一次滤波,电容的大小采用2.2nf,滤波后进行AD转换,转换后的信号存在AT45DB081B中,然后用单片机调出信号,经过一次放大,将信号传到扬声器播放。

电路图上,mag16以上的电路图就是用来采集信号的,放大信号用的是LM324集成功放芯片。

Mag16一下的电路图用来放音,也是经过一次信号放大,再放大的同时尽心信号过滤,分别用了2.2nf和22nf的电容接地来实现!软件部分:软件设计思想:首先是设备初始化,但是我在初始化程序中ADC.定时器等并没有进行初始化,只是告诉芯片PA0应该设置为输入,不上拉使能(为AD转换的输入通道设置),用于SPI的输出端口哪些应该为输入,哪些该为输出,如此等简单的引脚初始化。

初始化完成之后,就进入主程序中进行键盘扫描,速度极其的快,无键盘按下时甚至只用不到1微秒的时间。

一旦检测到哪个键按下就进入相应的程序中去。

录音程序的设计思想:检测到录音键按下后进入,然后ADC初始化同时开始一次AD转换,延时等待一小会,AD转换结束了。

接着SPI、定时器初始化,从此就靠定时器来主导整个录音程序的运行了。

定时器有中断,其中有要求TCNT0设置这个基本的操做,还有一个就是ADSC置位要求进行下一次转换。

至于AD转化的值则在AD中断中往一个已经建好循环队列中写。

定时器定时80微秒,一次AD 转换是在定是一开始就进行,需要时间52微秒,也就是说定时器溢出时AD中断一定结束了,下一次中断之前数据一定已经进入了队列中,如此循环。

而在这两个终端中间有大量的时间给我利用循环队列的特点向Dataflash中写数据。

Dataflash有2048页,每一页有264字节,在每一页写满之前,程序不会再检测按键,一直到一页写满了,才检测按键,如果仍旧是按下则继续录音,否则退出。

退出后如果存储空间未满则存储位置的参数会保留,下次录音可以接下去。

如果满了,则录音工作指示灯永远都不会亮了,除非重启。

但是在退出录音程序时,ADC、SPI、定时器会全部关闭,再进入程序时再初始化开启。

放音程序的设计思想:与录音程序相同,进入程序之后才开启所需要的功能。

不同的是先开录音工作指示灯,SPI,然后向Dataflash要一次数据,再开TIMER2的快速PWM功能。

一次PWM时间是16微秒,每五次更新一次,通过调节占空比来实现DA转换的功能。

同样的每五次中断期间都有足够的时间给程序向Dataflash要数据。

放音程序最大的特点是那些控制参数虽然是全局变量,但是它们在进入程序的第一时间就被初始化了,在就要退出程序的最后时刻再次被初始化。

这样就使得整个程序可以进行循环放音,但是每次都是从头开始,放开按键时停止,再按下时从头开始。

以此结束时会因为人很不可能恰好在退出程序时放开按键,所以放音键按下的状态会在下一个按键检测循环中被检测到,并进入方音程序。

软件实现具体流程:录音程序放音程序开始端口初始化按键检测返回相关软件程序模块源代码以及相关功能://ICC-AVR application builder : 2007-6-22 17:58:09 // Target : M16// Crystal: 16.000Mhz#include <iom16v.h>#include <macros.h>#define BUFFER1_READ 0x54#define BUFFER2_READ 0x56#define MAIN_TO_BUFFER1 0x53#define MAIN_TO_BUFFER2 0x55#define BUFFER1_WRITE 0x84#define BUFFER2_WRITE 0x87#define BUFFER1_TO_MAIN_WITH 0x83#define BUFFER2_TO_MAIN_WITH 0x86#define BUFFER1_TO_MAIN_WITHOUT 0x88#define BUFFER2_TO_MAIN_WITHOUT 0x89#define MAIN_PROGRAM_BUFFER1 0x82#define MAIN_PROGRAM_BUFFER2 0x85//给SPI定义的PORTB的引脚#define DF_CS 3#define DDR_MOSI 5#define DDR_MISO 6#define DDR_SCK 7//给工作状态指示灯LED的引脚定义//PA7?0B01111111#define RECORD_LED 0x7F#define PLAY_LED 0xBF#define ERASE_LED 0xDF#define unit8 unsigned char#define unit16 unsigned intvolatile unit8over_times=0,play_buffer_number=1,updata_OCR=0;volatile unsigned char NEW_OCR=0;volatile unit16 play_buffer_counter=0,play_page_counter=0;volatile unsigned char record_buffer[264]={0};volatile unit8 new_turn=0,record_buffer_number=1;volatile unit16record_page_counter=0,record_buffer_counter=0,data_position=0, send_position=0;void port_init(void){PORTA = 0xE0;DDRA= 0xE0;PORTB = 0x00;DDRB= 0xB8;PORTC = 0x43; //m103 output onlyDDRC= 0x00;PORTD = 0x00;DDRD= 0x80;}void timer0_init(void){TCCR0 = 0x00; //stopTCNT0 = 0x60; //set countTCCR0 = 0x02; //start timer8分频TIMSK|=0x01; //timer0 interrupt sources 溢出中断SEI();}void timer2_init(void){TCCR2 = 0x00; //stopASSR= 0x00; //set async modeTCNT2 = 0x01; //setupOCR2= 0xFF;TCCR2 = 0x69; //startTIMSK|=0x40;//timer2 interrupt sources}//call this routine to initialize all peripheralsvoid init_devices(void){//stop errant interrupts until set upCLI(); //disable all interruptsport_init();MCUCR = 0x00;GICR= 0x00;TIMSK = 0x00; //timer interrupt sourcesSEI(); //re-enable interrupts//all peripherals are now initialized}void adc_init(void){ADCSRA = 0x00; //disable adcADMUX = 0x60; //select adc input 0 and AVCC 左对齐ACSR= 0x80;ADCSRA = 0xC6; //刚进入就进行一次A/D转换while(!(ADCSRA&0x40));//等待转换结束}void timer0_stop(void){TCCR0=0x00;//stopTIMSK&=~0x01; //stop timer0 overflow interrupt}void delay_ms(unsigned int n){unsigned int i;for(;n!=0;n--)for(i=2665;i!=0;i--)}void send_SPI(unsigned char data){SPDR=data;while(!(SPSR&0x80));}void record(void){//PORTA&=RECORD_LED;?//不应该从这儿开始开灯,开录音指示灯adc_init();//调用timer0_init();//调用SPCR=0x5c;//enable SPISPSR=0x00;PORTB|=(1<<DF_CS);//拉高一下,以免开始时因特殊原因DF_CS是低,保证安全while(!(PINC&0x01) && record_page_counter<2048){PORTA&=RECORD_LED;//开录音指示灯record_buffer_counter=0;while(record_buffer_counter<264)if(new_turn==0 && send_position<data_position){PORTB&=~(1<<DF_CS);if(record_buffer_number==1)//8 bits opcodesend_SPI(BUFFER1_WRITE);elsesend_SPI(BUFFER2_WRITE);send_SPI(0x00);//8 bits don't caresend_SPI((unit8)(record_buffer_counter>>8));//7 bits don't care+ 1 bit addresssend_SPI((unit8)record_buffer_counter);//8 bits address send_SPI(record_buffer[send_position]);PORTB|=(1<<DF_CS);send_position++;record_buffer_counter++;}if(new_turn==1){if(send_position==264){send_position=0;new_turn=0;}PORTB&=~(1<<DF_CS);if(record_buffer_number==1)//8 bits opcodesend_SPI(BUFFER1_WRITE);elsesend_SPI(BUFFER2_WRITE);send_SPI(0x00);//8 bits don't caresend_SPI((unit8)(record_buffer_counter>>8));//7 bits don't care+ 1 bit addresssend_SPI((unit8)record_buffer_counter);//8 bits address send_SPI(record_buffer[send_position]);PORTB|=(1<<DF_CS);send_position++;record_buffer_counter++;}}PORTB&=~(1<<DF_CS);if(record_buffer_number==1)//8 bits opcodesend_SPI(BUFFER1_TO_MAIN_WITHOUT);//整个flash已经被擦除过了elsesend_SPI(BUFFER2_TO_MAIN_WITHOUT);send_SPI((unit8)(record_page_counter>>7));//4 bits reserved and 4 bits addresssend_SPI((unit8)(record_page_counter<<1));//7 bits address and 1 don't caresend_SPI(0x00);//8 don't carePORTB|=(1<<DF_CS);if(record_buffer_number==1)record_buffer_number++;elserecord_buffer_number--;record_page_counter++;}timer0_stop();ADCSRA = 0x00; //disable adcPORTA|=~RECORD_LED;//关录音指示灯}#pragma interrupt_handler timer2_ovf_isr:iv_TIMER2_OVF void timer2_ovf_isr(void){TCNT2 = 0x01; //reload counter valueif(over_times==0){OCR2=NEW_OCR;updata_OCR=1;}if(over_times==4)over_times=0;elseover_times++;}#pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF void timer0_ovf_isr(void){TCNT0 = 0x60; //reload counter valueif(data_position<264){record_buffer[data_position]=ADCH;data_position++;}else{data_position=0;record_buffer[data_position]=ADCH;data_position++;new_turn=1;}ADCSRA|=(1<<ADSC);//开始下一次A/D转换}//ADC initialize// Conversion time: 52uSvoid playback(void){PORTA&=PLAY_LED;SPCR=0x5c;//enable SPISPSR=0x00;PORTB|=(1<<DF_CS);//拉高一下,以免开始时因特殊原因DF_CS是低,保证安全PORTB&=~(1<<DF_CS);send_SPI(MAIN_TO_BUFFER1);//8 opcodesend_SPI(0x00);//4 bits reserved and 4 bits addresssend_SPI(0x00);//7 bits address and 1 don't caresend_SPI(0x00);//8 don't carePORTB|=(1<<DF_CS);delay_ms(1);timer2_init();while(!(PINC&0x02) && play_page_counter<2048){//next_page_to_idle_bufferPORTB&=~(1<<DF_CS);if(play_buffer_number==1)//8 bits opcodesend_SPI(MAIN_TO_BUFFER2);elsesend_SPI(MAIN_TO_BUFFER1);send_SPI((unit8)((play_page_counter+1)>>7));//4 bits reserved and 4 bits addressssend_SPI((unit8)((play_page_counter+1)<<1));//7 bits address send_SPI(0x00);//8 bits don't carePORTB|=(1<<DF_CS);play_buffer_counter=0;PORTB&=~(1<<DF_CS);if(play_buffer_number==1)send_SPI(BUFFER1_READ);elsesend_SPI(BUFFER2_READ);send_SPI(0x00);send_SPI(0x00);send_SPI(0x00);send_SPI(0x00);while(play_buffer_counter<264){if(updata_OCR)//要求更新NEW_OCR {int i;send_SPI(0xFF);for(i=80;i>0;i--)NOP();NEW_OCR=SPDR;updata_OCR=0;play_buffer_counter++;}}PORTB|=(1<<DF_CS);if(play_buffer_number==1)play_buffer_number++;elseplay_buffer_number--;play_page_counter++;}SPCR=0x00;//disable SPITCCR2=0x00;OCR2=0xFF;//disable timer2over_times=0;play_buffer_number=1;updata_OCR=0;play_buffer_counter=0;play_page_counter=0;//参数初始化PORTA|=~PLAY_LED;}void main(void){init_devices();while(1){if(!(PINC&0x01))//PC0接录音键{record();}if(!(PINC&0x02))//PC2接放音键{playback();}}}项目测试结果以及相关分析第一次项目测试:语音信号能够写入,也能读出,蜂鸣器只发出嘀嘀的声音,分析:信号的读出与读出没有问题,问题可能出现在两个地方,第一,语音信号是否正确写出了,是不是没有时间写入完整的数据,第二,读出的信号是不是写入的那部分期望的信号,还是随机信号,毕竟没有电平高低的明显变化。

相关文档
最新文档