ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:16.21KB ,
资源ID:23208644      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23208644.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机STC5A60S2完成音频采集与输出.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机STC5A60S2完成音频采集与输出.docx

1、单片机STC5A60S2完成音频采集与输出单片机STC5A60S2完成音频采集与输出.c文件(主程序):/*-*/一般说明/使用的单片机为STC5A60S2,外接晶振32.768M/采用受用单片机自带的AD,单片机自带的PWM做DA输出使用/两个按键一个控制录音,一个控制输出,上电默认状态为实时输出/外接RAM采用62256/*-*/#include ;#include ;#include ;#include ;/#include ; /调用数字滤波头文件,里面内容比较杂,调试证明作用不明显#define uchar unsigned char#define uint unsigned int

2、sfr AUXR=0x8E; /控制定时器0、1工作速度sfr BUS_SPEED=0xA1; /控制外扩RAM速度寄存器sfr P1M1=0x91; /设置I/O口工作状态sfr P1M0=0x92;sbit P15=P15; /P15接按键1sbit P16=P16; /P16 接按键2uchar keycode; /定义键码变量uchar xdata C5A60S2_ADC32768; /用片外RAM存储采样值/*-*/void keyscan(void) /扫描键盘子程序P15=1;_nop_();_nop_();P16=1;_nop_();_nop_();if(P15=0)delay

3、(1);if(P15=0);keycode=1; /按键1控制关输出,开采集if(P16=0)delay(1);if(P16=0) /按键2控制开输出,关采集keycode=2;/*-*/void Init_T()/BUS_SPEED=0; /控制外扩RAM速度读写在1T状态, 注意62256最大承受速度约14M/PT0=1; /设置优先级/PT1=0;AUXR=0Xc0; /定时器0、1工作于不分频状态,即速度为常规12倍P1M1=1; /使P1.0工作于高阻状态 做AD使用,P1M0=9; / PWM强推挽输出电流达到20mAEA=1;ET0=1;TMOD=0X11; /定时器工作在模式1

4、TR0=1; /开启定时器0TL0=0xa0; /保证采样速度与输出速度一致TH0=0xf0;ET1=1;TR1=1; /开启定时器0TL1=0xa0; /保证采样速度与输出速度一致 采样速度为540个时钟TH1=0xf0;/*- */time0() interrupt 1 using 2 /定时器0中断用于定时采集音频static uint ram_in=0; /存入第几个ram单元ADC_CONTR=0xe8; /清空转换完成标志位,同时开启下一次转换C5A60S2_ADCram_in+=ADC_RES;if(ram_in=32768) ram_in=0; /如果存满RAM回到第一位TL0

5、=0xa0; / 采样速度为?个时钟TH0=0xf0;/*-*/time1() interrupt 3 using 3 /定时器0中断用于定时输出音频static uint ram_out=0; /输出第几个ram单元PWM(C5A60S2_ADCram_out+); /输出音频if(ram_out=32768) ram_out=0; /如果读完RAM,回到第一位TL1=0xa0; /保证采样速度等于输出速度TH1=0xf0;/*-*/void main()Init_ADC(); /AD初始化Init_PWM(); /PWM初始化Init_T(); /初始化定时器 while(1) keysc

6、an() ; if(keycode=1) TR0=1;TR1=0;CCAPM0=0;keycode=0; /按键1控制开采集、关输出 if(keycode=2) TR0=0;TR1=1;CCAPM0=0x42;keycode=0; /按键2控制关采集、开输出, .H文件1(AD.H):#define uchar unsigned char#define uint unsigned int/*-*/注意AD转换使用的是内部时钟/*-*/定义特殊功能寄存器sfr ADC_CONTR=0xBC; /AD控制寄存器sfr ADC_RES=0xBD; /AD输出高八位寄存器sfr ADC_LOW2=0x

7、BE; /AD输出最后两位寄存器sfr PLASF=0x9D; /控制P1口中的哪个作为模拟口sfr IPH=0XB7; /中断优先级控制位sfr AUXR1=0XA2; /设置AD转化结果寄存器的存储方式/定义与AD有关寄存器的控制位#define ADC_POWER 0X80 /AD电源控制位#define ADC_FLAG 0X10 /AD转换完成标志位,必须软件清零#define ADC_START 0X08 /控制AD开始转换位#define ADC_SPEEDLL 0X00 /540个时钟#define ADC_SPEEDL 0X20 /360个时钟#define ADC_SPEE

8、DH 0X40 /180个时钟#define ADC_SPEEDHH 0X60 /90个时钟sbit EADC=IE5; /定义单片机内部自带AD中断标志位/*-*/延时子程序void delay(uint n)while(n-);/*-*/初始化与单片机内部自带AD相关的寄存器void Init_ADC()/IPH=0X20; /AD中断设置为最高优先级 0x20/IP=0X20; /开启中断总开关及AD中断开关0x20 /EA=1;/EADC=1; /开启AD中断开关,AD的开关标志位同89C52的T2标志位/AUXR1=0; /AD转化结果寄存器的存储方式8高+2低 这是默认值可以不设置

9、PLASF=0x01; /设置P1.0作为模拟口ADC_RES=0 ; /清空AD输出高八位寄存器 /默认的AD输出存储方式为8+2 ADC_CONTR=0xe8; /(ADC_POWER|ADC_SPEEDLL|ADC_START|0x00); /开启AD电源,以90个时钟速度采样,并选择P1.0作为输入口delay(1000); /初次打开内部AD模拟电源需要适当延时,使电源稳定。/*-*/.H文件2(PWM.H):#define uchar unsigned char#define uint unsigned intsfr CCON=0XD8; /PCA控制寄存器sfr CMOD=0XD

10、9; /工作模式寄存器sfr CL=0XE9 ; /PCA计数器低8位寄存器sfr CH=0XF9 ; /PCA计数器高8位寄存器sfr CCAPM0=0XDA ; /PCA模块0的比较/捕获寄存器sfr CCAP0L=0XEA ; /PCA模块0低8位捕捉/比较寄存器sfr CCAP0H=0XFA ; /PCA模块0高8位捕捉/比较寄存器sfr PCAPWM0=0XF2; /PCA模块0的PWM寄存器sbit CCF0=CCON0 ; /PCA模块0中断标志位,必须软件清零sbit CCF1=CCON1 ; /PCA模块1中断标志位,必须软件清零sbit CR=CCON6 ; /PCA计数控

11、制位sbit CF=CCON7 ; /PCA计数器溢出标志位void Init_PWM() /初始化PWM相关的寄存器 CCON=0; /PCA控制寄存器清零 CL=0; /PCA计数器低8位寄存器 CH=0; /PCA计数器高8位寄存器 CMOD=0X08; /计数脉冲选择:系统时钟(越高越好),禁止CF位的中断 ? CCAPM0=0X42; /8位PWM,无中断 PCAPWM0=0X00; /与CCAP0H,CCAP0L组成9位数 CR=1; /启动PCA计数,必须软件清零 void PWM(uchar dutyfactor) /调节占空比子程序 CCAP0H=CCAP0L=255-dutyfactor; /控制占空比 /以上程序以头文件形式给出,格式不齐,无暇整理,如需参考不明白处请留言。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1