51单面机c语言矩阵键盘扫描LED显示器显示简易计算程序代码
时间: 2023-12-15 11:05:04 浏览: 190
以下是一个简单的 51 单片机 C 语言矩阵键盘扫描、LED 显示器显示、简易计算程序代码示例:
```
#include <reg51.h>
// 定义按键扫描函数
unsigned char keyScan()
{
unsigned char keyVal = 0xFF; // 初始化为无键按下状态
unsigned char i, j;
for (i = 0; i < 4; i++) // 行扫描
{
P1 = ~(1 << i); // P1 按位取反,使第 i 行输出低电平
for (j = 0; j < 4; j++) // 列检测
{
if ((P1 & (1 << (j + 4))) == 0) // 判断第 j 列是否为低电平,即是否有键按下
{
keyVal = i * 4 + j; // 计算键值
while ((P1 & (1 << (j + 4))) == 0); // 等待键松开
break;
}
}
if (keyVal != 0xFF) // 如果有键按下,跳出循环
break;
}
return keyVal; // 返回键值,如果没有键按下,返回 0xFF
}
// 定义数码管显示函数
void ledDisplay(unsigned char num)
{
unsigned char ledCode[] = { // 数码管编码表
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
};
P2 = ledCode[num]; // 根据数字显示相应的编码
}
void main()
{
unsigned char keyVal, num1 = 0, num2 = 0, op = 0, result = 0;
while (1)
{
keyVal = keyScan(); // 扫描键盘,获取键值
if (keyVal != 0xFF) // 如果有键按下
{
if (keyVal <= 9) // 如果按下的是数字键
{
if (op == 0) // 如果还没有选择运算符,把数字存入 num1
num1 = keyVal;
else // 如果已经选择了运算符,把数字存入 num2
num2 = keyVal;
ledDisplay(keyVal); // 显示按下的数字
}
else if (keyVal == 10) // 如果按下的是加号键
{
op = 1; // 选择加法运算
ledDisplay('+'); // 显示加号
}
else if (keyVal == 11) // 如果按下的是减号键
{
op = 2; // 选择减法运算
ledDisplay('-'); // 显示减号
}
else if (keyVal == 12) // 如果按下的是乘号键
{
op = 3; // 选择乘法运算
ledDisplay('*'); // 显示乘号
}
else if (keyVal == 13) // 如果按下的是除号键
{
op = 4; // 选择除法运算
ledDisplay('/'); // 显示除号
}
else if (keyVal == 14) // 如果按下的是等号键
{
switch (op) // 根据选择的运算符进行计算
{
case 1: // 加法
result = num1 + num2;
break;
case 2: // 减法
result = num1 - num2;
break;
case 3: // 乘法
result = num1 * num2;
break;
case 4: // 除法
result = num1 / num2;
break;
default:
break;
}
ledDisplay(result); // 显示计算结果
num1 = result; // 把计算结果存入 num1,以便进行连续计算
num2 = 0; // 清零 num2
op = 0; // 清空运算符
}
else if (keyVal == 15) // 如果按下的是清零键
{
num1 = 0; // 清零 num1
num2 = 0; // 清零 num2
op = 0; // 清空运算符
ledDisplay(0); // 显示 0
}
}
}
}
```
这段代码实现了一个简单的计算器,可以通过矩阵键盘输入数字和选择运算符,然后在 LED 数码管上显示计算结果。在代码中,`keyScan()` 函数通过行扫描和列检测来实现键盘扫描,`ledDisplay()` 函数根据数码管编码表来显示数字和运算符,主函数则根据键值进行相应的处理,包括存储数字、选择运算符、进行计算、清零等操作。
阅读全文