51单片机开发之独立按键

发布者:tetsika最新更新时间:2021-07-30 来源: eefocus关键字:51单片机  独立按键  LED灯 手机看文章 扫描二维码
随时随地手机看文章

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


3.5.2 示例代码


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


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


Main.c文件:


#include

#include "delay.h"

#include "key.h"

#include "type.h"

#include "led.h"

 

int main()

{

    u8 key; 

    LED=0; //关闭所有LED灯,51单片机默认输出高电平,LED默认高电平点亮

    while(1)

    {

        key=Key_Scan();

        if(key)

        {

            LED=~LED; //控制8盏灯

        }

}

}


Key.h文件代码:


#ifndef KEY_H

#define KEY_H

#include

#include "type.h"

#include "delay.h"

#include "led.h"

u8 Key_Scan(void);

#define KEY P1  //定义按键

sbit key1=KEY^0;

sbit key2=KEY^1;

sbit key3=KEY^2;

sbit key4=KEY^3;

sbit key5=KEY^4;

sbit key6=KEY^5;

sbit key7=KEY^6;

sbit key8=KEY^7;

#endif


Key.c文件代码:


#include "key.h"

/*

按键扫描函数

*/

u8 Key_Scan(void)

{

    static u8 flag=0;

    if((KEY!=0xFF)&&(flag==0)) //判断有没有按键按下

    {

        DelayMs(20); //消抖

        flag=1; //标志按键已经被按下

        if(key1==0)return 1;

        if(key2==0)return 2;

        if(key3==0)return 3;

        if(key4==0)return 4;

        if(key5==0)return 5;

        if(key6==0)return 6;

        if(key7==0)return 7;

        if(key8==0)return 8;

    }

    else if(KEY==0xFF) //判断按键是否全部松开

    {

        flag=0; //清除按下标志位

    }

    return 0;

}


Led.h文件代码:


#ifndef LED_H

#define LED_H

#include

#include "type.h"

#include "delay.h"

 

#define LED P0  //定义LED引脚

sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit LED4=P0^3;

sbit LED5=P0^4;

sbit LED6=P0^5;

sbit LED7=P0^6;

sbit LED8=P0^7;

#endif


Type.h文件代码:


#ifndef TYPE_H

#define TYPE_H

typedef unsigned char u8;

typedef unsigned short u16;

typedef unsigned int u32;

#endif


关键字:51单片机  独立按键  LED灯 引用地址:51单片机开发之独立按键

上一篇:学习笔记 从零开始学单片机(0) 系统结构
下一篇:学习笔记 从零开始学单片机(1) 建立实验环境

推荐阅读最新更新时间:2024-11-08 11:19

基于51单片机的非接触式红外体温计的设计
一.硬件方案 本系统利用51单片机控制红外温度传感器进行温度的非接触式检测并显示,能够实现快速测量人体体温。 主要由51单片机+最小系统+LCD1602液晶显示+蜂鸣器报警+按键+GY906非接触式温度传感器;如图: 二.设计功能 (1)液晶显示当前检测的温度和温度报警范围精度为0.02摄氏度。 (2)按键可以设置温度报警上限和下限。 (3)当温度低于或高于我们设置的值蜂鸣器进行报警提醒。 (4)测温范围为-70度—380度,范围广。 三.设计原理图 (1)原理图主要采用AD软件进行设计,如图: (2)PCB图如下: 四.软件设计 主程序源码 //*************主函数**************
[单片机]
基于<font color='red'>51单片机</font>的非接触式红外体温计的设计
基于51单片机定时器0计时计数器1计数的霍尔传感器精确测速
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit RW=P2^6;//定义LCD1602液晶显示器读写端 sbit RS=P2^5;//定义LCD1602液晶显示器数据命令端 sbit EN=P2^7;//定义LCD1602液晶显示器使能端 sbit qiting=P3^0;//定义启停按键 uchar qitingnum;//定义启停次数变量 uint count;//定时器0定时中断次数变量 unsigned long speed=0;//定义速度变量 uchar co
[单片机]
基于<font color='red'>51单片机</font>定时器0计时计数器1计数的霍尔传感器精确测速
手把手教学51单片机 | 1602液晶
像这种含有芯片的元器件,最重要的是去学习怎样学会看懂这个芯片的引脚功能,而不是去背诵这个芯片的语句,不同厂家的同款元器件还有微小的差异,所以购买这种东西的时候,要向厂家索要一份芯片手册,看着手册设计程序或是电路。 1602液晶 1602:16意思是一行能显示16个字符,02表示一共有两行 只能显示数字和字符 写数据时序图 RS 低电平就是选择数据,高电平就是选择指令 RW 高电平就是读,低电平就是写 E是使能信号,发出高低脉冲 按照时序图,先写指令(数据),延迟,给脉冲 写指令(数据) 先选择写指令,然后把P0口赋值,接下来就是按照时序图的指示写程序啦。写数据也是一样的 就不展开了。 void write
[单片机]
手把手教学<font color='red'>51单片机</font> | 1602液晶
51单片机设计的超声波测距器
  一、设计要求   设计一个超声波测距器,可以应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0.10-3.00m,测量精度1cm,测量时与被测物体无直接接触,能够清晰稳定地显示测量结果。   二、设计思路    超声波传感器及其测距原理    超声波是指频率高于20KHz的机械波。为了以超声波作为检测手段,必须产生超生波和接收超声波。完成这种功能的装置就是超声波传感器,习惯上称为超声波换能器或超声波探头。超声波传感器有发送器和接收器,但一个超声波传感器也可具有发送和接收声波的双重作用。超声波传感器是利用压电效应的原理将电能和超声波相互转化,即在发射超声
