AT89S51 单⽚机 P1.0 和 P1.1 引脚接有两只开关 S0 和 S1, 两只引脚上的高低电平共有 4 种组合,这 4 种组合分别点亮 P2.0~P2.3 引脚控制的 4 只 LED:LED0~LED3 (高电平点亮), 编程实现此功能
时间: 2024-03-24 18:41:56 浏览: 149
好的,这是一个经典的单片机实验题目。我们可以通过编写程序对 P1.0 和 P1.1 引脚进行读取,然后根据读取到的数值点亮相应的 LED。
以下是代码实现:
```c
#include <REG51.H>
sbit S0 = P1^0; // 定义 S0 引脚
sbit S1 = P1^1; // 定义 S1 引脚
sbit LED0 = P2^0; // 定义 LED0 引脚
sbit LED1 = P2^1; // 定义 LED1 引脚
sbit LED2 = P2^2; // 定义 LED2 引脚
sbit LED3 = P2^3; // 定义 LED3 引脚
void main()
{
while(1)
{
if(S0==0 && S1==0) // S0 和 S1 均为低电平
{
LED0 = 1; // 点亮 LED0
LED1 = 0;
LED2 = 0;
LED3 = 0;
}
else if(S0==0 && S1==1) // S0 为低电平,S1 为高电平
{
LED0 = 0;
LED1 = 1; // 点亮 LED1
LED2 = 0;
LED3 = 0;
}
else if(S0==1 && S1==0) // S0 为高电平,S1 为低电平
{
LED0 = 0;
LED1 = 0;
LED2 = 1; // 点亮 LED2
LED3 = 0;
}
else // S0 和 S1 均为高电平
{
LED0 = 0;
LED1 = 0;
LED2 = 0;
LED3 = 1; // 点亮 LED3
}
}
}
```
程序的思路很简单,就是通过 if-else 语句结构来判断 S0 和 S1 引脚的状态,并根据状态点亮相应的 LED。需要注意的是,因为引脚的电平状态可能会有抖动,所以在实际使用中可能需要加上一些消抖处理的代码。
阅读全文