焊接资讯

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

led灯

嵌入式按键控制led灯实验报告心得体会(按键控制LED实验心得体会)

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

现在在学arm Linux嵌入式,刚写的裸机程序,想用中断的方式来控制LED灯的亮灭,可为什么我

硬件平台:FS2410开发平台:MDK3.5程序源码:GPFCON EQU 0x56000050 ;Port F control GPFDAT EQU 0x56000054 ;Port F data GPFUP EQU 0x56000058 ;Pull-up control F AREA myarea, CODE ENTRY LDR r0, =0x5500 LDR r1, = GPFCON STR r0,[r1] LDR...

[img]

在嵌入式学习,中断实验LED1,LED2,LED3循环点亮五秒,我用的是mdelay(500

#inlcude reg51.h

sbit LED1 = P1^0; // LED 高电平亮

sbit LED2 = P1^1;

sbit LED3 = P1^2;

sbit KEY1 = P2^0;//按键低电平有效

sbit KEY2 = P2^1;

sbit KEY3 = P2^2;

sbit KEY4 = P2^3;

char KEY1_T,KEY2_T,KEY3_T,KEY4_T;

void main()

{

while(1)

{

if ( (KEY1 == 0)(KEY1_T == 0) ){LED1 = 1;LED2 = 1;LED3 = 1;KEY1_T = 1;} //总控开

else if ( (KEY1 == 0)(KEY1_T == 1) ){LED1 = 0;LED2 = 0;LED3 = 0;KEY1_T = 0;} //总控关

if ( (KEY2 == 0)(KEY2_T == 0) ){LED1 = 1;KEY2_T = 1;} //LED1 开

else if ( (KEY2 == 0)(KEY2_T == 1) ){LED1 = 0;KEY2_T = 0;} //LED1 关

if ( (KEY3 == 0)(KEY3_T == 0) ){LED2 = 1;KEY3_T = 1;} //LED2 开

else if ( (KEY3 == 0)(KEY3_T == 1) ){LED2 = 0;KEY3_T = 0;} //LED2关

if ( (KEY4 == 0)(KEY4_T == 0) ){LED3 = 1;KEY4_T = 1;} //LED3 开

else if ( (KEY4 == 0)(KEY4_T == 1) ){LED3 = 0;KEY4_T = 0;} //LED3关

}

}

自己在弄一下按键!

电工基础双控灯后的心得体会?

电工实习是一门教我们电子线路设计与制作的基本技能的课程,老师的谆谆教导,同学的融洽合作,以及这门课程自身所散发出的强大的实践性与趣味性一下子就深深的吸引住了我。第一颗圆滑漂亮的焊点,第一张自行设计的PCB版图,以及生平第一次作出了可以用于日常生活的充电器,好奇,兴奋,强烈的成就感,真的不知道该用什么来形容了。虽然说电工实习一搞就是一天,辛苦那是必然的,可是正所谓乐在其中,每一次的实习都像在玩游戏一样极具有挑战性,。

基于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);

}  

}

ARM指令实验中编写一段代码让LED灯D13不停的闪烁

以下是本人在mini2440开发板自己亲自总结的点灯程序,我不知道你用的是什么开发板,相信以你的能力转换一下就可以解决了!要使他 “不停的闪烁”其实就是利用循环控制相应寄存器的输出输入状态!

@***************

@file:head.s

@功能:点亮两个led灯

@***************

@下面三行为工业流程,固定写法

.text

.global _start

_start:

ldr r0,=0x56000010 @将r0设置为GPBCON寄存器,并装载GPBCON寄存器的地址

ldr r1,=0x15400 @设置GPB5-8四个引脚为输出状态(CPU发出信号给GPB引脚)

str r1,[r0] @把寄存器中的数据r1写道内存中去

ldr r0,=0x56000014 @将r0设置为GPBDAT寄存器,并装载GPBDAT寄存器的地址

flash:

ldr r1,=0x180 @对GPBDAT寄存器的5-8位进行设置

str r1,[r0] @把寄存器中的数据r1写道内存中去,四个灯的状态两不亮

bl wait @跳转的同时保存下一条指令的地址给链接寄存器

ldr r1,=0x1e0 @对GPBDAT寄存器的5-8位进行设置

str r1,[r0] @把寄存器中的数据r1写道内存中去,四个灯的状态全不亮

bl wait

b flash

@下面一个循环(相当延时)

wait:

ldr r2,=0xfff0

loop:

subs r2,r2,#1

bne loop

mov pc,lr @利用链接寄存器跳回去

stop:

b stop

嵌入式linux开发板点灯实验,有个小问题,

如果你知道控制ed这个进程名的话,假如是:LEDPlay,在你的系统启动后进入控制台,在控制台输入killall -KILL LEDPlay就可以关闭该进程了。还有一种方法,如果这个LED进程是自动启动的话,而且你不想让它开机后自动启动,可以修改脚本文件,具体修改什么样的脚本文件可以上网查查。开发板附送的资料里肯定有这方面的描述,可能是在/ect/init.d/rcs里。

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

发表评论

评论列表

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