51单片机-按键控制led灯

这篇具有很好参考价值的文章主要介绍了51单片机-按键控制led灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.开发环境介绍

  • 使用C语言,环境为keil

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用.

  • 什么是单片机

单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用.

2.了解IO口

  • 怎么找到IO口

sfr“指令”: 用来直接描述硬件地址;“一组IO口“的起始地址中数据 sfr P0 = 0x80;P0= 0;

  • 怎么找到IO口具体的某个引脚

sbit“指令”:对应可位寻址空间的一个位;“一个IO口/针脚“的地址中数据 sbit led2 =P3^6;

  • IO口介绍

stc89c51有4组IO口,分别为P0,P1,P2,P3;stc89c52有5组IO口,分别为P0,P1,P2,P3,P4每组对应8个针脚,P4是RC系列才有,7个针脚.

51单片机-按键控制led灯

3.基本IO控制

对单片机来讲,IO口的 输入(把外面东西拿回来)/输出(把里面的东西给外面)

sbit beep = P1^0;
sbit IFfire = P1^1;
int main()
{
int IO_data;
//什么情况叫做输入
IO_data = IFfire; // 给变量赋值,就是输入 —— 或者理解为,这个针脚有数据,拿个变量来保存
if(IO_data == 0){
  beep =0;
}
//什么情况叫做输出
IFfire = 1; // 被给予一个数值,引起IO口电压变化(一般1输出高电平,0输出低电平),此时为输
出,来影响外接的电路
return 0;
}

4. 按键控制灯

  • 4.1 电路图介绍

51单片机-按键控制led灯
51单片机-按键控制led灯
51单片机-按键控制led灯
  • 4.2 简单亮灯

电路图中LED1(D5)的标志,是在P3的IO口组中,在P3.7引脚,编程让P3.7出低电平(0)就让D5灯完成一个串联电路,亮灯

#include "reg52.h"
sbit led1 = P3^7;
void main()
{
//灯亮,给一个P3.7低电平
led1 = 0;
}
  • 4.3 使灯闪烁

使用延时函数,让灯每隔0.5秒亮(灭)

#include "reg52.h"
sbit led1 = P3^7;
//延时函数
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
    i = 4;
    j = 129;
    k = 119;
do
{
    do
    {
        while (--k);
    } while (--j);
  } while (--i);
}

void main()
{
//灯灭,给一个高电平
//重复执行
    while(1){
//灯亮,给一个P3.7低电平
    led1 = 0;
//数数,数的期间,维持低电平,灯亮,延迟
    Delay500ms();
//灯灭,给一个高电平
    ledOne = 1;
//数数,数的期间,维持高电平,灯灭,延迟
    Delay500ms();
    }
}
  • 4.4 通过按键控制灯

查询法按键控制灯

sw1按键被按下,KEY1位置和GND接通,表现为低电平,值为0;

sw1按键没有被按下,KEY1位置通过上拉电阻到5V,表现为高电平,值为1;

代码介绍

通过按键控制灯,SW1开,SW2关,案例中只在SW1添加软件消抖,按键按下一次,灯状态改变,通过状态位来控制LED;

具体案例如下:文章来源地址https://www.toymoban.com/news/detail-491024.html

#include "reg52.h"
#include <intrins.h>
sbit key1 = P2^1;
sbit key2 = P2^0;
sbit led1 = P3^7;

void Delay50ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
    i = 3;
    j = 26;
    k = 223;
