独立按键控制LED灯.docx

上传人:b****8 文档编号:12439435 上传时间:2023-06-05 格式:DOCX 页数:11 大小:377.11KB
下载 相关 举报
独立按键控制LED灯.docx_第1页
第1页 / 共11页
独立按键控制LED灯.docx_第2页
第2页 / 共11页
独立按键控制LED灯.docx_第3页
第3页 / 共11页
独立按键控制LED灯.docx_第4页
第4页 / 共11页
独立按键控制LED灯.docx_第5页
第5页 / 共11页
独立按键控制LED灯.docx_第6页
第6页 / 共11页
独立按键控制LED灯.docx_第7页
第7页 / 共11页
独立按键控制LED灯.docx_第8页
第8页 / 共11页
独立按键控制LED灯.docx_第9页
第9页 / 共11页
独立按键控制LED灯.docx_第10页
第10页 / 共11页
独立按键控制LED灯.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

独立按键控制LED灯.docx

《独立按键控制LED灯.docx》由会员分享,可在线阅读,更多相关《独立按键控制LED灯.docx(11页珍藏版)》请在冰点文库上搜索。

独立按键控制LED灯.docx

独立按键控制LED灯

项目五独立按键控制LED灯

1.掌握独立按键消抖原理

2.掌握独立按键接口电路设计

3.掌握独立按键控制LED灯的程序编写

於Q项目任务

1.设计独立按键控制LED的硬件电路

2.编写程序分别实现按下按键1和按键2,LED灯闪烁方式不同

3.下载程序到单片机中,运行程序观察结果并进行软硬件的联合调试

键盘是常见的计算机输入设备,在单片机应用中,按键可以设置电子钟的时间;简易计算器中,按键可以输入数字;按键还可以实现单片机中两个不同功能程序切换。

本项目要

求两个按键分别实现LDE灯的不同闪烁方式,按键1按下时,8个LED灯从右向左依次点亮,按键2按下时,8个LED灯从左向右依次点亮。

卜项目分析

本项目只需2个按键实现LED灯闪烁方式控制,因此按键接口电路设计成独立按键。

独立按键即每个按键直接与单片机I/O端口连接,当按键按下和弹开时,单片机I/O端口呈

现不同的电平。

独立按键接口电路可以设计成当按键按下时,单片机I/O端口为高电平或者

低电平,读者可以根据自己的需求自行设计。

单片机应用中的独立按键多是机械弹性开关,在按键按下和弹开时,由于按键的机械特性,有抖动产生。

消除抖动有硬件方式和软件方式,软件方式就是编程读取I/O端口电平时,产生一个5ms〜10ms延时后,再次读取I/O端口

电平,以确认按键是否按下或弹开。

1.独立按键与矩阵按键

键盘是实现人机交互的重要计算机输入设备,其中按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。

按键按照接口原理可分为编码键盘和非编码键盘,编码键盘是用硬件来实现对键的识别,非编码键盘由软件来实现按键的识别。

非编码键盘按连接方式可分为独立按键和矩阵按键。

独立按键特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单,适合所需按键较少的场合。

矩阵按键特点是电路连接复杂,软件编程较复杂,但I/O口利用率高,适合需要大量按键的场合。

下图为常见独立按键和矩阵按键接口电路。

 

图独立按键接口电路与矩阵按键接口电路

上图四个按键(常开触点开关)S1,S2,S3,S4分别与单片机的四个I/O端口连接。

当按键没有按下时,四个I/O端口的电压为高电平;当按键按下时,电源与电阻、按键构成闭合回路,四个I/O端口的电压拉为低电平。

四个电阻为外部上拉电路,它们的作用是拉升外部端口的电压,如果单片机的I/O端口有内部上拉电阻的话,此处可以忽略,但编程时需注意读I/O端口时,应先给端口赋高电平,避免误读端口。

矩阵按键接口电路在项目六中讲解。

2.按键消抖

通常的按键所用的开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时

也不会一下子断开。

如下图所示,按键抖动时间一般为5ms〜10ms。

因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键消抖。

按键消抖方式有硬件消抖和软件消抖。

硬件消抖在按键数目较少时使用,常用硬件消抖电路有RS触发器和并联电容,如下图所示。

 

如果按键较多,常用软件方法消抖。

其方法是检测按键是否按下,如按

键按下,执行一个延时程序5ms-10ms让前沿抖动消失后再一次检测按键状态,如果仍保持按下,则确认为真正有按键按下。

当检测到按键释放后,也执行一个5ms-10ms的延时,待后沿抖动消失后转入该按键的处理程序。

这种按键消抖占用CPU资源,采用定时器中断软件消抖效果要好些。

^£1

项目实施

1.绘制本项目电路图

2.准备焊接器材

骨口,序号

电路组成

元件名称

规格或参数

数量

1

电阻

10K

2个

2

排阻

10K

1个

3

电解电容

10uF

1个

4

瓷片电容

30pF

2个

5

晶振

12MHz

1个

6

发光二极管

3mm黄色

1个

7

洞洞板

5*7cm

1块

8

紧锁座

40PIC

1个

9

常开触点开关

6*6*5微动开

1个

10

拨动开关

3脚2档

1个

11

usB插座

A母

1个「

12

焊接工具

焊烙铁

5W外热

1把

13

焊锡丝

0.8mm

若干

14

斜口钳

尺寸5

1把「

15

外围电路

发光二极管

3mm黄色

8个

16

常开触点开关

6*6*5微动开

2个

17

限流电阻

220Q

8个

3.根据电路图进行焊接参考视频资料

4.编写本项目程序

#include

#include

#defineucharunsignedchar#defineuintunsignedint

#defineLEDP2sbitKey仁P1A0;

sbitKey2=P"l;voidDisplay1();voidDisplay2();voiddelay(uintt);voidmain(void){

P仁Oxff;P2=0xff;while

(1){

if(Key仁=0)delay(10);

if(Key仁=0)

{

Display1();

}while(Key1==0);if(Key2==0)delay(10);

if(Key2==0)

{

Display2();

}

while(Key2==0);

}

}

voidDisplay1()

{

uinti,temp;temp=0xfe;LED=temp;for(i=0;i<8;i++)

{temp=_crol_(temp,1);LED=temp;delay(100);

}

}

voidDisplay2()

{

uchari,temp;

temp=0x7f;

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

{temp=_cror_(temp,1);LED=temp;delay(100);

}

}

voiddelay(uintt)

{uchari;

while(--t){for(i=124;i>0;i--);}

}

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineLEDP2

sbitKey仁P1A0;

sbitKey2=P"l;

voidDisplay1();

voidDisplay2();

voiddelay(uintt);

voidmain(void)

{

ucharKeyNum;

P仁Oxff;

P2=0xff;

while

(1)

{

if(Key仁=0)

delay(10);

if(Key仁=0)

{

KeyNum=1;

}

if(Key2==0)

delay(10);

if(Key2==0)

{

KeyNum=2;

}switch(KeyNum)

{

case1:

Display1();break;case2:

Display2();break;}

}

}

voidDisplay1()

{

uinti,temp;

temp=0xfe;

LED=temp;

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

{temp=_crol_(temp,1);

LED=temp;

delay(100);

}

}

voidDisplay2()

{

uchari,temp;

temp=0x7f;

LED=temp;

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

{temp=_cror_(temp,1);

LED=temp;

delay(100);

}

voiddelay(uintt)

{uchari;

while(--t)

{for(i=124;i>0;i--);}

5.程序下载并进行软硬件调试参考视频资料

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2