【Proteus仿真】按键控制系列仿真——LED灯表示按键状态/按键控制LED灯/4*4矩阵键盘控制LED
目录
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 intsbit 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); }}