焊接资讯

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

led灯

嵌入式按键控制led灯代码(嵌入式指示灯)

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

单片机C语言按键控制LED灯

其实是一样的,也没什么哪个规范这一说,这个看个人习惯了

首先if(SW13==0)是判断此引脚是否为0 (按键按下)

然后一个delay用于按键防抖动

没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮

然后通过while判断按键是否松开,如果松开的话就继续执行LED_OFF将LED关闭

而注释掉的那段是依靠while函数直接判断按键是否处于按下状态

是的话就循环执行LED_ON函数直至判断按键松开(SW13=1)后在继续执行到LED_OFF函数使LED 关闭

不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作

单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。

2、编写相应的代码:#includereg52.h    //定义单片机的头文件sbit led=P2^0;           //定义单片机的管脚,void main(void)         //主函数{    while(1)                 //无限循环     {led=0x1f;         //点亮前面三个灯。这里是十六进制的换算,                                                    //不懂得可以查一下资料  }。

3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。

4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。

5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。

6、程序下载进单片机以后就能够看到八个led点亮了前面三个。

跪求!!!STC89C52单片机,用八个按键控制分别控制八个LED灯的代码(C语言)

[已完成!]电路图如下,

#include reg52.h

#include stdio.h

unsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};

void delay_ms(unsigned int ct)        //延时

{

unsigned int t,i;

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

{

t=115;

while(--t);

}

}

void main(void)

{

// Write your code here

unsigned char ct=100;

while (1)         //主循环

{

switch(P1)  //P1口作为独立按键输入端,检测端口电平并做如下判断

{

case 0xfe:P0=dofly_table[1];LED0=0;break;//0xfe = 1111 1110,

//说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环

case 0xfd:P0=dofly_table[2];LED1=0;break;//调用表中的第三个

//元素 0xa4 下标 0 才表示数组中的第一个元素

case 0xfb:P0=table[3];LED2=0; break;

case 0xf7:P0=table[4];LED3=0;break;

case 0xef:P0=table[5];LED4=0;break;

case 0xdf:P0=table[6];LED5=0;break;

case 0xbf:P0=table[7];LED6=0;break;

case 0x7f:P0=table[8];LED7=0;break;

default:break;    //如果都没按下,直接跳出

}

//主循环中添加其他需要一直工作的程序

}

}

//如果帮到你的话,点一个赞吧!硬件电路工程师-帝国卫兵Tt

需要一个用按键控制一个LED灯亮度的C语言程序

/**52系列单片机,晶振12MHz,P1.0输出100Hz方波(即周期10ms),方波由T0定时器产生

P1.3接按键 K1,每按一次按键,方波占空比改变一次,依次为:1/10→2/10→……→9/10→1/10,如此循环**/

#include"reg52.h" //包含52系列头文件

#define uchar unsigned char //定义 无符号字符型

#define uint unsigned int //定义 无符号整型

#define TRUE 1 //定义 逻辑真

#define FALSE 0 //定义 逻辑假

#define th0 0xfc //100Hz(10ms),占空比分母10,则其最小时间单位应该为10ms/10=1ms,故定时器T0定时时间为 1ms

#define tl0 0x18 //1ms at 12HMz Fosc

#define DutyDeno 10 //定义 占空比分母 为:10

sbit WaveOut=P1^0; //定义 方波输出 接口

sbit Key1=P1^3; //定义 按键Key1 接口

uchar DutyNume=1; //定义 占空比分子 变量,并初始化为 1(即 占空比 为:1/10)

void Timer0() interrupt 1 //定时器T0 中断 函数

{

static uchar duty_time=0; //定义静态变量,作为 占空比 输出时间的参考值(1ms)

TL0=tl0;

TH0=th0; //重赋定时器初值,1ms

duty_time=++duty_time%DutyDeno; //该句等效于:duty_time++;duty_time%=DutyDeno;

if(duty_timeDutyDeno) WaveOut=1; //若计时时间小于 占空比分子,则输出应为 高电平

else WaveOut=0; //若计时时间大于 占空比分子,则输出应为 低电平

}

