如何成为过硬的硬件工程师-之认识按键

时间:2014-05-03 10:46:20 发布者:sreen_114 本站编辑:越南语翻译


今天我们来介绍一下关于按键的使用,其实按键就是一个触点开关,有单点、双点和多点型的,我们来看一下按键的图片:

现在我们看一下课程目录,大家可以直接关注我或者点击成为我的粉丝后,以后直接就能看到我更新的文档了。

第一节 如何成为过硬的硬件工程师-之初识单片机

第二节如何成为过硬的硬件工程师-之认识按键

下面我们结合上一节初识单片机中的LED例程,来讲解一下按键的使用。

1、同样我们需要打开Proteus电路仿真软件,按下图添加如下原件:注意我们需要在多添加一个LED-YELLOW黄色的LED,原因是有的Proteus版本中没有带红色LED的仿真原型。

2、我们来绘制电路图:

3、电路图绘制好后,我们打开Keil uv4来编写控制代码,我们要实现的功能是当按下,P1.0-P1.3端口的按键时,对应D1-D4的LED点亮,松开按键后LED熄灭。

#include <reg51.h>

#define uint8_t unsigned char

#define uint16_t unsigned int

sbit P0_0=P0^0; // LED1端口定义

sbit P0_1=P0^1; // LED2端口定义

sbit P0_2=P0^2; // LED3端口定义

sbit P0_3=P0^3; // LED4端口定义

sbit P1_0=P1^0; // 按键1端口定义

sbit P1_1=P1^1; // 按键2端口定义

sbit P1_2=P1^2; // 按键3端口定义

sbit P1_3=P1^3; // 按键4端口定义

void ButtonDown(void);

void LEDDelayTime(uint16_t Time); // 函数声明

void LEDDelayTime(uint16_t Time)// LED闪烁间隔时间

{

uint16_t i = 0;

uint16_t j = 0;

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

{

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

{

;;

}

}

}

void ButtonDown(void)

{

if(P1_0==0)

{

P0_0=0; // 打开LED1

}

if(P1_1==0)

{

P0_1=0; // 打开LED2

}

if(P1_2==0)

{

P0_2=0; // 打开LED3

}

if(P1_3==0)

{

P0_3=0; // 打开LED4

}

LEDDelayTime(200);// 消抖延迟

if(P1_0==1 || P1_1==1 || P1_2==1 || P1_3==1)

{

P0_0=1; // 关闭LED1

P0_1=1;// 关闭LED2

P0_2=1;// 关闭LED3

P0_3=1;// 关闭LED4

}

}

void main(void)

{

while(1)

{

ButtonDown();

}

}

3、我们回到Proteus软件,双击CPU将刚刚生成的HEX文件装入CPU中,如何生成HEX文件在第一节如何成为过硬的硬件工程师-之初识单片机中有详细介绍,这里我们不再重复说明了,大家可以参考第一节来做。装好HEX文件后,我们运行来看一下效果:

我们分别按下四个按键来看一下效果吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

大家也可以通过自己的思虑来修改程序,比如让按键按下后,4个等轮流闪烁1次等。



Copyright ©2016 zgdxyuan.com越南语翻译 本站所有内容源自互联网,有事请联系站长邮箱:abc998666@126.com百度sitemap 好搜sitemap 搜狗sitemap 神马sitemap googlesitemap