51单片机独立按键控制合集
- 实验一:当按键按下led灯亮,松开按键led灯熄灭;
- 实验二:当按键按下led灯常亮,再次按下按键led灯熄灭;
- 实验三:按键控制led以二进制形式显示;
- 实验四:按键控制led按位左移或右移;
实验一程序:当按键按下led灯亮,松开按键led灯熄灭;
#include<REGX52.H> //注意这个头文件是REG“X”因为要用到单个接口P3_1口;void Delay1ms(unsigned int xms) //延时1ms函数
{
unsigned char i,j;
while(xms)
{
i = 2 ;
j = 239 ;
do
{
while (--j);
}
while (--i);
xms--;
}
}void main () //按键控制led亮灭,按下亮松开灭{while(1) //死循环{if(P3_1 ==0) //判断按键是否按下{P2_0 = 0 ; //按下led灯亮Delay1ms(20); //按键消抖20ms}else //if是如果,如果满足条件值 else是否者{P2_0 = 1 ; //没按下led熄灭Delay1ms(20);}}}
电路原理图:(实验一二三四都用这个原理图都可以)
实验二程序:当按键按下led灯常亮,再次按下按键led灯熄灭;
#include<REGX52.H> //注意是REGXvoid Delay1ms(unsigned int xms) //延时1ms函数
{
unsigned char i,j;while(xms)
{
i = 2 ;
j = 239 ;do
{while (--j);
}while (--i);
xms--;
}
}void main () //按键控制led点亮,按下亮,再次按下灭{while(1){if(P3_1 ==0) //判断按键是否按下{Delay1ms(20); //按下前消抖20mswhile(P3_1==0); //再次判断是否按下Delay1ms(20); //按下后消抖20msP2_0 = ~P2_0; //按下led灯亮,如果再次按下led灯灭。}}}
实验三程序:按键控制led以二进制形式显示
#include<REGX52.H> //注意是REGXvoid Delay1ms(unsigned int xms) //延时1ms函数
{
unsigned char i,j;
while(xms)
{
i = 2 ;
j = 239 ;
do
{
while (--j);
}
while (--i);
xms--;
}
}void main () //按键控制led亮灭,按下亮松开灭{unsigned char led = 0 ; //定义变量来计数while(1){if(P3_1 ==0) //判断按键是否按下{Delay1ms(20); //消抖while(P3_1 ==0); //再次判断Delay1ms(20); //消抖led++ ; //每次执行led加1,其实意思就是P2口控制8个led以二进制显示但因为他是低电平点亮高电平反而熄灭所以后面需要加个取反P2 = ~led; //你们自己可以试一下如果不加这个取反会发现他的效果和我们想要的效果相反。}}}
实验四代码:按键控制led按位左移或右移;
#include<REGX52.H>void Delay1ms(unsigned int xms) //延时1ms函数
{
unsigned char i,j;
while(xms)
{
i = 2 ;
j = 239 ;
do
{
while (--j);
}
while (--i);
xms--;
}
}void main () //按键控制led亮灭,按下亮松开灭{unsigned char led = 0 ; //局部变量计位数P2= ~ 0x01 ; //定义初始值while(1){
//以下实现按位左移if(P3_1 ==0) //判断按键是否按下{Delay1ms(20); //消抖while(P3_1 ==0); //再次判断Delay1ms(20); //消抖led++;if(led>=8) //控制移动位数{led = 0 ;}P2=~(0x01<<led); //把移动的位数赋值给值,然后初始值按移动的位数进行按位左移;}//不加下面代码就是单纯左移,同理删了上面代码就是单纯右移,如果两个都写就要定义两个按键然后一个按了左移一个按了右移。//看自己需要改写,按键和led灯的接口也可以根据你自己的原理图改写。//以下实现按位右移if(P3_0 ==0) //判断按键是否按下{Delay1ms(20); //消抖while(P3_0 ==0); //再次判断Delay1ms(20); //消抖if(led==0) //因为我们定义的变量led是无符号型,如果直接减减不可能减为负数led = 7 ; //所以判断如果减到0就重新给他赋值elseled--; //如果没减到0就继续减减P2=~(0x01<<led); //把移动的位数赋值给值,然后初始值按移动的位数进行按位右移;}}}
实验四两个按键原理图:
注意事项:
1.以上代码头文件都是:#include<REGX52.H> ,区别在于他里面定义了P3的某一位如(P3_1),如果是reg52.h会报错,说没有定义。
2:仔细看这几个实验其实大部分代码都一样,只有按键判断完后面的代码,才是真正实现效果的代码,大部分只需要在这里改动就可以完成你想要的效果。
3.实验四的代码是两个按键控制led左移或右移。如果你需要单独左移就只需要一个按键,把右移代码删了,同理单独右移也是一样。
51单片机独立按键控制合集相关推荐
- 51单片机-独立按键控制LED
1. 51单片机独立按键的位置: 独立按键的定义:独立按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开: 在整个51开发板的左下 ...
- 51单片机:独立按键控制LED灯
1. 独立按键控制LED灯状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开.所以就得需要程序消抖,也就是 ...
- 51单片机 独立按键控制LED 实现的三人表决器
有图可以看出,当(K1,K2,K3,K4)按下时(P31,P30P32,P33)短接到地,从高电位被拉到地在数字电路中高电位被看作(1)底电位被看作(0) 可以看出当P2为0时LED上才有电位差,才会 ...
- 51单片机独立按键控制LED状态
1.前言 1.1功能介绍 代码1:按下K1,D1亮,松开D1灭:代码2:按下K1不亮,直到松手才亮,再按一下无变化,直到松手才变化: 1.2按键的抖动 对于机械开关,当机械触点断开.闭合时,由于机械触 ...
- 用51单片机实现按键控制LED灯亮灭
用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...
- 51单片机—独立按键的控制
目录 一.独立按键的介绍 1.按键介绍 2.按键原理图 3.按键抖动 4.按键的消抖 二.独立按键控制LED指示灯亮灭 三.按键实验视频 总结 一.独立按键的介绍 1.按键介绍 轻触按键,相当于一种电 ...
- 江科大51单片机入门学习笔记合集
文章目录 软件下载 介绍 STC89C52RC 命名规则 芯片介绍 开发板介绍 逻辑运算 C语言语法 函数在C语言基础上做的拓展 重入函数 中断函数 外部函数 sfr sbit 51单片机最小系统组成 ...
- 51单片机 | 独立按键实验
文章目录 一.按键介绍 二.硬件设计 三.软件设计 四.实验现象 开发板上板载 4 个独立按键.通过开发板上的独立按键 K1 控制 D1 指示灯亮灭.通过独立按键实验来介绍 IO 口作为输入的使用 ...
- 51单片机——独立按键实验,小白讲解,相互学习
按键介绍: 按键是一种电子开关,使用时轻轻按开关按钮就可式开关接通,当松手时,开关断开.开发板上使用的按键及内部简易图如下图: 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断 ...
最新文章
- struts2漏洞监测_Apache Shiro身份验证绕过漏洞风险提示
- 修改boot.ini
- 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图
- centos 卸载自带的 java
- MySQL(11)数据库实现高可用架构之MMM
- 二:熟悉 TCP/IP 协议
- 对超长的文字换行处理:程序和CSS样式
- ARM中断产生和管理
- php 跨天 时间差 秒,判断时间是否在预设跨天时段
- 购买云服务器时如何选择适合的数据库?
- 2017-5-5/PHP实现负载均衡的加权轮询
- Smart SVN客户端使用
- php5.6 手册,php5.6手册下载
- 计算机管理USB,大势电脑至usb管理软件
- Sublime格式化代码快捷键
- [自我介绍]第一篇博客
- html 按钮 水波纹,点击按钮出现水波纹动画
- video 标签 autoplay 实现自动播放
- XJOI 9552矩阵游戏(2级1段)
- 自定义UTI 注册你的APP所支持的文件类型