完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include void delay_ms(unsigned int n) { unsigned int j=0; while(j delay_1ms(); j++; } } void delay_1ms(void) { unsigned int j; for(j=0;j<1000;j++) j++; } #define uchar unsigned char #define uint unsigned int flash uint music_data[] [2]= { {440,600},{494,200},{523,600},{443,200},{523,400},{494,200}, {440,200},{494,400},{330,400},{494,600},{523,200},{578,600}, {494,200},{578,400},{523,200},{494,200},{440,800},{659,400}, {880,400},{784,400},{880,200},{784,200},{698,400},{659,200}, {578,200},{659,400},{440,400},{ 0,200},{698,400},{578,200}, {659,600},{523,200},{494,200},{330,200},{523,200},{494,200}, {440,800},{659,400},{880,400},{784,400},{880,200},{784,200}, {698,400},{659,200},{578,200},{659,400},{440,400},{ 0,200}, {698,400},{578,200},{659,600},{523,200},{494,200},{330,200}, {523,200},{494,200},{440,800},{ 0, 0}, }; void port_init(void) //端口初始化函数 { DDRD=0XFF; //D口配置为输出,驱动蜂鸣器——PD5 //DDRB=0XFF; //B口配置为输出,驱动LED——PB5 //PORTB=0X00; //LED初值为灭 DDRA=0XFF;PORTA=0X00; DDRB=0XFF;PORTB=0XFF; DDRC=0XFF;PORTC=0X00; } void sound(uchar i) { uint x; x=music_data[i][0]; //取音乐的频率数据 if(x!=0) { x=500000/x; //1M时钟数据计算 OCR1A=x; //比较值赋值 TCCR1A=0X40; //允许比较反转输出 } else { TCCR1A=0X00; //频率为0,休止符,不发声 } } unsigned char j; unsigned char k; unsigned char m; void main(void) { uchar i=0; port_init(); TCCR1A=0X40; //端口初始化 TCCR1B=0X09; //将T/C1配置为比较匹配,OC1A取反 //while(1) //{ for(k=0;k<1000;k++) {PORTA=0X01;PORTB=0XFE;PORTC=0XFF;delay_ms(1); PORTA=0X02;PORTB=0XFD;PORTC=0XFF;delay_ms(1); PORTA=0X04;PORTB=0XDB;PORTC=0XE3;delay_ms(1); PORTA=0X08;PORTB=0X80;PORTC=0XFC;delay_ms(1); PORTA=0X10;PORTB=0X8B;PORTC=0XE1;delay_ms(1); PORTA=0X20;PORTB=0XDB;PORTC=0XFF;delay_ms(1); PORTA=0X40;PORTB=0XFD;PORTC=0XFF;delay_ms(1); PORTA=0X80;PORTB=0XFE;PORTC=0XFF;delay_ms(1);} for(m=0;m<1000;m++) { while(music_data[i][1]!=0) //等待最后一个音符到来 { sound(i); //输出音符 delay_ms(music_data[i][1]);//节拍延时 TCCR1A=0X00; //奏完一个音符停止 //PORTB^=1<<5aa; //音符节拍由LD5闪亮显示 PORTD|=1<<5; //PD5 i++; //准备下一个音符 } delay_ms(1000); i=0; //一遍结束,停1秒,从头开始 delay_ms(100); } } |
|
相关推荐
1个回答
|
|
感谢分享哦 shiluoye.net
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
938 浏览 0 评论
553 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1105 浏览 0 评论
STM32系列单片机可以让自己的GPIO去控制自己的RESET吗?有什么风险?可以规避吗?
1470 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口参数设置
895 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11585 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-1 09:55 , Processed in 0.645377 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号