在51单片机的前面的文章中,我们主要讲述了单片机IO口的输出功能的应用,如LED控制、数码管控制等。这篇文章我们来讲解如何用单片机的IO口读取按键的状态,并根据按键的状态来控制LED。关于51单片机按键输入功能的介绍可以参考文章《51单片机(二十四)—— 独立按键工作原理》
在本文中,实例的代码如下所示。
#define KEY P2 //定义按键输入端口
#define LED P0 //定义LED输出端口
/********************************************************************/
/* 主函数 */
/********************************************************************/
void main (void)
{
KEY=0xff; //按键输入端口电平置高
for(;;) //主循环
{
LED=KEY;
}
}
代码很简单,主要代码只有for循环中的一行LED=KEY; 这一句代码的作用是将KEY的值赋值给LED。由程序的宏定义可知,KEY是P2,它是与独立按键连接的8个IO口的寄存器。LED是P0,它是与LED连接的8个IO口的寄存器。当某个独立按键按下时,则P2对应的IO口的电平状态被拉低,输入为0,当松开按键时,输入为1,在for循环中,将P2的值赋值给P0,当按键按下时,控制LED的IO口输出为0,则相应的LED点亮。松开按键时,控制LED的IO口输出为1,则相应的LED熄灭。由于赋值代码在for循环中,则LED的状态会实时更新。
关键字:51单片机 独立按键 控制LED
引用地址:
51单片机(二十五)—— 独立按键控制LED
推荐阅读最新更新时间:2024-11-08 10:15
51单片机万年历
可实现功能: 启动程序数码管按照××-××-××格式显示时分秒并走时 按下C1按钮后按照××-××-××格式显示年月日 按下C3调时模式按钮时分秒/年月日静止,指示灯亮起,进入调时模式 先按C2选位按钮再按下C0加一按钮,对应的位置改变 再次按下C3按钮退出调时模式,继续走时 #include reg51.h #define uChar unsigned char #define uInt unsigned int uChar a ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uChar b ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,
[单片机]
51单片机的特殊功能寄存器(SFR)
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下: 符号 地址 功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B
[单片机]
Diodes全新LED 驱动器控制器问市,配备低电压降和强化调光
Diodes 公司 (Nasdaq:DIOD) 推出 AL5814Q,一款符合汽车规范的线性 LED 驱动器控制器,具备低电压降和开放式LED 侦测功能,适用于汽车的线性驱动 LED 灯。 AL5814Q 适用于需要特定变更控制的汽车应用,符合 AEC-Q100 标准、具有1级温度等级、通过生产零件核准程序,且以 IATF16949:2016 标准认证生产设施制造。该设备可在 4.5V 到 60V 的输出电压范围内正常运作,配备高达 15mA 的驱动器,使用外部驱动晶体管、MOSFET 或 BJT,利于减少其功耗。本设备能驱动高电流的 LED 或多个 LED 灯条,很适合需要高照明输出的产品应用,包括车牌照明、车尾灯、车内灯和
[汽车电子]
51单片机的默认中断优先级都是低级及中断嵌套
51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。 在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂。 中断的优先级有两个:查询优先级和执行优先级。 什么是查询优级呢?我们从datasheet或书上看到的默认(IP寄存器不做设置,上电复位后为00H)的优先级: 外部中断0 定时/计数器0 外部中断1 定时/计数器1 串行中断 或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1
[单片机]
51单片机-计时器-倒计时闹钟
1.视频 bilibili视频地址: https://www.bilibili.com/video/av91943244 51单片机-计时器-倒计时闹钟 2.文件 文件下载地址: https://download.csdn.net/download/weixin_43130546/12194355 3.说明 注意KeyScan()函数if语句! 蜂鸣器频率问题; 想到再补充。 4.代码 #include reg52.h sbit BUZZER = P2^3; sbit DULA = P2^6; sbit WELA = P2^7; sbit KEYOUT1 = P3^0; sbit KEYOU
[单片机]
51单片机使用定时器进行数码管动态扫描程序
数码管是51单片机学习中比较基础的一个模块,为简化电路连接,提高系统可靠性,降低制造成本,多位数码管广泛采用动态扫描的方式进行显示。如果程序编写不当,数码管动态扫描容易出现亮度不均匀、亮度过低、重影等现象。很多初学者会在主函数中使用while(1)循环,结合delay函数不断扫描,但这样得不断调用display扫描,如果单片机还要执行别的程序时,就会由于扫描不及时,导致各种问题。此外,在控制段选位选的先后顺序上,如果程序不当,则会造成显示重影等问题。在此给出一个稳定可靠的程序方案。 电路连接:P1口通过两个74HC573分别连接到八位数码管的段选和片选,段选、位选由P3.4和P3.5控制,低电平锁存 #include re
[单片机]
有效控制白光LED电流的开关稳压器
数年前,制造商们还将自己白光LED而不是暗淡LED的最大正向额定电流设定为20 mA。今天的白光LED可以提供更高的亮度,因此必须工作在更高的偏置电流下。在接近LED最大额定值的大电流工作情况下仍要保持对LED偏置点的控制,就需要一种新的方法。 偏置LED最简单、最常用的方法是与LED串联一个电阻,以限制 LED的最大电流,但这种方法会直接影响功率效率(功率效率定义为LED 功率与总输入功率之比)。对一个工作在350mA的白光LED而言,其二极管上相应的正向压降约为3.2V。将串联电阻和LED连接到5V电源,工作效率为64%,即从5V电源获得3.2V。功耗会生热,造成在串联电阻的平均功耗为36 mW,正向电流为20 mA,这样大小的
[电源管理]
51单片机的P0口工作原理详细讲解
三态门:三态门缓冲器: 51单片机 P0口输入缓冲器 P0口的输出驱动:两个MOS管组成的推拉式结构 P0口作为IO线输入状态时:①读引脚;②读锁存器; P0口作为地址/数据复用口 P0口作为IO线输出时,只能输出低电平、高阻态,需要外接上拉电阻,使高阻态变为输出高电平(对比 AVR单片机 的推挽输出结构) 一、P0端口的结构及工作原理 P0端口8位中的一位结构图见下图: 由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。 下
[单片机]