按键控制led灯的程序

按键控制led灯的程序,第1张

单片机的P10-P13接四个发光二极管L1-L4的阴极,P14-P17接四个开关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口——回到开始

首先要看Led灯和单片机的连接情况,如果只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那就

灯亮:

DDRA |= BIT(0); //输出

PORTA |= BIT(0);//高电平

灯灭:

DDRA |= BIT(0); //输出

PORTA &= ~BIT(0);//低电平

其余的就看你电路如何连接的,每个端口寄存器的每一位控制一个引脚,你可以查查芯片的数据手册,上边有个表格的。

如果你要控制灯的亮暗程度,选择使用PWM输出来控制,需要看定时计数器。

void main (void)

{

unsigned char i,j;

i = 0;

IO_Init();

while(1)

    {

    Motor = 1;

    if (key ==0)

        {

        delay(10);

        if (key ==0)

            {

            while(key==0);

            i++;

            i%=4;

            Set_Grade(i);

            }

         }

     }

}

#include "reg51h"

main()

{

unsigned int i,j;

while(1)

{

P1=0xfe; //点亮第一个LED

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

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

P1=0xfd; //点亮第二个LED

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

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

P1=0xfb; //点亮第三个LED

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

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

P1=0xf7; //点亮第四个LED

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

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

P1=0xef; //点亮第五个LED

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

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

P1=0xdf; //点亮第六个LED

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

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

P1=0xbf; //点亮第七个LED

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

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

P1=0x7f; //点亮第八个LED

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

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

}

}

或:

#include "reg51h"

void delay(unsigned int t)

{

unsigned inti,j;

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

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

}

main()

{

unsigned char w,i;

while(1)

{

w=0xfe;

for (i=0;i<8;i++)

{

P1=w; //循环点亮LED

w<<=1; //点亮灯的位置移动,最低位补0

w=w|0x01; //将最低位置1

delay(500); //延时

}

}

}

或:

#include "reg51h"

//程序中使用_crol_函数,所以要包含头文件"intrinsh"

#include "intrinsh"

void delay(unsigned int t)

{

unsigned int i,j;

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

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

}

main()

{

unsigned char temp;

temp=0xfe;

while(1)

{

P1=temp;

delay(500); //延时

temp=_crol_(temp,1); //点亮LED的位置循环左移一位

}

}

char LED;

sbit key1down=P1^0 ; // 设开关key1连接此端口

sbit key2down=P1^1 ; // 设开关key2连接此端口

void main(){

P0=0xff; // 输出低电平LED亮

LED=0xfe;

while(1){

P0=LED; delay();

if(key1){ LED <<= 1 ; } // 将LED左移一位;

if(key2){ LED >>= 1 ; LED |=0x80; } // 将LED右移一位;

if(key1down==0) { key1=1; key2=0;}

if(key2down==0) { key1=0; key2=1;}

}

没学过51就想搞飞思卡尔单片机

,你至少要懂单片机

思路

1

你用蓝牙

你肯定要有蓝牙模块和你的手机配对

2

蓝牙模块通过串口和单片机通信

蓝牙模块的波特率等于你单片机的波特率

3

先确定蓝牙能够发送到pc机

4自己定个编码

5编写飞思卡尔串口程序

6根据编码控制端口

以上就是关于按键控制led灯的程序全部的内容,包括:按键控制led灯的程序、C语言编程控制LED灯亮灭、STC 15W101 控制LED灯小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存