当前位置: 首页 > news >正文

【TB作品】atmega16 计算器,ATMEGA16单片机,Proteus仿真

在这里插入图片描述

实验报告:基于ATmega16单片机的简易计算器设计

1. 实验背景

计算器是日常生活和工作中不可或缺的工具,通过按键输入即可实现基本的四则运算。通过本实验,我们将利用ATmega16单片机、矩阵键盘和LCD1602显示屏,设计并实现一个简易计算器。该项目不仅能加深对单片机的理解,还能锻炼程序设计和硬件调试能力。

2. 实验目的

  1. 掌握矩阵键盘的扫描原理和实现方法。
  2. 熟悉LCD1602显示屏的控制与数据输出。
  3. 实现基本的四则运算(加、减、乘、除)。
  4. 提高单片机系统设计和调试能力。

3. 系统概述

3.1 系统组成

  1. ATmega16单片机:核心控制器,负责键盘输入的读取、运算逻辑的处理和显示控制。
  2. 矩阵键盘:用于输入数字和运算符。
  3. LCD1602显示屏:用于显示输入的数字、运算符和计算结果。

3.2 系统原理

系统通过矩阵键盘扫描获取用户输入的数字和运算符,并在LCD1602显示屏上显示。用户输入两个操作数和一个运算符后,单片机根据输入执行相应的运算,并将结果显示在LCD1602上。

4. 硬件设计

4.1 硬件连接

  1. 矩阵键盘:矩阵键盘的行连接到ATmega16的PB0-PB3,列连接到PB4-PB7。
  2. LCD1602显示屏:LCD1602的数据线和控制线连接到单片机的PORTD和其他I/O口。

4.2 硬件配置

  1. I/O口配置
    • PORTB的高四位配置为输入,用于接收矩阵键盘的列信号。
    • PORTB的低四位配置为输出,用于发送矩阵键盘的行信号。
    • PORTD配置为输出,用于驱动LCD显示屏。

5. 软件设计

5.1 功能模块

  1. 初始化模块:初始化LCD显示屏和矩阵键盘。
  2. 键盘扫描模块:扫描矩阵键盘,获取用户输入的按键值。
  3. 运算处理模块:根据输入的运算符和操作数,进行加、减、乘、除运算。
  4. 显示模块:在LCD1602显示屏上显示输入的数字、运算符和计算结果。

5.2 系统流程

  1. 系统初始化:系统上电后,初始化LCD显示屏和矩阵键盘,显示初始信息。
  2. 键盘输入:扫描矩阵键盘,获取用户输入的数字和运算符。
  3. 运算处理:根据输入的运算符,进行相应的四则运算,并计算结果。
  4. 结果显示:将输入的数字、运算符和计算结果显示在LCD1602显示屏上。

6. 详细实现

6.1 矩阵键盘扫描原理

矩阵键盘由行和列组成,通过对行和列的电平进行扫描,可以确定按键的位置。具体过程如下:

  1. 将矩阵键盘的行线依次置低电平,同时读取列线的状态。
  2. 若某列线为低电平,则表示该列对应的按键被按下。
  3. 根据行和列的组合,确定按键的值。

6.2 LCD1602显示控制

LCD1602通过控制命令和数据线实现显示字符的功能。具体过程如下:

  1. 初始化LCD显示屏,设置显示模式。
  2. 通过命令和数据接口,发送需要显示的字符数据。
  3. 根据运算过程中的输入和计算结果,实时更新显示内容。

6.3 运算逻辑处理

根据用户输入的操作数和运算符,执行相应的运算:

  1. 用户输入第一个操作数,并存储到变量中。
  2. 输入运算符,标记当前运算类型。
  3. 输入第二个操作数,并存储到变量中。
  4. 根据运算符,执行对应的加法、减法、乘法或除法运算。
  5. 将计算结果显示在LCD1602上。

6.4 主程序流程

  1. 初始化LCD显示屏和矩阵键盘。
  2. 进入循环,持续检测键盘输入。
  3. 根据键盘输入,更新显示和运算状态。
  4. 完成运算后,显示结果并等待下一次输入。

7. 总结

通过本实验,我们成功设计并实现了一个基于ATmega16单片机的简易计算器。该项目不仅加深了对单片机硬件和软件的理解,还提高了系统设计和调试的能力。通过矩阵键盘输入和LCD显示的结合,简化了计算器的实现,同时也展示了单片机在嵌入式系统中的强大功能。

资源

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?u=bdf8eeb84961492ba2b62f7bfee641ea&tab=BB08J2

相关文章:

【TB作品】atmega16 计算器,ATMEGA16单片机,Proteus仿真

实验报告:基于ATmega16单片机的简易计算器设计 1. 实验背景 计算器是日常生活和工作中不可或缺的工具,通过按键输入即可实现基本的四则运算。通过本实验,我们将利用ATmega16单片机、矩阵键盘和LCD1602显示屏,设计并实现一个简易…...

C++的IO流操作

文章目录 C语言的输入与输出流是什么CIO流C标准IO流C文件IO流二进制读写文本读写 stringstream的简单介绍 C语言的输入与输出 C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放…...

MacOS升级指定Python版本的pip

场景: 系统默认是Python2.7,已经通过brew install python3.11 python3.12安装了多个版本的Python 执行:pip --version pip 24.1 from /Users/mac10.12/Library/Python/3.11/lib/python/site-packages/pip (python 3.11) 用的是Python3.11…...

音频Balance源码总结

音频Balance源码总结 何为音频Balance? 顾名思义,Balance及平衡,平衡也就是涉及多方,音频左右甚至四通道,调节所有通道的音量比,使用户在空间内听到各个通道的音频大小不一,好似置身于真实环境…...

