求单片机点动开关控制LED灯的程序

求单片机点动开关控制LED灯的程序,第1张

sbit led =P11;

if(key==1)

delay10ms();

{if(keyi==1)

{ a++;

while(!key);

}}

if(a%3==0)

{

led =~led ;

}

C语言实现LED灯闪烁控制配套51单片机开发板。

#include    //包含单片机寄存器的头文件

/

函数功能:延时一段时间

/

void delay(void)        //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i;       //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;i++)  //做20000次空循环。

;               //什么也不做,等待一个机器周期。

}

/

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

/

void main(void)

{

while(1)      //无限循环。

{

P0=0xfe;   //P1=1111 1110B, P00输出低电平。

delay();   //延时一段时间。

P0=0xff;   //P1=1111 1111B, P00输出高电平。

delay();  //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52h> //头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定义。

void delay_ms(uint);//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

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

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

}

扩展资料:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:百度百科-单片机

#include<reg52h>

#define uint unsigned int

#define uchar unsigned char

#define LED P0

sbit S1=P1^0; 按键1

void delay(uint i)

{

uchar x,j;

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

for(x=0;x<=148;x++);

}

void main()

{

if(s1==0)

{

delay(2);

if(s1==0)

{

LED=0;

}

}

}

这是个按键控制P0 口 当按键按下后P0口的灯会全部点亮,你的题目是控制多个led灯,太笼统了 都大同小异,你自己在看看吧。。。。。。希望能帮到你。

#include<reg51h>

#include<intrinsh>

#define uchar unsigned char

uchar led1,led2;

sbit key1=P1^0;

sbit key2=P1^1;

sbit key3=P1^2;

void delay(int a)

{

uchar i;

while(a--)for(i=0;i<120;i++);

}

main()

{

unsigned int i;

led1=0xfe;

led2=0xfc;

while(1)

{

P0=0x55;

if(key1==0)

{

P0=led1;

led1=_crol_(led1,1);

delay(200);

}

if(key2==0)

{

P0=led2;

led1=_crol_(led1,2);

delay(200);

}

if(key3==0)

{

for(i=1;i<500;i++)

{

P0=0xff;

delay(i);

P0=0x00;

delay(500-i);

}

for(i=1;i<500;i++)

{

P0=0x00;

delay(i);

P0=0xff;

delay(500-i);

}

}

}

}

一键多功能按键识别技术

1.实验任务

开关K1接在P32管脚上,在AT89S51单片机的P00端口接有1个发光二极管,上电的时候,L1接在P10管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。

2.系统板上硬件连线

把“单片机系统”区域中的P32端口连接到“独立式键盘”区域中的K1端口上;把P00连到L1上

3程序设计方法

(1. 设计思想由来

在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。

(2. 设计方法

从上面的要求我们可以看出,L1到亮灭受开关K1来控制,我们给L1亮灭定义出不同的ID号,当L1在亮时,ID=0;当L1在灭时,ID=1;分别给出不同的ID号我们就能够完成上面的任务了

4汇编程序:

ID EQU 30H

K1 BIT P32

L1 BIT P00

ORG 0000H

CLR P17

MOV ID,#00H

START: JB K1,REL ;K1没闭合转

LCALL DELAY10MS ;K1闭合,延时消抖动

JB K1,REL :再判断

INC ID

MOV A,ID

CJNE A,#02,REL

MOV ID,#00H

REL: JNB K1,$ ;等待开关d起

MOV A,ID

CJNE A,#00H,IS0 ;判断相应ID

CLR L1 :ID=0,灯亮

LCALL DELAY光 ;延时

SJMP START

IS0: CJNE A,#01H,START;

SETB L1

LCALL DELAY

SJMP START

DELAY10MS: MOV R6,#20 ;延时10MS子程序

LOOP1: MOV R7,#248

DJNZ R7,$

DJNZ R6,LOOP1

RET

DELAY: MOV R5,#20 ;延时20MS子程序

LOOP2: LCALL DELAY10MS

DJNZ R5,LOOP2

RET

END

以上就是关于求单片机点动开关控制LED灯的程序全部的内容,包括:求单片机点动开关控制LED灯的程序、用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!、单片机中,求用一个按键控制多个led灯的C语言程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存