keil4单片机蜂鸣器程序(keil驱动蜂鸣器的代码)

勇敢Keil V4写个蜂鸣器程序

unsigned int i;

这句放在:

void main()

{

unsigned int i;

Tickinit();

while(1)

.....

}

因为KEIL支持的C版本的原因,所有变量的定义必须在逻辑语句之前。

如何利用软件Keil编写一个程序,超出某个预设值,这个程序会使蜂鸣器响

可以用定时器的计数模式,也可以直接定义一个变量,让这个变量循环加1,当超出预设值时,执行下蜂鸣器响的函数就ok了

使用51单片机蜂鸣器播放音乐 求keil程序

//主程序查音符码,将不同的初值装入定时器,定时器每中断一次,P3.7取反一次,形成不同频率的方波

//11代表低音哆 21代表高音哆 1代表中音哆

//12代表低音来 22代表高音来 2代表中音来,是不是翻译乐谱很方便

#includereg52.h

sbit SPK = P3^7; //P3.7外接扬声器,可以改成你所说的P1^5

#define uint unsigned int;

#define uchar unsigned char;

uint x,y;

uint i,j,k;

//以下是根据歌谱转来的音乐代码 3代表中音咪 1个全音被分成4个1/4 音符

//小燕子第一句 3,5,21,6,5,5,5,5, 21是高音哆 ,后面4个5,是因为这个音节占4拍

uchar code MUSIC[]={3,5,21,6,5,5,5,5, 3,5,6,21,5,5,5,5, 21,21,21,23,22,22,21,21, 22,21,6,21,5,5,5,5, 3,3,5,6,6,5,6, 21,21,22,5,6,6,6,6, 3,3,1,1,2,2,2,2,2,

2,2,2,3,5,5,5,5, 21,21,2,3,5,5,5,5, 2,1,16,1,15,15,15,15, 0,0,0,0,16,16,1,1, 15,15,16,16,1,1,1,1, 5,5,6,6,4,4,3,3, 2,2,2,2,2,2,5,5, 5,5,2,2,4,4,3,3, 2,2,1,2,4,4,4,4,

16,16,1,1,2,2,4,4, 2,1,16,1,15,15,15,15, 16,16,16,16,15,15,15,15, 15,15,15,15,15,15,15,15, 0,0,5,5,5,5,0,0, 5,5,5,5,4,4,4,4,

5,5,5,5,2,2,2,2, 2,2,5,5,4,4 ,4,4, 16,16,1,1,2,2,2,2, 4,4,2,2,2,2,4,4, 5,5,5,5,5,5,6,6, 21,21,21,21,6,6,21,21,

21,21,6,6,5,5,5,5, 5,5,6,6,5,5,4,4, 2,2,2,2,2,2,5,5, 5,5,2,2,4,4,3,3, 2,2,1,2,4,4,4,4, 16,16,1,1,2,2,4,4,

2,1,16,1,15,15,15,15, 16,16,16,16,15,15,15,15, 5,5,6,6,5,5,6,6, 5,5,4,4,5,5,5,5, 1,1,2,2,1,1,2,2, 15,15,16,16,1,1,1,1,

5,5,6,6,5,5,6,6, 21,21,6,6,5,5,5,5, 1,1,2,2,1,1,2,2, 15,15,16,16,1,1,1,1, 5,5,6,6,5,5,4,4, 5,5,5,5,1,1,2,2, 15,15,16,16,1,1,1,1,

5,5,6,6,5,5,5,5, 1,1,2,2,1,1,1,1, 5,5,6,6,5,5,5,5, 1,1,2,2,1,1,1,1, 5,5,5,5,1,1,1,1, 5,5,5,5,1,1,1,1, 5,5,5,5,1,1,5,5,

1,1,5,5,1,1,5,5, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 0,0,1,1,1,1,0,0, 5,5,5,5,4,4,4,4, 5,5,5,5,2,2,2,2, 2,2,5,5,4,4,4,4,

6,6,1,1,2,2,2,2, 4,4,2,2,2,2,4,4, 5,5,5,5,5,5,6,6, 21,21,21,21,6,6,21,21, 21,21,6,6,5,5,5,5, 5,5,6,6,5,5,4,4, 2,2,2,2,2,2,5,5,

5,5,2,2,4,4,3,3, 2,2,1,22,4,4,4,4, 16,16,1,1,2,2,4,4, 4,4,6,6,5,5,5,5, 5,5,5,5,5,5,5,5, 6,6,6,6,5,5,5,5};

uchar code table[] = { 0,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,0,0,0, //定时半周期的初始值中音123 4 5 67高8位

//三个0是补位码,为了使表格整齐,便于按规律查询 首个0是休止符11个

0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,0,0,0, //低音1 2 3 4 5 67高8位 10个

0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xff, //高音1 2 3 4 5 67高8位 7个

0,0x44,0xad,0x0a,0x34,0x82,0xc8,0x06,0,0,0, //中音123 4 5 67低8位 10个

0x89,0x59,0x13,0x68,0x04,0x90,0x0c,0 ,0,0, //低音1 2 3 4 5 6 7低8位10个

0x22,0x56,0x85,0x9a,0xc1,0xe4,0x03}; //高音1 2 3 4 5 6 7低8位 7个

void delay(i) //晶振12MHZ时延时1ms

{

for(j=i;j0;j--)

for(k=121;k0;k--);

}

void TIM0_ISR() interrupt 1

{

SPK=!SPK;//定时取反,形成方波

TH0=table[x]; //重新载入定时半周期的初始值

TL0=table[x+28];//为什么加28 11+10+7=28

}

void main(void)

{

TMOD|=0x01;

EA=1;

ET0=1;

while(1)

{

y=0;

while(y592)//此乐谱里面有592个音符

{

x=MUSIC[y];//查乐谱表

TH0=table[x]; //查不同音节的定时器初值

TL0=table[x+28];

TR0=1; //打开定时器

if(y72)//两首曲子不同节奏,延时不同

{

delay(125); //延时125ms

}

else

{

delay(250); //延时250ms

}

y++;

TR0=0;

}

}

}

为什么keil4编译蜂鸣器程序是提示TEXT1.C(8): error C141: syntax error near 'sbit'

不清楚这个ADCU848是什么单片机,不过你要看清楚,人家是不是支持这种接口宏定义,就算支持接口宏定义,是不是也像51单片机一样这样定义的,会不会是其他方式定义的。如果同51一样,那么请把 第七行 重新删除一遍,很可能里面存在非法字符。

51单片机蜂鸣器程序是什么?

51单片机蜂鸣器程序为:

#include"reg52.h"

typedef unsigned char u8;

typedef unsigned int u16;

sbit beep=P1^5;

void delay(u16 i)

{

while(i--);

}

void main()

{

while(1)

{

beep=~beep;

delay(1000);//控制音调频率

beep=~beep;/控制声音大小

delay(10);

}

}

扩展资料:

BUZZER蜂鸣器的分类:

1、按其驱动方式的原理分,可分为:有源蜂鸣器(内含驱动线路,也叫自激式蜂鸣器)和无源蜂鸣器(外部驱动,也叫他激式蜂鸣器)。

2、按构造方式的不同,可分为:电磁式蜂鸣器和压电式蜂鸣器。

3、按封装的不同,可分为:DIP BUZZER(插针蜂鸣器)和SMD BUZZER(贴片式蜂鸣器)。

4、按电流的不同,可分为:直流蜂鸣器和交流蜂鸣器,其中,以直流最为常见压电式蜂鸣器,用的是压电材料,即当受到外力导致压电材料发生形变时压电材料会产生电荷。同样,当通电时压电材料会发生形变。

电磁式蜂鸣器,主要是利用通电导体会产生磁场的特性,用一个固定的永久磁铁与通电导体产生磁力推动固定在线圈上的鼓膜。

由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。

单片机无源蜂鸣器的程序,请求解释下这个程序从第一个for开始的意思!

#include//包含51的头文件

sbit BEEP=P1^5;//sbit是位定义的意思,即使用beep来代表单片P1端口的第5个IO口

void beep()//蜂鸣器子函数,方便调用,

{

unsigned char i , j;//设置无符号字符型变量i;和J

for (i=0;i100;i++)//定义一个for循环,每次完整地执行for里面的所有语句,i就自增1,直到i=10

{ //当i=100是,for循环就结束

BEEP=!BEEP; //BEEP取反//蜂鸣器发生原理,进行电平取反,原来为高电平,下一次执行就变成低电平

for (j = 0 ; j200 ; j++); //需要产生方波这个是延时程序

}

BEEP=1; //关闭蜂鸣器蜂鸣器电平不发生变化的时候,蜂鸣器无法发声。

}

361知讯网

本文链接:http://pdidw.com/keil/22488.html

发表评论

评论列表

还没有评论,快来说点什么吧~