各位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<
}
}
}
好啦,小雅兰今天的学习内容就到这里啦,还要继续加油呀!!!
越努力越优秀!!!
-
相关阅读:
数据重整:用Java实现精准Excel数据排序的实用策略
Go编程项目实战教程
物联网设备通过MQTT接入华为iot平台
GPT-4 Turbo:OpenAI发布旗舰版GPT-4模型,更便宜|更强大|128K上下文|支持多模态
grblHAL的代码学习笔记和解读
前端代码规范神器之f2elint的使用教程
c++ 模板 指针类型偏特化
Git 详细教程之五:SSH 免密登陆 GitHub
面试面经|Java面试Hibernate面试题
【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
-
原文地址:https://blog.csdn.net/weixin_74957752/article/details/133464016