CesiumJS【Basic】- #043 绘制脉冲线(Entity方式)- 需要自定义着色器

文章目录 绘制脉冲线(Entity方式)- 需要自定义着色器1 目标2 代码2.1 main.ts3 资源文件绘制脉冲线(Entity方式)- 需要自定义着色器 1 目标 使用Entity方式绘制脉冲线 2 代码 2.1 main.ts import * as Cesium from cesium;const viewer = new Cesium.Viewer(cesiumCont…...

Linux命令 wc(word count)-l(lines)用于统计文件中的行数。

文章目录 1、wc -l2、实战3、wc --help 1、wc -l 在命令 wc -l 中,-l 的英文全称是 lines。这个选项用于指定 wc(word count,单词计数)命令来统计文件的行数。 例如,当你运行 wc -l load_user_100w_sort.sql 时&…...

数据结构 - C/C++ - 链表

目录 结构特性 内存布局 结构样式 结构拓展 单链表 结构定义 节点关联 插入节点 删除节点 常见操作 双链表 环链表 结构容器 结构设计 结构特性 线性结构的存储方式 顺序存储 - 数组 链式存储 - 链表 线性结构的链式存储是通过任意的存储单元来存储线性…...

sheng的学习笔记-AI-高斯混合模型(GMM)

AI目录:sheng的学习笔记-AI目录-CSDN博客 需要学习前置知识: 聚类,可参考 sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 EM算法,可参考 sheng的学习笔记-AI-EM算法-CSDN博客 贝叶斯,可参考 sheng的学习笔记-AI-…...

OFDM的缺点与关键技术

子载波间干扰英文简写ICI,ICI可能由各种原因引起 在多径信道中,CP小于最大附加时延时收发系统载波频率偏差和采样偏差收发系统相对移动,存在多普勒频移 ICI是制约OFDM系统性能的主要重要因素之一 对频率偏差敏感----->同步技术&#xff0…...

电脑录音软件哪个好?7款录制音频工具大盘点,赶快学起来!(2024)

也许你渴望提取你最喜欢的节目的背景音乐,或者你希望录制自己的声音制作教程。如果是这样,你就需要一款优秀的电脑录音软件,来帮助你捕捉任何你想要的声音,而且不会损失音质。目前市场上存在着大量的录制音频工具,面对…...

【Android面试八股文】你说你使用Leakcanary进行内存泄漏检测,那你能说一说Leakcanary的原理吗?

文章目录 一、 Java四大引用二、 LeakCanary示例工作机制注意事项三、 Leakcanary的原理四、 Leakcanary的源码分析LeakCanary#Install创建RefWatcherAndroidRefWatcherBuilder#buildAndInstall监听Activity的引用 : ActivityRefWatcher检查引用Dump Heap解析hprof定位泄露的引…...

蒂升电梯职业性格和Verify认知能力SHL测评答题攻略及薪资待遇解密!

​一、蒂升电梯职业性格和认知能力测评考什么 您好!蒂升电梯公司邀请您参加的OPQ职业性格测评和Verify认知能力测评是两种常见的评估工具,用于帮助了解个人的职场性格特点和认知能力。 OPQ职业性格测评 这是一种性格测试,通常用于评估个人在…...

window上部署sql server改动端口、和sqlserver的一些还原、批量插入存储过程的命令

1.端口的查看和启动 --windows上安装上sql server数据库后,搜索界面搜索sql,会出现配置管理器,点击进入 --进入后再次选择配置管理器 2. sqlserver数据库还原图形化 sqlserver还原数据库时会使数据库进入一个restore的还原状态,…...

【单片机与嵌入式】stm32串口通信入门

一、串口通信/协议 (一)串口通信简介 串口通信是一种通过串行传输方式在电子设备之间进行数据交换的通信方式。它通常涉及两条线(一条用于发送数据,一条用于接收数据),适用于各种设备,从微控制…...

启动Redis服务器

名人说:一点浩然气,千里快哉风。 ——苏轼 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、在 Linux 或 macOS 上启动 Redis二、在 Windows 上启动 Redis三、配置 Redis 为服务启动&…...

uniapp中使用threejs加载几何体

我的建议是使用这个库 https://github.com/deepkolos/three-platformize 为什么?我试了uniapp推荐的和threejs-miniprogram这个小程序官方库,都加载不出来我的obj模型。所有我推荐不要用obj模型最好,挺多都支持GLTF模型的,但是我不…...

【SQL注入】 数据库基础

MySQL中的库名 information_schema(信息库)—— 保存其他数据库里所有信息(数据库名、表、字段的数据类型/访问权限) mysql—— 存储用户名 密码 host performance_schema——内存数据库 数据放在内存中直接操作的数据库 sys—…...

文件操作~

目录 1.为什么使用文件? 2.什么是文件? 2.1 程序文件 2.2 数据文件 2.3 文件名 3.⼆进制文件和文本文件? 4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 ⽂件的打开和关闭 5.文件的顺序读写 5.1 …...

身边的故事(十二):阿文的故事:消失

那以后就再也没有任何阿文的消息。刚开始还打过几次电话,他都没接。后来也就慢慢的淡忘了,为自己的工作生活而奔波,时间冲淡一切。在那几年里,阿文就像消失了一样。直到2021的某一天,电话那端传来了熟悉但是有点陌生的…...

智能扫地机器人程序中出现的问题可以参考的解决方案

在解决智能扫地机器人程序中可能遇到的问题时,可以参考以下分点表示和归纳的解决方案: 环境感知与地图构建 ① 使用先进的传感器技术:如激光雷达、超声波和红外传感器,以提高环境感知的准确性和可靠性。 ② 优化地图构建算法&a…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...