[单片机]
<font color='red'>51单片机</font>设计的超声波测距器
MCU--51单片机CPU和存储器
单片机 8051的CPU由运算器和控制器组成。 一、运算器 运算器以完成 二进制 的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器A CC 、寄存器B、程序状态标志寄存器PSW及布尔处理器。累加器ACC是一个八位寄存器,它是CPU中工作最频繁的寄存器。在进行算术、逻辑运算时,累加器ACC往往在运算前暂存一个操作数(如被加数),而运算后又保存其结果(如代数和)。寄存器B主要用于乘法和除法操作。标志寄存器PSW也是一个八位寄存器,用来存放运算结果的一些特征,如有无进位、借位等。其每位的具体含意如下所示。PSW CY AC FO RS1 RS0 OV - P对用户来讲,最关心的是以下四位。 1?进位标志CY(
[单片机]
51单片机超声波模块数码管程序编写
超声波原理简单测距准确,应用广泛下面贴一个自己写的数码管程序,显示部分需要改,写的是我使用的是慧净开发板,共阴数码管。 //超声波模块程序 //Trig = P2^0 //Echo = P3^2 #include #define uchar unsigned char #define uint unsigned int unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; //0-9的码表 uinttime = 0; uintTImeH = 0; uintTImeL = 0;
[单片机]
<font color='red'>51单片机</font>超声波模块数码管程序编写
51单片机快速入门指南】6.3.1:使用1-WIRE搜索算法搜索单总线上所有DS18B20的ID
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 移植自1-WIRE搜索算法 串口部分见【51单片机快速入门指南】3.3:USART 串口通信 DS18B20驱动程序见【51单片机快速入门指南】6.3:DS18B20 单总线数字温度计的多路读取 源码 OWSearch.c #include DS18B20.h #include stdio.h // TMEX API TEST BUILD DECLARATIONS // long session_handle; // END
[单片机]
【<font color='red'>51单片机</font>快速入门指南】6.3.1:使用1-WIRE搜索算法搜索单总线上所有DS18B20的ID
大功率LED灯珠特性及技术参数
   大功率LED 灯珠是 LED灯珠 的一种,相对于小功率 LED灯 珠来说,大功率 LED 灯珠的功率更高,亮度更亮,价格更高。小功率LED灯珠额定电流都是20mA,额定电流高过20mA的基本上都可以算作大功率。一般功率数有:0.25w、0.5w、1w、3w、5w、8w、10w等等。主要亮度单位为lm(流明),小功率的亮度单位一般为mcd(毫坎德拉,1cd=1000mcd),也就是发光强度I。   1cd=1lm/sr(流明/立体弧度)=1烛光。解释为:光源在指定方向上的立体角d 之内所发出的光通量或所得到光源传输的光通量d ,这二者的商即为发光强度I(单位为坎德拉,cd)。外罩可用PC管制作,耐高温答135
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved