基于proteus蜂鸣器播放音乐(atmega16)

基于proteus蜂鸣器播放音乐(atmega16)

ID:16199104

大小:47.50 KB

页数:3页

时间:2018-08-08

基于proteus蜂鸣器播放音乐(atmega16)_第1页
基于proteus蜂鸣器播放音乐(atmega16)_第2页
基于proteus蜂鸣器播放音乐(atmega16)_第3页
资源描述:

《基于proteus蜂鸣器播放音乐(atmega16)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/*************************************************************Filename:T1单音音乐播放器(CTC)Chiptype:ATmega16Programtype:NO.8_7Clockfrequency:1.000000MHz*************************************************************/#include#include#defineMax_Note32intNote[9]={0,956,865,759,7

2、16,638,568,506,470};//音符频率intBeat[9]={0,105,116,132,140,157,176,198,209};//节拍周期intMusic[Max_Note]={5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8};//乐谱(奇数为音符,偶数为节拍)intNote_n;//记录乐谱音符节拍模拟指针intCount;//记录单个音符播放时间intPlay_on;//判定是否从头开始播放音乐(0_从头开始播放/1_音乐正在播放)voidport_init(void

3、){PORTA=0x00;DDRA=0x00;PORTB=0x00;DDRB=0x00;PORTC=0x00;DDRC=0x00;PORTD=0x08;//PD3(INT1)按键下降沿触发打开内部上拉电阻DDRD=0x20;//PD5(OCR1A)输出模式脉冲驱动发声}voidtimer1_init(void){TCCR1B=0x00;//关闭T1TCNT1H=0x00;TCNT1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;ICR1H=0x00;ICR1L=0x00;TCCR1A=0x40;TCCR1B=

4、0x08;//打开T1——设置无时钟源模式——停止T1}#pragmainterrupt_handlertimer1_compa_isr:iv_TIM1_COMPA//T1比较匹配中断voidtimer1_compa_isr(void){if(!Play_on)//从头开始播放音乐{Note_n=0;//乐谱音符节拍模拟指针指向乐谱第一个音符Count=1;//设置单个音符播放时间=0目的:兼容--Count,方便设置Play_on=1;//阻止从头开始播放}else//正在进行音乐播放{if(--Count==0)//判定是否完成当前音符的播放时间(0——一个音符播放

5、完成,修改设置下个音符){TCCR1B=0x08;//停止T1if(Note_n

6、R1B=0x09;}else{Play_on=0;//允许从头开始播放}}}}#pragmainterrupt_handlerint1_isr:iv_INT1voidint1_isr(void){if(!Play_on){TCCR1B=0x09;//不经过分配器模式——启动T1}}voidinit_devices(void){CLI();port_init();timer1_init();MCUCR=0x08;GICR=0x80;TIMSK=0x10;SEI();}intmain(){init_devices();while(1){}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。