原理
按键介绍
轻触开关是一种电子开关,使用时,轻轻按开关按钮就可使开关接通,当松开手时,开关断开。我们使用的开关如下图:
独立按键原理
按键在闭合和断开时,触点会存在抖动现象。
硬件消抖电路
软件消抖
我们可以利用延时函数
代码实现
通过独立键盘K1,K2,K3,K4来控制左边四个led灯的亮灭
#include
typedef unsigned char u8;
typedef unsigned int u16;
sbit K1=P3^1;//第一个按键
sbit K2=P3^0;//第二个按键
sbit K3=P3^2;//第三个按键
sbit K4=P3^3;//第四个按键
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
void delay(u16 i)
{
while(i--);
}
void main()
{
while(1)
{
if(K1==0)//判断是否按下
{
delay(100);//如果按下消抖
if(K1==0)//判断是否按下
{
led1=~led1;
while(!K1);//检测按键是否松开
}
}
if(K2==0)//判断是否按下
{
delay(100);//如果按下消抖
if(K2==0)//判断是否按下
{
led2=~led2;
while(!K2);//检测按键是否松开
}
}
if(K3==0)//判断是否按下
{
delay(100);//如果按下消抖
if(K3==0)//判断是否按下
{
led3=~led3;
while(!K3);//检测按键是否松开
}
}
if(K4==0)//判断是否按下
{
delay(100);//如果按下消抖
if(K4==0)//判断是否按下
{
led4=~led4;
while(!K4);//检测按键是否松开
}
}
}
}
关键字:51单片机 独立按键
引用地址:
51单片机学习——5--独立按键
推荐阅读最新更新时间:2024-11-09 22:35
51单片机——IIC、EEPROM数据存储 C语言入门编程
IIC: I2C(Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单, 器件封装形式小,通信速率较高等优点。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。由于其管脚少,硬件实现简单,可扩展性强等特点,因此被广泛的使用在各大集成芯片内。 (1)它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在 一个I2C通讯总线中,可连接多个I2C通讯设备,支持多个通讯主机及多个通 讯从机。 (2)一个I2C总线只使用两条总线
[单片机]
51单片机驱动步进电机的方法
在这里介绍一下用51单片机驱动步进电机的方法。 这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!! 该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:$、6:黑色。 采用51驱动ULN2003的方法进行驱动。 ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。 ;************************************************** ;****************************步进电机的驱动************
[单片机]
无符号双字节除以单字节(51单片机,汇编源码)
采用移位减法的算法。源码如下: 1 ;////////////////////////////////////////////////////////////////////////////// 2 ;函数: div_u16_u8 3 ;描述: 无符号双字节除以单字节 4 ;入口: (R6,R7)/(R0) 5 ;出口: (R6,R7).(R5) 6 ;注意: 余数在R5;OV=1时表示溢出 7 ;影响: A,B,R0,R5,R6,R7 8 div_u16_u8: mov r5,#0 9 mov b,#16 10 #ifdef __SPEED_P__ 11 mov a,r6
[单片机]
学习笔记之-51单片机定时计数器
一、单片机的时序 单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节数不同。 时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期:在计算机中,为了便于管理,常把一条指令的
[单片机]
51单片机-asm与C混合编程
一是源程序中直接混合嵌入,二是做成库函数调用,三是做成是中间文件在链接中加入。 在单片机应用系统设计中,过去主要采用汇编语言开发程序。汇编语言编写的程序对单片机硬件操作很方便,编写的程序代码短,效率高,但系统设计的周期长,可读性和可移植性都很差。C语言程序开发是近年来单片机系统开发应用所采用的主要开发方式之一,C 语言功能丰富、表达能力强、使用灵活方便、开发周期短、可读性强、可移植性好。但是,采用C 语言编程还是存在着如对硬件没有汇编方便、效率没有汇编高、编写延时程序精确度不高等缺点,因而现在单片机系统开发中经常用到C 语言与汇编语言混合编程技术。混合编程技术可以把C 语言和汇编语言的优点结合起来,编写出性能优良的程序
[单片机]
51单片机串行口--同步移位寄存器
MCS-51单片机的串行口具有两条独立的数据线 发送端TXD和接收端RXD,它允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。 MCS-51单片机的串行口既可以用于网络通信,亦可实现串行异步通信,还可以用作同步移位寄存器。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。 MCS-51单片机的串行接口是一个全双工通信接口,它有两个物理上独立的接收、发送缓冲器SBUF,可以同时发送和接收数据。但是发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。两个缓冲器共用一个地址(99H)。 数据通信的基本概念 常用于数据通信的传输方式有单工、半双工、全双
[单片机]
51单片机——LCD1602液晶屏 C语言入门编程
LCD1602: 1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若 干个5x7的点阵字符位组成,每个点阵字符位都可以用显示一个字符, 每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。 字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。写入
[单片机]
MCS-51单片机内部结构——CPU结构 单片机原理学习笔记(二)
CPU结构 8051内部CPU是一个字长为二进制8位的中央处理单元,也就是说它对数据的处理是按字节为单位进行的。与微型计算机CPU类似,8051内部CPU也是由算术逻辑部件(ALU)、控制器(定时控制部件等)和专用寄存器组三部分电路构成。 1.算术逻辑部件 8051的算术逻辑部件ALU是一个性能极强的运算器,既可以进行加、减、乘、除四则运算,还可以进行与、或、非、异或等逻辑运算,还具有数据传送、移位、判断和程序转移等功能。 8051算术逻辑部件ALU由一个加法器、两个8位暂存器(TMP1和TMP2)和一个性能卓越的布尔处理器组成。虽然TMP1和TMP2对用户并不开放,但可用来为加法器和布尔处理器暂存两个8位二进制操
[单片机]