完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位朋友,大家好!
我最近在学习51单片机,下面写了一段程序想控制蜂鸣器发出 哆雷咪发梭拉西多 的声音,但是就是无法得到预期的效果; 不知道哪里有问,求高手帮忙,指导一下! 先谢谢了! #include #define uint unsigned int #define uchar unsigned char ***it music=P1^2; //P1.2脚与蜂鸣器连接 uint i; void delay(); /***************************************** 1、2、3、4、5、6、7低中高音音调初值TL0的值 ******************************************/ uchar code Ftl[]={0x8B,0x5B,0x14,0x66,0x03,0x8F,0x0B, 0x43,0xAB,0x08,0x33,0x81,0xC7,0x05, 0x21,0x55,0x84,0x99,0xC0,0xE3,0x02,0xAA}; /***************************************** 1、2、3、4、5、6、7低中高音音调初值TL0的值 ******************************************/ uchar code Fth[]={0xF8,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC, 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFB,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xAA}; /*********************** 节拍数,一拍时间为200ms ************************/ uchar code pai[]={4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4}; /********************************************************** 函数名称:程序主函数 函数功能:有低音到高音播放1、2、3、4、5、6、7 ***********************************************************/ void main() { uchar i,j; EA=1; ET0=1; TMOD=0x01; while(1) { i=0; while(Ftl!=0xAA&&Fth!=0xAA) //当Ftl和Fth等于0xAA,播放完成,然后重新开始 { TH0=Fth; TL0=Ftl; TR0=1; for(j=0;j delay(); TR0=0; i++; } music=0; } } /*********************************************************** 函数名称:中断函数 函数描述:定时器T0,方式1 ************************************************************/ void T_timer() interrupt 1 using 1 { music=!music; TH0=Fth; TL0=Ftl; } /*********************************************************** 函数名称:延时函数 函数功能:1个延时单位,延时200ms ************************************************************/ void delay() { unsigned char i,j; for(i=0;i<100;i++) for(j=0;j<250;j++); } |
|
相关推荐
9个回答
|
|
经过本人亲身测试,终于发现你的问题所在,你的数组格式不对啊。TH0=Fth;TL0=Ftl;这个明显都不对啊正确的应该是这样的TH0=Fth[n];TL0=Ftl[n].另外for(j=0;j
|
|
|
|
谢谢你! 我想问一下, sizeof(pai)是用来计算数组长度的吗? 那j < sizeof(pai)可以改为 j |
|
|
|
sizeof(pai)这个是表示数组的长度。。而数组名pai不是代表数组的长度,他是表示数组首元素的地址。
|
|
|
|
|
|
|
|
把j < sizeof(pai)可以改为 j 因为数组pai[]里面的元素表示我延时不同的拍数 sizeof(pai)这个表示数组pai[]长度,那拍数就没有变化了 |
|
|
|
|
|
|
|
楼上说了,双重循环。
|
|
|
|
双重循环??不是很明白。该如何设置? 把下面的
改为
为什么不可以呢? |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
180 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
587 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
549 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
548 浏览 0 评论
1051 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:34 , Processed in 0.702267 second(s), Total 86, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号