各位CSDN的uu们你们好呀,今天依旧是小雅兰的51单片机的内容,内容主要是:独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位,下面,让我们进入51单片机的世界吧!!!
如果对C语言的知识有不懂的话,可以看看小雅兰的C语言的专栏!!!
https://blog.csdn.net/weixin_74957752/category_12188777.html?spm=1001.2014.3001.5482
独立按键控制LED亮灭
独立按键控制LED状态
独立按键控制LED显示二进制
独立按键控制LED移位
源代码
首先,我们需要知道独立按键是一个什么东西:

在单片机上,也是标明了独立按键了的,是最下面的四个黑色的按钮。
这边的意思是:按下K1建,第一个LED亮,松手,就熄灭。

下面,就可以开始写代码啦!!!
- #include
-
- void main()
- {
- while(1)
- {
- if(P3_1==0)
- {
- P2_0=0;
- }
- else
- {
- P2_0=1;
- }
- }
- }
-

知道了上述知识点后,如果我们想要K1和K2同时按下时再点亮第一个LED的话,应该是这么写:
- #include
-
- void main()
- {
- while(1)
- {
- if(P3_1==0&&P3_0==0)
- {
- P2_0=0;
- }
- else
- {
- P2_0=1;
- }
- }
- }
如果是想要按下K1点亮第一个LED,按下K2也点亮第一个LED,同时按下也会点亮第一个LED,只有当两个按钮都没有按下时,才不会点亮第一个LED。
那么,这个代码应该是这么写:
- #include
-
- void main()
- {
- while(1)
- {
- if(P3_1==0||P3_0==0)
- {
- P2_0=0;
- }
- else
- {
- P2_0=1;
- }
- }
- }
-


这个的意思是:按下K1键时,第一个LED不亮,然后松开之后,LED亮了。然后再按下,LED亮,松手,LED不亮。
- #include
-
- void Delay(unsigned int xms) //@12.000MHz
- {
- unsigned char data i, j;
- while(xms)
- {
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- xms--;
- }
- }
-
- void main()
- {
- while(1)
- {
- if(P3_1==0)
- {
- Delay(20);
- while(P3_1==0);//循环什么也不做
- Delay(20);
-
- P2_0=~P2_0;
- }
- }
- }
这边的意思是:从1开始,显示它的二进制代码序列对应的LED亮,如果是1,那么它的二进制代码序列就是0001,也就是第一个LED亮,如果是2,它的二进制代码序列是0010,那么就是第二个LED亮,如果是3,则它的二进制代码序列为0011,也就是第一个LED和第二个LED同时亮,以此类推!!!
代码就应该得这样写:
- #include
-
- void Delay(unsigned int xms) //@12.000MHz
- {
- unsigned char data i, j;
- while(xms)
- {
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- xms--;
- }
- }
-
- void main()
- {
- unsigned char LEDNum=0;
- while(1)
- {
- if(P3_1==0)
- {
- Delay(20);
- while(P3_1==0);
- Delay(20);
-
- LEDNum++;
- P2=~LEDNum;
- }
- }
- }















- #include
-
- void Delay(unsigned int xms) //@12.000MHz
- {
- unsigned char data i, j;
- while(xms)
- {
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- xms--;
- }
- }
-
- void main()
- {
- unsigned char LEDNum=0;
- P2=~0x01;
- while(1)
- {
- if(P3_1==0)
- {
- Delay(20);
- while(P3_1==0);
- Delay(20);
-
- LEDNum++;
- if(LEDNum>=8)
- {
- LEDNum=0;
- }
- P2=~(0x01<
-
- }
- }
- }







上面这个代码只是按了K1,就让LED从第一个移到第二个、第三个......
那如果是想要按下K1,让LED从第一个移到第二个、第三个......按下K2,让LED从第八个移到第七个、第六个......那么,这个功能又应该怎么实现呢?
- #include
-
- void Delay(unsigned int xms) //@12.000MHz
- {
- unsigned char data i, j;
- while(xms)
- {
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- xms--;
- }
- }
-
- void main()
- {
- unsigned char LEDNum=0;
- P2=~0x01;
- while(1)
- {
- if(P3_1==0)
- {
- Delay(20);
- while(P3_1==0);
- Delay(20);
-
- LEDNum++;
- if(LEDNum>=8)
- {
- LEDNum=0;
- }
- P2=~(0x01<
-
- }
- if(P3_0==0)
- {
- Delay(20);
- while(P3_0==0);
- Delay(20);
- if(LEDNum==0)
- {
- LEDNum=7;
- }
- else
- {
- LEDNum--;
- }
-
- P2=~(0x01<
-
- }
- }
- }
源代码
独立按键控制LED亮灭
#include
void main()
{
while(1)
{
if(P3_1==0)
{
P2_0=0;
}
else
{
P2_0=1;
}
}
}
独立按键控制LED状态
#include
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);//循环什么也不做
Delay(20);
P2_0=~P2_0;
}
}
}
独立按键控制LED显示二进制
#include
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
P2=~LEDNum;
}
}
}
独立按键控制LED移位
#include
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
unsigned char LEDNum=0;
P2=~0x01;
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
{
LEDNum=0;
}
P2=~(0x01<
}
}
}
好啦,小雅兰今天的学习内容就到这里啦,还要继续加油呀!!!
越努力越优秀!!!
-
相关阅读:
redis(二)
【离散化】【 树状树状 】100246 将元素分配到两个数组中
ZeroTier客户端连接服务器
第一百五十七回 SliverList组件
【MySQL】一些内置函数(时间函数、字符串函数、数学函数等,学会了有妙用)
vue中获取复选框是否被选中的值、如何用JavaScript判断复选框是否被选中
了解交互设计:深入研究五个重要维度
Win Docker Desktop + WSL2 部署PyTorch-CUDA服务至k8s算力集群
Django 路由系统详解
常见的C/C++开源QP问题求解器
-
原文地址:https://blog.csdn.net/weixin_74957752/article/details/133464016