51单片机课程设计4乘4计算器 代码
时间: 2023-10-24 13:04:27 浏览: 173
51单片机计算器代码
以下是一个简单的51单片机课程设计4乘4计算器的代码,仅供参考:
```
#include <reg51.h>
sbit RS = P2^0; //定义RS口
sbit EN = P2^1; //定义EN口
void Init_LCD(); //LCD初始化函数
void Write_Command(unsigned char command); //写指令函数
void Write_Data(unsigned char dat); //写数据函数
void Delay(int num); //延时函数
void main()
{
unsigned char key, a, b, c, result;
Init_LCD(); //初始化LCD
Write_Command(0x80); //设置光标位置为第一行第一列
Write_Data('A'); //输出提示信息
Write_Data(':');
Write_Command(0xC0); //设置光标位置为第二行第一列
Write_Data('B'); //输出提示信息
Write_Data(':');
while(1)
{
key = P1; //读取键盘按键
if(key != 0xFF) //如果有按键按下
{
Delay(5); //延时去抖
key = P1; //再次读取键盘按键
if(key != 0xFF) //如果确认有按键按下
{
if(key == 0xFE) a = 1; //如果按下第一行第一个键,则输入数字1
else if(key == 0xFD) a = 2; //如果按下第一行第二个键,则输入数字2
else if(key == 0xFB) a = 3; //如果按下第一行第三个键,则输入数字3
else if(key == 0xF7) a = 4; //如果按下第一行第四个键,则输入数字4
else if(key == 0xEF) b = 1; //如果按下第二行第一个键,则输入数字1
else if(key == 0xDF) b = 2; //如果按下第二行第二个键,则输入数字2
else if(key == 0xBF) b = 3; //如果按下第二行第三个键,则输入数字3
else if(key == 0x7F) b = 4; //如果按下第二行第四个键,则输入数字4
}
}
if(a != 0 && b != 0) //如果已经输入了两个数
{
Write_Command(0x94); //设置光标位置为第二行第五列
Write_Data('C'); //输出提示信息
Write_Data(':');
key = P1; //读取键盘按键
if(key != 0xFF) //如果有按键按下
{
Delay(5); //延时去抖
key = P1; //再次读取键盘按键
if(key != 0xFF) //如果确认有按键按下
{
if(key == 0xFE) c = 1; //如果按下第一行第一个键,则输入数字1
else if(key == 0xFD) c = 2; //如果按下第一行第二个键,则输入数字2
else if(key == 0xFB) c = 3; //如果按下第一行第三个键,则输入数字3
else if(key == 0xF7) c = 4; //如果按下第一行第四个键,则输入数字4
}
}
if(c != 0) //如果已经输入第三个数
{
if(a == 1) result = b * c; //如果A等于1,则做乘法运算
else if(a == 2) result = b + c; //如果A等于2,则做加法运算
else if(a == 3) result = b - c; //如果A等于3,则做减法运算
else if(a == 4) result = b / c; //如果A等于4,则做除法运算
Write_Command(0xD4); //设置光标位置为第二行第十三列
Write_Data('R'); //输出提示信息
Write_Data(':');
Write_Data(result+48); //输出结果
a = b = c = result = 0; //清零
}
}
}
}
void Init_LCD()
{
Write_Command(0x38); //设置LCD显示模式
Write_Command(0x0C); //开启LCD显示
Write_Command(0x06); //设置光标移动方式
Write_Command(0x01); //清屏
}
void Write_Command(unsigned char command)
{
RS = 0; //RS置低,表示写入指令
P0 = command; //将指令写入P0口
EN = 1; //EN置高
Delay(5); //延时
EN = 0; //EN置低
}
void Write_Data(unsigned char dat)
{
RS = 1; //RS置高,表示写入数据
P0 = dat; //将数据写入P0口
EN = 1; //EN置高
Delay(5); //延时
EN = 0; //EN置低
}
void Delay(int num)
{
int i, j;
for(i=0; i<num; i++)
for(j=0; j<100; j++);
}
```
该代码使用了4x4键盘和LCD1602液晶屏,可以实现四则运算功能。用户输入两个数字和运算符后,按下等于号,程序会根据输入的运算符进行计算,然后在LCD屏幕上显示结果。
阅读全文