8个LED指示灯循环闪烁的程序(单片机)

8个LED指示灯循环闪烁的程序(单片机),第1张

1:设置一个变量zhidaoi,它可以从0循环到3

2:检测一个已取消缓冲的键。按“+1”

3:当I值为每个值时,执行相应的模式。

水量灯参考程序

#include

#include

#定义uchar无符号字符

Ucharj,温度;

无效延迟(无符号整型ms)

Uchart;

(女士)

对于(t = 0;T < 123;T + +);

Voidmain()

P1=0XFF;

延迟(500);

Temp=0xfe;//奇怪,led连接在P2.3~P2.6

对于(j = 0;J < 4;J + +)

P1=temp;

延迟(500);

Temp=_crol_(Temp,1);

P1=0XFF;

(1);

扩展资料:

注意事项:

#include“reg52。这个文件为单片机定义了一些特殊的功能寄存器

Typedef无符号int在16以下;//以声明的方式定义数据类型

无符号charu8;

//LED灯

Sbitleda=P0;

Sbitled1=P0^0;

Sbitled2=P0^1;

Sbitled3=P0^2;

Sbitled4=P0^3;

Sbitled5=P0^4;

Sbitled6=P0^5;

Sbitled7=P0^6;

Sbitled8=P0^7;

无效延迟(16岁以下)

,(我);

Voidmain()

而(1)

勒达=1;//所有的灯都亮着

//从左到右熄灭

Led1=0;

延迟(50000);//延迟时间约为450毫秒

Led2=0;

延迟(50000);//延迟时间约为450毫秒

Led3=0;

延迟(50000);//延迟时间约为450毫秒

Led4=0;

延迟(50000);//延迟时间约为450毫秒

Led5=0;

延迟(50000);//延迟时间约为450毫秒

Led6=0;

延迟(50000);//延迟时间约为450毫秒

Led7=0;

延迟(50000);//延迟时间约为450毫秒

Led8=0;

延迟(100000);//延迟大约900毫秒

//从右到左照明

Led8=1;

延迟(50000);//延迟时间约为450毫秒

Led7=1;

延迟(50000);//延迟时间约为450毫秒

Led6=1;

延迟(50000);//延迟时间约为450毫秒

Led5=1;

延迟(50000);//延迟时间约为450毫秒

Led4=1;

延迟(50000);//延迟时间约为450毫秒

Led3=1;

延迟(50000);//延迟时间约为450毫秒

Led2=1;

延迟(50000);//延迟时间约为450毫秒

Led1=1;

延迟(50000);//延迟时间约为450毫秒

勒达=1;//所有的灯都亮着

void Dis(uint j) //显示程序

{

static uchar disp_bit = 0; //这里的"static"关键词只对disp_bit赋值一次,为0,静态变量

led_send_byte(disp_bit,disp_buf[disp_bit]); //disp_bit是要显示的数码管,disp_buf[disp_bit]是数码管中要显示的数据

disp_bit= (++disp_bit) % 4; //disp_bit一直在0~3中被赋值

Led_Disp(j); //这个没懂你j的意思,具体看你Led_Disp()这个函数是做数码用的

不懂得地方可以随时回复我。

希望我的回答能帮助到你。

led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led  的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;}

使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?

单片机的P10-P13接四个发光二极管L1-L4的阴极,P14-P17接四个开关K1-K4

程序:

ORG 00H

START: MOV A,P1

ANL A,#0F0H

RR A

RR A

ORl A,#0F0H

MOV P1,A

SJMP START

可以检测单个按键,也可以同时检测多个按键

过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始

1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。

2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。

3、接着创建延迟函数,如下图所示,输入以下代码。

4、然后创建C语言主函数,如下图所示,输入以下代码。

5、接着输入对输出取反,最后调用延迟函数,如下图所示就完成了。

#include "REG52H"

//控制引脚定义

sbit LED1 = PXX; //P00-P37任意引脚

sbit LED12 = PXX;

//宏定义灯亮灯灭

#define LED1_ON( ) LED1 =0 //阳极接电源

