6388|14

192

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

我在一本书上找到了蜂鸣器演奏程序,不用中断! [复制链接]

程序我改动过了,在开发板上可以实现,就是这是老点的儿歌,我根本没听出来......

附件加上电子书

大家可以看看

我正在改动我的点歌系统,希望能实现

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P1_1=P1^1;
/*
uchar code  MUISIC_SOUNDLONG3[]=
{//三轮车
6,6,9,3,6,6,12,
6,6,6,6,6,6,12,
6,6,9,3,6,6,9,3,
6,3,3,6,3,3,6,6,9};
uchar code  MUISIC_SOUNDTONG3[]=
{//三轮车
239,239,212,189,159,159,189,
159,159,142,126,120,120,159,
120,120,142,159,189,142,159,189,
239,212,189,159,142,159,189,212,239};
*/
uchar code  MUISIC_SOUNDLONG3[]=
{
            
//彩虹妹妹
12,6,6,12,6,6,6,12,6,24,
12,6,6,12,6,6,6,12,6,24,
12,6,6,6,6,6,6,
6,12,6,24,12,12,12,6,6,
6,12,6,24
};
uchar code  MUISIC_SOUNDTONG3[]=
{

//彩虹妹妹
142,159,189,142,159,189,142,142,159,142,
142,159,189,142,159,189,212,212,239,212,
189,189,159,142,120,142,159,
189,189,159,239,189,189,189,189,189,
142,142,159,142//end
};


void delay(uint z)//普通延时
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void main()
{
 uchar k,i,j;
 uchar SoundLong,SoundTone;
 uint m;
 for(i=0;i<31;i++)
 {
  SoundLong=MUISIC_SOUNDLONG3;
  SoundTone=MUISIC_SOUNDTONG3[j];
  for(j=0;j<SoundLong;j++)
  {
   for(k=0;k<12;k++)
   {
    for(m=0;m<SoundTone*1;m++)
     P1_1=0;
    for(m=0;m<SoundTone*1;m++)
     P1_1=1;  
   }
  }
  delay(30);
 }
}

C8051的C语言的彻底应用.pdf

5.14 MB, 下载次数: 104

里面有蜂鸣器应用

此帖出自51单片机论坛

最新回复

实际上蜂鸣器用的是压电陶瓷,音质没有喇叭好。   详情 回复 发表于 2020-7-10 17:03
点赞 关注
 

回复
举报

315

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
没用中断,你演奏的时候,程序就停留在演奏的程序,只有中断函数可以执行。 [ 本帖最后由 孤獨の快樂 于 2011-11-18 18:09 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

回复 沙发 孤獨の快樂 的帖子

之前觉得是中断冲突了,但是现在吧 ....
我还是不能让液晶计时,点阵,还有蜂鸣器同时进行,
有一个情况是,开机以后按下s1音乐A键后 先点阵循环一次,后停止(液晶显示初始化显示时间不计时),然后蜂鸣器演奏一遍,然后蜂鸣器停止,点阵循环液晶计时...
就是不知道咋能让点阵液晶蜂鸣器同时进行
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

4
 

你液晶显计时用的是中断,蜂鸣器用如上程序的话,可以实现液晶计时蜂鸣器同时的吧
不过点阵想同时显示的话,估计也得用中断了

不过蜂鸣器程序中产生中断,可能导致声音有噪点吧

[ 本帖最后由 孤獨の快樂 于 2011-11-18 18:33 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

140

帖子

0

TA的资源

一粒金砂(高级)

5
 
可以试试
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

6
 

回复 沙发 孤獨の快樂 的帖子

对于51系列的单片机属于单cpu的器件。要实现这样的多任务,就是变播放变显示,只有一个办法,那就是分时复用。简单来说就是主要时间播放音乐,每一个小节的间隙给LCD送显示内容,然后立即又返回去播放音乐。。。如此循环。

朋友我对这个有点不明白,能帮我看看不?
具体的分时复用?
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

7
 

原帖由 51学习者 于 2011-11-18 18:33 发表 对于51系列的单片机属于单cpu的器件。要实现这样的多任务,就是变播放变显示,只有一个办法,那就是分时复用。简单来说就是主要时间播放音乐,每一个小节的间隙给LCD送显示内容,然后立即又返回去播放音乐。。。如此 ...

就是在音乐播放程序里面加LCD显示吧

有兴趣可以采用RTX51实时系统

[ 本帖最后由 孤獨の快樂 于 2011-11-18 18:37 编辑 ]
此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 4楼 孤獨の快樂 的帖子

RTX51实时系统,,这个我没有...


你液晶显计时用的是中断,蜂鸣器用如上程序的话,可以实现液晶计时蜂鸣器同时的吧
不过点阵想同时显示的话,估计也得用中断了

不过蜂鸣器程序中产生中断,可能导致声音有噪点吧

这个我想了半天能加的地方都加过了 还是不成..
此帖出自51单片机论坛
 
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

9
 

回复 7楼 孤獨の快樂 的帖子

这个是一个好东西啊!可惜不会啊。。。
此帖出自51单片机论坛
 
 
 

回复

315

帖子

0

TA的资源

五彩晶圆(初级)

10
 

原帖由 51学习者 于 2011-11-18 20:43 发表 RTX51实时系统,,这个我没有... 你液晶显计时用的是中断,蜂鸣器用如上程序的话,可以实现液晶计时蜂鸣器同时的吧不过点阵想同时显示的话,估计也得用中断了 不过蜂鸣器程序中产生中断,可能导致声音有噪点 ...

KEIL C自带的啊,怎么会没有,只能说你不会吧

此帖出自51单片机论坛
 
 
 

回复

192

帖子

0

TA的资源

纯净的硅(初级)

11
 

回复 10楼 孤獨の快樂 的帖子

哎,是真不会啊,求教求教...
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

12
 
可以试试
此帖出自51单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

13
 
我觉得你还是要好好安排一下中断服务程序,本来用几个全局量就可以搞定的.
中断是系统最重要的部分,其它arm系统里也是一样的,学学吧很有用的,有时候成败在此.
此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

14
 

此帖出自51单片机论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

15
 

实际上蜂鸣器用的是压电陶瓷,音质没有喇叭好。

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表