1(变声器)单片机1(变声器)单片机
实践报告
利用单片机实现简易变声器 1. 需求分析
这个程序主要是解决利用单片机实现简易变声器的问题。
具体要求是:将单片机与电源连接,然后再连接在电脑上。在电脑的
D盘创一个文件夹,把变声器的程序下到单片机上,运行程序,当滴
滴两声后就可以录音,然后滴滴两声后就播放出来了,实现了利用单
片机成简易变声器的问题。
要得到的结果是:单片机可以录自己的声音并可以将自己的声音放出
来。
应输出的是:自己所录的声音。
2. 总体设计方案
自己的话 单 电脑
片
机 放出所录电源
取的声音
3...
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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。