4×4按键lcd液晶显示的简易计算器
时间: 2024-01-06 15:01:49 浏览: 39
4×4按键LCD液晶显示的简易计算器是一种基础的计算器设备,它采用4行4列的按键布局和LCD液晶显示屏。具体来说,该计算器的按键包括0-9的数字按键、加法、减法、乘法、除法运算符键以及等号、小数点和删除键等。
用户可以通过按下相应的数字按键输入数字,按下加减乘除键选择不同的运算操作,然后再按下等号键执行计算。计算结果将以数字的形式显示在LCD液晶屏上。
除了基本的四则运算功能,该计算器还具备其他一些基本的功能,如小数点的输入、删除输入的数字以及清除显示屏上的内容。用户可以通过按下相关的按键来实现这些功能。
在使用过程中,该计算器还提供了反馈信息,如按下按键时的声音提示和按下等号键时的过程显示。这些反馈信息可以帮助用户准确输入和理解计算器的操作。
这种4×4按键LCD液晶显示的简易计算器可以满足日常的简单计算需求,如基本的加减乘除运算。它结构简单、易于操作、具有较小的体积和便携性,适用于各种场合和年龄段的用户。
相关问题
51单片机简易计算器lcd1602源码
下面是使用51单片机和LCD1602液晶屏实现的简易计算器源码:
```
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = {"0123456789+-*/="};
uchar result[16] = {"Result:"};
uchar val1, val2;
uchar op, flag, i;
sbit RS = P2^6;
sbit EN = P2^7;
void delay(uint z)
{
uint x, y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
RS = 0;
P0 = com;
EN = 1;
_nop_();
EN = 0;
delay(5);
}
void write_data(uchar date)
{
RS = 1;
P0 = date;
EN = 1;
_nop_();
EN = 0;
delay(5);
}
void init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void show_result()
{
write_com(0x80+0x40);
for(i=0;i<7;i++)
write_data(result[i]);
for(i=0;i<8;i++)
write_data(table[i+val1]);
for(i=0;i<1;i++)
write_data(op);
for(i=0;i<8;i++)
write_data(table[i+val2]);
}
void get_num()
{
if(P1 != 0xff)
{
delay(1000);
if(P1 != 0xff)
{
for(i=0;i<16;i++)
result[i] = ' ';
val1 = P1;
P1 = 0xff;
while(P1 == 0xff);
val2 = P1;
P1 = 0xff;
show_result();
flag = 1;
}
}
}
void get_op()
{
if(P1 != 0xff && flag)
{
delay(1000);
if(P1 != 0xff)
{
op = table[P1-10];
P1 = 0xff;
show_result();
}
}
}
void calculate()
{
if(P1 != 0xff && flag)
{
delay(1000);
if(P1 != 0xff)
{
switch(op)
{
case '+':
val1 += val2;
break;
case '-':
val1 -= val2;
break;
case '*':
val1 *= val2;
break;
case '/':
val1 /= val2;
break;
}
P1 = 0xff;
show_result();
flag = 0;
}
}
}
void main()
{
P1 = 0xff;
init();
write_com(0x80);
for(i=0;i<7;i++)
write_data(result[i]);
while(1)
{
get_num();
get_op();
calculate();
}
}
```
该代码实现了使用按键输入两个数字和一个运算符,然后通过LCD1602液晶屏显示计算结果。按下等于号后,会进行计算,并在屏幕上显示结果。需要注意的是,该代码中使用了定时延时函数,实际项目中应该使用定时器来实现延时。
51单片机用矩阵按键做一个简易减法计算器
好的,你可以按照以下步骤进行:
1. 需要一个4x4的矩阵按键和一个LCD液晶显示屏。
2. 将矩阵按键的行引脚连接到51单片机的P0口,将列引脚连接到P2口。需要注意的是,引脚需要通过电阻连接到VCC。
3. 初始化LCD液晶显示屏,配置51单片机的P1口为输出口,用于控制液晶显示屏的数据和命令传输。
4. 在主函数中使用while循环,不断读取矩阵按键的状态,当检测到按键按下时,根据按键的位置进行减法运算,并将结果显示在LCD液晶显示屏上。
5. 在进行减法运算时,可以使用51单片机的加减指令进行计算。
6. 最后,记得在程序结束时关闭LCD液晶显示屏。
以下是一个简单的代码示例,供你参考:
```
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar KeyScan() //矩阵按键扫描函数
{
uchar keyvalue;
uchar i,j;
P2=0x0f;
if(P2!=0x0f) //如果检测到一列有按键按下
{
delay(10); //延时一段时间,确保按键稳定
if(P2!=0x0f) //再次检测,确保按键已稳定按下
{
for(i=0;i<4;i++) //检测按下的是哪一行
{
P2=0x0f;
P2=(0x80>>i);
if(P2!=0x0f) //检测到按键按下
{
keyvalue=i*4+j; //计算按键编号
break;
}
}
P2=0x0f; //释放按键
return keyvalue;
}
}
return 0xff;
}
void main()
{
uchar keyvalue;
uchar num1,num2,result;
LCD_Init();
while(1)
{
keyvalue=KeyScan();
if(keyvalue!=0xff)
{
if(keyvalue <= 9) //数字键
{
if(num1 == 0xff) //当前没有输入数字
num1 = keyvalue;
else //已经输入了一个数字
num2 = keyvalue;
}
else if(keyvalue == 10) //减号键
{
result = num1 - num2;
LCD_ShowString(0,0,"Result:");
LCD_ShowNum(0,1,result,2);
num1 = num2 = 0xff; //清空数字
}
}
}
}
```
这是一个简单的示例代码,你可以根据自己的需求进行修改和完善。