51单片机蜂鸣器程序

用单片机编程控制8个led小灯依次向左变亮之后,全部变灭,再依次向右变亮,之后再使8个LED小灯呼吸变灭同时蜂鸣器进行报警

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar pwm,ctl=5;
sbit fmq=P1^0;
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
pwm++;
if(pwm<=ctl)P0=0xff;
else P0=0x00;
if(pwm==100)
    {
    pwm=0;
    ctl++;
    }
if(ctl==100)flag=1;
}
main()
{
uchar i,led;
TMOD=0x02;
TH0=236;
TL0=236;
ET0=1;
EA=1;
while(1)
    {
    led=0xfe;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led<<1;
        delay(200);
        }
    led=0xff;
    delay(200);
    led=0x7f;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led>>1;
        delay(200);
        }
    TR0=1;
    flag=1;
    while(flag);
    TR0=0;
    }
}

追问

灯也没亮 蜂鸣器也没响

追答哦,对了,蜂鸣器没有加,灯肯定会亮的。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar pwm,ctl=5;
sbit fmq=P1^0;
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
void t0isr() interrupt 1
{
pwm++;
if(pwm<=ctl)P0=0xff;
else P0=0x00;
if(pwm==100)
    {
    pwm=0;
    ctl++;
    }
if(ctl==100)flag=0;
}
main()
{
uchar i,led;
TMOD=0x02;
TH0=236;
TL0=236;
ET0=1;
EA=1;
while(1)
    {
    led=0xfe;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led<<1;
        delay(200);
        }
    led=0xff;
    delay(200);
    led=0x7f;
    for(i=0;i<8;i++)
        {
        P0=led;
        led=led>>1;
        delay(200);
        }
    TR0=1;
    flag=1;
    fmq=0;
    while(flag);
    TR0=0;
    fmq=1;
    }
}

你没有提供电路图,这个程序只能按程序定义的IO口才能正常工作,要么你根据你的电路将程序的IO口做下调整。

温馨提示:内容为网友见解,仅供参考
无其他回答

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);} } ...

51单片机用三个按键控制报警,任意按两个按键蜂鸣器就报警的程序
1. 程序的主要功能是通过三个按键(k1、k2、k3)来控制蜂鸣器的报警。2. 在主函数main()中,定义了一个字符变量beepflag,用于表示蜂鸣器的状态,初始值为0。3. 进入一个无限循环,等待用户操作。4. 首先检查k1按键是否被按下,如果是,将beepflag的最低位设置为1;否则,将其设置为0。5. 接着...

求51单片机蜂鸣器程序
51单片机,编写延时程序,控制蜂鸣器发声:很简单的#include<reg52.h>#define uchar unsigned char#define uint unsigned int sbit fengmingqi=P0^0; \/\/声明IO口void delay(uint x)\/\/延时子函数{ uint i,j;for(i=x;i>0;i--)for(j=50;j>0;j--);}void main(void){while(1) \/\/循环{fe...

为什么我的51单片机蜂鸣器程序需要加延时才响呢?
这得看你的蜂鸣器是有源还是无源,如果是无源的蜂鸣器需要经过变频控制才会发声,对于有源的蜂鸣器则直接输出高低电平就可以。注意,这里的“源”不是指电源。而是指震荡源。 也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~...

51单片机如何让蜂鸣器只响0.5s
51单片机驱动蜂鸣器(蜂鸣器分有源与无源两种,有源指加电压就会响的,无源需要以一定频率的交变脉冲电压驱动),如果只响0.5S,只要用一个定时0.5S开关信号驱动、或者用0.5S的一定频率的脉动信号驱动就可以了。

51单片机蜂鸣器程序
include<reg51.h>#include<intrins.h>#define uchar unsigned charuchar pwm,ctl=5;sbit fmq=P1^0;bit flag;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}void t0isr() interrupt 1{pwm++;if(pwm<=ctl)P0=0xff;else P0=0x00;if(pwm==100) { pwm=0; ...

51单片机的蜂鸣器怎么关闭 求程序段
兄弟程序太大了,,我写了 主函数。其他外围你自己填写就可以了。另外:得用外接的“时间芯片”:1302。开机后,必须对1302进行初始化,然后等待操作者,对1302进行时间设定,然后等待2009-09-24 22:33时刻的到来。然后输出要求的波形。输出波形,也要用1302的时间进行控制 (我只会前面。1302 是网上...

51单片机蜂鸣器如何手动停止问题?
include<reg52.h> sbit kaiguan=P3^5;\/\/控制蜂鸣器 sbit BEEP=P1^0;void main(){ while (1) \/\/主循环 { if(!kaiguan)BEEP=1;else BEEP=0;} } 你上面那个没有while循环,刚才这个写法是稍微高级点的,如果更高级点的话可以更简单 BEEP=kaiguan!

求教,怎样控制51单片机的蜂鸣器发出不同频率的声音
蜂鸣器是不能发出不同频率的声音的,要发出不同频率的声音,你需要选择speaker,比如:include<reg51.h> define uchar unsigned char define uint unsigned int sbit SPK=P1^0;sbit K1=P1^7;\/\/发声函数 void Alarm(uchar t){ uchari,j;for(i=0;i<200;i++){ SPK=~SPK;for(j=0;j<t;j...

单片机无源蜂鸣器的程序,请求解释下这个程序从第一个for开始的意思!_百...
include\/\/包含51的头文件 sbit BEEP=P1^5;\/\/sbit是位定义的意思,即使用beep来代表单片P1端口的第5个IO口 void beep()\/\/蜂鸣器子函数,方便调用,{ unsigned char i , j;\/\/设置无符号字符型变量i;和J for (i=0;i<100;i++)\/\/定义一个for循环,每次完整地执行for里面的所有语句,i就自...

相似回答