单片机学习记录——独立按键

标签: 单片机 按键
39人阅读 评论(0) 收藏 举报
分类:

硬件连接
这里写图片描述
从电路连接图可以看出,8个独立按键一端接地,一端接插口JP5。
在开发板上,通过外接排线使JP5接P1端口。单片机通过读入P1端口的状态(0或1),就得之哪个按键被按下。

软件设计

编写按键扫描函数
/************************************************************
* 函 数 名         : duli_key_scan
* 函数功能         : 识别哪个键被按下
* 输    入         : 无
* 输    出         : 键值1~8
************************************************************/
unsigned char duli_key_scan(void)
{
    static unsigned char key_num;
    if (KEY != 0xff)
    {   //说明有键按下
        delay10ms();        //延时消抖
        if ((KEY != 0xff))
        {   //真有键按下
            switch (KEY)
            {
                case 0xfe :
                    key_num = 1;
                    break;
                case 0xfd :
                    key_num = 2;
                    break;
                case 0xfb :
                    key_num = 3;
                    break;
                case 0xf7 :
                    key_num = 4;
                    break;
                case 0xef :
                    key_num = 5;
                    break;
                case 0xdf :
                    key_num = 6;
                    break;
                case 0xbf :
                    key_num = 7;
                    break;
                case 0x7f :
                    key_num = 8;
                    break;  
            }
        }
    }

    return key_num;

}

根据按键扫描函数返回的键值,编写LED 显示程序,使不同的LED点亮。

led显示程序
void led(unsigned char num)
{
    //8个LED单独点亮时的码值
    unsigned char led[9] = {0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};

    LED = led[num];

}

烧录至开发板

注意:有两种按键模式(两者代码只差一个关键字static)
第一种:按下灯亮,松开灯灭(无static)
第二种:按下灯亮,松开不变,直至下次按下按键,灯亮的状态才改变。(有static).

扩展
按键左右移LED灯(按键1 右移、按键2左移)
按键选择花样显示(每个按键类似于一个模式开关,按一下显示不同的模式)

查看评论

单片机学习记录——独立按键

硬件连接 从电路连接图可以看出,8个独立按键一端接地,一端接插口JP5。 在开发板上,通过外接排线使JP5接P1端口。单片机通过读入P1端口的状态(0或1),就得之哪个按键被按下。 软件设计...
  • jiaruitao777
  • jiaruitao777
  • 2018-04-16 20:41:33
  • 39

7.4 LED点阵的图形显示

独立的 LED 小灯可以实现流水灯,数码管可以显示多位数字,那点阵 LED 就得来显示一点花样了。 我们要显示花样的时候,往往要先做出来一些小图形,这些小图形的数据要转换到我们的程序当中去,这个...
  • softn
  • softn
  • 2016-07-06 07:30:38
  • 712

51单片机实例程序大全(C语言写的150个实例程序)

<em>LED</em>循环左移 14-<em>花样</em>灯 16-共阳数码管静态<em>显示</em> 18-单个数码管模拟水流 23-8...1个<em>独立按键</em>控制<em>LED</em>状态转换 53-2按键加减操作数码管<em>显示</em> 58-抢答器 62-矩阵...
  • 2018年02月25日 00:00

使用POTEUS软件来进行模拟仿真 8086汇编语言花式跑马灯课程设计及代码

一、设计目的  通过本次课程设计让我们进一步深入汇编语言的学习,掌握简单的接口设计技术,将理论知识与实际相联,更进一步地深入学习8255A、8086、8253等芯片的相关知识,以及学习使用POTEU...
  • zggzgw
  • zggzgw
  • 2017-01-08 20:17:24
  • 1501

51单片机C编程100例

<em>花样</em>流水灯 D:\\实例\\24-93储存器\\2402储存<em>花样</em>...2402<em>显示</em>0-7 D:\\实例\\24-93储存器\\2402<em>显示</em>0-7...<em>独立按键</em>\\<em>独立按键led</em> D:\\实例\\<em>独立按键</em>\\<em>独立按键</em>...
  • 2018年04月17日 00:00

STM32 控制74HC595 驱动点阵 文字能移动

遇到了很奇怪的问题,程序明明没错但就是不显示,最后把在main函数中定义的变量count移动到main 外面就正常了 。仿真后发现,在main 函数中定义的局部变量 初始值不为0 ,超出控制范围 , ...
  • xkf321
  • xkf321
  • 2017-02-23 20:33:25
  • 1992

51单片机C语言程序100例

 目录目录..................................................................................................
  • WhiteNebula
  • WhiteNebula
  • 2018-04-13 13:08:30
  • 134

typedef与#define

typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间 #define为一宏定义语句,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似...
  • Wjy2016
  • Wjy2016
  • 2016-10-25 21:31:56
  • 111

AVRWARE++开发笔记7:74HC595串行控制LED灯实验

本文只针对于初学者,高手请绕过!     1、实验目的 利用单片机的IO口模拟SPI总线时序逻辑,通过74HC595控制24个LED,学会74HC595串行控制的使用方法。   ...
  • qingwufeiyang12346
  • qingwufeiyang12346
  • 2015-10-25 21:07:57
  • 1428
    个人资料
    等级:
    访问量: 141
    积分: 70
    排名: 157万+
    文章存档