独立按键控制LED的单片机实验

实验三 独立按键控制LED实验

一、实验目的

1.熟悉实验软件和硬件,进行正确的接线;
2.8个不同的按键对应不同的8个灯,按下按键对应的灯就会亮。

二、实验软硬件

1.Keil uVision4
2.PZISP自动下载软件
3.HC6800S开发板

三、实验原理

按键实物图

按键按下就会产生一个脉冲信号,检测脉冲信号就可以知道是否有按键被按下去。

按键原理图
按键之间相互独立,不会互相影响。因此,被叫做独立按键。

8个独立按键原理图
将按键值用于控制对应等的亮灭。

发光二极管
JP165跳线帽断开,JP8连接J12,JP5连接JP11,J21接左边Vcc。

单片机与外设连接图
单片机硬件连接如上,只用改变跳线帽的位置就可以实现。

四、软件流程图

独立按键程序流程图

五、实验代码

1.#include <reg51.h>         
2.#include <intrins.h>  
3.  
4.#define  GPIO_KEY P2  //独立键盘用P2口  
5.#define  GPIO_LED P1  //led使用P1口  
6.  
7.unsigned char Key_Scan()  
8.{  
9.    unsigned char keyValue = 0 , i;   
10.    if (GPIO_KEY != 0xFF)         
11.    {  
12.        Delay10ms(1);     
13.        if (GPIO_KEY != 0xFF)     
14.        {  
15.            keyValue = GPIO_KEY;  
16.            i = 0;  
17.            while ((i<50) && (GPIO_KEY != 0xFF))   
18.            {  
19.                Delay10ms(1);  
20.                i++;  
21.            }  
22.        }  
23.    }  
24.    return keyValue;   
25.}  
26.  
27.void Delay10ms(unsigned int c)     
28.{  
29.    unsigned char a, b;  
30.    for (;c>0;c--)  
31.    {  
32.        for (b=38;b>0;b--){for (a=130;a>0;a--);}          
33.    }         
34.}  
35.  
36.void main(void)  
37.{  
38.    unsigned char ledValue, keyNum;  
39.    ledValue = 0x01;  
40.    while (1)  
41.    {     
42.        keyNum = Key_Scan();   
43.        switch (keyNum)  
44.        {  
45.            case(0xFE) :ledValue = 0x01;break;  
46.            case(0xFD) :ledValue = 0x02;break;  
47.            case(0xFB) :ledValue = 0x04;break;  
48.            case(0xF7) :ledValue = 0x08;break;  
49.            case(0xEF) :ledValue = 0x10;break;  
50.            case(0xDF) :ledValue = 0x20;break;  
51.            case(0xBF) :ledValue = 0x40;break;  
52.            case(0x7F) :ledValue = 0x80;break;  
53.            default: break;  
54.        }  
55.        GPIO_LED = ledValue;  
56.    }                 
57.}  

六、实验步骤

1.连接试验相关模块连线

硬件接线图
2.编写独立按键程序
首先,不停进行扫描按键。有按键输入之后,进行防抖操作,之后返回反应独立按键状态的数据,主程序根据返回的数据,对相应的灯进行亮灭操作。
3.下载独立按键程序

程序下载界面
4.测试程序
分别按下不同的键,不同的灯变亮。可以用按键控制灯的暗灭,反应速度较快,没有明显逻辑错误。

七、实验思考

独立按键控制led灯,其实这个实验看起来非常简单。我以小学生的水平来看的话就是把灯接上电,然后接线的中间连上开关,开关按下线通了,灯亮了。
但是,这个实验确实不是这样简单的。需要单片机作为处理器,读入键值,根据输入键值控制相应灯的亮灭。对于实验来说,这并非多此一举。因为我们可以区分不同的输入,然后做出相应的动作。这些动作是灯的点亮也可是别的,比如说控制电机的速度或者方向。这是十分有意义的,对于进一步开发有着重大的意义。

物联沃分享整理
物联沃-IOTWORD物联网 » 独立按键控制LED的单片机实验

发表评论