51单片机搭建16个按钮计算器代码
时间: 2023-11-09 21:07:46 浏览: 39
好的,以下是一个基于51单片机的16个按钮计算器代码的示例:
```
#include <reg51.h>
#define KEY P1 // 定义按键端口
#define LED P2 // 定义LED灯端口
void delay(unsigned int t)
{
while(t--);
}
void main()
{
unsigned char key_value = 0;
unsigned char result = 0;
unsigned char i = 0;
while(1)
{
key_value = KEY; // 读取按键值
if(key_value != 0xff) // 按键按下
{
delay(100); // 延时去抖动
if(key_value != 0xff) // 再次判断按键是否按下
{
switch(key_value)
{
case 0xfe: // 0键
result = 0;
break;
case 0xfd: // 1键
result = result * 10 + 1;
break;
case 0xfb: // 2键
result = result * 10 + 2;
break;
case 0xf7: // 3键
result = result * 10 + 3;
break;
case 0xef: // 4键
result = result * 10 + 4;
break;
case 0xdf: // 5键
result = result * 10 + 5;
break;
case 0xbf: // 6键
result = result * 10 + 6;
break;
case 0x7f: // 7键
result = result * 10 + 7;
break;
case 0xfe: // 8键
result = result * 10 + 8;
break;
case 0xfd: // 9键
result = result * 10 + 9;
break;
case 0xf7: // 加键
result = result + i;
break;
case 0xef: // 减键
result = result - i;
break;
case 0xdf: // 乘键
result = result * i;
break;
case 0xbf: // 除键
result = result / i;
break;
case 0x7f: // 等于键
LED = result;
break;
}
while(key_value != 0xff) // 等待按键释放
{
key_value = KEY;
}
delay(100); // 再次延时去抖动
}
}
}
}
```
以上代码仅供参考,具体的实现方式可能需要根据你的具体需求进行调整。