do
    {
      do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void main()
{
int ledMark = OFF_STATUS;
    led1 = 1;
//查询法检测,是否被按下
while(1){
if(key1 == 0)/
{
//感觉被按下,不知道是抖动还是人为,延迟50ms再判断一次
//软件消除抖动
Delay50ms();
   if(key1 == 0){     //key1被按下
        ledMark = ON_STATUS;
    }
}
if(key2 == 0)
{
Delay50ms();
   if(key2 == 0){     //key2被按下,与GND连通,为低电平,0
        ledMark = OFF_STATUS;
    }
}
    if(ledMark == OFF_STATUS){
            led1 = 1; //灭
}else{
            led1 = 0; //亮
        }
    }
}

到了这里,关于51单片机-按键控制led灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机——一个独立按键控制LED的闪烁和熄灭

    目录 一、要求 二、实现 三、总结 消除按键的机械抖动         当按下按键,LED灯闪烁,再按下,LED熄灭。。。。循环操作。         编译环境:keil4         单片机:STC89c516RD 消除按键的机械抖动         按键的机械抖动会影响单片机对按键按下次数的判断。消除抖动的

    2024年02月07日
    浏览(44)
  • 一周学完C51单片机(1)点亮LED灯以及按键控制

    首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到 我们只需将单片机的IO口置为低电平,就可以点亮LED灯。 因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯 延时函数可以通过小工具来实现,选择好系统的频

    2024年02月08日
    浏览(44)
  • 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯

    2024年02月01日
    浏览(99)
  • 51单片机开发:通过74HC595控制LED点阵

    (1)LED点阵就是多个LED发光二极管的集合,在单个LED的发光原理上没有任何区别; (2)上面是16x16的LED点阵,总共有16x16=256个LED灯,由32个引脚来控制,其中16个引脚是正极(posn,n=1、2······、16),16个引脚是负极(NEGn,n=1、2······、16); (3)LED点阵可以用坐标系的思想来理解,

    2024年02月12日
    浏览(47)
  • 【51单片机】LED与独立按键(学习笔记)

    LED:发光二极管 补:电阻读数 102 = 10 00 = 1k 473 = 47 000 1、新建工程:Project = New Project Ctrl + Shift + N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx提示?选否 4、Source Group = 右键 = Add New Item … = C文件\\\"main.c\\\" 5、设置勾选创建HEX File文件 6、编译 CPU通过对寄存器的控制,寄存器通过驱

    2024年02月06日
    浏览(43)
  • 51单片机按键识别与LED显示(显示0-9的数字)

    实验内容: 单片机外接10个按键,编号为0-9,编程实现任意按键则LED显示对应数字 1.共阴共阳两种不同的方式  2.数码管显示表  3.矩阵键盘介绍 矩阵键盘 是 单片机 外部设备中所使用的排布类似于 矩阵 的 键盘 组。  矩阵 式结构的 键盘 显然比直接法要复杂一些,识别也要

    2024年02月08日
    浏览(50)
  • 单片机-控制按键点亮LED灯

    定义四个按键引脚  1、按键按下 为 输入为低电平 2、按键不按下 IO有上拉电阻,为高电平 // 定义 按键的 管教 sbit KEY1 = P3^1; sbit KEY2 = P3^0; sbit KEY3 = P3^2; sbit KEY4 = P3^3; LED 输出高电平为亮 // 定义LED灯 管教 sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; 1、定义按键管教

    2024年02月10日
    浏览(42)
  • 单片机实验三 独立按键控制LED实验

    1.熟悉实验软件和硬件,进行正确的接线; 2.8个不同的按键对应不同的8个灯,按下按键对应的灯就会亮。 1.Keil uVision4 2.PZISP自动下载软件 3.HC6800S开发板 按键实物图 按键按下就会产生一个脉冲信号,检测脉冲信号就可以知道是否有按键被按下去。 按键原理图 按键之间相互独

    2024年02月08日
    浏览(40)
  • 四、51单片机控制独立按键

    按键相关知识。 1.1、按键工作原理 (1)按键内部是机械结构,也就是内部是没有电路的。按键对外表现位四个引脚,但本质上只是两个,引脚是两两连在一起的。按键按下内部引脚导通,松开内部断开。 (2)电路连接与原理图中图标。 按键一端接地,一端接单片机IO口。  (3)按

    2023年04月14日
    浏览(58)
  • 五、51单片机控制矩阵按键

    1.1、矩阵按键原理分析 这里矩阵按键为4*4的矩阵按键。 (1)矩阵按键横向和纵向分割。 (2)按键两端分别接不同的IO引脚。 (3)按键物理作用不变:按下按键两端接通,弹起按键两端断开。 1.2、矩阵按键的工作过程 JP4接P3端口,JP4_8接P3^7...JP4_1接P3^0。 (1)IO端口(P3)先输出0x0f,按键列

    2023年04月20日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包