3.3 51单片机-独立按键

举报
DS小龙哥 发表于 2021/12/09 23:17:59 2021/12/09
【摘要】 3.3 独立按键 3.3.1 按键原理图 图3-3-1 图3-3-2 JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边 3.3.2 示例代码 下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。 下面代码实现的效果是,按下按键控制LED灯。 ...

3.3 独立按键

3.3.1 按键原理图

图3-3-1

图3-3-2

JP165跳线帽断开、JP10连接J12(为了实现按键控制LED灯的效果)、JP5连接JP8、J21接左边

3.3.2 示例代码

下面代码都使用多文件编程模型,这里贴出每个文件的主要代码。

下面代码实现的效果是,按下按键控制LED灯。

Main.c文件:


  
  1. #include <reg51.h>
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "type.h"
  5. #include "led.h"
  6. int main()
  7. {
  8.     u8 key; 
  9.     LED=0//关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮
  10.     while(1)
  11.     {
  12.         key=Key_Scan();
  13.         if(key)
  14.         {
  15.             LED=~LED; //控制8盏灯
  16.         }
  17. }
  18. }

Key.h文件代码:


  
  1. #ifndef KEY_H
  2. #define KEY_H
  3. #include <reg51.h>
  4. #include "type.h"
  5. #include "delay.h"
  6. #include "led.h"
  7. u8 Key_Scan(void);
  8. #define KEY P1  //定义按键
  9. sbit key1=KEY^0;
  10. sbit key2=KEY^1;
  11. sbit key3=KEY^2;
  12. sbit key4=KEY^3;
  13. sbit key5=KEY^4;
  14. sbit key6=KEY^5;
  15. sbit key7=KEY^6;
  16. sbit key8=KEY^7;
  17. #endif

Key.c文件代码:


  
  1. #include "key.h"
  2. /*
  3. 按键扫描函数
  4. */
  5. u8 Key_Scan(void)
  6. {
  7.     static u8 flag=0;
  8.     if((KEY!=0xFF)&&(flag==0)) //判断有没有按键按下
  9.     {
  10.         DelayMs(20); //消抖
  11.         flag=1//标志按键已经被按下
  12.         if(key1==0)return 1;
  13.         if(key2==0)return 2;
  14.         if(key3==0)return 3;
  15.         if(key4==0)return 4;
  16.         if(key5==0)return 5;
  17.         if(key6==0)return 6;
  18.         if(key7==0)return 7;
  19.         if(key8==0)return 8;
  20.     }
  21.     else if(KEY==0xFF//判断按键是否全部松开
  22.     {
  23.         flag=0//清除按下标志位
  24.     }
  25.     return 0;
  26. }

Led.h文件代码:


  
  1. #ifndef LED_H
  2. #define LED_H
  3. #include <reg51.h>
  4. #include "type.h"
  5. #include "delay.h"
  6. #define LED P0  //定义LED引脚
  7. sbit LED1=P0^0;
  8. sbit LED2=P0^1;
  9. sbit LED3=P0^2;
  10. sbit LED4=P0^3;
  11. sbit LED5=P0^4;
  12. sbit LED6=P0^5;
  13. sbit LED7=P0^6;
  14. sbit LED8=P0^7;
  15. #endif

Type.h文件代码:


  
  1. #ifndef TYPE_H
  2. #define TYPE_H
  3. typedef unsigned char u8;
  4. typedef unsigned short u16;
  5. typedef unsigned int u32;
  6. #endif

文章来源: xiaolong.blog.csdn.net,作者:DS小龙哥,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaolong.blog.csdn.net/article/details/121016733

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。