焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

单片机led灯亮灭程序1s(单片机led灯亮灭程序灭一秒亮一秒)

工品易达2022-11-01led灯43

51单片机led灯亮一秒停五秒程式怎么写

void delay_s(unsigned char t);

void main()

{

while(1)

{

led = 1;//led 亮

delay_s(1);//延时1s

led = 0;//led 暗

delay_s(5);//延时5s

}

}

这是主循环,你要把delay_s()这个延时函数补充进去,另外,led亮和暗的电平你得根据你得具体电路看是1亮还是0亮。

单片机编程。试编写程序,使LED灯逐个点亮,时间为一秒。先谢谢。

晶振认为是12MHz定时器中断时间为50ms,累计20次中断的时间为1s

这个程序是精确定时的,不像楼上的delay函数定时不精确

#include

#include

unsigned

char

i=0;

void

init();

void

main()

{

init();

while

(1)

{

if(i==20)

{

i=0;

P1=_crol_(P1,1);//循环移位函数

在intrins函数中定义

}

}

}

void

init()

{

TH0=0x3c;

//定时器赋初值定时时间50ms

TL0=0xB0;

TMOD=0x01;

//设置定时器工作方式为方式1

EA=1;

//开总中断

ET0=1;

//开中断允许位

TR0=1;

//定时器计数

P1=0xfe;

//这里假设led灯与P1口相连并且

//低电平有效

}

void

timer0()

interrupt

1

{

TH0=0x3c;

TL0=0xB0;

//溢出后重新赋初值

i++;

//定时器中断时间为50ms

//20次中断时间为1s

}

用五一单片机控制led灯亮两秒灭一秒程序编写

#includereg51.h

void delay1s()

{

unsigned chari,j,k;

for(i=10;i0;i--)

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

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

}

void delay2s()

{

unsigned chari,j,k;

for(i=20;i0;i--)

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

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

}

void main()

{

while(1)

{

P1=0x00;

delay2s();

P1=0xff;

delay1s();

}

}

求实现51单片机按下按钮LED灯亮1秒后熄灭?

要实现51单片机按下按钮LED灯亮1秒后熄灭,这很简单,检测到按下按钮后点亮LED灯并开始计时,1秒到就灭灯。用定时器定时并用中断方式,计中断次数,定时×次数=1秒即可。

单片机编程,控制LED延时亮灭的程序,

#includereg51.h

#includeINTRINS.h

#define u16 unsigned int

#define u8 unsigned char

#define Pin0 0x01

#define Pin1 0x02

#define Pin2 0x04

#define Pin3 0x08

#define Pin4 0x10

#define Pin5 0x20

#define Pin6 0x40

#define Pin7 0x80

sbit led1=P1^1;

sbit led2=P1^2;

sbit led3=P1^3;

sbit led4=P1^4;

sbit led5=P1^5;

sbit kg1=P3^1;

sbit key2=P3^2;

sbit key3=P3^3;

/****************************************/

void init() //初始化函数

{   TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;

EA=1;

    ET0=1;

}

/////////////////////////

u8 s(){//扫描按键

static u8 ms;

u8 t=0;

// if(key1==0)t|=Pin1;

if(key2==0)t|=Pin2;

if(key3==0)t|=Pin3;

if(t!=0x00){

if(ms100)ms++;

if(ms==5){

return t;

}

}else ms=0;

return 0x00;

}

///////////////////////

typedef struct{

u16 time;//n毫秒后

u8 l;   //亮的灯

u8 m;   //灭的灯

}ledcmd;

#define LED_CMD_SIZE 10

code ledcmd lcmd[]={

{0,Pin2,0},//0s后 led2亮

{500,Pin4,0,},//0.5s后 led4亮

{1000,0,Pin4},//1s后 led4灭

{300,Pin3,0,},

{300,Pin4,0,},

{1000,0,Pin4,},

{300,0,Pin2,},

{200,Pin5,0,},

{40,0,Pin5|Pin3},

{500,0,Pin1},

};

void led_l(u8 v){//亮灯程序

P1=P1(~v);

}

void led_m(u8 v){//灭灯程序

P1=P1|(v);

}

u8 ledzt=0xff;//led任务zt 为0xff表示待机

u16 ledjs;//倒计时

void led_start(){ //启动程序

ledzt=0;

ledjs=lcmd[ledzt].time;

}

void ledcx(){ //led流程程序

if(ledztLED_CMD_SIZE){

if((ledjs==0)(ledztLED_CMD_SIZE)){//计时到0

ledzt++;

if(ledzt!=LED_CMD_SIZE){

ledjs=lcmd[ledzt].time;

}

}

if(ledzt1){//

led_l(lcmd[ledzt-1].l);

led_m(lcmd[ledzt-1].m);

}

}

}

/***********************************/

void main()//主函数

{

u8 k;

init();//系统初始化

TR0=1; //定时器开始计时

while(1){

if(ledzt==0xff){led1=(kg1!=0);};//led不在运行状态时根据开关改变led1

k=s();//读取按键值

if((kPin2)!=0){//key2

if(led1==0ledzt==0xff){

led_start();

}

}

if((kPin3)!=0){//key3

ledzt=0xff;

led_m(Pin2|Pin4);

}

ledcx();

}

}

/****************************/

void timer0() interrupt 1//1ms定时器

{   

TH0=(65536-1000)/256;//重载初值

TL0=(65536-1000)%256;

if(ledjs0)ledjs--;

}

关于单片机led灯亮灭程序1s和单片机led灯亮灭程序灭一秒亮一秒的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~