焊接资讯

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

led灯

单片机控制8个led灯轮流点亮循环4次(单片机实验二LED指示灯循环控制)

工品易达2022-10-15led灯18

单片机实验利用定时器控制八个LED灯每隔1S每四个为一组轮流点亮

03  8只LED左右来回点亮

/*    名称:8只LED左右来回点亮

说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果

*/

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

//延时

void DelayMS(uint x)

{

uchari;

while(x--)

{

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

}

}

//主程序

void main()

{

uchari;

P2=0x01;

while(1)

{

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

{

P2=_crol_(P2,1);//P2的值向左循环移动

DelayMS(150);

}

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

{

P2=_cror_(P2,1);//P2的值向右循环移动

DelayMS(150);

}

}

}

04  花样流水灯

/*    名称:花样流水灯

说明:16只LED分两组按预设的多种花样变换显示

*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

uchar code Pattern_P0[]=

{

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

uchar code Pattern_P2[]=

{

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,

0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff,

0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,

0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,

0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff

};

//延时

void DelayMS(uint x)

{

uchari;

while(x--)

{

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

}

}

//主程序

void main()

{

uchari;

while(1)

{     //从数组中读取数据送至P0和P2口显示

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

{

P0=Pattern_P0[i];

P2=Pattern_P2[i];

DelayMS(100);

}

}

}

05  LED模拟交通灯

/*    名称:LED模拟交通灯

说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

*/

#includereg51.h

#define uchar unsigned char

#define uint unsigned int

sbit RED_A=P0^0;    //东西向灯

sbit YELLOW_A=P0^1;

sbit GREEN_A=P0^2;

sbit RED_B=P0^3;    //南北向灯

sbit YELLOW_B=P0^4;

sbit GREEN_B=P0^5;

uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量

//延时

void DelayMS(uint x)

{

uchari;

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

}

//交通灯切换

void Traffic_Light()

{

switch(Operation_Type)

{

case1:     //东西向绿灯与南北向红灯亮

RED_A=1;YELLOW_A=1;GREEN_A=0;

RED_B=0;YELLOW_B=1;GREEN_B=1;

DelayMS(2000);

Operation_Type=2;

break;

case2:     //东西向黄灯闪烁,绿灯关闭

DelayMS(300);

YELLOW_A=~YELLOW_A;GREEN_A=1;

if(++Flash_Count!=10)return; //闪烁5次

Flash_Count=0;

Operation_Type=3;

break;

case3:     //东西向红灯,南北向绿灯亮

RED_A=0;YELLOW_A=1;GREEN_A=1;

RED_B=1;YELLOW_B=1;GREEN_B=0;

DelayMS(2000);

Operation_Type=4;

break;

case4:     //南北向黄灯闪烁5次

DelayMS(300);

YELLOW_B=~YELLOW_B;GREEN_B=1;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

}

}

//主程序

void main()

{

while(1)Traffic_Light();

}

06  单只数码管循环显示0~9

/*    名称:单只数码管循环显示0~9

说明:主程序中的循环语句反复将0~9的段码送至P0口,使数字0~9循环显示

*/

#includereg51.h

#includeintrins.h

#define uchar unsigned char

#define uint unsigned int

uchar codeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

//延时

void DelayMS(uint x)

{

uchart;

while(x--)for(t=0;t120;t++);

}

//主程序

void main()

{

uchari=0;

P0=0x00;

while(1)

{/* for(;i11;i++){ P0=~DSY_CODE[i]; DelayMS(300);}  //注:另一方案 */

P0=~DSY_CODE[i];

i=(i+1)%10;

DelayMS(300);

}

}

单片机C语言如何实现8个LED流水灯来回流动?

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。

2、具体实现方法可以参考如下程序:

拓展资料:

1、单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

参考资料:百度百科:单片机

[img]

单片机控制8个led灯交替点亮的程序?

#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的位置循环左移一位

}

}

利用单片机控制八个led灯,要求:四亮四灭 (各四次),全亮全灭(各四次),怎么编程

// 单片机控制八个led灯, 仿真实例 可以改为 各种花样。

#includereg52.h

#define uchar unsigned char

#define uint unsigned int

unsigned char TAB[]= {0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0xaa,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0xff,0xff}; // 改变这里 LED 各种花样

uchar t,i;

void main()

{

TMOD=0x10;

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

EA=1;

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

TR1=1;//启动定时器1

t=0;

i=0;

while(1)

{

}

}

void timer1() interrupt 3

{

TH1=(65535-50000)/256;  // 50ms一次

TL1=(65535-50000)%256;

t++;

if(t==20)

{

t=0;

P1=TAB[i];

i++;

if(i==18) { i=0;}

}

}

利用单片机控制八个led灯,要求:全亮全灭 ,四亮四灭,以从右到左的 流水形式编程,不是用c语言 编

#include reg52.h

#define LED P0 /*宏定义LED接于P0口*/

void delay (int); /*声明延迟子函数*/

main()

{

int i;

while(1)

{

LED=0xfe;

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

{

delay(100);

LED=(LED1)|0x01; /*最低位LED灯左移一位后进行或运算使得最低位不会为“0”*/

}

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

{

delay(100);

LED=(LED1)|0x80; /*最低位LED灯右移一位后进行或运算使得最高位不会为“0”*/

}

LED=0xff;

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

{

delay(300);

LED=~LED; /*所有的LED灯取反全亮或者全灭*/

}

}

}

八个发光二极管至少四种不同的循环点亮,并且每隔5秒闪烁4次,画出硬件控制电路,编写出程序

很简单的,用取表法就行了,这个是我刚编的,你改时间对就行了,,我仿真过了,OK了

#include reg51.H

#define led P1

#define uchar unsigned char

#define uint unsigned int

void delay(uchar i);

uchar z,t;

uint y;

uint code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,

0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xE7,0xC3,0x81,0x00,0x7E,0x3C,0x18,0x00,0xFF,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xFF

};

void main()

{

while(1)

{  for(z=0;z32;z++)

{led=table[z];

delay(5);

y++;

}

if(z==32)

{for(t=0;t5;t++)

{

led=~led;

delay(10);

}

}

}

}

void delay(uchar i)

{uint j,k;

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

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

}

关于单片机控制8个led灯轮流点亮循环4次和单片机实验二LED指示灯循环控制的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016

发表评论

评论列表

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