标题: 基于stm32简易计算器制作(lcd1602显示)源程序 [打印本页]
作者: 拾光smile 时间: 2020-11-17 21:43
标题: 基于stm32简易计算器制作(lcd1602显示)源程序
这是我前几天用stm32f03c8t6单片机做的一个简易计算器,用4×4矩阵键盘输入,LCD1602显示。下面是对我计算器的介绍,附件中还可以下载源程序代码码。我的简易计算器是搭建在面包板上面的,下面这是实物图和仿真图。
该计算器可以实现连续加减运算图:
较大数字或者较小数字可以用科学计数法显示
当用除法运算时,能够保留三位小数字
另外,在运算时还可以通过串口观察数据变化
下面是部分源码:
#include "stm32f10x.h"
#include "delay.h"
#include "keyscan.h"
#include "LCD1602.h"
#include "usart.h"
#include "math.h"
u8 num,flag;
double r,o;
long long a,b,x,y,z,sum,k;
int e,f,g,h,i,t,len,w,l;
int s,m,w,j,q,d,n,c=0;
int main()
{
LCD_init();
uart_init(9600);
while(1)
{
num=keyscan();
a=num;
if(a>=0&&a<=9&&s!=2&&flag!=0)
{
if(a!=0||n!=0)
{
LCD_write_data((u8)a+0x30);
if(n==0)
{
b=a;
}
else
{
b=sum*10;
sum=a;
}
sum=sum+b;
///////////////////////////////
if(q==0&&j==0)
{
x=sum;
printf("x=%lld ",x);
d=1;
m=0;
}
if(q==1&&j==1)
{
x=-sum;
printf("x=%lld ",x);
d=1;
m=0;
}
/////////////////////////////////
if(q==1&&(j==2||j==0))
{
y=sum;
printf("y=%lld ",y);
d=2;
}
/////////////////////////////////
n++;
w++;
delay_ms(100);
}
}
if(a==10&n!=0&&m!=1&&flag!=0)//+号
{
if(c>=1)
{
q=1;
j=0;
x=z;
}
//LCD_write_data('+');
LCD_write_data(0x2b);
printf(" + ");
j=0;
n=0;
q=1;
flag=1;
b=0;
sum=0;
c++;
w++;
delay_ms(100);
}
if(a==11&&m!=1&&flag!=0)
{
//LCD_write_data('-');
LCD_write_data(0x2d);//'-'号
printf(" - ");
if(c>=1)
{
q=1;
j=0;
x=z;
}
if(d==0)
{
j=1;
}
if(d==1)
{
j=2;
}
n=0;
q=1;
flag=2;
b=0;
sum=0;
m=-m;
w++;
c++;
delay_ms(100);
}
if(a==12&n!=0&&m!=1&&flag!=0)
{
LCD_write_data('*');//×号
//LCD_write_data(0x2a);//×号
if(c>=1)
{
q=1;
j=0;
x=z;
}
printf(" * ");
j=0;
n=0;
q=1;
flag=3;
b=0;
sum=0;
m=-m;
w++;
c++;
delay_ms(100);
}
if(a==13&n!=0&&m!=1&&flag!=0)
{
// LCD_write_data('');//除号
LCD_write_data(0xfd);//÷号
if(c>=1)
{
q=1;
j=0;
x=z;
}
printf("/");
有需要的小伙伴可以到附件中去下载全部代码。
由于本人储备知识量较少,基础较为薄弱,计算器中使用变量较多,代码较为繁琐,感兴趣的小伙伴们可以在评论区相互探讨学习,若计算器中还存在问题,也希望大家可以指正批评。
最后,感谢大家的支持!!!
作者: 51hei团团 时间: 2020-11-18 05:11
好资料,51黑有你更精彩!!!
作者: 9876k 时间: 2020-12-19 11:17
谢谢谢谢,太棒了
作者: 9876k 时间: 2020-12-19 11:42
请问一下,电路图中这个PR1是什么啊,求赐教
作者: 9876k 时间: 2020-12-19 15:08
您好,我想向您请教一下,我按照您的这个电路图连接的实物,但是没有连那个排阻,现在lcd背光亮,但是按动键盘没有显示数字,能请您给我点建议吗,求赐教
作者: 拾光smile 时间: 2020-12-23 21:04
电路图中的PR1是排阻,接实物图时可以不要,最好不要用proteus仿真stm32,目前版本效果一点都不好,我的8.9版本勉强仿真出来LCD1602,但是它现实的延时有问题,我这是方便大家看接线图才在上面画的
作者: 拾光smile 时间: 2020-12-23 21:09
仿真图上面的VEE(实物LCD1602那里是V00),我的这里是为了方便就直接接地了,最好接一个电位器,用来调节显示对比度
作者: Harbor123 时间: 2020-12-31 08:24
排阻..........
作者: jjwangxu2008 时间: 2020-12-31 08:52
好资料,51黑有你更精彩!!!
作者: wyb1911 时间: 2020-12-31 12:22
嗯 有道理
作者: lojo22 时间: 2021-1-2 13:49
你好,想问一下按照你的电路图连接的实物,LCD1602那里也接了电位器,代码烧录进去之后,为什么按键没有反应,怎么回事呢,能给点建议吗?
作者: liang118038 时间: 2021-1-3 12:12
既然用LCD1602就加个I2C转并口模块吧,才2到3块钱,反正LCD1602就那么慢,I2C的速度就能满足了,就2个IO省了一大堆引脚省得布线麻烦而且调对比度供电引脚都集成好了!
作者: huihui12 时间: 2021-1-3 12:32
我想学习单片机
作者: ghoo 时间: 2021-5-15 01:36
我的LCD不显示呢,是哪里有问题吗,应该不是电位器的问题
作者: fffnb 时间: 2021-6-7 09:30
这个版块的ADC有没有更简单的写法
作者: sang2220 时间: 2021-6-13 20:05
大哥你的这个问题解决了吗 我的也是这个问题,实在不知道原因是啥
作者: 珍爱~ 时间: 2021-6-14 12:03
个人建议家底不厚不要入手51单片机,看起来是一片金山未开化,你得有一个团队,当技术 成熟后必须组件生产线,没个三五十五万 你只能花闲钱做爱好而已。当然了,有梦想是好事,当你的实体样品机开始出售后 估计半年就一大堆山寨机开始竞争了。新科技的 竞争及其残忍
作者: rockroll 时间: 2021-6-14 23:34
LCD1602的线不用接完的吗?
作者: 南瓜小公主? 时间: 2021-6-17 10:23
想问问 为啥我连接实物后lcd亮了缺没有内容,可能会是什么地方的问题?
作者: kai11 时间: 2021-6-29 10:35
一样,问题解决了吗?
作者: 钱11 时间: 2021-7-7 14:52
博主,我制作出来 LCD显示屏不显示数字,应该如何排查硬件错误呢?
作者: daikai 时间: 2021-11-6 17:09
就是一个排阻
作者: H_W_M 时间: 2021-12-12 23:53
求教,正常显示八位,开机显示0 可以进行加减乘除,除法可以自动舍去小数,超出显示错误
作者: 13118302007 时间: 2021-12-13 19:31
不错,不过最后一张照片有问题吧,98/6=16.3333333333,而不是16.033,区别大了!
作者: zyhow 时间: 2021-12-15 17:15
I2C转并口模块是什么
作者: zyhow 时间: 2021-12-15 17:17
我在某一个宝上搜I2C转并口,要好几十。。。
作者: 32f 时间: 2021-12-28 10:54
用点整能不能实现啊
作者: qwssd 时间: 2022-3-2 08:26
这个里边没有仿真吧
作者: 104551 时间: 2022-3-15 17:05
51黑有你更精彩!!!
作者: 拾光smile 时间: 2022-3-19 19:21
没有仿真
作者: w921913520 时间: 2022-5-4 14:50
谢谢分享,帮助我解决了电路连接难题
作者: w921913520 时间: 2022-5-6 14:56
本帖最后由 w921913520 于 2022-5-6 22:17 编辑
楼主的代码可以用于STM32F103RB的芯片不
作者: wutiaowu 时间: 2022-5-12 23:33
想问一下,LCD有亮但是按键盘却没有反应,而且蜂鸣器一直在响该怎么解决?
作者: heicad 时间: 2022-5-13 16:40
LCD有亮只能证明 背光的2个引脚没有错,有可能其他的数据和控制io全部都是错误的接法,仔细检查一下电路
作者: LXJG 时间: 2022-5-16 18:54
LCD不显示加个RP电阻调节就行了
作者: 糜子 时间: 2022-5-24 14:45
检查一下IO口是否对应
作者: jude_li 时间: 2022-6-30 11:07
太棒了,设计就做这个了
作者: 我家哥哥爱下蛋 时间: 2023-2-27 16:27
LCD1602好难
作者: qumingzi 时间: 2023-7-5 18:48
不太明白,前来学习,感谢楼主。
作者: fzuzjh666 时间: 2023-9-27 13:47
有没有具体的接线图呀,还是说就按着原理图接就行
作者: keilhua 时间: 2023-10-8 20:58
太棒了,刚好想学一下
作者: were- 时间: 2023-12-2 16:37
好资料,51黑有你更精彩!!!
作者: lzm0422 时间: 2024-5-20 11:37
有人仿真显示成功了吗
作者: czhhb 时间: 2024-6-22 13:33
值得初学者学习。
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |