求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序

求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序,第1张

用51单片机

#include<reg52h>

sbit LED0=P1^0;

sbit LED1=P1^1;

sbit LED2=P1^2;

sbit LED3=P1^3;

sbit LED4=P1^4;

sbit LED5=P1^5;

sbit LED6=P1^6;

sbit LED7=P1^7;

void delay(int x)

{

int y,z;

for(y=x;y>0;y--)

for(z=110;z>0;z--);

}

void mian()

{

char i;

for(i=0;i<20;i++)

{

P1=0xff;

delay(500);

P1=0;

delay(500);

}

}

8个 led 接在P1口

LED BIT P10

KEY BIT P11

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

    CLR 00H

MAIN1:

    JB KEY,LOOP

    JNB KEY,$

    CPL 00H

LOOP:

    JNB 00H,LOOP1

    CPL LED

    LCALL DELAY

    SJMP MAIN1

LOOP1:

    SETB LED

    SJMP MAIN1

DELAY:

    MOV R2,#200

DLY:

    MOV R3,#250

    DJNZ R3,$

    DJNZ R2,DLY

    RET

    END

假设用的是51单片机的P1口,LED灯是低电平点亮,连接P10,那么可以参考如下思路:

初始化:

P1 =0xFF;

P10=0;点亮

delay_s(30);延时30秒

P10=1;熄灭

while(1)

{

delay_s(1);延时1秒

P10=0;点亮

delay_s(1);延时1秒

P10=1;熄灭

}

#include<reg52h>

sbit P10=P1^0;//控制LED闪烁

unsigned char count=0;//计数变量

void main()

{

TMOD = 0x01; //设定时器0为模式1,16位模式

TH0=0xdc;

TL0=0x00; //设定时值为10ms,此时晶振频率是110592MHZ

//若晶振频率是12MHZ,则初值应为 TH0=0xd8; TL0=0xf0;

ET0 = 1; //定时器0中断打开

EA = 1; //允许CPU中断

TR0 = 1;//启动定时器0

while(1)

{

if(count==40) //04秒时间是否到

{

count=0; //计数变量清零,为下一次计数做准备

P10=!P10; //IO口取反,即LED亮灭变化

}

}

}

//定时器0中断处理子程序

void Time0() interrupt 1 using 0

{

TH0=0xdc;

TL0=0x00; //设定时值为10ms

count++; //计数加一

}

以上就是关于求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序全部的内容,包括:求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次。”的C语言编程程序、求一个51单片机的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了、单片机控制LED灯常亮30秒后闪烁怎么编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存