求写一个单片机控制LED灯程序

求写一个单片机控制LED灯程序,第1张

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

#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();

}

}

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口--回到开始

电路图 如下:

#include<reg52h>

#define uint unsigned int

#define uchar unsigned char

sbit duan=P2^6;

sbit wei=P2^7;

uchar code digit[6]={0xf9,0xa4,0xb0,0x99,0x92,0X82};

void delay(xms)

{

uint i,j;

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

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

}

void main()

{

while(1)

{

wei=1;

P0=0x01;

wei=0;

duan=1;

P0=digit[0];

duan=0;

delay(500);

wei=1;

P0=0x02;

wei=0;

duan=1;

P0=digit[1];

duan=0;

delay(500);

wei=1;

P0=0x04;

wei=0;

duan=1;

P0=digit[2];

duan=0;

delay(500);

wei=1;

P0=0x08;

wei=0;

duan=1;

P0=digit[3];

duan=0;

delay(500);

wei=1;

P0=0x10;

wei=0;

duan=1;

P0=digit[4];

duan=0;

delay(500);

wei=1;

P0=0x20;

wei=0;

duan=1;

P0=digit[5];

duan=0;

delay(500);

}

}

以上就是关于求写一个单片机控制LED灯程序全部的内容,包括:求写一个单片机控制LED灯程序、单片机按键控制LED灯亮灭程序、单片机led显示c程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9283070.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存