51单片机,编写延时程序,控制蜂鸣器发声;

51单片机,编写延时程序,控制蜂鸣器发声;,第1张

很简单的

#include<reg52h>

#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) //循环

{

fengmingqi=1; //p00口高电平,蜂鸣器发声

delay(500); //延时

fengmingqi=0; //p00口低电平,蜂鸣器不发声

delay(500); //延时

}

}

#include<reg51h>

#define uchar unsigned char

sbit k1=P1^0;

sbit k2=P1^1;

sbit k3=P1^2;

sbit k4=P1^3;

sbit fmq=P1^7;

uchar cnt,sec;

vodi t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

cnt++;

if(cnt>=20)

    {

    cnt=0;

    sec--;

    if(sec==0)

        {

        TR0=0;

        fmq=1;

        }

    }

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

while(1)   

    {

    if(k1==0)

        {

        sec=1;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    if(k2==0)

        {

        sec=2;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    if(k3==0)

        {

        sec=3;

        cnt=0;

        TR0=1;

        while(k3==0);

        fmq=0;

        }

    if(k4==0)

        {

        sec=4;

        cnt=0;

        TR0=1;

        while(k1==0);

        fmq=0;

        }

    }

}

时间运行到整点时间时,闹钟响,几点钟就响几声(每声 持续响 2 秒,每两声之间时间间隔 2 秒)

利用单片机定时器计时,液晶1602显示时分秒。

独立按键设置时间。

整点报时,1点蜂鸣器响1下,2点蜂鸣器响2下,同理其他点。

;假设P25控制蜂鸣器,低电平响。

;启动入口

ORG 0000H ;复位启动

LJMP START ;

ORG 000BH ;T0中断

LJMP T0INT ;

ORG 0100H ;

LJMP START ;

;

;主控程序

START: MOV SP,#80H ;初始堆栈值

MOV TMOD,#01H ;定时器0工作于方式1

MOV TH0,#03CH ;定时器0定时时间=50mS

MOV TL0,#0B0H ;

CLR P25 ;蜂鸣器响

MOV YSJS,#200 ;20050mS=10000mS

SETB TR0 ;定时器0启动,开始定时

JMP $ ;死循环

;

;定时器0中断服务程序

T0INT: DJNZ YSJS,QT0 ;不到1秒跳转

SETB P25 ;关闭蜂鸣器

CLR TR0 ;

;

QT0: MOV TH0,#03CH ;定时器0定时时间=50mS

MOV TL0,#0B0H ;

RETI ;

;

YSJS EQU 30H ;

END ;

如果是蜂鸣器的话,那么加一个电平信号就可以发声了。\x0d\FMQ EQU P10\x0d\ORG 0000H\x0d\LJMP MAIN\x0d\ORG 0030H\x0d\MAIN:\x0d\CPL FMQ\x0d\LCALL DELAY\x0d\SJMP MAIN\x0d\DELAY:\x0d\MOV R2,#200\x0d\DLY:\x0d\MOV R3,#250\x0d\DJNZ R3,$\x0d\DJNZ R2,DLY\x0d\RET\x0d\END

#include<reg51h>

#include<intrinsh>

#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;

    }

}

以上就是关于51单片机,编写延时程序,控制蜂鸣器发声;全部的内容,包括:51单片机,编写延时程序,控制蜂鸣器发声;、求汇编语言或c语言编写无源蜂鸣器程序!、单片机整点报时几点响几下等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10629199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存