8255的PA,PB口接有2个共阳 LED数码管,PC口接有8个开关。试编一C51程序,用PA、PB口的数码管显示PC口的开关闭合值。(即显示Ci,LED1显C、 LED2显i。i表示PC口的第i个开关闭合),设8个开关只有一个闭合。
时间: 2023-06-12 11:05:14 浏览: 80
以下是一个简单的C51程序,实现了将PC口的开关闭合值显示在PA、PB口的两个共阳数码管上:
```c
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED1 = P1^0; // LED1接在PA0
sbit LED2 = P1^1; // LED2接在PA1
void delay(uint t) // 延时函数
{
uint i, j;
for (i = t; i > 0; i--)
for (j = 110; j > 0; j--);
}
void main()
{
uchar i;
P0 = 0xFF; // P0口设为输入
LED1 = 1; // 先关闭LED1
LED2 = 1; // 先关闭LED2
while (1)
{
for (i = 0; i < 8; i++)
{
if ((P0 >> i) & 0x01) // 判断第i个开关是否闭合
{
LED1 = 0; // LED1显示C
switch (i)
{
case 0:
LED2 = 0; P2 = 0xC0; break; // LED2显示0
case 1:
LED2 = 0; P2 = 0xF9; break; // LED2显示1
case 2:
LED2 = 0; P2 = 0xA4; break; // LED2显示2
case 3:
LED2 = 0; P2 = 0xB0; break; // LED2显示3
case 4:
LED2 = 0; P2 = 0x99; break; // LED2显示4
case 5:
LED2 = 0; P2 = 0x92; break; // LED2显示5
case 6:
LED2 = 0; P2 = 0x82; break; // LED2显示6
case 7:
LED2 = 0; P2 = 0xF8; break; // LED2显示7
}
delay(500); // 显示500ms
}
}
LED1 = 1; // 关闭LED1
LED2 = 1; // 关闭LED2
}
}
```
程序中使用了P0口作为输入口,PC口的8个开关分别接在P0.0 - P0.7上。程序会不断轮询P0口的开关闭合情况,并将对应的数字显示在PA、PB口的LED数码管上。
注意:程序中使用了延时函数delay(),可能会存在误差,需要根据实际情况调整延时时间。此外,程序中只考虑了8个开关中只有一个闭合的情况,如果有多个开关闭合,则会显示最后一个闭合的开关对应的数字。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)