独立按键控制LED灯.docx
- 文档编号:8125819
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:10
- 大小:273.70KB
独立按键控制LED灯.docx
《独立按键控制LED灯.docx》由会员分享,可在线阅读,更多相关《独立按键控制LED灯.docx(10页珍藏版)》请在冰豆网上搜索。
独立按键控制LED灯
项目五独立按键控制LED灯
1.掌握独立按键消抖原理
2.掌握独立按键接口电路设计
3.掌握独立按键控制LED灯的程序编写
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.绘制本项目电路图
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
限流电阻
220Ω
8个
3.根据电路图进行焊接
参考视频资料
4.编写本项目程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineLEDP2
sbitKey1=P1^0;
sbitKey2=P1^1;
voidDisplay1();
voidDisplay2();
voiddelay(uintt);
voidmain(void)
{
P1=0xff;
P2=0xff;
while
(1)
{
if(Key1==0)
delay(10);
if(Key1==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
sbitKey1=P1^0;
sbitKey2=P1^1;
voidDisplay1();
voidDisplay2();
voiddelay(uintt);
voidmain(void)
{
ucharKeyNum;
P1=0xff;
P2=0xff;
while
(1)
{
if(Key1==0)
delay(10);
if(Key1==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.程序下载并进行软硬件调试
参考视频资料
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 独立 按键 控制 LED
![提示](https://static.bdocx.com/images/bang_tan.gif)