这个是本次实验的板子,在网上(某宝,某鱼,某东等)都能买到。不贵,也就是十几块钱,对与新手和小白来说,性价比很高。
1.了解按键控制灯的原理
原理:按键和灯不是我们传统理解的思维,传统按键和灯是在同一个电路中的。而我们单片机编程按键
和灯是分开的两个电路,通过单片机作为媒介来处理数据,通过逻辑来实现按键控制灯。
2.通过查询法进行按键控制灯
怎么知道
sw1
按键被按下
KEY1
位置和
GND
接通,表现为低电平,值为
0
怎么知道
sw1
按键没有被按下
KEY1
位置通过上拉电阻到
5V
,表现为高电平,值为
1
![](https://i-blog.csdnimg.cn/blog_migrate/0eeb83e4445b12e7f2cdf5f4e2034f9c.png)
图a1
通过图
a2
得知
同理
LED
的分析,
KEY1
接到
STC89C52RC
的
P2.1
口,我们只要不断检测
P2.1
口的值(
0-
按下,
1-
松开)就知道按键是
否被按下。
![](https://i-blog.csdnimg.cn/blog_migrate/56f5b542420b96fe171f2245b7ba6227.png)
3.接下来就要用代码进行实践
#include "reg52.h"
sbit key1=P2^1;
sbit key2=P2^0;
sbit led1=P3^7;
void Delay100ms() //@11.0592MHz
{
unsigned char i, j;
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
void main()
{
int ledmark=0;
led1=1;
//查询法检测,是否被按下
while(1)
{
if(key1==0)
{
Delay100ms() ;
if(key1==0)
ledmark=1;
}
//灯亮,给一个P3.7低电平
if(key2==0)
{
//灯灭,给一个P3.7高电平
ledmark=0;}
if(ledmark==0)
{
led1=1;}
else {
led1=0;}
}
}
这个实验比较基础,但通过自己动手操作是很有成就感的,最后,喜欢的可以进行操作。