基于stm32计算器设计

news2024/9/25 13:13:53

这里写目录标题

  • == 完整de代码可q我获取==
  • 1 系统功能设计
  • 2 系统硬件系统分析设计
    • 2.1 STM32单片机核心电路设计
    • 2.2 LCD1602液晶显示模块电路设计
    • 2.3 4X4矩阵键盘模块设计
    • 3 STM32单片机系统软件设计
    • 3.1 编程语言选择
    • 3.2 Keil程序开发环境
    • 3.3 FlyMcu程序烧录软件介绍
    • 3.4 CH340串口程序烧写模块介绍

== 完整de代码可q我获取==

1 系统功能设计

STM32单片机智能计算器16*16矩阵键盘
本系统由STM32F407ZGT6单片机核心板、矩阵按键、LCD1显示屏。
1、通过按键可以进行数字的加减乘除运算。
2、可以进行连续加减运算,该计算器只能进行整数运算,不能进行小数处理。
3、矩阵按键布局对应一下参数:
7 8 9 /
4 5 6 *
1 2 3 -
C 0 = +

2 系统硬件系统分析设计

2.1 STM32单片机核心电路设计

STM32系列处理器是意法半导体ST公司生产的一种基于ARM 7架构的32位、支持实时仿真和跟踪的微控制器。选择此款控制芯片是因为本系统设计并非追求成本的最低或更小的功耗,而是在实现本设计功能的前提下能够提供更丰富的接口和功能以便于设计实验系统各实验项目所需的外围扩展电路。此款控制芯片在完成单片机课程的学习后上手较为容易,在医疗器械中应用广泛,具有很好的学习、实验研究价值。
一、STM32的主要优点:
(1)使用ARM最新的、先进架构的Cortex-M3内核
(2) 优异的实时性能
(3) 杰出的功耗控制
(4) 出众及创新的外设
(5) 最大程度的集成整合
(6) 易于开发,可使产品快速将进入市场
二、STM32——最佳的平台选项
对于使用同一平台进行多个项目开发而言,STM32是最
佳的选择:
(1) 从仅需少量的存储空间和管脚应用到需要更多的存储空间和管脚的应用
(2) 从苛求性能的应用到电池供电的应用
(3) 从简单而成本敏感的应用到高端应用
(4) 全系列脚对脚、外设及软件的高度兼容性,给您带来全方位的灵活性。您可以在不必修改您原始框架及软件的条件下,将您的应用升级到需要更多存储空间或精简到使用更少存储空间/ 或改用不同的封装的规格。
STM32F407zgt6单片机核心板接口电路图如下图所示。
在这里插入图片描述
STM32单片机核心板接口原理图
在这里插入图片描述
STM32单片机实物图

2.2 LCD1602液晶显示模块电路设计

LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。
一、LCD1602主要技术参数如下:
(1)显示容量为16×2个字符;
(2)芯片工作电压为4.5~5.5V;
(3)工作电流为2.0mA(5.0V);
(4)模块最佳工作电压为5.0V;
(5)字符尺寸为2.95×4.35(W×H)mm。
二、LCD1602采用标准的14脚,其接口的引脚说明如下:
(1)第1脚:VSS为地电源。
(2)第2脚:VDD接5V正电源。
(3)第3脚:V0为液晶显示器对比度调整端。
(4)第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
(5)第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
(6)第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
(7)第7~14脚:D0~D7为8位双向数据线。
(8)第15~16脚:空脚
系统中采用LCD1602作为显示器件输出信息。在本电路中电位器可以调节液晶显示的对比度即清晰度。其具体电路原理图如下图所示。

LCD1602液晶显示电路原理图
其实物图如下图所示。

2.3 4X4矩阵键盘模块设计

在单片机按键使用过程中,当键盘中按键数量较多时,为了减少单片机端口的占用,通常将按键排列成矩阵。也就是只需要8个IO口,就可以拥有16个按键的功能。具体的原理和使用方法。。
一、矩阵键盘模块特点:
(1)体积小;
(2)节省空间;
(3)使用方便;
(4)共计16按键;
(5)单片机外扩键盘的上佳选择。
二、模块接口原理图如下图所示。
在这里插入图片描述
模块接口电路原理图

三、4X4矩阵键盘模块实物图如下图所示。
在这里插入图片描述

4X4矩阵键盘模块模块实物图

3 STM32单片机系统软件设计

3.1 编程语言选择

由于整个程序比较复杂,且计算量较大,用到了较多的浮点数计算,所以程序的编写采用了C语言。
对于大多数单片机,使用C语言这样的高级语言与使用汇编语言相比具有如下优点:
(1)不需要了解处理器的指令集,也不必了解存储器结构。
(2)寄存器分配和寻址方式由编译器进行管理,编程时不需要考虑存储器的(3)地址和数据类型等细节。
(4)指定操作的变量选择组合提高了程序的可读性。
(5)可使用与人的思维更相近的关键字和操作函数。
(6)与使用汇编语言相比,程序的开发和调试时间大大缩短。
(7)C语言的库文件提供了许多标准的例程。
(8)通过C语言可实现模块化编程技术,从而可将已编制好的程序加到 新程序中。
(9)C语言可移植性好且非常普及,C语言编译器几乎适用于所有的目标系统,己完成的项目可以很容易的转换到其它的处理器或环境中与汇编语言相比,C语言在功能上、结构性、可读性、可移植性、可维护性上有明显的优势,易学易用。

