【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED

发布于:2025-09-12 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

1案例视频效果展示

1.1例子1:LED灯表示按键状态(两种方式)

1.2例子2:按键控制两排LED小灯闪烁移位

1.3例子3:按键控制LED灯逐个点亮/分组点亮/全部熄灭

1.4例子4:4*4矩阵按键实现带状LED灯控制

2例子1:LED灯表示按键状态(两种方式)

2.1电路原理图

2.1.1电路组成及接线

2.2控制程序

2.2.1控制程序步骤

2.2.2源代码

3例子2:按键控制两排LED小灯闪烁移位

3.1电路原理图

3.1.1电路组成及接线

3.2控制程序

3.2.1控制程序步骤

3.2.2源代码

4例子3:按键控制LED灯逐个点亮/分组点亮/全部熄灭

4.1电路原理图

4.1.1电路组成及接线

4.2控制程序

4.2.1控制程序步骤

4.2.2源代码

5例子4:4*4矩阵按键实现带状LED灯控制

5.1电路原理图

5.1.1电路组成及接线

5.2控制程序

5.2.1控制程序步骤

5.2.2源代码

 7 硬件工程师笔试面试相关文章链接(部分链接)


摘要:本文介绍了基于AT89C51单片机的4种LED控制案例:1)按键状态显示(即时/触发两种模式);2)两排LED灯移位控制(上下左右四个方向);3)LED分组控制(逐个点亮、上下半区控制、全灭);4)4×4矩阵按键控制LED灯带(按键值决定亮灯数量)。所有案例均采用I/O口电平检测控制LED电路,包含完整的电路原理图(含晶振、复位、按键和LED模块)和C语言源代码实现,通过延时函数、位操作和键盘扫描等技术实现交互控制功能。

1案例视频效果展示

1.1例子1:LED灯表示按键状态(两种方式)

例子6:LED灯表示按键状态(两种方式)

1.2例子2:按键控制两排LED小灯闪烁移位

例子7:按键控制两排LED小灯闪烁移位

1.3例子3:按键控制LED灯逐个点亮/分组点亮/全部熄灭

例子8:按键控制LED灯逐个点亮/分组点亮/全部熄灭

1.4例子4:4*4矩阵按键实现带状LED灯控制

例子9:4*4矩阵按键实现带状LED灯控制

2例子1:LED灯表示按键状态(两种方式)

实现功能:K1、K2按下时LED点亮,松开时熄灭, K3、K4按下并释放时LED点亮,再次按下并释放时熄灭。

本质:单片机的某些I/O 口输入高/低电平作为判断条件控制其他I/O 口输出高/低电平,去驱动一个LED。

2.1电路原理图

2.1.1电路组成及接线

名称

接线

AT89C51单片机

XTAL1/XTAL2—>连接晶振电路

RST—>连接复位电路

P0.0-P0.3—>连接共阳极LED小灯电路

P1.4-P1.7—>连接按键电路

复位电路

晶振电路

按键电路

共阳极LED小灯电路

2.2控制程序

2.2.1控制程序步骤

库文件与引脚定义

延时函数

主程序(按键状态作为输入(判断条件),LED状态作为输出)

2.2.2源代码

//功能:K1、K2按下时LED点亮,松开时熄灭, K3、K4按下并释放时LED点亮,再次按下并释放时熄灭;

#include<reg51.h>

#define uchar unsigned char

#define uint unsigned int

sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit LED4=P0^3;

sbit K1=P1^4;

sbit K2=P1^5;

sbit K3=P1^6;

sbit K4=P1^7;

//延时

void DelayMS(uint x)

{

        uchar i;

        while(x--) for(i=0;i<120;i++);

}      

//主程序

void main()

{

        P0=0xff;

        P1=0xff;

        while(1)

        {

                 LED1=K1;

                 LED2=K2;

                 if(K3==0)

                 {

                         while(K3==0);

                         LED3=~LED3;

                 }

                 if(K4==0)

                 {

                         while(K4==0);

                         LED4=~LED4;

                 }

                 DelayMS(10);

        }

}


网站公告

今日签到

点亮在社区的每一天
去签到