51单片机计算器lcd1602
时间: 2023-10-31 07:38:47 浏览: 89
您好!请问您需要关于51单片机计算器和LCD1602的什么方面的信息呢?这两者的结合可以实现一个简单的计算器功能,可以通过51单片机的GPIO口驱动LCD1602显示器,实现数字输入、加减乘除等计算功能,并将结果显示在LCD1602上。需要注意的是,这个功能的实现需要编写一定的程序代码,需要您具备一定的编程能力。
相关问题
51单片机计算器lcd1602代码
以下是51单片机计算器LCD1602代码的示例:
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^2;
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms; i>0; i--)
for(j=110; j>0; j--);
}
void WriteCommand(uchar com) //写命令函数
{
RS=0;
RW=0;
P2=com;
delayms(1);
E=1;
delayms(1);
E=0;
}
void WriteData(uchar dat) //写数据函数
{
RS=1;
RW=0;
P2=dat;
delayms(1);
E=1;
delayms(1);
E=0;
}
void lcd_init() //LCD初始化函数
{
WriteCommand(0x38);
WriteCommand(0x0c);
WriteCommand(0x06);
WriteCommand(0x01);
}
void display(uchar *p) //显示函数
{
while(*p!=0)
{
WriteData(*p++);
}
}
void main() //主函数
{
lcd_init();
display("Hello, World!");
while(1);
}
```
这个代码使用了51单片机来控制LCD1602液晶屏幕,并且实现了一个简单的显示字符串功能。你可以根据自己的需要修改代码,添加其他的功能。
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液晶屏显示计算结果。按下等于号后,会进行计算,并在屏幕上显示结果。需要注意的是,该代码中使用了定时延时函数,实际项目中应该使用定时器来实现延时。
阅读全文