3.2 Keil程序开发环境

本设计中单片机开发环境是Keil,Keil是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。其中Keil有以下特点:
(1)Keil软件同时支持WINXP和WIN7等多种操作系统,提供了丰富的库函数和功能强大的开发工具。
(2)Keil可以完成从编辑、编译、到连接、调试的一套开发流程。
Keil软件界面如下图所示。
在这里插入图片描述

Keil uVision5开发界面图

3.3 FlyMcu程序烧录软件介绍

FlyMcu是一款好用的stm32烧录程序软件,对于专业的单片机开发者来说应该非常适用,软件可以广泛地应用于电路编程(ICP)和应用编程(IAP)领域,支持进行编程、校验、读器件信息。
可以通过下载器(即CH340等串口烧写模块)下载单片机程序。单片机开发板、下载器以及PC连接好后,首先需要在软件中选择串口号,然后选择项目程序“hex”文件所在的地址,最后就可以点击开“开始编程(P)”按钮即可下载程序。具体下载界面如下图所示。
在这里插入图片描述

烧录软件下载界面

3.4 CH340串口程序烧写模块介绍

本设计通过CH340串口烧写模块实现对单片机程序的烧写。CH340串口烧写模块使用USB接口,十分方便的解决了笔记本电脑用户对STC系列单片机的程序烧写问题,本下载器低价格、高性能,是开发 STC 系列单片机的首选优秀工具。
一、CH340串口烧写模块特点:
(1)支持 USB1.1 或 USB2.0 通信;
(2)全面支持 WIN98、 WINME、 WIN2000、 WINXP、 VISTA、 WIN7 等操作系统;
(3)采用 USB 口供电;
(4)在对芯片编程时可以使用目标系统本身电源,也可以使用编程器从 USB 口取电供给目标板,但应保证目标板电流不大于500mA,以免不能正常编程;
(5)编程完成不影响目标板的程序运行;
(6)支持 STC 全系列芯片烧录;
(7)编程器提供 3.3V 与 5V 的电压输出接口;
(8)速度比并口编程更快更稳定,更方便笔记本电脑用户使用;
(9)采用进口原装芯片, 能进行高速稳定编程;
模块如下图所示。
在这里插入图片描述

CH340串口烧写模块
二、CH340串口烧写模块引脚说明
(1)+5V 5V输出,因有USB电源线,故本开发板不接,不需要
(2)VCC 本开发板不接,不需要
(3)3V3 3.3V输出,本开发板不接,不需要
(4)TXD 接单片机的RXD引脚
(5)RXD 接单片机的RXD引脚
(6)GND 接GND。
三、CH340串口烧写模块与单片机的具体接线图如下表所示。
CH340串口烧写模块与单片机接线:
TXD RXD (单片机引脚PA10)
RXD TXD(单片机引脚PA9)
GND GND

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/372157.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为OD机试模拟题】用 C++ 实现 - 最近的点(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最近的点题目输入输出示例一输入输出Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址…

【基础篇0】Linux下ANACONDA与TF-LITE环境配置

0 写在前面:一些摸索与总结 对于Linux系统,我发现不管是电脑x86的Ubuntu还是树莓派arm的raspberry系统,在系统安装完毕后,总是自带一个特定版本的python.   例如我的ubuntu22.04自带的python版本是3.10,而高版本的py…

Vue3之组件

何为组件 组件化的概念已经提出了很多年了,但是何为组件呢?组件有啥优势?本文将会做出解答,首先我们需要弄清楚何为组件。在VUE的官网中的解释是: 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对…

Android 基础知识4-3.2 EditText(输入框)详解

一、EditText(输入框)介绍 EditText在开发中也是经常使用的控件,比如,要实现一个登录页面,需要用户输入账号、密码等信息,然后我们或得用户输入的内容,把它交给服务器来判断。因此,这…

【模拟集成电路】分频器(DIV_TSPC)设计

分频器(DIV_TSPC)设计前言一、DIV工作原理二、DIV电路设计(1)32分频原理图(2)D触发器原理图(3)D锁存器原理图(4)三输入与非门原理图三、DIV仿真测试32分频器测…

k8s学习之路 | Day15 k8s 中的 yaml 语法

文章目录yaml 基础什么是 yaml&#xff1f;yaml 特性适用场景基本语法规则数据类型yaml 对象yaml 数组yaml 纯量yaml 引用k8s 中的 yaml 语法\<string>\<Object>\<map[string]string>\<[]Object>\<boolean>示例 yaml 说明我在学习过程中&#xf…

【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明最多获得的短信条数题目输入输出示例一输入输出说明示例二输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过…

优化WebView实现H5秒开

WebView与原生对比差在哪里&#xff1f;这里引用百度APP图片来说明。百度的开发人员将这一整个过程划分为了四个阶段&#xff0c;并统计出了各个阶段的平均耗时。可以看到&#xff0c;在初始化组件阶段就花费了 260 ms&#xff0c;首次创建耗时均值为 500 ms&#xff0c;毫无疑…

7-vue-2

vue3.2 自定义全局指令、局部指令 // 在src目录下新建一个directive文件&#xff0c;在此文件夹下新建一个index.js文件夹&#xff0c;接着输入如下内容 const directives (app) > {//这里是给元素取得名字&#xff0c;虽然是focus&#xff0c;但是实际引用的时候必须以v…

为赋能,创共赢~ 〖TFS_CLUB社区〗-〖星荐官计划〗来袭~ 期待各位小伙伴的加入~

文章目录❤️‍&#x1f525; TFS社区介绍❤️‍&#x1f525; 星荐官计划在直播结束之后&#xff0c;有几位小伙伴跟我说&#xff0c;想法是好的&#xff0c;但是会很难搞。试想一下如果真的是很容易做的事情&#xff0c;那岂不是人人都可以做&#xff1f;正因为难做&#xff…

PyQt5数据库开发2 5.2 QSqlRelationalTableModel

目录 一、Qt窗体设计 1. 新建Qt项目 2. 添加组件 3. 添加资源 4. 添加Action 5. 添加工具栏 6. 添加菜单项 7. 添加退出功能 二、SQL Server下建表插数据 1. 建立表 2. 插入数据 3. 单表数据 4. 联合查询 三、代码实现 1. 新建项目目录 2. 编译窗体文件和资…

[计算机网络(第八版)]第一章 概述(章节测试/章节作业)

随堂作业 练习版(无答案版) 1.2 因特网概述 1【单选题】因特网的前身是1969年创建的第一个分组交换网 A、internetB、InternetC、NSFNETD、ARPANET 2【单选题】因特网采用的核心技术是 A、TCP/IPB、局域网技术C、远程通信技术D、光纤技术 1.3 三种交换方式&#xff1a;电路…

mysql数据库表的创建与查看

mysql数据库表的创建与查看 一、mysql查看 查看所有数据库 show databases切换数据库 use 数据库名查看该数据库下所有的表名 show tables查看表的结构 desc 表名二、mysq创建 创建数据库 create database 数据库名;创建数据库设置编码 drop database if EXISTS dbname; creat…

Gehpi的网络布局

Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念&#xff0c;指将点和边通过某种策略进行排布&#xff0c;应尽可能满足以下4个原则&#xff1a; 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…

flask入门-3.Flask操作数据库

3. Flask操作数据库 1. 连接数据库 首先下载 MySQL数据库 其次下载对应的包: pip install pymysql pip install flask-sqlalchemy在 app.py 中进行连接测试 from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemyhostname "1…

Facebook广告投放运营中的关键成功因素是什么?

在当今数字化的时代&#xff0c;广告投放已经成为了各种企业获取市场份额和增加品牌曝光的重要手段之一。Facebook作为全球最大的社交媒体平台之一&#xff0c;其广告投放运营的成功&#xff0c;将直接影响企业的品牌推广和市场营销效果。本文将探讨Facebook广告投放运营中的关…

浅谈光流跟踪之KLT稀疏光流跟踪算法

0 简介 在学习vins-mono过程中&#xff0c;算法前端采用基于KLT光流的跟踪方法&#xff0c;对光流和KLT光流进行简单的总结。包括LK光流跟踪算法原理&#xff0c;基于金字塔改进的LK光流跟踪&#xff0c;KLT光流跟踪算法&#xff0c;以及在光流跟踪时使用的角点检测算法Harris…

追梦之旅【数据结构篇】——详解C语言实现链队列

详解C语言实现链队列~&#x1f60e;前言&#x1f64c;整体实现内容分析&#x1f49e;预备小知识&#x1f64c;1.链队列头文件编写&#x1f64c;2.链队列功能文件&#xff08;Queue.c &#xff09;编写&#xff1a;&#x1f64c;1&#xff09;初始化函数实现2&#xff09;销毁函…

【一些回忆】2022.02.26-2023.02.26 一个普通男孩的365天

&#x1f483;&#x1f3fc; 本人简介&#xff1a;男 &#x1f476;&#x1f3fc; 年龄&#xff1a;18 &#x1f91e; 作者&#xff1a;那就叫我亮亮叭 &#x1f4d5; 专栏&#xff1a;一些回忆 为什么选择在这个时间节点回忆一下呢&#xff1f; 一是因为今天距离2023高考仅剩1…

华为OD机试题,用 Java 解【删除字符串中出现次数最少的字符】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…