利用数码管、独立键盘制作一个简易加法器计算器(位数不超过3位数)。按s2数加(从0~
时间: 2023-05-18 17:00:57 浏览: 151
利用数码管和独立键盘可以制作一个简易的加法器计算器,可以计算3位数以内的加法运算。在按下s2按钮时,计算器就会开始计算并输出结果。
制作该计算器需要以下材料和步骤:
材料:
1. 数码管模块
2. 独立键盘模块
3. 电子线和面包板
步骤:
1. 将数码管模块和独立键盘模块连接到面包板上,并将它们与电子线连接起来。
2. 为计算器设置一个位数不超过3位数的加法器,使其可以在接收到输入后执行加法运算,并将结果输出到数码管上。
3. 接下来需要编写一个程序,通过独立键盘将输入的数字转换为数值,并将其传递给加法器进行计算。程序需要识别s2按钮,并在接收到s2信号后,执行加法运算并将结果输出到数码管上。
总之,只需将数码管和独立键盘连接并编写一个简单的程序,就可以制作一个简易的加法器计算器。
相关问题
51单片机简易计算器4行4列矩阵键盘1个8位数码管代码
以下是51单片机简易计算器4行4列矩阵键盘1个8位数码管代码的示例:
```c
#include <reg51.h>
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
unsigned char KeyValue = 0; // 按键值
unsigned char KeyReady = 0; // 按键准备就绪标志
unsigned char KeyPressed = 0; // 按键已经被按下标志
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++) {
for (j = 0; j < 120; j++);
}
}
void KeyScan() // 按键扫描函数
{
unsigned char temp, i;
temp = P1;
temp |= 0xF0;
P1 = temp;
for (i = 0; i < 4; i++) {
switch (i) {
case 0:
LSA = 0; LSB = 0; LSC = 0; break;
case 1:
LSA = 1; LSB = 0; LSC = 0; break;
case 2:
LSA = 0; LSB = 1; LSC = 0; break;
case 3:
LSA = 1; LSB = 1; LSC = 0; break;
}
temp = P1 & 0xF0;
if (temp != 0xF0) { // 有按键按下
delay(5); // 延时消除抖动
temp = P1 & 0xF0;
if (temp != 0xF0) {
switch (temp) {
case 0xE0:
KeyValue = i * 4 + 1; break;
case 0xD0:
KeyValue = i * 4 + 2; break;
case 0xB0:
KeyValue = i * 4 + 3; break;
case 0x70:
KeyValue = i * 4 + 4; break;
}
KeyReady = 1; // 设置按键准备就绪标志
}
while ((P1 & 0xF0) != 0xF0); // 等待按键释放
}
}
}
void Display(unsigned char num) // 数码管显示函数
{
unsigned char code table[] = { // 数码管编码表
0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71
};
P0 = table[num];
}
void main()
{
unsigned char a = 0, b = 0, op = 0, result = 0; // a, b为操作数,op为运算符,result为结果
while (1) {
KeyScan(); // 扫描按键
if (KeyReady && !KeyPressed) { // 如果按键准备就绪且没有按键被按下
KeyPressed = 1; // 设置按键已经被按下标志
switch (KeyValue) {
case 1:
a = a * 10 + 1; break;
case 2:
a = a * 10 + 2; break;
case 3:
a = a * 10 + 3; break;
case 4:
op = '+'; break;
case 5:
b = b * 10 + 4; break;
case 6:
b = b * 10 + 5; break;
case 7:
b = b * 10 + 6; break;
case 8:
op = '-'; break;
case 9:
b = b * 10 + 7; break;
case 10:
b = b * 10 + 8; break;
case 11:
b = b * 10 + 9; break;
case 12:
op = '*'; break;
case 13:
a = 0; b = 0; op = 0; result = 0; break; // 清零
case 14:
b = b * 10 + 0; break;
case 15:
if (op == '+') {
result = a + b;
} else if (op == '-') {
result = a - b;
} else if (op == '*') {
result = a * b;
}
a = result; b = 0; op = 0; result = 0; // 将结果存入a中,清零b、op、result
break;
case 16:
op = '/'; break;
}
} else if (!KeyReady && KeyPressed) { // 如果按键准备就绪标志被清零且按键已经被按下
KeyPressed = 0; // 清空按键已经被按下标志
}
Display(a); // 显示a
}
}
```
这个代码实现了简单的加减乘除计算,按下数字键输入数字,按下运算符键选择运算符,按下等于键显示结果,按下清零键清零。
利用stm32f103处理器、4位共阳极8段数码管和4*4矩阵键盘,设计简易计算器
利用STM32F103处理器、4位共阳极8段数码管和4*4矩阵键盘设计简易计算器是一个很有趣的项目。首先,我们可以利用STM32F103处理器的GPIO接口来控制8段数码管的显示,并通过定时器来实现数码管的扫描显示。接着,我们可以利用矩阵键盘的行列扫描原理,通过STM32F103的外部中断输入来获取按键的输入值。在STM32F103处理器上编写程序,将矩阵键盘输入的按键值与数码管的显示相结合,实现简易计算器的输入和输出。
在程序设计中,我们可以利用按键输入来获取用户输入的数字和运算符号,并通过数码管显示出来。同时,我们可以利用算法来进行基本的加减乘除运算,再将结果通过数码管显示出来。另外,还可以设置一些额外的功能,如清零、删除和等于等功能,提高计算器的实用性和便利性。
在硬件设计上,我们需要将STM32F103处理器、8段数码管和4*4矩阵键盘通过引脚连接,通过电路设计和焊接来完成硬件的搭建。
通过这样的设计,我们可以完成一个功能简单的计算器,在实现基本加减乘除等运算的基础上,还可以通过外部中断输入获取用户操作,并通过数码管显示结果。这样的简易计算器不仅可以提高处理器和数电知识的应用能力,还可以提高对数电和数字电路知识的理解与应用。