void TimerInit() //定时器初始化 函数

{

TMOD=0x01; //T0 16位定时器

EA=1; //允许系统中断

ET0=1; //允许T0中断

TH0=th0;

TL0=tl0; //1ms 初值

TR0=1; //T0开始计时

}

void KeyResp() //按键响应 函数

{

static bit KeyDownFlag,KeyReadyFlag; //定义 静态标志位,KeyDownFlag 按键按下标志,KeyReadyFlag 按键准备(响应)标志

if(!Key1) //若按键Key1 被按下

{

KeyDownFlag=TRUE; //按键按下标志 置位

KeyReadyFlag=TRUE; //按键准备标志 置位

}

else KeyDownFlag=FALSE; //若按键Key1 无按下,则清空 按键按下标志

if(!KeyDownFlag KeyReadyFlag) //若 按键已准备,且按键无按下(即 松手状态)

{

DutyNume++; //占空比分子 加1

if(DutyNume==DutyDeno) DutyNume=1; //若 占空比分子=分母,则返回 1

KeyReadyFlag=FALSE; //按键处理完毕,清 按键准备标志

}

}

void main() //主函数

{

TimerInit(); //调用 定时器初始化 函数

while(1) //循环系统

{

KeyResp(); //调用 按键响应 函数

}

}

方波输出接口接灯;

按键控制led灯的程序

单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4

程序:

ORG

00H

START:

MOV

A,P1

ANL

A,#0F0H

RR

A

RR

A

RR

A

RR

A

ORl

A,#0F0H

MOV

P1,A

SJMP

START

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

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

基于STM32的嵌入式系统:编程实现2个按钮控制LED灯,按下button1,LED1翻转;按下button2,LED2翻转。

我不知道为什么中文复制之后这里变乱码了,所以截图作为参照,代码附在后面:

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h" 

#include "key.h" 

//°´¼ü´¦Àíº¯Êý

//·µ»Ø°´¼üÖµ

//mode:0,²»Ö§³ÖÁ¬Ðø°´;1,Ö§³ÖÁ¬Ðø°´;

//·µ»ØÖµ£º

//0£¬Ã»ÓÐÈκΰ´¼ü°´ÏÂ

//KEY0_PRES£¬KEY0°´ÏÂ

//KEY1_PRES£¬KEY1°´ÏÂ

//WKUP_PRES£¬WK_UP°´Ï 

//×¢Òâ´Ëº¯ÊýÓÐÏìÓ¦ÓÅÏȼ¶,KEY0KEY1WK_UP!!

u8 KEY_Scan(u8 mode)

{  

static u8 key_up=1;//°´¼ü°´ËÉ¿ª±êÖ¾

if(mode)key_up=1;  //Ö§³ÖÁ¬°´   

if(key_up(KEY0==0||KEY1==0||WK_UP==1))

{

delay_ms(10);//È¥¶¶¶¯ 

key_up=0;

if(KEY0==0)return KEY0_PRES;

else if(KEY1==0)return KEY1_PRES;

else if(WK_UP==1)return WKUP_PRES; 

}else if(KEY0==1KEY1==1WK_UP==0)key_up=1;       

return 0;// ÎÞ°´¼ü°´ÏÂ

}

int main(void)

{  

vu8 t;   

Stm32_Clock_Init(9);  //ϵͳʱÖÓÉèÖÃ

delay_init(72);       //ÑÓʱ³õʼ»¯ 

LED_Init();      //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú

KEY_Init();           //³õʼ»¯Óë°´¼üÁ¬½ÓµÄÓ²¼þ½Ó¿Ú

LED0=0; //µãÁÁLED

while(1)

{

t=KEY_Scan(0); //µÃµ½¼üÖµ

switch(t)

{  

case KEY0_PRES:

LED0=!LED0;

break;

case KEY1_PRES:

LED1=!LED1;

break;

case WKUP_PRES:

LED0=!LED0;

LED1=!LED1;

break;

default:

delay_ms(10);

}  

}

关于嵌入式按键控制led灯代码和嵌入式指示灯的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。微信号:ymsc_2016

发表评论

评论列表

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