为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 1(变声器)单片机

1(变声器)单片机

2018-01-11 8页 doc 22KB 150阅读

用户头像

is_037433

暂无简介

举报
1(变声器)单片机1(变声器)单片机 实践报告 利用单片机实现简易变声器 1. 需求分析 这个程序主要是解决利用单片机实现简易变声器的问题。 具体要求是:将单片机与电源连接,然后再连接在电脑上。在电脑的 D盘创一个文件夹,把变声器的程序下到单片机上,运行程序,当滴 滴两声后就可以录音,然后滴滴两声后就播放出来了,实现了利用单 片机成简易变声器的问题。 要得到的结果是:单片机可以录自己的声音并可以将自己的声音放出 来。 应输出的是:自己所录的声音。 2. 总体设计方案 自己的话 单 电脑 片 机 放出所录电源 取的声音 3...
1(变声器)单片机
1(变声器)单片机 实践报告 利用单片机实现简易变声器 1. 需求分析 这个程序主要是解决利用单片机实现简易变声器的问题。 具体要求是:将单片机与电源连接,然后再连接在电脑上。在电脑的 D盘创一个文件夹,把变声器的程序下到单片机上,运行程序,当滴 滴两声后就可以录音,然后滴滴两声后就播放出来了,实现了利用单 片机成简易变声器的问题。 要得到的结果是:单片机可以录自己的声音并可以将自己的声音放出 来。 应输出的是:自己所录的声音。 2. 总体## 自己的话 单 电脑 片 机 放出所录电源 取的声音 3. 程序流程 开始 A/D、D/A初始化 擦闪存flash 录音提示音 N i<8000 发音 判A/D结果 N i<8000 Y 结束 Y 取D/A值 取A/D值 发出声音 写入闪存flash MADDR++, i++ i++, MADDR++ 延时 延时 死循环 4. 详细代码设计 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_IOB_Data (volatile unsigned int *)0x7005 #define P_IOB_Buffer (volatile unsigned int *)0x7006 #define P_IOB_Dir (volatile unsigned int *)0x7007 #define P_IOB_Attrib (volatile unsigned int *)0x7008 #define P_ADC (volatile unsigned int *)0x7014 #define P_ADC_Ctrl (volatile unsigned int *)0x7015 #define P_ADC_MUX_Ctrl (volatile unsigned int *)0x702b #define P_ADC_MUX_DATA (volatile unsigned int *)0x702C #define P_DAC_Ctrl (volatile unsigned int *)0x702A #define P_DAC2 (volatile unsigned int *)0x7016 #define P_DAC1 (volatile unsigned int *)0x7017 #define P_Flash_Ctrl (volatile unsigned int *)0x7555 #define P_Watchdog_Clear (volatile unsigned int *)0x7012 #define mm (volatile unsigned int *)0x8000 void Delay(); //============================================================= // 函数名称: int main() // 日期: 20040817 // 功能描述: AD采样数据在发光二极管上显示 // 硬件连接: B口高八位控制8个发光二极管的亮灭,B6控制8个发光二极管的共阴极 // A口低七位作为AD的输入,61板SPY0029接口选择3.3V,保证AD输 入在有效范围之内。 // 语法格式: int main() // 注意事项: 仅为用户模型 //============================================================= int main() { unsigned int i=0; unsigned ADValue = 0x0000; volatile unsigned int * MADDR; MADDR= 0xA000; *P_ADC_Ctrl=0x0035; // 数模转换器初始化 使能自动增益AGC、MIC、ADC *P_DAC_Ctrl=0x0; // 数模转换器初始化 i=0; MADDR= 0xA000; //擦除闪存Flash for(i=0;i<40;i++) { *P_Flash_Ctrl=0xAAAA; *P_Flash_Ctrl=0x5511; MADDR=MADDR+i*256; *MADDR= 0xffff; } //擦除闪存Flash alarm(); //发出录音提示音 i=0; MADDR= 0xA000; *P_Flash_Ctrl=0xAAAA; while (i<8000) //采集声音数据,8000次 { while ( (*P_ADC_MUX_Ctrl & 0x8000) ==0 ); //等待AD转换完成 ADValue = *P_ADC; //读取转换值 *P_Flash_Ctrl=0x5544; //写入闪存Flash 的命令 *MADDR =ADValue; //写入闪存Flash MADDR++; i++; Delay(); } alarm(); //发出放音提示音 i=0; MADDR=0xA000; while (i<8000) { *P_DAC1=*MADDR; //声音重现 MADDR++; i++; Delay1(); } while(1) { *P_DAC1=0; Delay(); } } //============================================================= // 函数名称: Delay() // 功能描述: 延时,用于录音 大约0.3ms //============================================================= void Delay() { //延时子程序 unsigned int ii; for(ii = 0; ii < 0x10; ii++){ *P_Watchdog_Clear=0x0001; //清WatchDog } } //============================================================= // 函数名称: Delay1() // 功能描述: 延时,用于放音 //============================================================= void Delay1() { //延时子程序 unsigned int ii; for(ii = 0; ii < 0x10; ii++){ *P_Watchdog_Clear=0x0001; //清WatchDog } } void alarm() { unsigned int i,ii; //延时子程序 for(ii=0;ii<30;ii++) { for(i=0;i<200;i++) { *P_DAC1=0xfff0; *P_Watchdog_Clear=0x0001; //清WatchDog } for(i=0;i<200;i++) { *P_DAC1=0x0; *P_Watchdog_Clear=0x0001; //清WatchDog } } for(i=0;i<3500;i++) { *P_DAC1=0x0; *P_Watchdog_Clear=0x0001; //清WatchDog } for(ii=0;ii<30;ii++) { for(i=0;i<200;i++) { *P_DAC1=0xfff0; *P_Watchdog_Clear=0x0001; //清WatchDog } for(i=0;i<200;i++) { *P_DAC1=0x0; *P_Watchdog_Clear=0x0001; //清WatchDog } } } //============================================================= //main.c结束 //============================================================= 5. 程序运行结果并回答问题 (3)采样速度变慢,所录音的时间会长些;如果要录制较长时间 的话,我觉得应该速度稍微慢一些。 (4)可以,这样可以使播放的声音变得模糊或者清晰。 (6)我的方法是设置一个频率区域,只有这个频率区域的才被选 择,使低频和高频的声音过滤; 6.运行中出现的问题、解决方法、体会 播放的音质不好。将Delay多写一个就可以使时间延长,音质也可以通过时间长短来控制。
/
本文档为【1(变声器)单片机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索