基于51单片机让按键控制1602上的数字相加减
时间: 2023-06-18 10:07:50 浏览: 315
基于51单片机的LCD1602控制
可以使用以下步骤实现基于51单片机让按键控制1602上的数字相加减:
1. 连接电路:将1602液晶屏和按键分别连接到51单片机。按键可以通过外部中断或轮询方式检测按下事件。
2. 初始化1602液晶屏:在程序开始时,需要初始化液晶屏并清空屏幕。
3. 检测按键:使用外部中断或轮询方式检测按键是否按下,并记录按下的按键编号。
4. 进行加减运算:根据记录的按键编号进行加法或减法运算,并将结果保存到内存中或者直接显示在液晶屏上。
5. 显示结果:将运算结果显示在1602液晶屏上。
下面是一个简单的示例代码:
```c
#include <reg52.h>
// 定义1602液晶屏引脚
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit k1=P1^0; // 按键1
sbit k2=P1^1; // 按键2
// 定义全局变量
unsigned char num1 = 0;
unsigned char num2 = 0;
unsigned char result = 0;
unsigned char op = 0; // 0表示加法,1表示减法
// 函数声明
void init_lcd(); // 初始化1602液晶屏
void write_cmd(unsigned char cmd); // 写命令到液晶屏
void write_data(unsigned char dat); // 写数据到液晶屏
void delay(unsigned int i); // 延时函数
void add(); // 加法运算
void sub(); // 减法运算
void main()
{
init_lcd(); // 初始化液晶屏
while(1)
{
if(k1 == 0) // 检测按键1是否按下
{
num1++; // num1自增1
write_cmd(0x80); // 光标移动到第一行第一列
write_data(num1 + '0'); // 显示num1的值
delay(1000); // 延时等待按键松开
}
if(k2 == 0) // 检测按键2是否按下
{
num2++; // num2自增1
write_cmd(0x8C); // 光标移动到第一行第十四列
write_data(num2 + '0'); // 显示num2的值
delay(1000); // 延时等待按键松开
}
if(num1 > 0 && num2 > 0) // 如果num1和num2都大于0,则进行运算
{
if(op == 0) // 加法运算
{
add();
}
else // 减法运算
{
sub();
}
delay(1000); // 延时等待按键松开
}
}
}
void init_lcd()
{
write_cmd(0x38); // 初始化1602液晶屏
write_cmd(0x0C); // 开启光标
write_cmd(0x06); // 光标右移
write_cmd(0x01); // 清屏
delay(1000);
}
void write_cmd(unsigned char cmd)
{
rs = 0; // 写命令
rw = 0;
P0 = cmd;
en = 1;
delay(5);
en = 0;
}
void write_data(unsigned char dat)
{
rs = 1; // 写数据
rw = 0;
P0 = dat;
en = 1;
delay(5);
en = 0;
}
void delay(unsigned int i)
{
while(i--);
}
void add()
{
result = num1 + num2;
write_cmd(0xC0); // 光标移动到第二行第一列
write_data(num1 + '0');
write_data('+');
write_data(num2 + '0');
write_data('=');
write_data(result + '0');
num1 = 0;
num2 = 0;
op = 1; // 切换为减法运算
}
void sub()
{
result = num1 - num2;
write_cmd(0xC0); // 光标移动到第二行第一列
write_data(num1 + '0');
write_data('-');
write_data(num2 + '0');
write_data('=');
write_data(result + '0');
num1 = 0;
num2 = 0;
op = 0; // 切换为加法运算
}
```
在上面的示例代码中,我们假设按键1和按键2分别用于控制num1和num2的值。当num1和num2都有值时,程序会进行加法或减法运算,并将结果显示在屏幕上。注意,在运算结束后,我们将num1和num2的值都清零,并切换为另一种运算方式,以便下一次运算。
阅读全文