keil编程led灯循环点亮51(keil编程led灯交替闪烁)

Keil编程:51单片机键盘控制LED

#includereg51.h

#includeintrins.h

#define uchar unsigned char

uchar led1,led2;

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

void delay(int a)

{

uchar i;

while(a--)for(i=0;i120;i++);

}

main()

{

unsigned int i;

led1=0xfe;

led2=0xfc;

while(1)

{

P0=0x55;

if(key1==0)

{

P0=led1;

led1=_crol_(led1,1);

delay(200);

}

if(key2==0)

{

P0=led2;

led1=_crol_(led1,2);

delay(200);

}

if(key3==0)

{

for(i=1;i500;i++)

{

P0=0xff;

delay(i);

P0=0x00;

delay(500-i);

}

for(i=1;i500;i++)

{

P0=0x00;

delay(i);

P0=0xff;

delay(500-i);

}

}

}

}

keil软件用单片机控制8个LED流水灯来回点亮(C语言程序)

#include "reg51.h"

main()

{

unsigned int i,j;

while(1)

{

P1=0xfe; //点亮第一个LED

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

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

P1=0xfd; //点亮第二个LED

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

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

P1=0xfb; //点亮第三个LED

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

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

P1=0xf7; //点亮第四个LED

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

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

P1=0xef; //点亮第五个LED

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

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

P1=0xdf; //点亮第六个LED

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

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

P1=0xbf; //点亮第七个LED

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

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

P1=0x7f; //点亮第八个LED

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

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

}

}

或:

#include "reg51.h"

void delay(unsigned int t)

{

unsigned inti,j;

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

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

}

main()

{

unsigned char w,i;

while(1)

{

w=0xfe;

for (i=0;i8;i++)

{

P1=w; //循环点亮LED

w=1; //点亮灯的位置移动,最低位补0

w=w|0x01; //将最低位置1

delay(500); //延时

}

}

}

或:

#include "reg51.h"

//程序中使用_crol_函数,所以要包含头文件"intrins.h"

#include "intrins.h"

void delay(unsigned int t)

{

unsigned int i,j;

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

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

}

main()

{

unsigned char temp;

temp=0xfe;

while(1)

{

P1=temp;

delay(500); //延时

temp=_crol_(temp,1); //点亮LED的位置循环左移一位

}

}

怎么用51单片机一个IO口控制两个LED分别亮

1、新建项目,如图所示。

2、添加头文件,创建延迟函数。

3、创建C主函数。

4、添加死循环效果。

5、点亮LED灯。P1=0x7e;二进制11111110。

6、添加延迟效果即可。

注意事项:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

求大神在keil上帮写51单片机C语言程序

//第一个实验:

//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7

//假设K1按键在P2.3引脚

#includereg51.h

#includeintrins.h

sbit k1=P2^3;//假设K1按键在P2.3引脚

void main()

{

P0=0xfe;

while(1)

{

if(k1==0)

{

while(k1==0);

P0=_crol_(P0,1);

}

}

}

//第二个实验:

//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7

#includereg51.h

char led[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};

void main()

{

char i=0;

char counter=0;

TMOD=0x01;//T0 工作方式1

TH0=(655356-50000)/256;//延时50ms

TL0=(655356-50000)%256;//延时50ms

TR0=1;//启动T0

while(1)

{

if(TF0==1)//查询

{

TH0=(655356-50000)/256;//重新延时50ms

TL0=(655356-50000)%256;//重新延时50ms

counter++;

if(counter==10)//延时0.5秒

{

counter=0;//重新开始新一轮0.5秒延时

i++;

if(i==16)

{

i=0;

}

P0=led[i];//点灯

}

}

}

}

在KEIL软件中建立51单片机工程,要求每隔500ms点亮上题中1个led灯,依次完成8个led灯点亮过程

#include reg52.h

//点亮八位共阳

unsigned char led=0xfe; //8个bit位的数

unsigned int counter=0;

void time_init()

{

TMOD=0x01;//定时器0,工作模式1,16位定时器

TH0=0xb4;

TL0=0x00; //定时器初始值46080,定时50ms;

EA=1;//开总中断

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

TR0=1;//运行定时器

}

void main()

{

time_init();

for(;;)

{

P1=led;

}

}

void time_inter() interrupt 1

{

IT0=1;//清除中断标志

TH0=0xb4;

TL0=0x00;

counter++;

if(counter==10) //500ms延时

{

counter=0;

led=led1;//点亮下一个灯

}

}

//点亮八位共阴

/*

unsigned char led=0x01,led1=0x01; //8个bit位的数

unsigned int counter=0;

void time_init()

{

TMOD=0x01;//定时器0,工作模式1,16位定时器

TH0=0xb4;

TL0=0x00; //定时器初始值46080,定时50ms;

EA=1;//开总中断

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

TR0=1;//运行定时器

}

void main()

{

time_init();

for(;;)

{

P1=led;

}

}

void time_inter() interrupt 1

{

IT0=1;//清除中断标志

TH0=0xb4;

TL0=0x00;

counter++;

if(counter==10) //500ms延时

{

counter=0;

led1=led;

led1=led11;//点亮下一个灯

led=led|led1;

}

}

*/

个人自写,亲试有效。欢迎交流

361知讯网

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

发表评论

评论列表

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