#define LED1_OFF( ) LED1 =1 //阳极接电源

#define LED12_ON( ) LED12 =0 //阳极接电源

#define LED12_OFF( ) LED12 =1 //阳极接电源

void Init_GPIO( )//端口引脚初始化,关闭所有指示灯

{

LED1_OFF( ) ;

LED12_OFF( ) ;

}

void Delay_ms( u16 dat ) //延时函数

{

u16 i, j;

for(i = dat; i>0; i--)

{

for (j=300; j>0; j--);

}

}

int main( ) //主函数

{

Init_GPIO( );//引脚初始化

while(1) //大循环

{

LED1_ON( );//点亮第一个LED

LED2_OFF( );

LED12_OFF( );

Delay_ms(1000);//延时 参数自己可以根据晶振频率自己调节

LED1_OFF( ); //点亮第二个LED

LED2_ON( );

LED3_OFF( );

LED12_OFF( );

Delay_ms(1000);

//按照上面修改;

LED1_OFF( );//点亮第十二个LED

LED2_OFF );

LED3_OFF( );

LED12_ON( );

Delay_ms(1000);

}

}

我给你写个参考程序,看看程序符不符合你的要求,程序如下:

#include "REG52H"

// LED灯端口定义

sbit GPIO_Exio1 = P0^0;

sbit GPIO_Exio2 = P0^1;

sbit GPIO_Exio3 = P0^2;

sbit GPIO_Exio4 = P0^3;

// 按键输入端口

sbit KEY1_Exitm = P1^0;

sbit KEY2_Exitm = P1^1;

sbit KEY3_Exitm = P1^2;

sbit KEY4_Exitm = P1^3;

/

延时1ms

/

void Delay_1ms(unsigned int Cnt)

{

unsigned int x, y;

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

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

}

/

按键扫描子函数

/

void KEY_ScanExtio(void)

{

// 判断K1 、K2其中一个按键按下

if((KEY1_Exitm == 0) || (KEY2_Exitm == 0))

{

Delay_1ms(5);

if((KEY1_Exitm == 0) || (KEY2_Exitm == 0))

{

// 按键按下点亮LED

GPIO_Exio1 = 0;

GPIO_Exio2 = 0;

GPIO_Exio3 = 0;

GPIO_Exio4 = 0;

}

while((KEY1_Exitm == 0) || (KEY2_Exitm == 0)); // 按键松手检测

// 按键松手后LED灭

GPIO_Exio1 = 1;

GPIO_Exio2 = 1;

GPIO_Exio3 = 1;

GPIO_Exio4 = 1;

}

// 判断K3 、K4其中一个按键按下

if((KEY3_Exitm == 0) || (KEY4_Exitm == 0))

{

Delay_1ms(5);

if((KEY3_Exitm == 0) || (KEY4_Exitm == 0))

{

}

while((KEY3_Exitm == 0) || (KEY4_Exitm == 0)); // 按键松手检测

// 按键松手后取反LED

GPIO_Exio1 = ~GPIO_Exio1;

GPIO_Exio2 = ~GPIO_Exio2;

GPIO_Exio3 = ~GPIO_Exio3;

GPIO_Exio4 = ~GPIO_Exio4;

}

}

/

主函数

/

int main(void)

{

// 初始化IO

P0 = 0xFF;

P1 = 0xFF;

P2 = 0xFF;

P3 = 0xFF;

while(1)

{

KEY_ScanExtio();

}

}

c语言程序很简单:

#include<reg51h>//包含头文件

sbit LED=P1^0;//位变量定义

void main()//主程序

{

unsigned char i;//声明一个变量

for(i=0;i<5;i++)/循环5次

{

LED=0;//亮

delayms(500);//延时

LED=1;//灭

delayms(500);//延时

}

while(1);//停止不动

}

延时子程序随便搜一个,如果时间差别太大,可调某些参数

以上就是关于8个LED指示灯循环闪烁的程序(单片机)全部的内容,包括:8个LED指示灯循环闪烁的程序(单片机)、单片机 LED显示程序、单片机按键控制LED灯亮灭程序怎么做到的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存