独立按键c语言控制led灯,51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)…

一、思路及相关问题

1、逻辑思路:

当按下key1时 led1亮起来 因为按下去具有瞬时性不用while,用if语句,当松开时,用while(!key1) ,函数调用。

先在脑海里想象它的大致运行过程,其次在仿真软件protues上摆好元器件并连接,最后用keil4写对应代码。

需注意keil4软件上的设置如波特率,添加文件,勾选等等。

至少要了解C语言程序设计的基本功。

2、关于消抖:

通常的按键所用开关为机械性开关,当机械触电断开、闭合时、由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开、因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖

按键消抖有两种,

一种是软件消抖: ;硬件消抖是通过采用外加零件来消除干扰抖动杂脉冲波,通常采用电容滤波、单稳延时电路等等。

一种是软件消抖: 延时函数

参考链接:http://www.eeworld.com.cn/mcu/2012/0806/article_9776.html

二、有proteus及keil进行仿真效果

219901997_2_20210412065609472.png

219901997_4_20210412065609581.png

219901997_5_20210412065609691

三、打开keil4创建工程 代码及注释 调好波特率及添加文件相关工作 —–代码如下

#include

unsigned int i;

sbit led1=P2^0; //定义第一个led灯

sbit led2=P2^1; //定义第二个led灯

sbit led3=P2^2; //定义第三个led灯

sbit led4=P2^3; //定义第四个led灯

sbit key1=P3^1; __ //定义第一个开关__

sbit key2=P3^2; //定义第二个开关

sbit key3=P3^3; //定义第三个开关

sbit key4=P3^4; //定义第四个开关

void delay() //延时函数 用于消抖

{

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

}

void key()

{

if(key10)

{

delay(); //延时 消抖

if(key10) //表示K1按下去

{

led1=0; // led1灯点亮

}

while(!key1); //表示_松开_按键key1

}

if(key20)

{

delay(); //延时 消抖

if(key20) //表示key2键被按下

{

led2=0; // led2灯点亮

}

while(!key2); //表示松开按键key2}if(k3==0) { delay(); //延时 消抖 if(key3==0) //表示key3键被按下 { led3=0; // led3灯点亮 } while(!key3); //表示松开按键key3}if(key4==0) { delay(); //延时 消抖 if(key4==0) //表示key4键被按下 { led4=0; // led4灯点亮 } while(!key4); //表示松开按键key4}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

211

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

}

void main()

{

while(1)

{

key();

}

}

四、运行程序后成功后,打开proteus右键单击单片机AT89C51,找到编辑,然后添加hex文件

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113137 人正在系统学习中 相关资源:专业LED光动画制作软件(安装后直接用!)_setup安装包-Delphi工具…

来源:glow law

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月16日
下一篇 2021年4月16日

相关推荐