51单片机按键控制数码管显示1234代码
时间: 2023-10-01 07:05:41 浏览: 118
以下是基于51单片机按键控制数码管显示1234的代码:
```c
#include <reg51.h>
sbit s1 = P1^0; // 定义按键1
sbit s2 = P1^1; // 定义按键2
sbit s3 = P1^2; // 定义按键3
sbit s4 = P1^3; // 定义按键4
sbit dula = P2^6; // 定义段选锁存器
sbit wela = P2^7; // 定义位选锁存器
unsigned char code table[4] = {0x06, 0x5B, 0x4F, 0x66}; // 数码管0~9的编码
void delay(unsigned int i) // 延时函数
{
unsigned int j;
while(i--)
{
for(j=0;j<125;j++);
}
}
void main()
{
unsigned char i = 0;
wela = 1; // 先锁定位选锁存器
P0 = 0xFE; // 显示第一位数码管
wela = 0; // 解锁位选锁存器
while(1)
{
if(s1 == 0) // 按键1被按下
{
i = 0;
while(s1 == 0); // 等待按键1释放
}
else if(s2 == 0) // 按键2被按下
{
i = 1;
while(s2 == 0); // 等待按键2释放
}
else if(s3 == 0) // 按键3被按下
{
i = 2;
while(s3 == 0); // 等待按键3释放
}
else if(s4 == 0) // 按键4被按下
{
i = 3;
while(s4 == 0); // 等待按键4释放
}
dula = 1; // 先锁定段选锁存器
P0 = table[i]; // 显示对应的数字
dula = 0; // 解锁段选锁存器
delay(100); // 延时一段时间
}
}
```
该代码中使用了4个按键控制4个数码管,按下不同的按键,数码管会显示对应的数字。其中,`table`数组中存储了0~9数字的编码,通过控制段选锁存器和位选锁存器,可以实现数码管的显示。该代码中使用了一个简单的延时函数来控制数码管的显示频率。
阅读全文